Wednesday, December 7, 2011

oGame Redesign: LPuNKTKit


// ==UserScript==
// @version     2.0.3
// @author      LPuNKT
// @date        2011-12-08
// @name        LPuNKTKit
// @namespace   lpunktkit
// @description Kit de utilidades para oGame Redesign
// @include     http://*.ogame.*/game/*
// @include     http://ogame.*/
// @include     http://www.ogame.*/
// @require     https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// @require     http://sizzlemctwizzle.com/updater.php?id=117512&uso&show
// ==/UserScript==

//OgameKit 3.01 -- http://userscripts.org/scripts/show/108998
//Resources in Flight 1.26 -- http://userscripts.org/scripts/show/58079
//Show IPM and Phalanx Range 1.01 -- http://userscripts.org/scripts/show/82029
//Disable Useless Stuff 1.03 -- http://userscripts.org/scripts/show/104181
//Pranger In Header 1.03 -- http://userscripts.org/scripts/show/61874
//Color Flight Slots 1.04 -- http://userscripts.org/scripts/show/73289
//Shortcut Keys 1.27 -- http://userscripts.org/scripts/show/83284
//Accelerate Message Section 3.0 -- http://userscripts.org/scripts/show/78338
//Current Planet Name On Message Pages 1.01 -- http://userscripts.org/scripts/show/74117
//Fix Action Icons 1.17 -- http://userscripts.org/scripts/show/67948
//Reply Circular Messages 1.03 -- http://userscripts.org/scripts/show/82634
//BBCode -- http://userscripts.org/scripts/show/54537
//New Smiles -- http://userscripts.org/scripts/show/77117
//Chat Alianza -- http://userscripts.org/scripts/show/65521
//Color the Message Subjects 1.08 -- http://userscripts.org/scripts/show/86257
//mailColoration -- http://userscripts.org/scripts/show/101703
//Alliance icon opens the message box 1.10 -- http://userscripts.org/scripts/show/58545
//Message button in left menu 0.1 -- http://userscripts.org/scripts/show/93205
//Set the Focus Correctly 1.02 -- http://userscripts.org/scripts/show/83850
//Fix the Universe Name in the Pillory 1.04 -- http://userscripts.org/scripts/show/94540
//Planet Navigation Keys 1.06 -- http://userscripts.org/scripts/show/82484
//Compactador Batallas 0.08 -- http://userscripts.org/scripts/show/75647
//Missing Sats 1.05 -- http://userscripts.org/scripts/show/81699
//Fleet Empty Space 1.00 -- http://userscripts.org/scripts/show/103449
//Show Resource Details 1.03 -- http://userscripts.org/scripts/show/84148
//Point Board Link Really to the Forum 1.00 -- http://userscripts.org/scripts/show/85889
//Moons to the Right 1.05 -- http://userscripts.org/scripts/show/71588
//Direct Colonization 1.00 -- http://userscripts.org/scripts/show/83845
//Retarted Star -- http://userscripts.org/scripts/show/74641
//Coordinates Links Fix 1.00 -- http://userscripts.org/scripts/show/118405
//Additional Resource Loading Buttons 1.03 -- http://userscripts.org/scripts/show/81197
//Options in User Name 1.02 -- http://userscripts.org/scripts/show/75283
//Return Fleet Question 1.01 -- http://userscripts.org/scripts/show/111756
//Merchant Warning 1.00 -- http://userscripts.org/scripts/show/83847
//Efficiency Tool 0.1 -- http://userscripts.org/scripts/show/106920
//Small planets -- http://userscripts.org/scripts/show/93656

//Cambios:
//

//Pendiente:
// --Jumpgate_Available--
// --Optimizacion para varias resoluciones--

const VERSION_LPUNKTKIT = "2.0.3";
const URL_SCRIPT = 'http://userscripts.org/scripts/show/117512';

var strUniverse;

/**
 * Configuracion de las ventanas de configuracion del script
 */
var   strPosBotones;             const POS_BOTONES = 'left'; //left, top, right-up, right-down

//Background of config windows and config buttons frame
var   blnBackTransparent;        const BACK_TRANSPARENT = true;

//Default Color Font
var   strColor_LPuNKTKit;        const COLOR_LPUNKTKIT = "lime";

//Available Color Fonts
const arrColorFont = [
                     'Cornflower Blue',
                     'Deep Sky Blue',
                     'Cyan',
                     'Light Blue',
                     'Aquamarine',
                     'Light Green',
                     'Spring Green',
                     'Lime',
                     'LimeGreen',
                     'Yellow Green',
                     'Yellow',
                     'Khaki',
                     'Gold',
                     'Orange',
                     'Tomato',
                     'Chocolate',
                     'Crimson',
                     'Medium Purple',
                     'Dark Magenta',
                     'Fuchsia',
                     'Violet',
                     'Pink',
                     'Lavender',
                     'White',
                     'Silver',
                     'Gray',
                     ];

/**
 * Lenguaje en uso (dependiendo el idioma en opciones se usa uno u otro)
 */
var LANG;       //Textos del idioma
var LANG_FRIKI; //Textos Friki del idioma

var idioma;              const IDIOMA = 'en'; //Idioma por defecto

var arrSelectedLang = [   //Idiomas disponibles
                          ['es', 'Espa\u00f1ol'],
                          ['en', 'English'],
                          ['fr', 'Fran\u00e7ais']
                      ];

var divClear = '<div style="clear:both;height:4px;"></div>';

var hr       = '<hr style="margin:4px 0;border-top-color:#111;' +
               'border-bottom-color:#444' +
               ';border-width:1px 0;' +
               'border-style:solid;display:block;">';

/**
 * Coloreado de mensajes
 */
var arrColorMessages = new Array();

/**
 * Compactador de batallas
 */
var arrColorBatalla = new Array(); // {CODE}, color, text

/**
*  Datos de flotas/defensas. LoadDatosFlota() lo inicializa.
*/
var arrDatosFlota = new Array(); //S.Name, L.Name, Metal, Cristal, Deuterio, Carga

/**
 * Almacenes, produccion y recursos actuales
 */
var aMetal; var pMetal; var metal;
var aCristal; var pCristal; var cristal;
var aDeuterio; var pDeuterio; var deuterio;

/**
 * Coordenadas del planeta actual
 */
var coords;

/**
 * Lista de planetas del usuario (array de strings tipo "4:499:8")
 */
var planetas;

/**
 * Produccion diaria
 */
var metalAlDia; var cristalAlDia; var deuterioAlDia;

/**
 * Tiempos de llenado de almacenes
 */
var tAlmMetal; var tAlmCristal; var tAlmDeuterio;

/**
 * Produccion "ideal" regla 3:2:1
 */
var pMetalIdeal; var pCristalIdeal; var pDeuterioIdeal;

var paginaActual;

var linkAnterior;

/**
 * Opciones
 */
var usarCRFriki;             const USAR_CR_FRIKI = false; //Texto friki desactivado por defecto
var availCRFriki = false;

var link1_name;              const LINK1_NAME = 'ToolsForOgame';
var link1_href;              const LINK1_HREF = 'http://www.toolsforogame.com/';
var link2_name;              const LINK2_NAME = 'SpeedSim';
var link2_href;              const LINK2_HREF = 'http://websim.speedsim.net/';
var link3_name;              const LINK3_NAME = 'GameStats';
var link3_href;              const LINK3_HREF = 'http://ogame.gamestats.org/';
var link4_name;              const LINK4_NAME = '';
var link4_href;              const LINK4_HREF = '';
var link5_name;              const LINK5_NAME = '';
var link5_href;              const LINK5_HREF = '';

var showFleetResources;      const SHOW_FLEET_RESOURCES = false;
var showResourcesPerFleet;   const SHOW_RESOURCES_PER_FLEET = false;
var showEmptySpace;          const SHOW_EMPTY_SPACE = false;
var colorEmptySpace ='orange';
var showColorFlightSlots;    const SHOW_COLOR_FLIGHT_SLOTS = false;
var showLoadButtons;         const SHOW_LOAD_BUTTONS = false;
var showReturnFleetQuestion; const SHOW_RETURN_FLEET_QUESTION = false;
var removeAdv;               const REMOVE_ADV = false;

var disableUselessStuff;     const DISABLE_USELESS_STUFF = true;
var currentPlanetName;       const CURRENT_PLANET_NAME = true;
var setFixActionIcons;       const SET_FIX_ACTION_ICONS = true;
var setFocusCorrectly;       const SET_FOCUS_CORRECTLY = true;
var disableStar;             const DISABLE_STAR = true;
var fixForumLink;            const FIX_FORUM_LINK = true;
var showConfirmTrader;       const SHOW_CONFIRM_TRADER = true;
var showPrangerInHeader;     const SHOW_PRANGER_IN_HEADER = false;
var showOptionsInUserName;   const SHOW_OPTIONS_IN_USERNAME = false;
var showLinkFixed;           const SHOW_LINK_FIXED = false;
var highlightPlayers;        const HIGHLIGHT_PLAYERS = false;
var showPlanetNavKeys;       const SHOW_PLANET_NAV_KEYS = false;
var showMoonsRight;          const SHOW_MOONS_RIGHT = false;
var showSmallPlanets;        const SHOW_SMALL_PLANETS = false;

var showResourcesInfo;       const SHOW_RESOURCES_INFO = false;
var showSatsBalance;         const SHOW_SATS_BALANCE = false;
var showSatsTerraformer;     const SHOW_SATS_TERRAFORMER = false;
var showSatsGraviton;        const SHOW_SATS_GRAVITON = false;
var showEfficiency;          const SHOW_EFFICIENCY = false;
var showRange;               const SHOW_RANGE = false;

var showCompactadorBatallas; const SHOW_COMPACTADOR_BATALLAS = false;

var showShortcuts;           const SHOW_SHORTCUTS = false;
var showKeyEverywhere;       const SHOW_KEY_EVERYWHERE = true;
var showKeyMailbox;          const SHOW_KEY_MAILBOX = true;
var showKeyFleet;            const SHOW_KEY_FLEET = true;

var acelMessageSection;      const ACEL_MESSAGE_SECTION = true;
var replyCC;                 const REPLY_CC = false;
var showBBCode;              const SHOW_BBCODE = false;
var showSmiles;              const SHOW_SMILES = false;
var showColoredMessages;     const SHOW_COLORED_MESSAGES = false;
var allianceMessageBoxIcon;  const ALLIANCE_MESSAGEBOX_ICON = false;
var showMessageButtonLeft;   const SHOW_MESSAGE_BUTTON_LEFT = false;

var idChat = 0;
var showChat;                const SHOW_CHAT = false;

var minEscombros;            const MIN_ESCOMBROS = 10000;


/**
* Calculo de satelites necesarios
*/
var energyBalance;  //Produccion de energia excedente
var energyProduced; //Produccion de energia total
var energyPerSat;   //Produccion de energia por satelite

/**
 * Otros
 */
var $2; //for ajax success events.

  var unsafe;

  if (navigator.userAgent.indexOf('Firefox')>-1)
  {
      var FireFox = true;
  }
  else
  {
      var FireFox = false;
  }

  // Google Chrome & Opera
  if(!FireFox)
  {
     function GM_getValue(key,defaultVal)
     {
              var retValue = localStorage.getItem(key);
              if ( !retValue ) return defaultVal;
              return retValue;
     }

     function GM_setValue(key,value)
     {
              localStorage.setItem(key, value);
     }
  }

function getPaginaActual()
{
  var myUrl = window.location + "";
  if (window.location.hostname == myUrl.substring(7).replace(/\//g,"") )
  {
    paginaActual = "home";
  }
  else
  {
    //averiguar en que apartado del juego estamos
    partes = myUrl.substring(myUrl.indexOf('?')+1).split("&");
    comienzos = myUrl.substring(0, myUrl.indexOf('?')).split("/");

    if (comienzos[comienzos.length-1] == "index.php")
      paginaActual = partes[0].substring(partes[0].indexOf('=')+1);
    else
      paginaActual = "unknown";
  }
}

function mouseOverImageSwitch()
{
    $('img.lpunktkit-micon').bind(
        'mouseenter',
        function(){
            var tempSrc = $(this).attr('src');
            $(this).attr('src', $(this).attr('rel'));
            $(this).attr('rel', tempSrc);
        }
    ).bind(
        'mouseleave',
        function(){
            var tempSrc = $(this).attr('src');
            $(this).attr('src', $(this).attr('rel'));
            $(this).attr('rel', tempSrc);
        }
    );
}

document.getElementsByClassName = function (cl)
{
    var retnode = [];
    var myclass = new RegExp ("\\b" + cl + "\\b");
    var elem = this.getElementsByTagName ("*");

    for (var i = 0; i < elem.length; i++)
    {
       var classes = elem [i].className;
       if (myclass.test (classes))
          retnode.push (elem [i]);
    }
    return retnode;
}

function trim (myString)
{
         return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
}

function getUniverse() {
         if (document.location.href.indexOf ('/game/index.php?page=') < 0)
             return;

         var metas = document.getElementsByTagName('META');

         if (!metas) return;

         var i;
         for (i = 0; i < metas.length; i++)
              if (metas[i].getAttribute('NAME') == "ogame-universe")
                  break;

         return (metas[i].getAttribute('CONTENT').replace(/\./g,'_').toUpperCase())
}

function getLanguage() {
         if (document.location.href.indexOf ('/game/index.php?page=') < 0)
             return;

         var metas = document.getElementsByTagName('META');

         if (!metas) return;

         var i;
         for (i = 0; i < metas.length; i++)
              if (metas[i].getAttribute('NAME') == "ogame-language")
                  break;

         return (metas[i].getAttribute('CONTENT').toUpperCase())
}

function EsPlaneta() {
         if (document.location.href.indexOf ('/game/index.php?page=') < 0)
             return;

         var metas = document.getElementsByTagName('META');

         if (!metas) return;

         var i;
         for (i = 0; i < metas.length; i++)
              if (metas[i].getAttribute('NAME') == "ogame-planet-type")
                  break;

         return (metas[i].getAttribute('CONTENT').indexOf('planet')>=0)
}

/**
 * devuelve "session=xxxxxxx"
 */
function getSession()
{
  var myUrl = window.location + "";
      myUrl = myUrl.replace("#","");

  var fragmento = myUrl.substring( myUrl.search("session=") );
  partes = fragmento.split("&");

  return partes[0];
}


function getVersionOgame() {
   var arrVersion = [0,0,0];

   var oVersion = document.getElementsByName ("ogame-version");

   if (oVersion && (oVersion.length > 0))
   {
       arrVersion = oVersion [0].content.split (".");
   }

   return arrVersion;
}

function checkVersionOgame() {
    //Comprobar version de oGame
    var arrVersion = getVersionOgame();
    if ( (parseInt(arrVersion[0]) < 2) ||
         ( (parseInt(arrVersion[0]) == 2) && (parseInt(arrVersion[1]) < 3) ))
       return true;

    return false;
}

/**
 *  SCRIPT LPuNKTKit
 */
function main()
{
  if (document.location.href.indexOf('ogame') < 0) return;

  getPaginaActual();

  if ( (paginaActual=="unknown") ||
       (paginaActual=="techinfo") ||
       (paginaActual=="globalTechtree") ||
       (paginaActual=="techtree") ||
       (paginaActual=="buddies") ||
       (paginaActual=="notices") ||
       (paginaActual=="empire"))
  {
    //el script no funciona en estas paginas, por ahora.
  }
  else if ((paginaActual=="home") ||
           (paginaActual=="combatreport") ||
           (paginaActual=="writemessage") ||
           (paginaActual=="search"))
  {
    loadOptions();
  }
  else
  {
    initialize();

    //agregamos un listener al contenido de la capa de crear edificios,
    //investigar (uso futuro en graviton y terraformer), hacer flota y defensas
    $2("#detail").ajaxSuccess(function(e, xhr, settings) {
      if ( (settings.url.search("page=shipyard") != -1) ||
           (settings.url.search("page=defense") != -1) ||
           (settings.url.search("page=resources") != -1) || //Sats en recursos
           (settings.url.search("page=research") != -1) ||  //Sats graviton
           (settings.url.search("page=station") != -1))     //Sats terraformer

        calculateTime();
    });

    unsafe = window;
    try
    {
      unsafe = unsafeWindow
    }
    catch (e)
    {
    }

    showLinks();

    switch (paginaActual) {
    case "trader":
         ConfirmTrader();

    case "resourceSettings":
         if (EsPlaneta()) {
             addWarehousesGraphic();
             addProductionRatio();
             shipsAndDefenses();
         }
         break;

    case "galaxy":

         FixActionIcons();

         $2("#galaxyContent").ajaxSuccess(function(e, xhr, settings) {
            if (settings.url.search("galaxyContent") != -1)
            {
                escombros(); // Llamada interna a HighlightPlayersandAlliances
            }
         });

         escombrosWait(2000);

    case "movement":
         if (showEmptySpace) EmptySpace();

         if (showResourcesPerFleet)
         {
             $('.fleetDetails').each( function() {
                 var tabla = $(this).find('.starStreak .route div table');
                 recursos = getRecursosFlota(tabla);
                 //"crimson", "deepskyblue", "cornflowerblue"

                 var txtTexto = '<div style="position:absolute;' +
                                'top:21px;left:20%;color:' +
                                strColor_LPuNKTKit + ';">' +
                                recursos[0] + ", " + recursos[1] + ", " +
                                recursos[2] + (showEmptySpace ?
                                '<span style="color:' + colorEmptySpace +
                                ';"> (-' + recursos[3] + ')</span>': '') +
                                '</div>';

                 $(this).find('.starStreak').append(txtTexto);
             });
         }

         ColorFlightSlots();

         ResourcesInFlight();

         ReturnFleetQuestion();

         break;

    case "messages":
         ColoredMessages();

         CurrentPlanetNameOnMessagesPages();

         break;

    case "showmessage":
         ReplyCircularMessages();

         break;

    case "alliance":
         ChatAlianza();

         break;

    case "fleet3":
         QuitarAdvertencia();
         ResourceLoadButtons();

         break;

    case "station":
         Efficiency();
         break;

    default:

         break;
    } //switch
  } //else

  SmallPlanets();

  AllianceMessageBox();

  BBCode();

  NewSmiles();

  ForumLink();

  UniverseNameInPillory();

  ResourcesInfo();

  DisableUselessStuff();

  ShowIPMandPhalanxRange();

  OgameOptionsInUserName();

  PrangerInHeader();

  ShortcutKeys();

  PlanetNavigationKeys();

  FocusCorrectly();

  MissingSats();

  CompactadorBatallas();

  QuitarEstrella(disableStar);

  MoonsToRight();

  LinkFixed();
}

/**
 * Cargamos recursos, produccion, calculamos datos, etc
 */
function initialize()
{
  try {$2 = unsafeWindow.$;}
  catch(e) {$2 = window.$;}

  //carga de datos
  loadOptions();

  loadCoords();
  loadPlanets();
  loadResources();
  loadProduction();
  loadWarehouses();
  //calculos
  calculateWarehouses();
  if(paginaActual=="resourceSettings") regla321();
  //otros
//  loadOptions();

/*  AccelerateMessageSection();

  if (showMessageButtonLeft) MessageButtonLeft();*/

  addOptions();
}

function loadCoords()
{
  if (paginaActual=="showmessage") return;

  coords = new Array(0,0,0);
  var coordenadas = $('#myWorlds .smallplanet a.active ' +
                      'span.planet-koords').html();
  if (coordenadas == null) coordenadas = $('#myWorlds ' +
                                           '.smallplanet ' +
                                           'a.planetlink ' +
                                           'span.planet-koords').html();

  //change for ogame RU
  if (coordenadas == null) coordenadas = $('#myPlanets ' +
                                           '.smallplanet ' +
                                           'a.active ' +
                                           'span.planet-koords').html();

  if (coordenadas == null) coordenadas = $('#myPlanets ' +
                                           '.smallplanet ' +
                                           'a.planetlink ' +
                                           'span.planet-koords').html();

  //if nothing of the above was succesful, show error and load -1:-1:-1
  if (coordenadas == null) {
     coordenadas = "[-1:-1:-1]";

     if (!document.getElementsByTagName("jumpgateForm"))
         $('body').append('<span style="color:red;position:absolute;' +
                          'bottom:30px;right:10px;display:block;">' +
                          'LPuNKTKit: Error, I can\'t load your planet ' +
                          'coordinates.</span>');
  }
  //[x:xxx:xx] quitamos los corchetes
  coordenadas = coordenadas.substring(1, coordenadas.length-1);
  coords = coordenadas.split(":");
}

function loadPlanets()
{
  if (paginaActual=="showmessage") return;

  planetas = new Array();
  $('#myWorlds .smallplanet .planetlink').each(function () {
    var coordenadas = $(this).find('span.planet-koords').html();
    coordenadas = coordenadas.substring(1,coordenadas.length-1);
    planetas.push(coordenadas);
  });

  //for ogame RU, the div is called "myPlanets", instead of "myWorlds" xD
  $('#myPlanets .smallplanet .planetlink').each(function () {
    var coordenadas = $(this).find('span.planet-koords').html();
    coordenadas = coordenadas.substring(1,coordenadas.length-1);
    planetas.push(coordenadas);
  });
}

/**
 * Calcula la produccion por minuto y la carga en las variables globales
 */
function loadProduction()
{
  if (paginaActual=="showmessage") return;

  var re = /\+\d+/;

  pMetal = $('#metal_box').attr('title').replace(/\./g,"");
  pMetal = re.exec(pMetal);
  pMetal = pMetal/60; //produccion por minuto

  //guardamos la produccion por hora de este planeta
  GM_setValue(coords[0] + ":" + coords[1] + ":" + coords[2] + ".pmetal" + strUniverse,
              Math.round(pMetal*60));

  pCristal = $('#crystal_box').attr('title').replace(/\./g,"");
  pCristal = re.exec(pCristal);
  pCristal = pCristal/60; //produccion por minuto

  //guardamos la produccion por hora de este planeta
  GM_setValue(coords[0] + ":" + coords[1] + ":" + coords[2] + ".pcristal" + strUniverse,
              Math.round(pCristal*60));

  pDeuterio = $('#deuterium_box').attr('title').replace(/\./g,"");
  pDeuterio = re.exec(pDeuterio);
  pDeuterio = pDeuterio/60; //produccion por minuto

  //guardamos la produccion por hora de este planeta
  GM_setValue(coords[0] + ":" + coords[1] + ":" + coords[2] + ".pdeuterio" + strUniverse,
              Math.round(pDeuterio*60));
}

/**
 * Carga los recursos existentes en las variables globales
 */
function loadResources()
{
  if (paginaActual=="showmessage") return;

  metal = $('#resources_metal').html().replace(/\./g,"");
  cristal = $('#resources_crystal').html().replace(/\./g,"");
  deuterio = $('#resources_deuterium').html().replace(/\./g,"");

  if (unsafe != unsafeWindow) {
    GM_setValue(coords[0] + ":" + coords[1] + ":" + coords[2] + ".metal" + strUniverse,
                Math.round(metal));

    GM_setValue(coords[0] + ":" + coords[1]+":" + coords[2] + ".cristal" + strUniverse,
                Math.round(cristal));

    GM_setValue(coords[0] + ":" + coords[1] + ":" + coords[2] + ".deuterio" + strUniverse,
                Math.round(deuterio));
  }
}

/**
 * Carga los valores de capacidad de almacenes
 */
function loadWarehouses()
{
  if (paginaActual=="showmessage") return;

  aMetal = $('#metal_box').attr('title').replace(/\./g,"").split("<br>");
  aMetal = aMetal[1].substring(aMetal[1].indexOf('>')+1).replace("</span>",'');
  aMetal = parseInt(aMetal);

  aCristal = $('#crystal_box').attr('title').replace(/\./g,"").split("<br>");
  aCristal = aCristal[1].substring(aCristal[1].indexOf('>')+1).replace("</span>",'');
  aCristal = parseInt(aCristal);

  aDeuterio = $('#deuterium_box').attr('title').replace(/\./g,"").split("<br>");
  aDeuterio = aDeuterio[1].substring(aDeuterio[1].indexOf('>')+1).replace("</span>",'');
  aDeuterio = parseInt(aDeuterio);
}

/**
 * Calcula el tiempo de llenado de los almacenes
 */
function calculateWarehouses()
{
  tAlmMetal = ((aMetal - metal)/pMetal)*60;
  tAlmCristal = ((aCristal - cristal)/pCristal)*60;
  tAlmDeuterio = ((aDeuterio - deuterio)/pDeuterio)*60;
}

/**
 * Agrega los graficos de ocupacion de almacenes en el apartado de recursos
 */
function addWarehousesGraphic()
{
  colorM = colorC = colorD = "#9C0";
  porcentajeMetal = (metal*100)/aMetal;
  if (porcentajeMetal>=100) {
    porcentajeMetal=100;
    colorM="#C00";
  }
  else if (porcentajeMetal>80)
  {
    colorM="#ea8700";
  }
  porcentajeCristal = (cristal*100)/aCristal;
  if (porcentajeCristal>=100) {
    porcentajeCristal=100;
    colorC="#C00";
  }
  else if (porcentajeCristal>80)
  {
    colorC="#ea8700";
  }
  porcentajeDeuterio = (deuterio*100)/aDeuterio;
  if (porcentajeDeuterio>=100) {
    porcentajeDeuterio=100;
    colorD="#C00";
  }
  else if (porcentajeDeuterio>80)
  {
    colorD="#ea8700";
  }

  divAlmacenes = '<div style="margin:10px auto;width:90%;font-size:10px;' +
                 'max-width:610px;">' +

                 LANG.metal + ' (' +
                 secondsToTime(tAlmMetal) + '): <div style="float:right;' +
                 'width:400px;height:20px;border:1px solid ' + colorM + ';">' +
                 '<div style="background-color:' + colorM + ';height:100%;width:' +
                 porcentajeMetal + '%"></div></div>' + divClear +

                 LANG.cristal + ' (' + secondsToTime(tAlmCristal) +
                 '): <div style="float:right;width:400px;height:20px;' +
                 'border:1px solid ' + colorC + ';"><div ' +
                 'style="background-color:' + colorC + ';height:100%;width:' +
                 porcentajeCristal + '%"></div></div>' + divClear +

                 LANG.deuterio + ' (' + secondsToTime(tAlmDeuterio) + '): ' +
                 '<div style="float:right;width:400px;height:20px;' +
                 'border:1px solid ' + colorD + ';"><div style="background-color:' +
                 colorD + ';height:100%;width:' + porcentajeDeuterio +
                 '%"></div></div>' + divClear + '</div>' + divClear;

  $('#inhalt .mainRS').append(divAlmacenes);
}

/**
 * Agrega info de produccion ideal al apartado de recursos
 */
function addProductionRatio()
{
  var colorM = "green"; var colorC = "green"; var colorD = "green";
  if (pMetal < pMetalIdeal) colorM = "#D29D00";
  if (pCristal < pCristalIdeal) colorC = "#D29D00";
  if (pDeuterio < pDeuterioIdeal) colorD = "#D29D00";

  divProdIdeal = '<tr>' +
                 '<td class="label" colspan="2" style="font-size:92%;">' +
                 LANG.prod321 + ':</td>' +
                 '<td class="undermark" style="color:' + colorM + ';">' +
                 puntos(Math.ceil(pMetalIdeal*60)) + '</td>' +
                 '<td class="undermark" style="color:' + colorC + ';">' +
                 puntos(Math.ceil(pCristalIdeal*60)) + '</td>' +
                 '<td class="undermark" style="color:' + colorD + ';">' +
                 puntos(Math.ceil(pDeuterioIdeal*60)) + '</td>' +
                 '<td class="undermark">-</td>' +
                 '<td></td></tr>';

  $('tr.summary').after(divProdIdeal);
}

/**
 * Calcula numero de naves por dia en funcion de la produccion
 */
function shipsAndDefenses()
{
  LoadDatosFlota(false);

  metalAlDia = pMetal*60*24;
  cristalAlDia = pCristal*60*24;
  deuterioAlDia = pDeuterio*60*24;
  //con estos recursos, que naves podemos hacer?
  var naves = new Array();
  //sondas
  var sonda = new Object;
      sonda.nombre   = arrDatosFlota[12][1]; //LANG.sonda;
      sonda.metal    = arrDatosFlota[12][2];
      sonda.cristal  = arrDatosFlota[12][3];
      sonda.deuterio = arrDatosFlota[12][4];
  perDay(sonda);
  naves.push(sonda);

  //satelites
  var satelite = new Object;
      satelite.nombre   = arrDatosFlota[13][1];//LANG.satelite;
      satelite.metal    = arrDatosFlota[13][2];
      satelite.cristal  = arrDatosFlota[13][3];
      satelite.deuterio = arrDatosFlota[13][4];
  perDay(satelite);
  naves.push(satelite);

  //npc
  var npc = new Object;
      npc.nombre   = arrDatosFlota[0][1];//LANG.npc;
      npc.metal    = arrDatosFlota[0][2];
      npc.cristal  = arrDatosFlota[0][3];
      npc.deuterio = arrDatosFlota[0][4];
  perDay(npc);
  naves.push(npc);

  //ngc
  var ngc = new Object;
      ngc.nombre   = arrDatosFlota[1][1];//LANG.ngc;
      ngc.metal    = arrDatosFlota[1][2];
      ngc.cristal  = arrDatosFlota[1][3];
      ngc.deuterio = arrDatosFlota[1][4];
  perDay(ngc);
  naves.push(ngc);

  //colonizadores
  var coloniza = new Object;
      coloniza.nombre   = arrDatosFlota[10][1];//LANG.txtColonizador;
      coloniza.metal    = arrDatosFlota[10][2];
      coloniza.cristal  = arrDatosFlota[10][3];
      coloniza.deuterio = arrDatosFlota[10][4];
  perDay(coloniza);
  naves.push(coloniza);

  //recicladores
  var reciclador = new Object;
      reciclador.nombre   = arrDatosFlota[11][1];//LANG.reciclador;
      reciclador.metal    = arrDatosFlota[11][2];
      reciclador.cristal  = arrDatosFlota[11][3];
      reciclador.deuterio = arrDatosFlota[11][4];
  perDay(reciclador);
  naves.push(reciclador);

  //cazas ligeros
  var cl = new Object;
      cl.nombre   = arrDatosFlota[2][1];//LANG.cl;
      cl.metal    = arrDatosFlota[2][2];
      cl.cristal  = arrDatosFlota[2][3];
      cl.deuterio = arrDatosFlota[2][4];
  perDay(cl);
  naves.push(cl);

  //cazas pesados
  var cp = new Object;
      cp.nombre   = arrDatosFlota[3][1];//LANG.cp;
      cp.metal    = arrDatosFlota[3][2];
      cp.cristal  = arrDatosFlota[3][3];
      cp.deuterio = arrDatosFlota[3][4];
  perDay(cp);
  naves.push(cp);

  //cruceros
  var crucero = new Object;
      crucero.nombre   = arrDatosFlota[4][1];//LANG.crucero;
      crucero.metal    = arrDatosFlota[4][2];
      crucero.cristal  = arrDatosFlota[4][3];
      crucero.deuterio = arrDatosFlota[4][4];
  perDay(crucero);
  naves.push(crucero);

  //naves de batalla
  var nb = new Object;
      nb.nombre   = arrDatosFlota[5][1];//LANG.nb;
      nb.metal    = arrDatosFlota[5][2];
      nb.cristal  = arrDatosFlota[5][3];
      nb.deuterio = arrDatosFlota[5][4];
  perDay(nb);
  naves.push(nb);

  //acorazados
  var acorazado = new Object;
      acorazado.nombre   = arrDatosFlota[6][1];//LANG.acorazado;
      acorazado.metal    = arrDatosFlota[6][2];
      acorazado.cristal  = arrDatosFlota[6][3];
      acorazado.deuterio = arrDatosFlota[6][4];
  perDay(acorazado);
  naves.push(acorazado);

  //bombarderos
  var bombardero = new Object;
      bombardero.nombre   = arrDatosFlota[7][1];//LANG.bombardero;
      bombardero.metal    = arrDatosFlota[7][2];
      bombardero.cristal  = arrDatosFlota[7][3];
      bombardero.deuterio = arrDatosFlota[7][4];
  perDay(bombardero);
  naves.push(bombardero);

  //destructores
  var destructor = new Object;
      destructor.nombre   = arrDatosFlota[8][1];//LANG.destructor;
      destructor.metal    = arrDatosFlota[8][2];
      destructor.cristal  = arrDatosFlota[8][3];
      destructor.deuterio = arrDatosFlota[8][4];
  perDay(destructor);
  naves.push(destructor);

  //estrellas de la muerte
  var edlm = new Object;
      edlm.nombre   = arrDatosFlota[9][1];//LANG.edlm;
      edlm.metal    = arrDatosFlota[9][2];
      edlm.cristal  = arrDatosFlota[9][3];
      edlm.deuterio = arrDatosFlota[9][4];
  perDay(edlm);
  naves.push(edlm);

  //defensas
  var defensas = new Array();
  //lanzamisiles
  var lanza = new Object;
      lanza.nombre   = arrDatosFlota[14][1];//LANG.lanza;
      lanza.metal    = arrDatosFlota[14][2];
      lanza.cristal  = arrDatosFlota[14][3];
      lanza.deuterio = arrDatosFlota[14][4];
  perDay(lanza);
  defensas.push(lanza);

  //lasers peque
  var laserp = new Object;
      laserp.nombre   = arrDatosFlota[15][1];//LANG.laserp;
      laserp.metal    = arrDatosFlota[15][2];
      laserp.cristal  = arrDatosFlota[15][3];
      laserp.deuterio = arrDatosFlota[15][4];
  perDay(laserp);
  defensas.push(laserp);

  //lasers grandes
  var laserg = new Object;
      laserg.nombre   = arrDatosFlota[16][1];//LANG.laserg;
      laserg.metal    = arrDatosFlota[16][2];
      laserg.cristal  = arrDatosFlota[16][3];
      laserg.deuterio = arrDatosFlota[16][4];
  perDay(laserg);
  defensas.push(laserg);

  //gauss
  var gauss = new Object;
      gauss.nombre   = arrDatosFlota[17][1];//LANG.gauss;
      gauss.metal    = arrDatosFlota[17][2];
      gauss.cristal  = arrDatosFlota[17][3];
      gauss.deuterio = arrDatosFlota[17][4];
  perDay(gauss);
  defensas.push(gauss);

  //ionicos
  var ionico = new Object;
      ionico.nombre   = arrDatosFlota[18][1];//LANG.ionico;
      ionico.metal    = arrDatosFlota[18][2];
      ionico.cristal  = arrDatosFlota[18][3];
      ionico.deuterio = arrDatosFlota[18][4];
  perDay(ionico);
  defensas.push(ionico);

  //plasmas
  var plasma = new Object;
      plasma.nombre   = arrDatosFlota[19][1];//LANG.plasma;
      plasma.metal    = arrDatosFlota[19][2];
      plasma.cristal  = arrDatosFlota[19][3];
      plasma.deuterio = arrDatosFlota[19][4];
  perDay(plasma);
  defensas.push(plasma);

  //misiles interplanetarios
  var mInterplanet = new Object;
      mInterplanet.nombre   = LANG.mInterplanet;
      mInterplanet.metal    = 12500;
      mInterplanet.cristal  = 2500;
      mInterplanet.deuterio = 10000;
  perDay(mInterplanet);
  defensas.push(mInterplanet);

  //misiles intercepcion
  var mIntercep = new Object;
      mIntercep.nombre   = LANG.mIntercep;
      mIntercep.metal    = 8000;
      mIntercep.cristal  = 0;
      mIntercep.deuterio = 2000;
  perDay(mIntercep);
  defensas.push(mIntercep);

  //mostramos resultados
  showDailyUnits(naves,defensas);
}

/**
 * Calcula cuantas unidades de "objeto" se pueden hacer con los recursos diarios
 */
function perDay(objeto)
{
  var x = -1;
  var dia = new Array();
      dia[0] = (objeto.metal==0) ? -1 : Math.floor(metalAlDia/objeto.metal);
      dia[1] = (objeto.cristal==0) ? -1 : Math.floor(cristalAlDia/objeto.cristal);
      dia[2] = (objeto.deuterio==0) ? -1 : Math.floor(deuterioAlDia/objeto.deuterio);

  for (i=0; i < 3; i++)
  {
    if(dia[i] > -1)
    {
      if ( (dia[i] < x) || (x==-1) )
        x = dia[i];
    }
  }
  //podemos hacer x al dia, eso cuanto cuesta en total?
  objeto.totalMetalDia = objeto.metal*x;
  objeto.totalCristalDia = objeto.cristal*x;
  objeto.totalDeuterioDia = objeto.deuterio*x;
  objeto.alDia = x;
}

/**
 * Espera 1 segundo antes de calcular nada
 */
function showDailyUnits (naves,defensas)
{
  //creamos el contenedor
  var contenedor = '<div id="contenedor" style="width:90%;margin:0 auto;"></div>';
  $('.mainRS').append(contenedor);

  //creamos los enlaces para mostrar naves/defensas
  //link de flota
  var linkFlota = window.document.createElement('a');
      linkFlota.setAttribute('href', '#unidadesDiarias');
      linkFlota.textContent = LANG.flota;
      linkFlota.style.color = "#88dd55";
      linkFlota.style.margin = "5px 10px";
      linkFlota.addEventListener('click',
                                  function() {showDailyUnitsTable(naves);},
                                  false);

  //link de defensa
  var linkDefensa = window.document.createElement('a');
      linkDefensa.setAttribute('href', '#unidadesDiarias');
      linkDefensa.textContent = LANG.defensa;
      linkDefensa.style.color = "#88dd55";
      linkDefensa.style.margin = "5px 10px";
      linkDefensa.addEventListener('click',
                                    function() {showDailyUnitsTable(defensas);},
                                    false);

  $('#contenedor').append(linkFlota);
  $('#contenedor').append(linkDefensa);

  //creamos la capa donde mostraremos los datos
  $('#contenedor').append('<div id="unidadesDiarias" style="display:none;">' +
                          '</div>');

}
function showDailyUnitsTable(listaObjetos)
{
  var tabla  = '<table style="font-size:10px;">';
      tabla += '<tr><td width="16%"></td><td width="16%"></td>' +
               '<td width="16%"></td><td width="16%"></td>' +
               '<td width="16%"></td><td width="16%"></td></tr>';

      tabla += '<tr><td colspan=6><font color="#FF6600" size="4">' +
               '<b>* ' + LANG.produccionPlanetaria + ' *</b></font><br><br>' +
               '</td></tr>';

      tabla += '<tr><td colspan=2></td><td class="label">' + LANG.produccion +
               '</td><td colspan=3 class="label"><center>' + LANG.excedente +
               '</center></td></tr>';

      tabla += '<tr><td class="label" colspan=2></td><td class="label">' +
               LANG.porDia + '</td><td class="label">' +
               LANG.metal + '</td><td class="label">' +
               LANG.cristal + '</td><td class="label">' +
               LANG.deuterio + '</td></tr>';

  for(i=0; i < listaObjetos.length; i++)
  {
    obj = listaObjetos[i];
    tabla += (i%2 != 0) ? '<tr>' : '<tr class="alt">';
    tabla += '<td class="label" colspan=2>' + obj.nombre + '</td>' +
             '<td class="undermark">' + obj.alDia + '</td>' +
             '<td>' + puntos(metalAlDia-obj.totalMetalDia) + '</td>' +
             '<td>' + puntos(cristalAlDia-obj.totalCristalDia) + '</td>' +
             '<td>' + puntos(deuterioAlDia-obj.totalDeuterioDia) + '</td>' +
             '</tr>';
  }
  tabla +=   '</table>';

  $('#unidadesDiarias').html(tabla);
  $('#unidadesDiarias').css('display', 'block');
}

function escombrosWait (wait)
{
  setTimeout(escombros,wait);
}

/**
 * Funcion que
 * Resalta los escombros grandes
 */
function escombros()
{
  var imgEscombros = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAA" +
                     "eCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJl" +
                     "YWR5ccllPAAABztJREFUeNrEV2tsW2cZfs7x8fHx3YkT59YmbUIWl" +
                     "/QSlrWbumg3miEoA1VTNSTE9ruCH6CCNGn8YD+KUBECISQGTIJt/Y" +
                     "PYRsdWbV22aWvSLUlJm65J6ti9JE2bOPX9bh8fH/N+J8etk9lp/xH" +
                     "pzZGPv+973svzPu9nrlwu4//xx9WB5aqsXGWbnlVlqFpfc69Q5wD2" +
                     "XiITyVQyWbdSnYMMZEYyU9WZ1fuUjXuE3zqb153wi0SIAUtP9z6U3" +
                     "NXgREaWcTNXwHvzk1vpfZospx+k0t6yvl4c9O7L9hkMcIlGCDwPyW" +
                     "JBpMxhKhzBtG/cusHxuhGLfWYTnu/tpBUGXA/H8RuXbcmXyuAfcxM" +
                     "99H2KOUCgsr7HMihJOLyjB01WM0RRhIH25QliPBjB9y3WzDvnP/bo" +
                     "+woMvBYw80gtUKS5bA4tTQ0Y6PCg39OI1VQar3W0XJ2LpzGXSOFd/" +
                     "7lt+kHWZgOPTgKV6ImSopmZ4zDc7ESfZMSxBuvtU6EEPv/yM4ZZqg" +
                     "cs/9V3buBNj2u6xd0AjlLHotjS6EKHy4nBtiKC2Txe3da+cC2SwJV" +
                     "cEX1llVJVBsetP0ooldBlEmDr7sSF8jLqplqvG6thPpjKQlEUiFQ7" +
                     "diDH8aCywW42wCaJ2O604RtuF77wXUExkwNHIKw0d2AJQlVLuB2O4" +
                     "oNgFDPZIjarcYWRhVBBRiqXh9tkuksArvLkNTPRZ6GoIENZKaqqRm" +
                     "sGWKYMKJSDuWAY7wYW8TffpP1XQPZ+gLOxnIxkOo1Gp10D+UpN6PB" +
                     "gNIZ5pYy4swnfksxggsSiTJPDYzdW8VYkiY98kzaWweqWEvR2YPnh" +
                     "dYNO+9wfr1/c89aW5otdba13v6lKY6mkYjWRwe99k9u+9+CBhSJLb" +
                     "ZlSG09i9PIV/HxmYvuRtTay6mfnKz3N6yLhJGsj2/pk317Wp036wt" +
                     "RStoACpbCWsmYLBfjzWt3SilJEmrITWA7iDd8iA/06vXcf9e699fK" +
                     "TB1df2D2U1HE0Egi9/Y/m9xPd+0k8HfQ84nLhz82u5SNjIw+wOgdU" +
                     "Do+VyjAb10erEpGWqK8/If9fJh9W1DJe913H389/uvX47ieWfvbwg" +
                     "bndogGHqR0bG1zwW0x4ITcYei0wxdKuCIHZs85fH/ph4jtuBySKjC" +
                     "P2yI1OvMEN+380OrIrXuKQosjckrhWfFojKyX4wzGcoBqOXjrDpLV" +
                     "4YeaMoHPGsd8q4qC3G26Bh6CTsbfZjccjUSCgZTjDFhZGFlfQmkpi" +
                     "sLkRDqsFEvXs3q914xXjM5eEeA63qa26HFQmzoAYyef44jLejKTw8" +
                     "eyYWZfC6kIo0UQSoaUl2FpbYLBI4ImYArWkR9Sc5yvTidfF3XOsf9" +
                     "/CIz2d2OZppsVANJPHyQuX4aVe3b+rFyESjXfmb+DY+OkdtD5OFtO" +
                     "BK8RkgTBn7GSNf9gzdH7n9i3obm1CmVru7PQlPD911k3fRXkSDFVn" +
                     "2+pLs5PtJ6lO47N+5KmHHaKAPruEeWLuiH8JJ+eXcEsu4dVnnrv8p" +
                     "0eHV3S2WhgIWTtZF7MjPQMLLJifXhx7/NOry5hYWEYwFkd0jYjaP+" +
                     "64Pp30thL0gzy/2/mw/4ldXsTTWXywFEaBN8BOZDnQ3YF2q4TA/BV" +
                     "898yHvd/sHwq0lxX0GDhNaFqIHx67lUQghmvhBELkaEaywpFLwU8E" +
                     "PBH4L+NEQaiWSuYNOcBorxydmeg5VpSvttgccBaLcLe3YX9XC1wki" +
                     "Qp95tb6q+mQy4Kdne1oovdmGomMnJq60Ujt7VRwMxLDYjCEGUXEiZ" +
                     "mzbbpGgK+jXCwd2ZfmL+ybkVUMbPFguLsNDUYDNjS06JUEbCUC2S1" +
                     "mCIIAA5FIM3LEJJnQ09GKod078BSNzJ8cOLRSUcu68/hp7yMrQ9TX" +
                     "3/b2oI/Sx5MMMtA7Wm3UGlsJ02Tarr9cP5nu9rxAo7LbbsZjhVzl/" +
                     "JoRsy+MA9RaBx/sxwMu29rUqTpIWyRqwMmbokmjdS3Qip4X5SJmry" +
                     "3iPwvBihyj3jxWkvk8wvEEHDSDjay3wK87vGRmXYPMKusn2mEpfxW" +
                     "cOamQ2ExdXcAPRkfanqU2qrCarwOce+XcJw1/CdzEe/5FhEg0VPKc" +
                     "qVaJomdyWVxLdSGSUyAzsnEbJJUpHCneFEX6T42vGqi86UWARczY/" +
                     "falURaW48cPPbU6TJJqo8kTpnEXoyimSUoPkYNxuiJlKJUqSSpPM7" +
                     "ky/DN5GV/cWMHb0Rze902YK5HeqefxDbfMGjdO5pztsHdf1EyRvh6" +
                     "Y8ug3TVm/0nb/++DhL/e0NWls1mZxvoAPScePfnaqgZWj5vV2sxt6" +
                     "1TUo+S/fpEnfXNLVjjmmjTglHoXa0qixMk3pPbVwCy+OnnbooGqts" +
                     "4V7/dTQU1+qsLHGTSUnU/qLVOc0KdNpGiAvjm0Oel/A9/hj2Yh8br" +
                     "KRuqmYXrmNX94H6Ga/ne77t5feGaL+VHQSqffa+D8BBgAvsUcCsVT" +
                     "hewAAAABJRU5ErkJggg==";

  HighlightPlayersAndAlliances();

  var coordenadasActuales = new Array();
  coordenadasActuales[1] = $('#galaxy_input').val();
  coordenadasActuales[2] = $('#system_input').val();
  var url = window.location + "";

  url = url.substring(0, url.search("page"));
  url = url + "page=fleet1" + ( (parseInt(getVersionOgame()[0])==3) ? '' : '&' + getSession() );

  $('#galaxytable td.debris').each( function() {
    link = $(this).find('a.tipsGalaxy');
    if (link.length > 0)
    {
      var planeta = link.attr("rel").replace("#debris", "");

      //resaltado de escombros
      var contenido = 0;
      $(this).find("#debris" + planeta +
                   " ul.ListLinks li.debris-content").each(function () {
        var partes = $(this).html().split(" ");
        contenido += parseInt(partes[1].replace(/\./g,""));
      });
      if ( (contenido > minEscombros) && (minEscombros > 0) )
        $(this).find("img").attr("src",imgEscombros);

    }
  });
}

/**
 * Recibe una tabla que contiene la info de la flota en cuestion.
 * Devuelve los valores de los 3 recursos que transporta
 */
function getRecursosFlota(tabla)
{
  if (showEmptySpace) var recursos = new Array(0,0,0,0)
  else var recursos = new Array(0,0,0);
  var i = 0;
  var trs = tabla.find('tr').length;
  tabla.find('tr').each( function( intIndex ) {
        if (!showEmptySpace) {
            if (intIndex>=(trs-3))
            {
                recursos[i] = trim( $(this).find('td:last').html() );
                i++;
            }
        } else {
            if (intIndex>=(trs-4))
            {
                recursos[i] = trim( $(this).find('td:last').html() );
                i++;
            }
        }
  });
  return recursos;
}

/**
 * Nueva funcion para agregar puntos en los miles y usar formato Ogame
 * (ej: 400k, 3M)
 */
function puntos(numero)
{
  var cadena = "";
  numero = parseInt(numero,10);
  if (numero==0) return "0";
  //cambiamos 1.000.000 por 1M
  if (numero%1000000 == 0) cadena = (numero/1000000) + "M";
  else
  {
    //cambiamos 900.000 por 900k
    if ((numero%1000 == 0) && (numero<1000000) ) cadena = (numero/1000) + "k";
    else
    {
      //si no es cifra redonda, agregamos los puntos
      if (numero<1000) cadena = numero + "";
      else
      {
        unidades=numero%1000 + "";
        while (unidades.length < 3) {
          unidades = '0' + unidades;
        }
        if (numero<1000000)
        {
          cadena = Math.floor(numero/1000) + "." + unidades;
        }
        else
        {
          millones=Math.floor(numero/1000000);
          miles=Math.floor((numero-millones*1000000)/1000) + "";
          while (miles.length < 3) {
            miles = '0' + miles;
          }
          cadena = millones + "." + miles + "." + unidades;
        }
      }
    }
  }

  return cadena;
}

/**
 * Calcula el tiempo necesario para construir flota/defensas
 * Calcula Satelites necesarios para Graviton y Terraformer
 */
function calculateTime()
{
    if ((paginaActual != 'defense') && (paginaActual !='shipyard') &&
        (paginaActual !='resources') && //Satelites balance 0
        (paginaActual !='research') && //Satelites Graviton
        (paginaActual !='station')) //Satelites Terraformer
         return;

    existe = $("#costs");

    if (existe.length>0)
    {
        var necesarios=new Array();
            necesarios[0]=0;//metal
            necesarios[1]=0;//cristal
            necesarios[2]=0;//deuterio
            necesarios[3]=0;//energia

        $('#costs #resources li.metal').each(function() {
            palabra = this.title.split(" ");
            palabra[palabra.length-1] = traduce(palabra[palabra.length-1]);

            switch (palabra[palabra.length-1]) {
               case "Metal": necesarios[0] = palabra[0].substring(1,
                             palabra[0].length).replace(/\./g,"");
                             break;

               case "Cristal": necesarios[1] = palabra[0].substring(1,
                               palabra[0].length).replace(/\./g,"");
                               break;

               case "Deuterio": necesarios[2] = palabra[0].substring(1,
                                palabra[0].length).replace(/\./g,"");
                                break;

               default: necesarios[3] = palabra[0].substring(1,
                                        palabra[0].length).replace(/\./g,"");

                        break;
            }
        });

        tiempoPorUnidad = timeToSeconds($('#action ul li .time').html());

        if ((paginaActual =='defense') || (paginaActual =='shipyard')) {
           $('#action ul li ' + (document.getElementById('possibleInTime') ?
                      '#possibleInTime' : '.time')).after('<p id="lpunktkit-time">' +
                      LANG.tiempoTotal + ": " +
                      '<span style="color:' + strColor_LPuNKTKit +
                      ';font-weight:bold;">' + secondsToTime(0) + '</span></p>')

        } else { // Satelites balance 0, Satelites graviton, Satelites terraformer
              var div = document.getElementById('detail');

              var arrHidden = div.getElementsByTagName('input');

              var blnFound = false;

              for (i=0; i < arrHidden.length; i++) {

                  if ((arrHidden[i].value == '199') || //Graviton
                      (arrHidden[i].value == '212') || //Satelites en Recursos
                      (arrHidden[i].value == '33'))    //Terraformer
                  {

                     if (arrHidden[i].value == '212') {
                         $('#action ul li ' + (document.getElementById('possibleInTime') ?
                           '#possibleInTime' : '.time')).after('<p id="lpunktkit-time">' +
                           LANG.tiempoTotal + ": " +
                           '<span style="color:' + strColor_LPuNKTKit +
                           ';font-weight:bold;">' + secondsToTime(0) + '</span></p>')

                     } else if (EsPlaneta()) { // 199 o 33

                           if ( ( (arrHidden[i].value != '199') ||
                                  (!showSatsGraviton)) &&
                                ( (arrHidden[i].value != '33') ||
                                  (!showSatsTerraformer)))
                               break;

                           getEnergy();

                           if (necesarios[3] <= energyProduced) break;

                           $('#description p span').after('<br><span id="lpunktkit-sats"> ' +
                               LANG.txtFaltaEnergy + ": " +
                               '<span style="color:' + strColor_LPuNKTKit + ';">' +
                               puntos((necesarios[3]-energyProduced)) +
                               ' (<span style="font-weight:bold;">' +
                               puntos(Math.ceil((necesarios[3]-energyProduced)/energyPerSat)) +
                               ' Sat.</span>)</span></span>');

                           break;
                     }
                  }
              }
        }

        //insertar listener en el input, para leer su valor y calcular tiempo
        $('li.enter input').keyup(function() {

               entradaUsuario = $('li.enter input').val();

               if ((parseInt(entradaUsuario) == 0) || (entradaUsuario == ''))
               {
                    $('#lpunktkit-time').html(LANG.tiempoTotal + ': ' +
                              '<span style="color:' + strColor_LPuNKTKit +
                              ';font-weight:bold;">' + secondsToTime(0) + '</span>');

                    for ( i=0; i<3; i++) {
                          var menos = document.getElementById('menos' + i);
                          if (menos) menos.parentNode.removeChild(menos);
                    }
               }
               else if (parseInt(entradaUsuario)>0)
               {
                   $('#lpunktkit-time').html(LANG.tiempoTotal + ': ' +
                              '<span style="color:' + strColor_LPuNKTKit +
                              ';font-weight:bold;">' +
                              secondsToTime(tiempoPorUnidad*entradaUsuario) +
                              '</span>');

                   //calculamos cuantos recursos supone hacer esas
                   //"x" naves, y lo mostramos
                   recursosParaX = new Array();
                   color = new Array();

                   if (necesarios[0] > 0) //necesitamos metal
                   {
                       met = necesarios[0]*entradaUsuario;
                       recursosParaX.push(met);

                       if (met > metal) color.push("red")
                       else color.push("green");
                   }

                   if (necesarios[1] > 0) //cristal
                   {
                       cri = necesarios[1]*entradaUsuario;
                       recursosParaX.push(cri);
                       if (cri > cristal) color.push("red")
                       else color.push("green");
                   }

                   if (necesarios[2] > 0) //y deuterio
                   {
                       deu = necesarios[2]*entradaUsuario;
                       recursosParaX.push(deu);

                       if (deu > deuterio) color.push("red")
                       else color.push("green");
                   }

                   $('#costs #resources li.metal span').each( function (i) {

                       //mostramos datos
                       if ($('#menos' + i).length != 0)
                          $('#menos' + i).replaceWith( '<p style="font-size:10px;' +
                                   'color:' + color[i] + ';" id="menos' + i + '">-' +
                                   puntos(recursosParaX[i]) + '</p>' )
                       else
                           $(this).after( '<p style="font-size:10px;color:' +
                                          color[i] + ';" id="menos' + i + '">-' +
                                          puntos(recursosParaX[i]) + '</p>' );
                   });

               } //if (parseInt(entradaUsuario)>0)

        }); //$('li.enter input').keyup(function()

    } //if (existe.length>0)
}

/**
 * Calcula la produccion "ideal" del planeta segun la regla 3:2:1
 */
function regla321()
{
  //tomamos como referencia el metal
  pMetalIdeal = pMetal;
  pCristalIdeal = (pMetalIdeal/3)*2;
  pDeuterioIdeal = pMetalIdeal/3;
}

/**
 * Inicializa array de colores de mensajes
 */
function LoadColorMessages() {

   arrColorMessages = [

      //Texto             //Color
      [LANG.txtDespColor, '#CCFF66'],
      [LANG.txtRetColor,  '#888833'],
      [LANG.txtCCColor,   '#009999'],
      [LANG.txtEscColor,  '#66CC66'],
      [LANG.txtEspColor,  '#00FF00'], //'#FF6600'],
      [LANG.txtAEspColor, '#FF3300'],
      [LANG.txtPMColor,   '#FF00FF'],
      [LANG.txtLleColor,  '#FFFF33'],
      [LANG.txtExpColor,  '#888899'],
      [LANG.txtColColor,  '#CCFFCC']
   ];

   if (GM_getValue('messageColor0')) { //OldVersion
       for(var z = 0 ; z < arrColorMessages.length ; z++)
           if (GM_getValue('messageColor' + z, -1) != -1)
              arrColorMessages[z][1] = LoadOldKitOption('messageColor' + z, arrColorMessages[z][1]);
   }
   else // New Version
   {

       if ( GM_getValue('messageColor0' + strUniverse, arrColorMessages[0][1]) == -1 )
       {
            for(var z = 0 ; z < arrColorMessages.length ; z++) {
                GM_setValue('messageText' + z + strUniverse, arrColorMessages[z][0]);
                GM_setValue('messageColor' + z + strUniverse, arrColorMessages[z][1]);
            }

       }
       else
       {
           for(var z = 0 ; z < arrColorMessages.length ; z++)
               if (GM_getValue('messageColor' + z + strUniverse, -1) != -1) {
                   arrColorMessages[z][0] = GM_getValue('messageText' + z + strUniverse,
                                                      arrColorMessages[z][0]);
                   arrColorMessages[z][1] = GM_getValue('messageColor' + z + strUniverse,
                                                      arrColorMessages[z][1]);
               }
       }
   }
}

/**
 * Inicializa array de tipos de nave/defensa
 */
function LoadDatosFlota(blnFriki) {

  if (blnFriki) {
     arrDatosFlota = [
     //S.Name,              L.Name,                      Metal, Crystal,    Duty,   Cargo
     [LANG.txtCR_PCarga,    LANG_FRIKI.npc,               2000,    2000,       0,    5000],
     [LANG.txtCR_GrCarga,   LANG_FRIKI.ngc,               6000,    6000,       0,   25000],
     [LANG.txtCR_CLigero,   LANG_FRIKI.cl,                3000,    1000,       0,      50],
     [LANG.txtCR_CPesado,   LANG_FRIKI.cp,                6000,    4000,       0,     100],
     [LANG.txtCR_Crucero,   LANG_FRIKI.crucero,          20000,    7000,    2000,     800],
     [LANG.txtCR_NB,        LANG_FRIKI.nb,               45000,   15000,       0,    1500],
     [LANG.txtCR_Acoraz,    LANG_FRIKI.acorazado,        30000,   40000,   15000,     750],
     [LANG.txtCR_Bomb,      LANG_FRIKI.bombardero,       50000,   25000,   15000,     500],
     [LANG.txtCR_Destruc,   LANG_FRIKI.destructor,       60000,   50000,   15000,    2000],
     [LANG.txtCR_Edlm,      LANG_FRIKI.edlm,           5000000, 4000000, 1000000, 1000000],
     [LANG.txtCR_Colony,    LANG_FRIKI.txtColonizador,   10000,   20000,   10000,    7500],
     [LANG.txtCR_Recy,      LANG_FRIKI.reciclador,       10000,    6000,    2000,   20000],
     [LANG.txtCR_Sonda,     LANG_FRIKI.sonda,                0,    1000,       0,       0],
     [LANG.txtCR_Satelite,  LANG_FRIKI.satelite,             0,    2000,     500,       0],
     [LANG.txtCR_Lanza,     LANG_FRIKI.lanza,             2000,       0,       0,       0],
     [LANG.txtCR_LPeque,    LANG_FRIKI.laserp,            1500,     500,       0,       0],
     [LANG.txtCR_LGrande,   LANG_FRIKI.laserg,            6000,    2000,       0,       0],
     [LANG.txtCR_CGauss,    LANG_FRIKI.gauss,            20000,   15000,    2000,       0],
     [LANG.txtCR_CIonico,   LANG_FRIKI.ionico,            2000,    6000,       0,       0],
     [LANG.txtCR_CPlasma,   LANG_FRIKI.plasma,           50000,   50000,   30000,       0],
     [LANG.txtCR_CupPeque,  LANG_FRIKI.cupPeque,         10000,   10000,       0,       0],
     [LANG.txtCR_CupGrande, LANG_FRIKI.cupGrande,        50000,   50000,       0,       0]
     ];
  } else {
     arrDatosFlota = [
     //S.Name,              L.Name,                Metal, Crystal,    Duty,   Cargo
     [LANG.txtCR_PCarga,    LANG.npc,               2000,    2000,       0,    5000],
     [LANG.txtCR_GrCarga,   LANG.ngc,               6000,    6000,       0,   25000],
     [LANG.txtCR_CLigero,   LANG.cl,                3000,    1000,       0,      50],
     [LANG.txtCR_CPesado,   LANG.cp,                6000,    4000,       0,     100],
     [LANG.txtCR_Crucero,   LANG.crucero,          20000,    7000,    2000,     800],
     [LANG.txtCR_NB,        LANG.nb,               45000,   15000,       0,    1500],
     [LANG.txtCR_Acoraz,    LANG.acorazado,        30000,   40000,   15000,     750],
     [LANG.txtCR_Bomb,      LANG.bombardero,       50000,   25000,   15000,     500],
     [LANG.txtCR_Destruc,   LANG.destructor,       60000,   50000,   15000,    2000],
     [LANG.txtCR_Edlm,      LANG.edlm,           5000000, 4000000, 1000000, 1000000],
     [LANG.txtCR_Colony,    LANG.txtColonizador,   10000,   20000,   10000,    7500],
     [LANG.txtCR_Recy,      LANG.reciclador,       10000,    6000,    2000,   20000],
     [LANG.txtCR_Sonda,     LANG.sonda,                0,    1000,       0,       0],
     [LANG.txtCR_Satelite,  LANG.satelite,             0,    2000,     500,       0],
     [LANG.txtCR_Lanza,     LANG.lanza,             2000,       0,       0,       0],
     [LANG.txtCR_LPeque,    LANG.laserp,            1500,     500,       0,       0],
     [LANG.txtCR_LGrande,   LANG.laserg,            6000,    2000,       0,       0],
     [LANG.txtCR_CGauss,    LANG.gauss,            20000,   15000,    2000,       0],
     [LANG.txtCR_CIonico,   LANG.ionico,            2000,    6000,       0,       0],
     [LANG.txtCR_CPlasma,   LANG.plasma,           50000,   50000,   30000,       0],
     [LANG.txtCR_CupPeque,  LANG.cupPeque,         10000,   10000,       0,       0],
     [LANG.txtCR_CupGrande, LANG.cupGrande,        50000,   50000,       0,       0]
     ];
  }
}

function LoadColoresCR (blnFriki) {

  if (!showCompactadorBatallas) return;

  if (blnFriki) {
     arrColorBatalla = [
     [/{COLOR_T1}/gi,   '#7B90B8', LANG.txtCRTitles],
     [/{COLOR_A1}/gi,   '#00FF40', LANG.txtCRAttacker],
     [/{COLOR_A2}/gi,   '#00DDDD', LANG.txtCRAttacker + ' - ' + LANG.txtCRLostShips],
     [/{COLOR_D1}/gi,   '#ED7010', LANG.txtCRDefender],
     [/{COLOR_D2}/gi,   '#00DDDD', LANG.txtCRDefender + ' - ' + LANG.txtCRLostShips],
     [/{COLOR_R1}/gi,   '#FFCC66', LANG.txtCRLostUnits],
     [/{COLOR_R2}/gi,   '#09A64F', LANG.txtCRLossesXRes],
     [/{COLOR_R4}/gi,   '#F0EC64', LANG.recursos + ' - ' + LANG.txtCRStolen],
     [/{COLOR_R3}/gi,   '#FF0000', LANG.txtCRDebris + ' ' + LANG.txtCRAnd + ' ' +
                                   LANG.txtCRTotLoses],
     [/{COLOR_RA1}/gi,  '#00FF40', LANG.txtCRProfit + ' - ' + LANG.txtCRAttHarvest],
     [/{COLOR_RAM1}/gi, '#09A64F', LANG.txtCRProfit + ' - ' + LANG_FRIKI.metal],
     [/{COLOR_RAC1}/gi, '#09A64F', LANG.txtCRProfit + ' - ' + LANG_FRIKI.cristal],
     [/{COLOR_RAD1}/gi, '#09A64F', LANG.txtCRProfit + ' - ' + LANG_FRIKI.deuterio],
     [/{COLOR_RA2}/gi,  '#00DDDD', LANG.txtCRProfit + ' - ' + LANG.txtCRAttNoHarvest],
     [/{COLOR_RAM2}/gi, '#00DDDD', LANG.txtCRProfit + ' - ' + LANG_FRIKI.metal],
     [/{COLOR_RAC2}/gi, '#00DDDD', LANG.txtCRProfit + ' - ' + LANG_FRIKI.cristal],
     [/{COLOR_RAD2}/gi, '#00DDDD', LANG.txtCRProfit + ' - ' + LANG_FRIKI.deuterio],
     [/{COLOR_RD}/gi,   '#ED7010', LANG.txtCRProfit + ' - ' + LANG.txtCRDefHarvest],
     [/{COLOR_RDM}/gi,  '#ED7010', LANG.txtCRProfit + ' - ' + LANG_FRIKI.metal],
     [/{COLOR_RDC}/gi,  '#ED7010', LANG.txtCRProfit + ' - ' + LANG_FRIKI.cristal],
     [/{COLOR_RDD}/gi,  '#ED7010', LANG.txtCRProfit + ' - ' + LANG_FRIKI.deuterio],
     [/{COLOR_L}/gi,    '#CCFF66', '\u0025 ' + LANG.txtMoon],
     [/{COLOR_IN}/gi,   '#7B90B8', LANG.txtOthers]
     ];
  } else {
    arrColorBatalla = [
     [/{COLOR_T1}/gi,   '#7B90B8', LANG.txtCRTitles],
     [/{COLOR_A1}/gi,   '#00FF40', LANG.txtCRAttacker],
     [/{COLOR_A2}/gi,   '#00DDDD', LANG.txtCRAttacker + ' - ' + LANG.txtCRLostShips],
     [/{COLOR_D1}/gi,   '#ED7010', LANG.txtCRDefender],
     [/{COLOR_D2}/gi,   '#00DDDD', LANG.txtCRDefender + ' - ' + LANG.txtCRLostShips],
     [/{COLOR_R1}/gi,   '#FFCC66', LANG.txtCRLostUnits],
     [/{COLOR_R2}/gi,   '#09A64F', LANG.txtCRLossesXRes],
     [/{COLOR_R4}/gi,   '#F0EC64', LANG.recursos + ' - ' + LANG.txtCRStolen],
     [/{COLOR_R3}/gi,   '#FF0000', LANG.txtCRDebris + ' ' + LANG.txtCRAnd + ' ' +
                                   LANG.txtCRTotLoses],
     [/{COLOR_RA1}/gi,  '#00FF40', LANG.txtCRProfit + ' - ' + LANG.txtCRAttHarvest],
     [/{COLOR_RAM1}/gi, '#09A64F', LANG.txtCRProfit + ' - ' + LANG.metal],
     [/{COLOR_RAC1}/gi, '#09A64F', LANG.txtCRProfit + ' - ' + LANG.cristal],
     [/{COLOR_RAD1}/gi, '#09A64F', LANG.txtCRProfit + ' - ' + LANG.deuterio],
     [/{COLOR_RA2}/gi,  '#00DDDD', LANG.txtCRProfit + ' - ' + LANG.txtCRAttNoHarvest],
     [/{COLOR_RAM2}/gi, '#00DDDD', LANG.txtCRProfit + ' - ' + LANG.metal],
     [/{COLOR_RAC2}/gi, '#00DDDD', LANG.txtCRProfit + ' - ' + LANG.cristal],
     [/{COLOR_RAD2}/gi, '#00DDDD', LANG.txtCRProfit + ' - ' + LANG.deuterio],
     [/{COLOR_RD}/gi,   '#ED7010', LANG.txtCRProfit + ' - ' + LANG.txtCRDefHarvest],
     [/{COLOR_RDM}/gi,  '#ED7010', LANG.txtCRProfit + ' - ' + LANG.metal],
     [/{COLOR_RDC}/gi,  '#ED7010', LANG.txtCRProfit + ' - ' + LANG.cristal],
     [/{COLOR_RDD}/gi,  '#ED7010', LANG.txtCRProfit + ' - ' + LANG.deuterio],
     [/{COLOR_L}/gi,    '#CCFF66', '\u0025 ' + LANG.txtMoon],
     [/{COLOR_IN}/gi,   '#7B90B8', LANG.txtOthers]
     ];
  }

  if (GM_getValue('batallaColor0')) { //OldVersion
      for(var z = 0 ; z < arrColorBatalla.length ; z++)
          if (GM_getValue('batallaColor' + z, -1) != -1)
              arrColorBatalla[z][1] = LoadOldKitOption('batallaColor' + z, -1);

  } else { //New Version

    if ( GM_getValue('batallaColor0' + strUniverse, arrColorBatalla[0][1]) == -1 )
    {
         for(var z = 0 ; z < arrColorBatalla.length ; z++)
             GM_setValue('batallaColor' + z + strUniverse, arrColorBatalla[z][1]);

    }
    else
    {
        for(var z = 0 ; z < arrColorBatalla.length ; z++)
            if (GM_getValue('batallaColor' + z + strUniverse, -1) != -1)
                arrColorBatalla[z][1] = GM_getValue('batallaColor' + z + strUniverse, -1);
    }

    LANG.txtCR_PCarga    = GM_getValue("batallaName1" + strUniverse, LANG.txtCR_PCarga);
    LANG.txtCR_GrCarga   = GM_getValue("batallaName2" + strUniverse, LANG.txtCR_GrCarga);
    LANG.txtCR_CLigero   = GM_getValue("batallaName3" + strUniverse, LANG.txtCR_CLigero);
    LANG.txtCR_CPesado   = GM_getValue("batallaName4" + strUniverse, LANG.txtCR_CPesado);
    LANG.txtCR_Crucero   = GM_getValue("batallaName5" + strUniverse, LANG.txtCR_Crucero);
    LANG.txtCR_NB        = GM_getValue("batallaName6" + strUniverse, LANG.txtCR_NB);
    LANG.txtCR_Acoraz    = GM_getValue("batallaName7" + strUniverse, LANG.txtCR_Acoraz);
    LANG.txtCR_Bomb      = GM_getValue("batallaName8" + strUniverse, LANG.txtCR_Bomb);
    LANG.txtCR_Destruc   = GM_getValue("batallaName9" + strUniverse, LANG.txtCR_Destruc);
    LANG.txtCR_Edlm      = GM_getValue("batallaName10" + strUniverse, LANG.txtCR_Edlm);
    LANG.txtCR_Colony    = GM_getValue("batallaName11" + strUniverse, LANG.txtCR_Colony);
    LANG.txtCR_Recy      = GM_getValue("batallaName12" + strUniverse, LANG.txtCR_Recy);
    LANG.txtCR_Sonda     = GM_getValue("batallaName13" + strUniverse, LANG.txtCR_Sonda);
    LANG.txtCR_Satelite  = GM_getValue("batallaName14" + strUniverse, LANG.txtCR_Satelite);
    LANG.txtCR_Lanza     = GM_getValue("batallaName15" + strUniverse, LANG.txtCR_Lanza);
    LANG.txtCR_LPeque    = GM_getValue("batallaName16" + strUniverse, LANG.txtCR_LPeque);
    LANG.txtCR_LGrande   = GM_getValue("batallaName17" + strUniverse, LANG.txtCR_LGrande);
    LANG.txtCR_CGauss    = GM_getValue("batallaName18" + strUniverse, LANG.txtCR_CGauss);
    LANG.txtCR_CIonico   = GM_getValue("batallaName19" + strUniverse, LANG.txtCR_CIonico);
    LANG.txtCR_CPlasma   = GM_getValue("batallaName20" + strUniverse, LANG.txtCR_CPlasma);
    LANG.txtCR_CupPeque  = GM_getValue("batallaName21" + strUniverse, LANG.txtCR_CupPeque);
    LANG.txtCR_CupGrande = GM_getValue("batallaName22" + strUniverse, LANG.txtCR_CupGrande);
 }
}

/**
 * Opciones del script
 */
function loadOptions()
{
  strUniverse = getUniverse();

  idioma = getLanguage();

  var oldKitVersion = false;

  if (GM_getValue("idioma")) {
      oldKitVersion = true;
      GM_deleteValue("idioma");
  }

  //Establecer idioma del script
  switch (getLanguage())
  {
          case 'ES': LANG = LANG_ES;
                     availCRFriki = true;
                     break;

          case 'EN': LANG = LANG_EN;
                     break;

          case 'FR': LANG = LANG_FR;
                     break;

          default:   LANG = LANG_EN;
                     idioma = 'EN';
  }

  if (oldKitVersion) { //Recupera datos de la version 1.17 y los acomoda a la nueva

     //Color de la fuente de la cofiguracion del script
     strColor_LPuNKTKit     = LoadOldKitOption("strColor_LPuNKTKit", COLOR_LPUNKTKIT);

     //Links
     link1_name             = LoadOldKitOption("link1_name", LINK1_NAME);

     link1_href             = LoadOldKitOption("link1_href", LINK1_HREF);

     link2_name             = LoadOldKitOption("link2_name", LINK2_NAME);
     link2_href             = LoadOldKitOption("link2_href", LINK2_HREF);
     link3_name             = LoadOldKitOption("link3_name", LINK3_NAME);
     link3_href             = LoadOldKitOption("link3_href", LINK3_HREF);
     link4_name             = LoadOldKitOption("link4_name", LINK4_NAME);
     link4_href             = LoadOldKitOption("link4_href", LINK4_HREF);
     link5_name             = LoadOldKitOption("link5_name", LINK5_NAME);
     link5_href             = LoadOldKitOption("link5_href", LINK5_HREF);

     //Opciones
     setFixActionIcons      = LoadOldKitOption("setFixActionIcons", SET_FIX_ACTION_ICONS);
     highlightPlayers       = LoadOldKitOption("highlightPlayers", HIGHLIGHT_PLAYERS);
     showColorFlightSlots   = LoadOldKitOption("showColorFlightSlots", SHOW_COLOR_FLIGHT_SLOTS);
     showPrangerInHeader    = LoadOldKitOption("showPrangerInHeader", SHOW_PRANGER_IN_HEADER);
     showRange              = LoadOldKitOption("showRange", SHOW_RANGE);
     setFocusCorrectly      = LoadOldKitOption("setFocusCorrectly", SET_FOCUS_CORRECTLY);
     disableUselessStuff    = LoadOldKitOption("disableUselessStuff", DISABLE_USELESS_STUFF);
     showPlanetNavKeys      = LoadOldKitOption("showPlanetNavKeys", SHOW_PLANET_NAV_KEYS);

     showCompactadorBatallas= LoadOldKitOption("showCompactadorBatallas", SHOW_COMPACTADOR_BATALLAS);

     //Mensajes
     acelMessageSection     = LoadOldKitOption("acelMessageSection", ACEL_MESSAGE_SECTION);
     currentPlanetName      = LoadOldKitOption("currentPlanetName", CURRENT_PLANET_NAME);
     replyCC                = LoadOldKitOption("replyCC", REPLY_CC);
     showColoredMessages    = LoadOldKitOption("showColoredMessages", SHOW_COLORES_MESSAGES);

     showBBCode             = LoadOldKitOption("showBBCode", SHOW_BBCODE);
     showSmiles             = LoadOldKitOption("showSmiles", SHOW_SMILES);
     allianceMessageBoxIcon = LoadOldKitOption("allianceMessageBoxIcon", ALLIANCE_MESSAGEBOX_ICON);
     showMessageButtonLeft  = LoadOldKitOption("showMessageButtonLeft", SHOW_MESSAGE_BUTTON_LEFT);

     // Recursos transportados
     showFleetResources     = LoadOldKitOption("showFleetResources", SHOW_FLEET_RESOURCES);
     showResourcesPerFleet  = LoadOldKitOption("showResourcesPerFleet", SHOW_RESOURCES_PER_FLEET);

     // Teclas rapidas
     showShortcuts          = LoadOldKitOption("showShortcuts", SHOW_SHORTCUTS);
     showKeyEverywhere      = LoadOldKitOption("showKeyEverywhere", SHOW_KEY_EVERYWHERE);
     showKeyMailbox         = LoadOldKitOption("showKeyMailbox", SHOW_KEY_MAILBOX);
     showKeyFleet           = LoadOldKitOption("showKeyFleet", SHOW_KEY_FLEET);

     // Chat de alianza
     showChat               = LoadOldKitOption("showChat", SHOW_CHAT);
     idChat                 = LoadOldKitOption("idChat", 000000);

     // Resalte de escombros
     minEscombros           = LoadOldKitOption("minEscombros", MIN_ESCOMBROS);


  } else { //New version

     //Posicion de las ventanas adicionales de configuracion
     strPosBotones          = GM_getValue("strPosBotones" + strUniverse, POS_BOTONES);

     //Transparencia del fondo de la config. del script
     blnBackTransparent     = GM_getValue("blnBackTransparent" + strUniverse, BACK_TRANSPARENT);

     //Color de la fuente de la cofiguracion del script
     strColor_LPuNKTKit     = GM_getValue("strColor_LPuNKTKit" + strUniverse, COLOR_LPUNKTKIT);

     //Links
     link1_name             = GM_getValue("link1_name" + strUniverse, LINK1_NAME);
     link1_href             = GM_getValue("link1_href" + strUniverse, LINK1_HREF);
     link2_name             = GM_getValue("link2_name" + strUniverse, LINK2_NAME);
     link2_href             = GM_getValue("link2_href" + strUniverse, LINK2_HREF);
     link3_name             = GM_getValue("link3_name" + strUniverse, LINK3_NAME);
     link3_href             = GM_getValue("link3_href" + strUniverse, LINK3_HREF);
     link4_name             = GM_getValue("link4_name" + strUniverse, LINK4_NAME);
     link4_href             = GM_getValue("link4_href" + strUniverse, LINK4_HREF);
     link5_name             = GM_getValue("link5_name" + strUniverse, LINK5_NAME);
     link5_href             = GM_getValue("link5_href" + strUniverse, LINK5_HREF);

     //Opciones
     if ( getVersionOgame()[0] == 3 )
         setFixActionIcons = false
     else
         setFixActionIcons  = GM_getValue("setFixActionIcons" + strUniverse, SET_FIX_ACTION_ICONS);

     setFocusCorrectly      = GM_getValue("setFocusCorrectly" + strUniverse, SET_FOCUS_CORRECTLY);
     disableUselessStuff    = GM_getValue("disableUselessStuff" + strUniverse, DISABLE_USELESS_STUFF);

     if ( getVersionOgame()[0] == 3 )
         fixForumLink = false
     else
         fixForumLink       = GM_getValue("fixForumLink" + strUniverse, FIX_FORUM_LINK);

     disableStar            = GM_getValue("disableStar" + strUniverse, DISABLE_STAR);
     showConfirmTrader      = GM_getValue("showConfirmTrader" + strUniverse, SHOW_CONFIRM_TRADER);

     //Menu superior
     showPrangerInHeader    = GM_getValue("showPrangerInHeader" + strUniverse, SHOW_PRANGER_IN_HEADER);
     showOptionsInUserName  = GM_getValue("showOptionsInUserName" + strUniverse, SHOW_OPTIONS_IN_USERNAME);

     //Galaxia
     highlightPlayers       = GM_getValue("highlightPlayers" + strUniverse, HIGHLIGHT_PLAYERS);
     showLinkFixed          = GM_getValue("showLinkFixed" + strUniverse, SHOW_LINK_FIXED);

     //Planetas
     showPlanetNavKeys      = GM_getValue("showPlanetNavKeys" + strUniverse, SHOW_PLANET_NAV_KEYS);
     showMoonsRight         = GM_getValue("showMoonsRight" + strUniverse, SHOW_MOONS_RIGHT);
     showSmallPlanets       = GM_getValue("showSmallPlanets" + strUniverse, SHOW_SMALL_PLANETS);

     //Informacion
     showRange              = GM_getValue("showRange" + strUniverse, SHOW_RANGE);
     showEfficiency         = GM_getValue("showEfficiency" + strUniverse, SHOW_EFFICIENCY);
     showResourcesInfo      = GM_getValue("showResourcesInfo" + strUniverse, SHOW_RESOURCES_INFO);

     //Satelites
     showSatsBalance        = GM_getValue("showSatsBalance" + strUniverse, SHOW_SATS_BALANCE);
     showSatsGraviton       = GM_getValue("showSatsGraviton" + strUniverse, SHOW_SATS_GRAVITON);
     showSatsTerraformer    = GM_getValue("showSatsTerraformer" + strUniverse, SHOW_SATS_TERRAFORMER);

     //Compactador
     showCompactadorBatallas= GM_getValue("showCompactadorBatallas" + strUniverse, SHOW_COMPACTADOR_BATALLAS);
     usarCRFriki            = GM_getValue("usarCRFriki" + strUniverse, USAR_CR_FRIKI);

     //Mensajes
     acelMessageSection     = GM_getValue("acelMessageSection" + strUniverse, ACEL_MESSAGE_SECTION);
     currentPlanetName      = GM_getValue("currentPlanetName" + strUniverse, CURRENT_PLANET_NAME);
     replyCC                = GM_getValue("replyCC" + strUniverse, REPLY_CC);
     showColoredMessages    = GM_getValue("showColoredMessages" + strUniverse, SHOW_COLORED_MESSAGES);
     showBBCode             = GM_getValue("showBBCode" + strUniverse, SHOW_BBCODE);

     var arrVersionOgame = getVersionOgame();
     if ( ( arrVersionOgame[0] == 3 ) ||
          ( (arrVersionOgame[0] == 2) && (arrVersionOgame[1] == 3) &&
            ( (arrVersionOgame[2] == 2) || (arrVersionOgame[2] == 3) )
          )
        )
     {
         showSmiles         = false;
     } else {
         showSmiles         = GM_getValue("showSmiles" + strUniverse, SHOW_SMILES);
     }

     allianceMessageBoxIcon = GM_getValue("allianceMessageBoxIcon" + strUniverse, ALLIANCE_MESSAGEBOX_ICON);
     showMessageButtonLeft  = GM_getValue("showMessageButtonLeft" + strUniverse, SHOW_MESSAGE_BUTTON_LEFT);

     // Recursos transportados
     showFleetResources     = GM_getValue("showFleetResources" + strUniverse, SHOW_FLEET_RESOURCES);
     showResourcesPerFleet  = GM_getValue("showResourcesPerFleet" + strUniverse, SHOW_RESOURCES_PER_FLEET);
     showEmptySpace         = GM_getValue("showEmptySpace" + strUniverse, SHOW_EMPTY_SPACE);

     // Flota
     showColorFlightSlots   = GM_getValue("showColorFlightSlots" + strUniverse, SHOW_COLOR_FLIGHT_SLOTS);
     showLoadButtons        = GM_getValue("showLoadButtons" + strUniverse, SHOW_LOAD_BUTTONS);
     removeAdv              = GM_getValue("removeAdv" + strUniverse, REMOVE_ADV);
     showReturnFleetQuestion= GM_getValue("showReturnFleetQuestion" + strUniverse, SHOW_RETURN_FLEET_QUESTION);

     // Teclas rapidas
     showShortcuts          = GM_getValue("showShortcuts" + strUniverse, SHOW_SHORTCUTS);
     showKeyEverywhere      = GM_getValue("showKeyEverywhere" + strUniverse, SHOW_KEY_EVERYWHERE);
     showKeyMailbox         = GM_getValue("showKeyMailbox" + strUniverse, SHOW_KEY_MAILBOX);
     showKeyFleet           = GM_getValue("showKeyFleet" + strUniverse, SHOW_KEY_FLEET);

     // Chat de alianza
     showChat               = GM_getValue("showChat" + strUniverse, SHOW_CHAT);
     idChat                 = GM_getValue("idChat" + strUniverse, 000000);

     // Resalte de escombros
     minEscombros           = GM_getValue("minEscombros" + strUniverse, MIN_ESCOMBROS);

     if (usarCRFriki) {
         switch (idioma) {
           case 'ES': LANG_FRIKI = LANG_ES_FRIKI;
                      break;
           default: usarCRFriki = false;
                    GM_setValue("usarCRFriki" + strUniverse, false);
                    break;
         }
     }
  }
}

// Carga los datos de la version 1.17,
// los almacena en el nuevo formato y
// borra el antiguo
function LoadOldKitOption(strOption, valDefault) {
   if (GM_getValue(strOption, valDefault)) {

       var myOption     = GM_getValue(strOption, valDefault);
       GM_setValue(strOption + strUniverse, myOption);
       GM_deleteValue(strOption);

       return myOption;
   }
}

// name           OGame Redesign: Retarted Star
// description    Removes the annoying blinky stars in 1.2.1
function QuitarEstrella(blnQuitar)
{
   if (!blnQuitar) return;

   var star = document.getElementById('star');
   if (star) star.parentNode.removeChild(star);

   star = document.getElementById('star1');
   if (star) star.parentNode.removeChild(star);

   star = document.getElementById('star2');
   if (star) star.parentNode.removeChild(star);
}

function CrearBarraLinks() {
  var myDiv = document.createElement('div');
      myDiv.setAttribute('id', 'lpunktkit-links-div');

      myDiv.setAttribute('style','background: transparent ' +
                         'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAATCAYAAABY4MdjAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAGJJREFUKFNlyMsOQDAARNGRVENbSitBvcL//+OwHjc5m1ut5ST+1d8U635TIaaZCr7PVPAxUSF0IxWMMVSwtqGCc4EK7TcVnI9U6PpEhTBkKoQ4UWHICxXK8VABleVP2S6qF0CUalKdgTQIAAAAAElFTkSuQmCC) ' +
                         'repeat-x 0px 0px;height: 19px;text-align:center;' +
                         'font: normal 9px;position:fixed;' +
                         'bottom: ' + document.getElementById('siteFooter').offsetHeight + 'px;' +
                         'z-index:1;width: 100%;');

  var myContent = document.createElement('div');
      myContent.setAttribute('class', 'lpunktkit-links-cont');
      myContent.setAttribute('style', 'margin: 0px auto;padding-top:0px;width:720px;');

      myDiv.appendChild(myContent);

  var myExtra = document.createElement('div');
      myExtra.setAttribute('id','lpunktkit-extra');
      myExtra.setAttribute('style', 'width: 340px; float: left; text-align: center;');

  var myA = document.createElement('a');
      myA.setAttribute('id','lpunktkit-userscripts');
      myA.setAttribute('href', URL_SCRIPT);
      myA.setAttribute('target','_blank');
      myA.setAttribute('style', 'text-decoration:overline;');
      myA.appendChild(document.createTextNode('oGame Redesign: LPuNKTKit v' + VERSION_LPUNKTKIT));

      myExtra.appendChild(myA);

      myContent.appendChild(myExtra);

  var myLinks = document.createElement('div');
      myLinks.setAttribute('id', 'lpunktkit-links');
      myLinks.setAttribute('style', 'width: 380px; float: right; text-align: right;');

      myContent.appendChild(myLinks);

  document.getElementById('siteFooter').appendChild(myDiv);
}

function addOptions()
{
  const SIZE_FONT = '10px';

  var strImagen = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAdCAYAAADGgB7AAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK6wAACusBgosNWgAAAd1JREFUWEftl11OwzAMx9cCGt26teto99Gxln0IsSNwBV554ZXzcQ6OwBmQOAECZOKwhKxNtiTLEEJU+qupY7u/OFaqeg1yNa9v8dYYvjzBx/sbHbu8jo5PGs/pysOcr48P+qkRrFhcweRiuamSPFdV9cFn5iObI7ZiuYK8nAMrgDYZBm5AyYB0bQwO/YUxgmXjKWhDoSMGOANTLOB8dmkJplsRWz9SPauKjaezej/ZQrBtXMfn5YLmtgKTNvk+YEIsgqHcgDmCwgX/WrAJbqVtj93c3YNMuGLVnKndaivzYk4blL2s1nPrra3Oi8+yOTGPFRg9yxyCVSEHeWHe/M2gRYNQriqGeVi1WO7maWB28pPDHwOoGJho2zYv+st6TpLH6KtkDFaFkC1KsUg3YNXk2yqq6ftHwEzPJFV1VHk832ftYlcxVdOb2AUI3rtC/M+A7YA4HJj/vQWgA+F5ngxGtLmrGAMSIXFrNCAOVzEKIFTNpNcUvu4q5gDGbiuDdndXX+w9j1UPgtDsW4n/e2GcQCdKIIx6VO0uUSfmanUi4ArJmKu7OSYxLRSZxxxhFHMZ/1diACrJRpCkI4jPBl/qZ1xRP4UoIWJ3Ps4Ee33cS4eAYu8warB/Z4MKfALth6dmKmiZygAAAABJRU5ErkJggg%3D%3D";

  var aAnti = document.getElementById('btnAntiOptions');
  if (aAnti) aAnti.setAttribute('style', 'font-size:' + SIZE_FONT);

  //insertamos el enlace en el menu izquierdo
  var link = window.document.createElement('a');
      link.setAttribute('href', '#');
      link.textContent = 'LPuNKTKit v' + VERSION_LPUNKTKIT;
      link.setAttribute('style', 'color:' + strColor_LPuNKTKit + ';font-size:' + SIZE_FONT);
      link.className = "menubutton";
      link.setAttribute('id', 'lpunktkit-button');
      link.addEventListener('click', showOptions, false);

  AccelerateMessageSection();

  MessageButtonLeft();

  $('#menuTable').append('<li id="lpunktkit-options">' +
                         '<span class="menu_icon">' +
                         '<img src="' + strImagen + '" height="29" width="38">' +
                         '</span></li>');
  $('#lpunktkit-options').append(link);

  if ((paginaActual == 'showmessage') ||
      (paginaActual == "combatreport") ||
      (paginaActual == "writemessage") ||
      (paginaActual == "search"))
      return;

  CrearBarraLinks();

  //Creamos div para el resto de botones
  var myDiv = document.createElement('div');
      myDiv.setAttribute("align","center");
      myDiv.setAttribute('id', 'lpunktkit-buttons-div');

  var intCellspacing = 2;

  switch (strPosBotones) {
      case 'left':       if (!showShortcuts && !showColoredMessages && !showCompactadorBatallas)
                             break;

                         var myA = document.getElementById('lpunktkit-userscripts');
                             myA.parentNode.appendChild(document.createTextNode('LPuNKTKit: '));
                             myA.parentNode.removeChild(myA);

                         break;

      case 'right-up':   // Tabla de botones
                         var myTable = document.createElement('table');
                             myTable.setAttribute('id', 'lpunktkit-buttons');
                             myTable.setAttribute('style',
                                     ((showShortcuts || showColoredMessages || showCompactadorBatallas) ?
                                     'border: 1px solid ' + strColor_LPuNKTKit + ' !important;' : ''));
                             myTable.setAttribute('bgcolor', (blnBackTransparent ? 'transparent' : '#2F2F2F'));

                         var div = document.getElementById ("myPlanets");

                         if (!div) div = document.getElementById ("myWorlds");

                         myDiv.setAttribute('style','position:relative;top:-10px;z-index:90;');

                         myTable.setAttribute('width','100%');
                         myTable.setAttribute('cellspacing',intCellspacing + 'px');

                         myDiv.appendChild(myTable);

                         div.insertBefore(myDiv,div.firstChild);

                         break;

      case 'right-down': // Tabla de botones
                         var myTable = document.createElement('table');
                             myTable.setAttribute('id', 'lpunktkit-buttons');
                             myTable.setAttribute('style',
                                   ((showShortcuts || showColoredMessages || showCompactadorBatallas) ?
                                   'border: 1px solid ' + strColor_LPuNKTKit + ' !important;' : ''));
                             myTable.setAttribute('bgcolor', (blnBackTransparent ? 'transparent' : '#2F2F2F'));

                         var div = document.getElementById ("myPlanets");

                         if (!div) div = document.getElementById ("myWorlds");

                         myDiv.setAttribute('style','position:relative;top:10px;z-index:90;');

                         myTable.setAttribute('width','100%');
                         myTable.setAttribute('cellspacing',intCellspacing + 'px');

                         myDiv.appendChild(myTable);

                         div.appendChild(myDiv);

                         break;

      case 'top':        QuitarEstrella(true);

                         // Tabla de botones
                         var myTable = document.createElement('table');
                             myTable.setAttribute('id', 'lpunktkit-buttons');
                             myTable.setAttribute('style',
                                   ((showShortcuts || showColoredMessages || showCompactadorBatallas) ?
                                   'border: 1px solid ' + strColor_LPuNKTKit + ' !important;' : ''));
                             myTable.setAttribute('bgcolor', (blnBackTransparent ? 'transparent' : '#2F2F2F'));

                         var div = document.getElementById ("bar");

                         myDiv.setAttribute('style','position:relative;' +
                                            'height:14px;top:2px;z-index:90;');

                         myTr = document.createElement('tr');
                         myTr.setAttribute('valign', 'top');
                         myTr.setAttribute('id','lpunktkit-tr');

                         myTable.setAttribute('cellspacing','2px');

                         myTable.appendChild(myTr);

                         myDiv.appendChild(myTable);

                         div.appendChild(myDiv);

                         div = document.getElementById('helper');
                         div.setAttribute('style', 'position:relative;top:-14px;');

                         break;
  }

  addOptionsKey();
  addOptionsColor();

  addOptionsCompactador();
}

function addOptionsKey()
{
  if (!showShortcuts) return;

  if (paginaActual == 'showmessage') return;

  //insertamos el enlace en el menu izq
  var link = window.document.createElement('a');
      link.setAttribute('href', '#');
      link.textContent = (strPosBotones == 'left' ? 'Keys Config' : 'LPuNKT Keys Config');
      link.addEventListener('click', showOptionsKey, false);

  switch (strPosBotones) {
      case 'left': link.setAttribute('style','text-decoration:overline;');

                   var myDiv = document.getElementById('lpunktkit-extra');
                       myDiv.appendChild(link);

                   break;

      case 'top': link.setAttribute('style','text-decoration:overline;font-size:9px;color:' +
                                             strColor_LPuNKTKit);

                  var myTd = document.createElement('td');
                      myTd.setAttribute('width','33%');
                      myTd.setAttribute('align','center');
                      myTd.appendChild(link);

                  var myTr = document.getElementById('lpunktkit-tr');
                      myTr.appendChild(myTd);

                  break;

      default:    link.setAttribute('style','text-decoration:overline;font-size:9px;color:' +
                                             strColor_LPuNKTKit);

                  var myTable = document.getElementById ('lpunktkit-buttons');

                  var myTr = document.createElement('tr');

                  var myTd = document.createElement('td');
                      myTd.setAttribute('align','center');
                      myTd.appendChild(link);

                  var myDiv = document.createElement('div');
                      myDiv.setAttribute('style', 'clear:both;height:4px;');
                      myTd.appendChild(myDiv);

                      myTr.appendChild(myTd);

                      myTable.appendChild(myTr);
                      myTable.appendChild(myTd);
                  break;
  }

  $('#lpunktkey-options').append(link);
}


function addOptionsColor()
{
  if (!showColoredMessages) return;

  if (paginaActual == 'showmessage') return;

  //insertamos el enlace en el menu izq
  var link = window.document.createElement('a');
      link.setAttribute('href', '#');
      link.textContent = (strPosBotones == 'left' ? 'Msg. Config' : 'LPuNKT Message Config');
      link.addEventListener('click', showOptionsColor, false);

  switch (strPosBotones) {
      case 'left': link.setAttribute('style','text-decoration:overline;');

                   var myDiv = document.getElementById('lpunktkit-extra');
                       myDiv.appendChild(link);

                   break;

      case 'top': link.setAttribute('style','text-decoration:overline;font-size:9px;color:' +
                                             strColor_LPuNKTKit);

                  var myTd = document.createElement('td');
                      myTd.setAttribute('width','33%');
                      myTd.setAttribute('align','center');
                      myTd.appendChild(link);

                  var myTr = document.getElementById('lpunktkit-tr');
                      myTr.appendChild(myTd);

                  break;

      default:    link.setAttribute('style','text-decoration:overline;font-size:9px;color:' +
                                             strColor_LPuNKTKit);

                  var myTable = document.getElementById ('lpunktkit-buttons');

                  var myTr = document.createElement('tr');

                  var myTd = document.createElement('td');
                      myTd.setAttribute('align','center');
                      myTd.appendChild(link);

                  var myDiv = document.createElement('div');
                      myDiv.setAttribute('style', 'clear:both;height:4px;');
                      myTd.appendChild(myDiv);

                      myTr.appendChild(myTd);

                      myTable.appendChild(myTr);
                      myTable.appendChild(myTd);
                  break;
  }

  $('#lpunktcolor-options').append(link);
}

function addOptionsCompactador()
{
  if (!showCompactadorBatallas) return;

  if (paginaActual == 'showmessage') return;

  //insertamos el enlace en el menu izquierdo
  var link = window.document.createElement('a');
      link.setAttribute('href', '#');
      link.textContent = (strPosBotones == 'left' ? 'CR Config' : 'LPuNKT CR Config');
      link.addEventListener('click', showOptionsCompactador, false);

  switch (strPosBotones) {
      case 'left': link.setAttribute('style','text-decoration:overline;');

                   var myDiv = document.getElementById('lpunktkit-extra');
                       myDiv.appendChild(link);

                   break;

      case 'top': link.setAttribute('style','text-decoration:overline;font-size:9px;color:' +
                                             strColor_LPuNKTKit);

                  var myTd = document.createElement('td');
                      myTd.setAttribute('width','33%');
                      myTd.setAttribute('align','center');
                      myTd.appendChild(link);

                  var myTr = document.getElementById('lpunktkit-tr');
                      myTr.appendChild(myTd);

                  break;

      default:    link.setAttribute('style','text-decoration:overline;font-size:9px;color:' +
                                             strColor_LPuNKTKit);

                  var myTable = document.getElementById ('lpunktkit-buttons');

                  var myTr = document.createElement('tr');

                  var myTd = document.createElement('td');
                      myTd.setAttribute('align','center');
                      myTd.appendChild(link);

                  var myDiv = document.createElement('div');
                      myDiv.setAttribute('style', 'clear:both;height:4px;');
                      myTd.appendChild(myDiv);

                      myTr.appendChild(myTd);

                      myTable.appendChild(myTr);
                      myTable.appendChild(myTd);
                  break;
  }

  $('#lpunktcompactador-options').append(link);
}

function showOptions()
{
  //si quedo abierta una capa anterior, la borramos.
  var posibleCapaAnterior = $('#lpunktkit-overlay'); //General
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktkey-overlay'); //Shortcut keys
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktcolor-overlay'); //Message subject colors
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktcompactador-overlay'); //Message subject colors
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();

  //insertamos la capa de opciones
  var o = '<div id="lpunktkit-overlay" style="display:none;position:absolute;' +
          'z-index:90;background-color:rgba(0,0,0,0.7);"></div>';
  $('body').prepend(o);
  var overlay = $('#lpunktkit-overlay');
      overlay.css('width', $(window).width() );
      overlay.css('height', $(window).height() );

  //link de cierre
  var aCerrar = window.document.createElement('a');
      aCerrar.setAttribute('href', '#');
      aCerrar.setAttribute('class','lpunktkit-cerrar');

      aCerrar.addEventListener('click', hideOptions, false);

  imgCierre = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMA" +
              "AAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAAnFBMVEX////4YWP/dXjyS07/dX" +
              "j9bXD6a234YWP4XWD2WVv2VFfsOTzoLzHmKSvkISP2VFf0TE/vREftPT/i" +
              "HB72WVvvREf0TE//hon/gYX/fYD/e33/dXj/cXP9bXD/a236a23/Zmb4YW" +
              "P4XWD/Wl32WVv/VVj2VFf3VFb0TE/yS072SUvvREfuQELtPT/sOTzrMzXo" +
              "LzHnLC/mKSvkISPh2jkWAAAANHRSTlMAESIiMzMzMzMzMzMzMzNERERERH" +
              "d3qv//////////////////////////////////////xnOhPwAAAAlwSFlz" +
              "AAALEgAACxIB0t1+/AAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcm" +
              "tzT7MfTgAAAJJJREFUGJVtzNcagjAMBtC498TVZWktFaEVx/u/mx2gXJib" +
              "Pyf5EoBWders9mOOd6toQgbBgh96wQjRobPkWO79huIj5qPgMt5ycqJCct" +
              "IYQDCEMVFfAyh8yWjLE0UyN5j9LChl56udR0+dlbnnaV4tajNtAKoyLZ5L" +
              "N1hroa3fvEzxSHyzudl4+44G2DbfE/hTH+8DDcV0Y3OAAAAAAElFTkSuQmCC";

  aCerrar.setAttribute('style', 'position:absolute;top:0;right:0;width:16px;' +
                                'height:16px;background:url(' + imgCierre +
                                ') no-repeat scroll 0 0 transparent');

  var contenido =  '<table width=100%>' +
                   '<tr valign=top>' +
                   '<td width=32% align=left>' +
                        '<table width=100% style="border: 1px solid ' +
                        strColor_LPuNKTKit + ' !important;padding:20px;">' +
                        '<tr valign=top><td width=100%>';

      contenido += '<table border=0 width=100%>' +
                   '<tr>' +
                   '<td width=100%>' + LANG.txtConfBotones + ':' + divClear + '</td></tr>' +
                   '<tr>' +
                     '<td width=100% style="font-size:11px;">' +
                       '<table width=100% style="border: 1px solid ' +
                       strColor_LPuNKTKit + ' !important;padding:2px;">' +
                       '<tr valign=top>' +
                       '<td width=50%><input id="chkPosTop" name="chkPosBoton" type="radio" ' +
                       ((strPosBotones == 'top') ? "checked" : "") + '> ' +
                       LANG.txtSupMenu + '  </input></td>' +
                       '<td width=50%><input id="chkPosUp" name="chkPosBoton" type="radio" ' +
                       ((strPosBotones == 'right-up') ? "checked" : "") + '> ' +
                       LANG.txtArriba + '  </input></td>' +
                       '</tr>' +
                       '<tr valign=top>' +
                       '<td><input id="chkPosLeft" name="chkPosBoton" type="radio" ' +
                       ((strPosBotones == 'left') ? "checked" : "") + '> ' +
                       LANG.txtIzquierda + '  </input></td>' +
                       '<td><input id="chkPosDown" name="chkPosBoton" type="radio" ' +
                       ((strPosBotones == 'right-down') ? "checked" : "") + '> ' +
                       LANG.txtAbajo + '  </input></td>' +
                       '</tr></table>' +
                     '</td>' +
                   '</tr></table>' + divClear + hr;

      contenido += '<table border=0 width=100%>' +
                   '<tr valign=top><td width=100%>' +
                   '<input id="chkBack" name="chkBack" type="checkbox" ' +
                   (blnBackTransparent ? "checked" : "") + '> ' + LANG.txtBackTransparent +
                   '</td></tr>' +
                   '<tr valign=top>' +
                   '<td width=100%>' + hr + LANG.txtFontColor + ': ' + divClear +
                   '</td>' +
                   '</tr>' +
                   '</table>';


      contenido += '<table width=100% style="border: 1px solid ' +
                   strColor_LPuNKTKit + ' !important;padding:2px;">' +
                   '<tr valign=top>';

  var i;

  for ( i = 0; i < arrColorFont.length; i++)
  {
      var strColor = arrColorFont[i].replace(/\ /g, '').toLowerCase();

      contenido += '<td width=50%>' +
                   '<input id="chkColor' + i + '" name="chkColor" type="radio" ' +
                   ((strColor_LPuNKTKit == strColor) ? "checked" : "") + '>' +
                   '<span style="color:' + strColor + ';font-size:11px;font-weight:bold;"> ' +
                   arrColorFont[i] + '</span></input></td>'

      if ( ( ( i + 1 ) % 2) == 0) {
          contenido += '</tr>';

          if (i < (arrColorFont.length-1))
              contenido += '<tr valign=top>';
      }
  }

  if ( ( ( i + 1 ) % 2) != 0) contenido += '</tr>';

  contenido +=     '</table></td></tr></table></td>' +
                   '<td width=2%></td>' +
                   '<td width=66% align=right>' +
                   '<table width=100% style="border: 1px solid ' +
                        strColor_LPuNKTKit + ' !important;padding:20px;">' +
                        '<tr valign=top><td width=100%>';

  var intAnchoLinks1 = 210;
  var intAnchoLinks2 = 420;

  contenido +=     divClear + 'Links:' + divClear +
                   '<input id="link1_name" type="text" value="' + link1_name +
                   '" style="float:left;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks1 + 'px;"></input>' +
                   '<input id="link1_href" type="text" value="' + link1_href +
                   '" style="float:right;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks2 + 'px;"></input>' +
                   divClear +
                   '<input id="link2_name" type="text" value="' + link2_name +
                   '" style="float:left;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks1 + 'px;"></input>' +
                   '<input id="link2_href" type="text" value="' + link2_href +
                   '" style="float:right;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks2 + 'px;"></input>' +
                   divClear +
                   '<input id="link3_name" type="text" value="' + link3_name +
                   '" style="float:left;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks1 + 'px;"></input>' +
                   '<input id="link3_href" type="text" value="' + link3_href +
                   '" style="float:right;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks2 + 'px;"></input>' +
                   divClear +
                   '<input id="link4_name" type="text" value="' + link4_name +
                   '" style="float:left;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks1 + 'px;"></input>' +
                   '<input id="link4_href" type="text" value="' + link4_href +
                   '" style="float:right;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks2 + 'px;"></input>' +
                   divClear +
                   '<input id="link5_name" type="text" value="' + link5_name +
                   '" style="float:left;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks1 + 'px;"></input>' +
                   '<input id="link5_href" type="text" value="' + link5_href +
                   '" style="float:right;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:' + intAnchoLinks2 + 'px;"></input>' +
                   divClear + hr;

  // Opciones
  contenido +=     '<table border=0 cellpadding=0 cellspacing=0 width=100%>' +
                   '<tr valign=top>';

  if (setFocusCorrectly) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50%><input type="checkbox" name="setFocusCorrectly" ' +
                   'id="setFocusCorrectly" ' + cbxValue + '> ' +
                   LANG.setFocusCorrectly + '</td>';

  if ( getVersionOgame()[0] == 3 )
  {
     contenido +=  '<td><input type="radio" name="fixForumLink" ' +
                   'id="fixForumLink" disabled > ' + LANG.txtFixForumLink + '</td>';
  } else {
    if (fixForumLink) cbxValue = "checked"; else cbxValue = "";
    contenido +=  '<td><input type="checkbox" name="fixForumLink" ' +
                   'id="fixForumLink" ' + cbxValue + '> ' +
                   LANG.txtFixForumLink + '</td>';
  }

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if ( getVersionOgame()[0] == 3 )
  {
     contenido +=  '<td><input type="radio" name="setFixActionIcons" ' +
                   'id="setFixActionIcons" disabled > ' + LANG.txtFixActionButtons + '</td>';
  } else {
    if (setFixActionIcons) cbxValue = "checked"; else cbxValue = "";
    contenido +=   '<td width=50%>' +
                   '<input type="checkbox" name="setFixActionIcons" ' +
                   'id="setFixActionIcons" ' + cbxValue + '> ' +
                   LANG.txtFixActionButtons + '</td>';
  }

  if (disableUselessStuff) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="disableUselessStuff" ' +
                   'id="disableUselessStuff" ' + cbxValue + '> ' +
                   LANG.disableUselessStuff + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (disableStar) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="disableStar" ' +
                   'id="disableStar" ' + cbxValue + '> ' +
                   LANG.txtDisableStar + '</td>';

  if (showConfirmTrader) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showConfirmTrader" ' +
                   'id="showConfirmTrader" ' + cbxValue + '> ' +
                   LANG.txtConfirmTrader + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (showPrangerInHeader) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showPrangerInHeader" ' +
                   'id="showPrangerInHeader" ' + cbxValue + '> ' +
                   LANG.txtPrangerInHeader + '</td>';

  if (showOptionsInUserName) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showOptionsInUserName" ' +
                   'id="showOptionsInUserName" ' + cbxValue + '> ' +
                   LANG.txtOptionsInUserName + '</td>';

  contenido +=     '</tr></table>' + hr;

  contenido +=     '<table border=0 cellpadding=0 cellspacing=0 width=100%>' +
                   '<tr valign=top>';

  if (showPlanetNavKeys) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50%><input type="checkbox" name="showPlanetNavKeys" ' +
                   'id="showPlanetNavKeys" ' + cbxValue + '> ' +
                   LANG.showPlanetNavKeys + '</td>';

  if (showMoonsRight) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50%><input type="checkbox" name="showMoonsRight" ' +
                   'id="showMoonsRight" ' + cbxValue + '> ' +
                   LANG.txtMoonRight + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (showSmallPlanets) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showSmallPlanets" ' +
                   'id="showSmallPlanets" ' + cbxValue + '> ' +
                   LANG.txtSmallPlanets + '</td>';

  if (showLinkFixed) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showLinkFixed" ' +
                   'id="showLinkFixed" ' + cbxValue + '> ' +
                   LANG.txtLinkFixed + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (highlightPlayers) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="highlightPlayers" ' +
                   'id="highlightPlayers" ' + cbxValue + '> ' +
                   LANG.txtHighlightPlayers + '</td>';

  if (showRange) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showRange" ' +
                   'id="showRange" ' + cbxValue + '> ' +
                   LANG.showRange + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (showResourcesInfo) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showResourcesInfo" ' +
                   'id="showResourcesInfo" ' + cbxValue + '> ' +
                   LANG.txtResourcesInfo + '</td>';

  if (showEfficiency) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showEfficiency" ' +
                   'id="showEfficiency" ' + cbxValue + '> ' +
                   LANG.txtShowEfficiency + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (showSatsBalance) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showSatsBalance" ' +
                   'id="showSatsBalance" ' + cbxValue + '> ' +
                   LANG.txtShowMissingSats + '</td>';

  if (showSatsTerraformer) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showSatsTerraformer" ' +
                   'id="showSatsTerraformer" ' + cbxValue + '> ' +
                   LANG.txtSatTerraformer + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (showSatsGraviton) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showSatsGraviton" ' +
                   'id="showSatsGraviton" ' + cbxValue + '> ' +
                   LANG.txtSatGraviton + '</td>';

  if (showCompactadorBatallas) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showCompactadorBatallas" ' +
                   'id="showCompactadorBatallas" ' + cbxValue + '> ' +
                   LANG.txtCRScript + ' <b>*</b></td>';

//  contenido +=     '<td></td>';

  contenido +=     '</tr>' +
                   '</table>' + hr;

  // Messages
  contenido +=     '<table border=0 cellpadding=0 cellspacing=0 width=100%>' +
                   '<tr valign=top>';

  if (acelMessageSection) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50%><input type="checkbox" name="acelMessageSection" ' +
                   'id="acelMessageSection" ' + cbxValue + '> ' +
                   LANG.acelerarMens + '</td>';

  if (currentPlanetName) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50%><input type="checkbox" name="currentPlanetName" ' +
                   'id="currentPlanetName" ' + cbxValue + '> ' +
                   LANG.planetaMens + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (replyCC) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="replyCC" ' +
                   'id="replyCC" ' + cbxValue + '> ' +
                   LANG.replyCC + '</td>';

  if (showMessageButtonLeft) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showMessageButtonLeft" ' +
                   'id="showMessageButtonLeft" ' + cbxValue + '> ' +
                   LANG.showMessageButtonLeft + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (allianceMessageBoxIcon) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="allianceMessageBoxIcon" ' +
                   'id="allianceMessageBoxIcon" ' + cbxValue + '> ' +
                   LANG.allianceMessageBoxIcon + '</td>';

  var arrVersionOgame = getVersionOgame();
  if ( ( arrVersionOgame[0] == 3 ) ||
       ( (arrVersionOgame[0] == 2) && (arrVersionOgame[1] == 3) &&
         ( (arrVersionOgame[2] == 2) || (arrVersionOgame[2] == 3) )
       )
     )
  {
     contenido +=  '<td><input type="radio" name="showSmiles" ' +
                   'id="showSmiles" disabled > ' + LANG.smiles + '</td>';
  } else {
    if (showSmiles) cbxValue = "checked"; else cbxValue = "";
    contenido +=  '<td><input type="checkbox" name="showSmiles" ' +
                   'id="showSmiles" ' + cbxValue + '> ' +
                   LANG.smiles + '</td>';
  }

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (showColoredMessages) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showColoredMessages" ' +
                   'id="showColoredMessages" ' + cbxValue + '> ' +
                   LANG.txtColoredMessages + ' <b>*</b></td>';

  if (showBBCode) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showBBCode" ' +
                   'id="showBBCode" ' + cbxValue + '> ' +
                   'BBCode' + '</td>';

  contenido +=     '</tr>' +
                   '</table>' + hr;

  //Fleet
  contenido +=     '<table border=0 cellpadding=0 cellspacing=0 width=100%>' +
                   '<tr valign=top>';

  if (showFleetResources) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50%><input type="checkbox" name="showFleetResources" ' +
                   'id="showFleetResources" ' + cbxValue + '> ' +
                   LANG.showFleetResources + '</td>';

  if (showResourcesPerFleet) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50><input type="checkbox" name="showResourcesPerFleet" ' +
                   'id="showResourcesPerFleet" ' + cbxValue + '> '+
                   LANG.showResourcesPerFleet + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (showEmptySpace) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50><input type="checkbox" name="showEmptySpace" ' +
                   'id="showEmptySpace" ' + cbxValue + '> '+
                   LANG.txtShowEmptySpace + '</td>';

  if (showColorFlightSlots) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showColorFlightSlots" ' +
                   'id="showColorFlightSlots" ' + cbxValue + '> ' +
                   LANG.txtColorFlightSlots + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (removeAdv) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="removeAdv" ' +
                   'id="removeAdv" ' + cbxValue + '> ' +
                   LANG.txtQuitarAdv + '</td>';

  if (showReturnFleetQuestion) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showReturnFleetQuestion" ' +
                   'id="showReturnFleetQuestion" ' + cbxValue + '> ' +
                   LANG.txtReturnFleetQuestion + '</td>';

  contenido +=     '</tr>' +
                   '<tr valign=top>';

  if (showLoadButtons) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td><input type="checkbox" name="showLoadButtons" ' +
                   'id="showLoadButtons" ' + cbxValue + '> ' +
                   LANG.txtLoadButtons + '</td>';

  contenido +=     '<td></td>';

  contenido +=     '</tr>' +
                   '</table>' + hr;

  //Shortcuts
  contenido +=     '<table border=0 cellpadding=0 cellspacing=0 width=100%>' +
                   '<tr valign=top>';

  if (showShortcuts) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td colspan=3><input type="checkbox" name="showShortcuts" ' +
                   'id="showShortcuts" ' + cbxValue + '> ' +
                   LANG.usarKeys + ' <b>*</b>' + divClear + divClear + '</td></tr>';

  contenido +=     '<tr valign=top><td width=4%></td>';

  if (showKeyEverywhere) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=46%><input type="checkbox" name="showKeyEverywhere" ' +
                   'id="showKeyEverywhere" ' + cbxValue + '> '+
                   LANG.usarGeneral + '</td>';

  if (showKeyMailbox) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50%><input type="checkbox" name="showKeyMailbox" ' +
                   'id="showKeyMailbox" ' + cbxValue + '> '+
                   LANG.usarMens + '</td></tr>';

  if (showKeyFleet) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<tr valign=top><td></td>' +
                   '<td><input type="checkbox" name="showKeyFleet" ' +
                   'id="showKeyFleet" ' + cbxValue + '> ' +
                   LANG.usarFlota + '</td><td></td>' +
                   '</tr></table>' + hr;

  // Chat
  contenido +=     '<table border=0 cellpadding=0 cellspacing=0 width=100%>' +
                   '<tr valign=top>';

  if (showChat) cbxValue = "checked"; else cbxValue = "";
  contenido +=     '<td width=50%><input type="checkbox" name="showChat" ' +
                   'id="showChat" ' + cbxValue + '> ' +
                   LANG.txtChat + '</td>';

  contenido +=     '<td width=50%>' + LANG.txtIdChat +
                   ': <input id="idChat" type="text" value="' + idChat +
                   '" style="float:right;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:150px;"></input></td>';

  contenido +=     '</tr>' +
                   '</table>' + hr;

  // Debris
  contenido +=     LANG.minEscombros +
                   ': <input id="minEscombros" type="text" value="' + minEscombros +
                   '" style="float:right;margin-left:2px;background-color:' +
                   'transparent;color:' + strColor_LPuNKTKit +
                   ';border:solid 1px ' + strColor_LPuNKTKit +
                    ';padding:1px;width:150px;"></input>' + divClear + hr;

  contenido +=     '<i>* ' + LANG.txtHabilitaVentana + '</i>';

  contenido +=     '</td></tr></table></td></tr></table>';

  var guardar = document.createElement("a");
      //guardar.text = LANG.guardar; //daba problemas en chrome
      guardar.appendChild(document.createTextNode(LANG.guardar));
      guardar.setAttribute('href', '#');
      guardar.addEventListener('click', saveOptions, false);
      guardar.setAttribute('style', 'margin-top:10px;margin-left:1030px;' +
                                    'display:block;color:' + strColor_LPuNKTKit +
                                    ';text-decoration:overline');

  var linkScript = document.createElement('a');
      linkScript.appendChild(
                 document.createTextNode('oGame Redesign: LPuNKTKit v' + VERSION_LPUNKTKIT));
      linkScript.setAttribute('href','http://userscripts.org/scripts/show/117512');
      linkScript.setAttribute('target','_blank');
      linkScript.setAttribute('style', 'position:relative;top:22px;font-size:10px;' +
                                       'margin-top:10px;margin-left:60px;' +
                                       'color:' + strColor_LPuNKTKit +
                                       ';text-decoration:overline');

  var opciones = document.createElement("div");
      opciones.id = "lpunktkit-opciones";

  overlay.append(opciones);

  var divOpciones = $('#lpunktkit-opciones');
      divOpciones.css({'position':'relative',
                       'margin':'60px auto auto' ,
                       'width':'1090px' ,
                       'background-color': (blnBackTransparent ? 'transparent' :
                                                                 '#2f2f2f'),
                       'border':'1px solid ' + strColor_LPuNKTKit, //#666' ,
                       'color':strColor_LPuNKTKit ,
                       'padding':'20px' ,
                       'text-align':'left'});
      divOpciones.html(contenido);

      divOpciones.append(linkScript);
      divOpciones.append(guardar);

  $('#lpunktkit-opciones').append(aCerrar);
  overlay.show('slow');
}


function showOptionsKey()
{
  //si quedo abierta una capa anterior, la borramos.
  var posibleCapaAnterior = $('#lpunktkit-overlay'); //General
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktkey-overlay'); //Shortcut keys
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktcolor-overlay'); //Message subject colors
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktcompactador-overlay'); //Message subject colors
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();

  //insertamos la capa de opciones
  var o = '<div id="lpunktkey-overlay" style="display:none;position:absolute;' +
          'z-index:90;background-color:rgba(0,0,0,0.7);"></div>';
  $('body').prepend(o);
  var overlay = $('#lpunktkey-overlay');
      overlay.css('width', $(window).width() );
      overlay.css('height', $(window).height() );

  //link de cierre
  var aCerrar = window.document.createElement('a');
      aCerrar.setAttribute('href', '#');
      aCerrar.addEventListener('click', hideOptionsKey, false);

  imgCierre = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMA" +
              "AAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAAnFBMVEX////4YWP/dXjyS07/dX" +
              "j9bXD6a234YWP4XWD2WVv2VFfsOTzoLzHmKSvkISP2VFf0TE/vREftPT/i" +
              "HB72WVvvREf0TE//hon/gYX/fYD/e33/dXj/cXP9bXD/a236a23/Zmb4YW" +
              "P4XWD/Wl32WVv/VVj2VFf3VFb0TE/yS072SUvvREfuQELtPT/sOTzrMzXo" +
              "LzHnLC/mKSvkISPh2jkWAAAANHRSTlMAESIiMzMzMzMzMzMzMzNERERERH" +
              "d3qv//////////////////////////////////////xnOhPwAAAAlwSFlz" +
              "AAALEgAACxIB0t1+/AAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcm" +
              "tzT7MfTgAAAJJJREFUGJVtzNcagjAMBtC498TVZWktFaEVx/u/mx2gXJib" +
              "Pyf5EoBWders9mOOd6toQgbBgh96wQjRobPkWO79huIj5qPgMt5ycqJCct" +
              "IYQDCEMVFfAyh8yWjLE0UyN5j9LChl56udR0+dlbnnaV4tajNtAKoyLZ5L" +
              "N1hroa3fvEzxSHyzudl4+44G2DbfE/hTH+8DDcV0Y3OAAAAAAElFTkSuQmCC";

  aCerrar.setAttribute('style', 'position:absolute;top:0;right:0;width:16px;' +
                                'height:16px;background:url(' + imgCierre +
                                ') no-repeat scroll 0 0 transparent');

  const ANCHO1 = 16;
  const ANCHO2 = 33;

  var contenido = '<table border=0 cellspacing=2 cellpadding=0 width=100%>';

  if (showShortcuts) cbxValue = "checked"; else cbxValue = "";
  contenido +=    '<tr valign=top><td width=50%><input type="checkbox" name="showShortcuts" ' +
                  'id="showShortcuts" ' + cbxValue + '> ' +
                  LANG.usarKeys + '</td>' +
                  '<td width=50%></td></tr>' +
                  '<tr><td colspan=2>' + hr +
                  '</td></tr>'

  if (showKeyEverywhere) cbxValue = "checked"; else cbxValue = "";
  contenido +=    '<tr valign=top><td height=100%>' +
                  '<input type="checkbox" name="showKeyEverywhere" ' +
                  'id="showKeyEverywhere" ' + cbxValue + '> ' +
                  LANG.usarGeneral + divClear +
                  '<table style="border: 1px solid ' + strColor_LPuNKTKit + //#606060
                  ' !important;padding:2px;" width=98%>' +
                  '<tr><td>' +
                  LANG.txtOgame + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>O</td><td>' + LANG.general + '</td>' +
                       '<td>' + LANG.mayusc + '-O</td><td>' + LANG.listaEventos +
                       '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>R</td><td>' + LANG.recursos + '</td>' +
                       '<td>' + LANG.mayusc + '-R</td><td>' + LANG.recursosDetalle +
                       '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>C</td><td>' + LANG.instalaciones + '</td>' +
                       '<td>' + LANG.mayusc + '-C</td><td>' + LANG.salto +
                       '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>E</td><td>' + LANG.investigaciones + '</td>' +
                       '<td>S</td><td>' + LANG.hangar + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>D</td><td>' + LANG.defensa + '</td>' +
                       '<td>G</td><td>' + LANG.galaxia + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>F</td><td>' + LANG.flota + '</td>' +
                       '<td>' + LANG.mayusc + '-F</td><td>' + LANG.movFlota +
                       '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>L</td><td>' + LANG.alianza + '</td>' +
                       '<td>' + LANG.mayusc + '-L</td><td>' + LANG.sendCC +
                       '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>B</td><td>' + LANG.amigos + '<span style="color:' +
                       strColor_LPuNKTKit + ';"> **</span></td>' +
                       '<td>T</td><td>' + LANG.notas + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>K</td><td>' + LANG.clasificacion + '</td>' +
                       '<td>H</td><td>' + LANG.buscar + '<span style="color:' +
                       strColor_LPuNKTKit + ';"> **</span></td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>M</td><td>' + LANG.mensajes + '</td>' +
                       '<td></td><td></td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.inicio + '</td>' +
                       '<td>' + LANG.priPlaneta + '</td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.fin + '</td>' +
                       '<td>' + LANG.ultPlaneta + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.izquierda + '</td>' +
                       '<td>' + LANG.antPlaneta + '</td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.derecha + '</td>' +
                       '<td>' + LANG.sigPlaneta + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.arriba + '</td>' +
                       '<td>' + LANG.antItem + '</td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.abajo + '</td>' +
                       '<td>' + LANG.sigItem + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>Ctrl-' + LANG.izquierda + '</td>' +
                       '<td>' + LANG.altPlanetaLuna + '</td>' +
                       '<td>Ctrl-' + LANG.derecha + '</td>' +
                       '<td>' + LANG.altPlanetaLuna + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>Ctrl-' + LANG.arriba + '</td>' +
                       '<td>' + LANG.antCelestial + '</td>' +
                       '<td>Ctrl-' + LANG.abajo + '</td>' +
                       '<td>' + LANG.sigCelestial + '</td></tr>' +
                       '</table>' + divClear + divClear +

                  LANG.txtClasif + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>' + LANG.izquierda + '</td><td>' + LANG.antPag + '</td>' +
                       '<td>' + LANG.derecha + '</td><td>' + LANG.sigPag + '</td>' +
                       '</tr></table>' + divClear + divClear +

                  LANG.txtSalto + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td></tr>' +
                       '<tr valign=top><td></td><td>A</td><td>' + LANG.allNaves + '</td>' +
                       '<td>N</td><td>' + LANG.borrarSel + '</td>' +
                       '</tr></table>';

  contenido +=    '</td></tr></table><br>';

  if (showKeyMailbox) cbxValue = "checked"; else cbxValue = "";
  contenido +=    '<input type="checkbox" name="showKeyMailbox" ' +
                  'id="showKeyMailbox" ' + cbxValue + '> ' +
                  LANG.usarMens + divClear +
                  '<table style="border: 1px solid ' + strColor_LPuNKTKit + //#606060
                  ' !important;padding:2px;" width=98%>' +
                  '<tr><td>' +
                  LANG.txtMailbox + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>A</td><td>' + LANG.allMens + '</td>' +
                       '<td>N</td><td>' + LANG.borrarSel + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.borrar + '</td><td>' + LANG.borrarMens + '</td>' +
                       '<td></td><td></td></tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.avPag + '</td>' +
                       '<td>' + LANG.antPag + '</td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.retPag + '</td>' +
                       '<td>' + LANG.sigPag + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>Ctrl-' + LANG.inicio + '</td><td>' + LANG.priPag + '</td>' +
                       '<td>Ctrl-' + LANG.fin + '</td><td>' + LANG.ultPag + '</td>' +
                       '</tr></table>' + divClear + divClear +

                  LANG.txtMensaje + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.izquierda + '</td><td>' + LANG.antMens + '</td>' +
                       '<td>' + LANG.derecha + '</td><td>' + LANG.sigMens + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.borrar + '</td><td>' + LANG.delMens + '</td>' +
                       '<td>Esc</td><td>' + LANG.cerrarMens + '</td></tr>' +
                       '</table>' + divClear +
                  '</td></tr></table>' +
                  '</td><td height=100%>';

  if (showKeyFleet) cbxValue = "checked"; else cbxValue = "";
  contenido +=    '<input type="checkbox" name="showKeyFleet" ' +
                  'id="showKeyFleet" ' + cbxValue + '> ' +
                  LANG.usarFlota + divClear +
                  '<table style="border: 1px solid ' + strColor_LPuNKTKit + //#606060
                  ' !important;padding:2px;" width=98%>' +
                  '<tr><td>' +
                  LANG.txt1Flota + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>A</td><td>' + LANG.allNaves + '</td>' +
                       '<td>N</td><td>' + LANG.borrarSel + '</td>' +
                       '</tr></table>' + divClear + divClear +

                  LANG.txt2Flota + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-1</td><td>' + LANG.velocidad + ' 10%</td>' +
                       '<td>' + LANG.mayusc + '-2</td><td>' + LANG.velocidad + ' 20%</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-3</td><td>' + LANG.velocidad + ' 30%</td>' +
                       '<td>' + LANG.mayusc + '-4</td><td>' + LANG.velocidad + ' 40%</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-5</td><td>' + LANG.velocidad + ' 50%</td>' +
                       '<td>' + LANG.mayusc + '-6</td><td>' + LANG.velocidad + ' 60%</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-7</td><td>' + LANG.velocidad + ' 70%</td>' +
                       '<td>' + LANG.mayusc + '-8</td><td>' + LANG.velocidad + ' 80%</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-9</td><td>' + LANG.velocidad + ' 90%</td>' +
                       '<td>' + LANG.mayusc + '-0</td><td>' + LANG.velocidad + ' 100%</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-P</td><td>' + LANG.destPlaneta + '</td>' +
                       '<td>' + LANG.mayusc + '-M</td><td>' + LANG.destLuna + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-D</td><td>' + LANG.destEscombros + '</td>' +
                       '<td>' + LANG.mayusc + '-E</td><td>' + LANG.destExpedicion + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.retroceso + '</td>' +
                       '<td>' + LANG.volver + '</td><td></td><td></td>' +
                       '</tr></table>' + divClear + divClear +

                  LANG.txt3Flota + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>A</td><td>' + LANG.allRecursos + '</td>' +
                       '<td>N</td><td>' + LANG.borrarSel + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>V</td><td>' + LANG.recInversos + ' (D, C, M)</td>' +
                       '<td>' + LANG.mayusc + '-M</td><td>' + LANG.maxMetal + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-K</td><td>' + LANG.maxCristal + '</td>' +
                       '<td>' + LANG.mayusc + '-D</td><td>' + LANG.maxDuty + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-E</td><td>' + LANG.expedicion + '</td>' +
                       '<td>' + LANG.mayusc + '-Z</td><td>' + LANG.colonizar + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-H</td><td>' + LANG.reciclar + '</td>' +
                       '<td>' + LANG.mayusc + '-T</td><td>' + LANG.tranportar + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-P</td><td>' + LANG.desplegar + '</td>' +
                       '<td>' + LANG.mayusc + '-I</td><td>' + LANG.espiar + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-N</td><td>' + LANG.defender + '</td>' +
                       '<td>' + LANG.mayusc + '-A</td><td>' + LANG.atacar + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-S</td><td>' + LANG.atacarSAC + '</td>' +
                       '<td>' + LANG.mayusc + '-Y</td><td>' + LANG.destruir + '</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-1</td><td>' + LANG.permanecer +
                       ' 1 ' + LANG.hora + '</td>' +
                       '<td>' + LANG.mayusc + '-2</td><td>' + LANG.permanecer +
                       ' 2 ' + LANG.hora + 's</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-3</td><td>' + LANG.permanecer +
                       ' 3 ' + LANG.hora + 's</td>' +
                       '<td>' + LANG.mayusc + '-4</td><td>' + LANG.permanecer +
                       ' 4 ' + LANG.hora + 's</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-5</td><td>' + LANG.permanecer +
                       ' 5 ' + LANG.hora + 's</td>' +
                       '<td>' + LANG.mayusc + '-6</td><td>' + LANG.permanecer +
                       ' 6 ' + LANG.hora + 's</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-7</td><td>' + LANG.permanecer +
                       ' 7 ' + LANG.hora + 's</td>' +
                       '<td>' + LANG.mayusc + '-8</td><td>' + LANG.permanecer +
                       ' 8 ' + LANG.hora + 's</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-9</td><td>' + LANG.permanecer +
                       ' 9 ' + LANG.hora + 's</td>' +
                       '<td>' + LANG.mayusc + '-0</td><td>' + LANG.permanecer +
                       ' 10 ' + LANG.hora + 's</td>' +
                       '</tr><tr valign=top><td></td>' +
                       '<td>' + LANG.mayusc + '-' + LANG.retroceso + '</td>' +
                       '<td>' + LANG.volver + '</td><td></td><td></td>' +
                       '</tr></table>' + divClear + divClear +

                  LANG.txtFlota + divClear +
                       '<table border=0 cellpadding=2 cellspacing=0 width=100% ' +
                       'style="color:white;font-size:smaller;">' +
                       '<tr style="color:yellow;"><td width=2%></td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td>' +
                       '<td width=' + ANCHO1 + '%>' + LANG.tecla + '</td>' +
                       '<td width=' + ANCHO2 + '%>' + LANG.accion + '</td></tr>' +
                       '<tr valign=top><td></td>' +
                       '<td>N</td><td>' + LANG.recargar + '</td>' +
                       '<td>P</td><td>' + LANG.expInfo + '</td>' +
                       '</tr></table>' +
                  '</td></tr></table><br>' +
                       '<table border=0 cellpadding=0 cellspacing=0 width=100% ' +
                       'style="color:' + strColor_LPuNKTKit + ';">' +
                       '<tr valign=bottom>' +
                       '<td width=100% height=100%>** ' + LANG.txtErrorKey + '</td>' +
                       '</tr></table>' +
                  '</td></tr>' +
                  '<tr><td colspan=2>' + hr + '</td></tr>' +
                  '</table>';

  var guardar = document.createElement("a");
      //guardar.text = LANG.guardar; //daba problemas en chrome
      guardar.appendChild(document.createTextNode(LANG.guardar));
      guardar.setAttribute('href', '#');
      guardar.addEventListener('click', saveOptionsKey, false);
      guardar.setAttribute('style', 'margin-top:10px;margin-left:1040px;' +
                                    'display:block;color:' + strColor_LPuNKTKit +
                                    ';text-decoration:overline');

  var opciones = document.createElement("div");
      opciones.id = "lpunktkey-opciones";
  overlay.append(opciones);

  var divOpciones = $('#lpunktkey-opciones');
      divOpciones.css({ 'position':'relative',
                        'margin':'60px auto auto' ,
                        'width':'1120px' ,
                        'background-color': (blnBackTransparent ? 'transparent' :
                                                                  '#2f2f2f'),
                        'border':'1px solid ' + strColor_LPuNKTKit, //#666' ,
                        'color':strColor_LPuNKTKit,
                        'padding':'20px' ,
                        'text-align':'left'});
      divOpciones.html(contenido);
      divOpciones.append(guardar);

  $('#lpunktkey-opciones').append(aCerrar);
  overlay.show('slow');
}

function showOptionsColor()
{
  //Cargamos colores de mensajes y su config
  LoadColorMessages();

  //si quedo abierta una capa anterior, la borramos.
  var posibleCapaAnterior = $('#lpunktkit-overlay'); //General
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktkey-overlay'); //Shortcut keys
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktcolor-overlay'); //Message subject colors
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktcompactador-overlay'); //Message subject colors
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();

  //insertamos la capa de opciones
  var o = '<div id="lpunktcolor-overlay" style="display:none;position:absolute;' +
          'z-index:90;background-color:rgba(0,0,0,0.7);"></div>';
  $('body').prepend(o);

  var overlay = $('#lpunktcolor-overlay');
      overlay.css('width', $(window).width() );
      overlay.css('height', $(window).height() );

  //link de cierre
  var aCerrar = window.document.createElement('a');
      aCerrar.setAttribute('href', '#');
      aCerrar.addEventListener('click', hideOptionsColor, false);

  imgCierre = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMA" +
              "AAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAAnFBMVEX////4YWP/dXjyS07/dX" +
              "j9bXD6a234YWP4XWD2WVv2VFfsOTzoLzHmKSvkISP2VFf0TE/vREftPT/i" +
              "HB72WVvvREf0TE//hon/gYX/fYD/e33/dXj/cXP9bXD/a236a23/Zmb4YW" +
              "P4XWD/Wl32WVv/VVj2VFf3VFb0TE/yS072SUvvREfuQELtPT/sOTzrMzXo" +
              "LzHnLC/mKSvkISPh2jkWAAAANHRSTlMAESIiMzMzMzMzMzMzMzNERERERH" +
              "d3qv//////////////////////////////////////xnOhPwAAAAlwSFlz" +
              "AAALEgAACxIB0t1+/AAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcm" +
              "tzT7MfTgAAAJJJREFUGJVtzNcagjAMBtC498TVZWktFaEVx/u/mx2gXJib" +
              "Pyf5EoBWders9mOOd6toQgbBgh96wQjRobPkWO79huIj5qPgMt5ycqJCct" +
              "IYQDCEMVFfAyh8yWjLE0UyN5j9LChl56udR0+dlbnnaV4tajNtAKoyLZ5L" +
              "N1hroa3fvEzxSHyzudl4+44G2DbfE/hTH+8DDcV0Y3OAAAAAAElFTkSuQmCC";

  aCerrar.setAttribute('style', 'position:absolute;top:0;right:0;width:16px;' +
                       'height:16px;background:url(' + imgCierre +
                       ') no-repeat scroll 0 0 transparent');

  var contenido = '<table width=100%>' +
                   '<tr><td>' +
                   '<center><img src="http://img852.imageshack.us/img852/8307/logomailcoloration.png" /><br>' +
                   '<span style="font-weight:bold;font-size:larger;">' +
                   LANG.txtColoredMessages + '</span></center><br>' +
                   '<center><table width=80%><tr>' +
                   '<th width=80% align=left>' + LANG.txtTexto + ':</th>' +
                   '<th width=20% align=left>' + LANG.txtColor + ':</th>' +
                   '</tr>';

  for( var i = 0; i < arrColorMessages.length; i++)
  {
       contenido += '<tr valign=top>' +
                    '<td width=80%>' +
                    '<input type="text" name="messageText' + i +
                    '" value="' + arrColorMessages[i][0] + '" id="messageText' + i +
                    '" size=45 style="background-color:transparent;color:' +
                    strColor_LPuNKTKit + ';padding:1px';

       if (( i == 2 ) || ( i == 6 ) || ( i == 8 ))
          contenido += ';" disabled ></td>'
       else
          contenido += ';border:solid 1px ' + strColor_LPuNKTKit + ';" ></td>';

       contenido += '<td width=20%><input type="text" name="messageColor' + i +
                    '" value="' + arrColorMessages[i][1] + '" id="messageColor' + i +
                    '" size=7 style="background-color:' + arrColorMessages[i][1] +
                    ';border:solid 1px ' + strColor_LPuNKTKit + ';padding:1px;">' +
                    '<br></td></tr>';
  }

  contenido +=      '</table></center><br>';

  var guardar = document.createElement("a");
      //guardar.text = LANG.guardar; //daba problemas en chrome
      guardar.appendChild(document.createTextNode(LANG.guardar));
      guardar.setAttribute('href', '#');
      guardar.addEventListener('click', saveOptionsColor, false);
      guardar.setAttribute('style', 'margin-top:10px;margin-left:450px;' +
                                    'display:block;color:' + strColor_LPuNKTKit +
                                    ';text-decoration:overline');

  var opciones = document.createElement("div");
      opciones.id = "lpunktcolor-opciones";
  overlay.append(opciones);

  var divOpciones = $('#lpunktcolor-opciones');
      divOpciones.css({ 'position':'relative',
                        'margin':'150px auto auto' ,
                        'width':'510px' ,
                        'background-color': (blnBackTransparent ? 'transparent' :
                                                                  '#2f2f2f'),
                        'border':'1px solid ' + strColor_LPuNKTKit, //#666' ,
                        'color': strColor_LPuNKTKit,
                        'padding':'20px' ,
                        'text-align':'left'});
      divOpciones.html(contenido);
      divOpciones.append(guardar);

  $('#lpunktcolor-opciones').append(aCerrar);
  overlay.show('slow');
}

function showOptionsCompactador()
{
  //Cargamos colores y textos del CR y su config.
  LoadColoresCR(usarCRFriki);

  //si quedo abierta una capa anterior, la borramos.
  var posibleCapaAnterior = $('#lpunktkit-overlay'); //General
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktkey-overlay'); //Shortcut keys
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktcolor-overlay'); //Message subject colors
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();
  posibleCapaAnterior = $('#lpunktcompactador-overlay'); //Message subject colors
  if (posibleCapaAnterior.length) posibleCapaAnterior.remove();

  //insertamos la capa de opciones
  var o = '<div id="lpunktcompactador-overlay" style="display:none;position:absolute;' +
          'z-index:90;background-color:rgba(0,0,0,0.7);"></div>';
  $('body').prepend(o);

  var overlay = $('#lpunktcompactador-overlay');
      overlay.css('width', $(window).width() );
      overlay.css('height', $(window).height() );

  //link de cierre
  var aCerrar = window.document.createElement('a');
      aCerrar.setAttribute('href', '#');
      aCerrar.addEventListener('click', hideOptionsCompactador, false);

  imgCierre = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMA" +
              "AAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAAnFBMVEX////4YWP/dXjyS07/dX" +
              "j9bXD6a234YWP4XWD2WVv2VFfsOTzoLzHmKSvkISP2VFf0TE/vREftPT/i" +
              "HB72WVvvREf0TE//hon/gYX/fYD/e33/dXj/cXP9bXD/a236a23/Zmb4YW" +
              "P4XWD/Wl32WVv/VVj2VFf3VFb0TE/yS072SUvvREfuQELtPT/sOTzrMzXo" +
              "LzHnLC/mKSvkISPh2jkWAAAANHRSTlMAESIiMzMzMzMzMzMzMzNERERERH" +
              "d3qv//////////////////////////////////////xnOhPwAAAAlwSFlz" +
              "AAALEgAACxIB0t1+/AAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcm" +
              "tzT7MfTgAAAJJJREFUGJVtzNcagjAMBtC498TVZWktFaEVx/u/mx2gXJib" +
              "Pyf5EoBWders9mOOd6toQgbBgh96wQjRobPkWO79huIj5qPgMt5ycqJCct" +
              "IYQDCEMVFfAyh8yWjLE0UyN5j9LChl56udR0+dlbnnaV4tajNtAKoyLZ5L" +
              "N1hroa3fvEzxSHyzudl4+44G2DbfE/hTH+8DDcV0Y3OAAAAAAElFTkSuQmCC";

  aCerrar.setAttribute('style', 'position:absolute;top:0;right:0;width:16px;' +
                       'height:16px;background:url(' + imgCierre +
                       ') no-repeat scroll 0 0 transparent');

  var contenido = '<table border=0 width=100% cellspacing=0 cellpadding=0>' +
                   '<tr>' +
                     '<td width=100% colspan=2>';

  if (availCRFriki) {
      if (usarCRFriki) cbxValue = "checked"; else cbxValue = "";
          contenido +=     '<input type="checkbox" name="usarCRFriki" ' +
                           'id="usarCRFriki" ' + cbxValue + '> ' +
                           LANG.usarCRFriki + divClear;
  } else {
      contenido +=     '<input type="radio" name="usarCRFriki" ' +
                       'id="usarCRFriki" disabled > ' +
                       LANG.notAvailCRFriki + divClear;
  }


      contenido +=   '</td>' +
                   '</tr>' +
                   '<tr valign=top>' +
                     '<td width=50% height=100%>' +
                       '<table style="border: 1px solid ' + strColor_LPuNKTKit + //#606060
                       ' !important;" ' +
                       'width=98% height=100%>' +
                       '<tr valign=top>' +
                       '<td>' +
                         '<br><center>' +
                           '<span style="font-weight:bold;font-size:larger;">' +
                             LANG.txtCRTexts +
                           '</span>' +
                         '</center><br>' +
                         '<center>' +
                           '<table width=90%>' +
                           '<tr>' +
                             '<th width=70% align=left></th>' +
                             '<th width=30% align=left>' + LANG.txtTexto + ':</th>' +
                           '</tr>';
  var intBatallaSize = 20;

  if (usarCRFriki) {
      contenido +=         '<tr>' +
                           '<td>' + LANG_FRIKI.npc + ':</td>' +
                           '<td><input type="text" name="batallaName1" value="' +
                           LANG.txtCR_PCarga + '" id="batallaName1" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.ngc + ':</td>' +
                           '<td><input type="text" name="batallaName2" value="' +
                           LANG.txtCR_GrCarga + '" id="batallaName2" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.cl + ':</td>' +
                           '<td><input type="text" name="batallaName3" value="' +
                           LANG.txtCR_CLigero + '" id="batallaName3" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.cp + ':</td>' +
                           '<td><input type="text" name="batallaName4" value="' +
                           LANG.txtCR_CPesado + '" id="batallaName4" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.crucero + ':</td>' +
                           '<td><input type="text" name="batallaName5" value="' +
                           LANG.txtCR_Crucero + '" id="batallaName5" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.nb + ':</td>' +
                           '<td><input type="text" name="batallaName6" value="' +
                           LANG.txtCR_NB + '" id="batallaName6" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.acorazado + ':</td>' +
                           '<td><input type="text" name="batallaName7" value="' +
                           LANG.txtCR_Acoraz + '" id="batallaName7" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.bombardero + ':</td>' +
                           '<td><input type="text" name="batallaName8" value="' +
                           LANG.txtCR_Bomb + '" id="batallaName8" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.destructor + ':</td>' +
                           '<td><input type="text" name="batallaName9" value="' +
                           LANG.txtCR_Destruc + '" id="batallaName9" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.edlm + ':</td>' +
                           '<td><input type="text" name="batallaName10" value="' +
                           LANG.txtCR_Edlm + '" id="batallaName10" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.txtColonizador + ':</td>' +
                           '<td><input type="text" name="batallaName11" value="' +
                           LANG.txtCR_Colony + '" id="batallaName11" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.reciclador + ':</td>' +
                           '<td><input type="text" name="batallaName12" value="' +
                           LANG.txtCR_Recy + '" id="batallaName12" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.sonda + ':</td>' +
                           '<td><input type="text" name="batallaName13" value="' +
                           LANG.txtCR_Sonda + '" id="batallaName13" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.satelite + ':</td>' +
                           '<td><input type="text" name="batallaName14" value="' +
                           LANG.txtCR_Satelite + '" id="batallaName14" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.lanza + ':</td>' +
                           '<td><input type="text" name="batallaName15" value="' +
                           LANG.txtCR_Lanza + '" id="batallaName15" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.laserp + ':</td>' +
                           '<td><input type="text" name="batallaName16" value="' +
                           LANG.txtCR_LPeque + '" id="batallaName16" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.laserg + ':</td>' +
                           '<td><input type="text" name="batallaName17" value="' +
                           LANG.txtCR_LGrande + '" id="batallaName17" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.gauss + ':</td>' +
                           '<td><input type="text" name="batallaName18" value="' +
                           LANG.txtCR_CGauss + '" id="batallaName18" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.ionico + ':</td>' +
                           '<td><input type="text" name="batallaName19" value="' +
                           LANG.txtCR_CIonico + '" id="batallaName19" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.plasma + ':</td>' +
                           '<td><input type="text" name="batallaName20" value="' +
                           LANG.txtCR_CPlasma + '" id="batallaName20" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.cupPeque + ':</td>' +
                           '<td><input type="text" name="batallaName21" value="' +
                           LANG.txtCR_CupPeque + '" id="batallaName21" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG_FRIKI.cupGrande + ':</td>' +
                           '<td><input type="text" name="batallaName22" value="' +
                           LANG.txtCR_CupGrande + '" id="batallaName22" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>';

  } else {
      contenido +=         '<tr>' +
                           '<td>' + LANG.npc + ':</td>' +
                           '<td><input type="text" name="batallaName1" value="' +
                           LANG.txtCR_PCarga + '" id="batallaName1" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.ngc + ':</td>' +
                           '<td><input type="text" name="batallaName2" value="' +
                           LANG.txtCR_GrCarga + '" id="batallaName2" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.cl + ':</td>' +
                           '<td><input type="text" name="batallaName3" value="' +
                           LANG.txtCR_CLigero + '" id="batallaName3" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.cp + ':</td>' +
                           '<td><input type="text" name="batallaName4" value="' +
                           LANG.txtCR_CPesado + '" id="batallaName4" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.crucero + ':</td>' +
                           '<td><input type="text" name="batallaName5" value="' +
                           LANG.txtCR_Crucero + '" id="batallaName5" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.nb + ':</td>' +
                           '<td><input type="text" name="batallaName6" value="' +
                           LANG.txtCR_NB + '" id="batallaName6" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.acorazado + ':</td>' +
                           '<td><input type="text" name="batallaName7" value="' +
                           LANG.txtCR_Acoraz + '" id="batallaName7" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.bombardero + ':</td>' +
                           '<td><input type="text" name="batallaName8" value="' +
                           LANG.txtCR_Bomb + '" id="batallaName8" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.destructor + ':</td>' +
                           '<td><input type="text" name="batallaName9" value="' +
                           LANG.txtCR_Destruc + '" id="batallaName9" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.edlm + ':</td>' +
                           '<td><input type="text" name="batallaName10" value="' +
                           LANG.txtCR_Edlm + '" id="batallaName10" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.txtColonizador + ':</td>' +
                           '<td><input type="text" name="batallaName11" value="' +
                           LANG.txtCR_Colony + '" id="batallaName11" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.reciclador + ':</td>' +
                           '<td><input type="text" name="batallaName12" value="' +
                           LANG.txtCR_Recy + '" id="batallaName12" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.sonda + ':</td>' +
                           '<td><input type="text" name="batallaName13" value="' +
                           LANG.txtCR_Sonda + '" id="batallaName13" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.satelite + ':</td>' +
                           '<td><input type="text" name="batallaName14" value="' +
                           LANG.txtCR_Satelite + '" id="batallaName14" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.lanza + ':</td>' +
                           '<td><input type="text" name="batallaName15" value="' +
                           LANG.txtCR_Lanza + '" id="batallaName15" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.laserp + ':</td>' +
                           '<td><input type="text" name="batallaName16" value="' +
                           LANG.txtCR_LPeque + '" id="batallaName16" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.laserg + ':</td>' +
                           '<td><input type="text" name="batallaName17" value="' +
                           LANG.txtCR_LGrande + '" id="batallaName17" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.gauss + ':</td>' +
                           '<td><input type="text" name="batallaName18" value="' +
                           LANG.txtCR_CGauss + '" id="batallaName18" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.ionico + ':</td>' +
                           '<td><input type="text" name="batallaName19" value="' +
                           LANG.txtCR_CIonico + '" id="batallaName19" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.plasma + ':</td>' +
                           '<td><input type="text" name="batallaName20" value="' +
                           LANG.txtCR_CPlasma + '" id="batallaName20" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.cupPeque + ':</td>' +
                           '<td><input type="text" name="batallaName21" value="' +
                           LANG.txtCR_CupPeque + '" id="batallaName21" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>' +

                           '<tr>' +
                           '<td>' + LANG.cupGrande + ':</td>' +
                           '<td><input type="text" name="batallaName22" value="' +
                           LANG.txtCR_CupGrande + '" id="batallaName22" size=' +
                           intBatallaSize + ' style="float:left;margin-left:2px;' +
                           'background-color:' + 'transparent;color:' +
                           strColor_LPuNKTKit + ';border:solid 1px ' +
                           strColor_LPuNKTKit + ';padding:1px;">' +
                           '</td>' +
                           '</tr>';
      }

      contenido +=         '</table>' +
                         '</center>' +
                       '</td></tr>' +
                       '</table>' +
                   '</td>' +
                   '<td width=50% height=100% align=right>';

      contenido +=   '<table style="border: 1px solid ' + strColor_LPuNKTKit + //#606060
                     ' !important;" ' +
                     'width=98% height=100%>' +
                     '<tr>' +
                       '<td align=right>' +
                         '<br><center>' +
                           '<span style="font-weight:bold;font-size:larger;">' +
                             LANG.txtCRColors +
                           '</span>' +
                         '</center><br>' +
                         '<center>' +
                           '<table width=90%>' +
                           '<tr>' +
                             '<th width=80% align=left></th>' +
                             '<th width=20% align=left>' + LANG.txtColor + ':</th>' +
                           '</tr>';

  var intColorSize = 10;

  for( var i = 0; i < arrColorBatalla.length; i++)
  {
       contenido += '<tr valign=top>' +
                    '<td width=80%><span style="color:' + strColor_LPuNKTKit + '">' +
                    arrColorBatalla[i][2] + '</span>: </td>' +
                    '<td width=20%><input type="text" name="batallaColor' + i +
                    '" value="' + arrColorBatalla[i][1] + '" id="batallaColor' + i +
                    '" size=' + intColorSize + ' style="float:left;margin-left:2px;' +
                    'background-color:' + arrColorBatalla[i][1] + ';border:solid 1px ' +
                    strColor_LPuNKTKit + ';padding:1px;"><br></td></tr>';
  }

  contenido +=      '</table><br></td></tr></table>';

  var guardar = document.createElement("a");
      //guardar.text = LANG.guardar; //daba problemas en chrome
      guardar.appendChild(document.createTextNode(LANG.guardar));
      guardar.setAttribute('href', '#');
      guardar.addEventListener('click', saveOptionsCompactador, false);
      guardar.setAttribute('style', 'margin-top:10px;margin-left:840px;' +
                                    'display:block;color:' + strColor_LPuNKTKit +
                                    ';text-decoration:overline');

  var opciones = document.createElement("div");
      opciones.id = "lpunktcompactador-opciones";
  overlay.append(opciones);

  var divOpciones = $('#lpunktcompactador-opciones');
      divOpciones.css({ 'position':'relative',
                        'margin':'100px auto auto' ,
                        'width':'900px' ,
                        'background-color': (blnBackTransparent ? 'transparent' :
                                                                  '#2f2f2f'),
                        'border':'1px solid ' + strColor_LPuNKTKit, //#666' ,
                        'color': strColor_LPuNKTKit,
                        'padding':'20px' ,
                        'text-align':'left'});
      divOpciones.html(contenido);
      divOpciones.append(guardar);

  $('#lpunktcompactador-opciones').append(aCerrar);
  overlay.show('slow');
}

function hideOptions()
{
  $('#lpunktkit-overlay').remove();
}
function hideOptionsKey()
{
  $('#lpunktkey-overlay').remove();
}

function hideOptionsColor()
{
  $('#lpunktcolor-overlay').remove();
}

function hideOptionsCompactador()
{
  $('#lpunktcompactador-overlay').remove();
}

function saveOptions()
{
  if ($('#chkPosTop').is(':checked')) strPosBotones = 'top'
  else if ($('#chkPosUp').is(':checked')) strPosBotones = 'right-up'
  else if ($('#chkPosDown').is(':checked')) strPosBotones = 'right-down'
  else strPosBotones = 'left';

  GM_setValue('strPosBotones' + strUniverse, strPosBotones);

  blnBackTransparent = $('#chkBack').is(':checked');
  GM_setValue("blnBackTransparent" + strUniverse, blnBackTransparent);

  for(var i = 0 ; i < arrColorFont.length ; i++)
  {
      if ($('#chkColor' + i).is(':checked')) {
         strColor_LPuNKTKit = arrColorFont[i].replace(/\ /g, '').toLowerCase();
         GM_setValue("strColor_LPuNKTKit" + strUniverse, strColor_LPuNKTKit);

         break;

      }
  }

  link1_name = trim($('#link1_name').val());
  link1_href = trim($('#link1_href').val());
  GM_setValue("link1_name" + strUniverse, link1_name);
  GM_setValue("link1_href" + strUniverse, link1_href);
  link2_name = trim($('#link2_name').val());
  link2_href = trim($('#link2_href').val());
  GM_setValue("link2_name" + strUniverse, link2_name);
  GM_setValue("link2_href" + strUniverse, link2_href);
  link3_name = trim($('#link3_name').val());
  link3_href = trim($('#link3_href').val());
  GM_setValue("link3_name" + strUniverse, link3_name);
  GM_setValue("link3_href" + strUniverse, link3_href);
  link4_name = trim($('#link4_name').val());
  link4_href = trim($('#link4_href').val());
  GM_setValue("link4_name" + strUniverse, link4_name);
  GM_setValue("link4_href" + strUniverse, link4_href);
  link5_name = trim($('#link5_name').val());
  link5_href = trim($('#link5_href').val());
  GM_setValue("link5_name" + strUniverse, link5_name);
  GM_setValue("link5_href" + strUniverse, link5_href);

  setFixActionIcons = $('#setFixActionIcons').is(':checked');
  GM_setValue("setFixActionIcons" + strUniverse, setFixActionIcons);

  highlightPlayers = $('#highlightPlayers').is(':checked');
  GM_setValue("highlightPlayers" + strUniverse, highlightPlayers);

  showPrangerInHeader = $('#showPrangerInHeader').is(':checked');
  GM_setValue("showPrangerInHeader" + strUniverse, showPrangerInHeader);

  showOptionsInUserName = $('#showOptionsInUserName').is(':checked');
  GM_setValue("showOptionsInUserName" + strUniverse, showOptionsInUserName);

  showRange = $('#showRange').is(':checked');
  GM_setValue("showRange" + strUniverse, showRange);

  disableUselessStuff = $('#disableUselessStuff').is(':checked');
  GM_setValue("disableUselessStuff" + strUniverse, disableUselessStuff);

  setFocusCorrectly = $('#setFocusCorrectly').is(':checked');
  GM_setValue("setFocusCorrectly" + strUniverse, setFocusCorrectly);

  disableStar = $('#disableStar').is(':checked');
  GM_setValue("disableStar" + strUniverse, disableStar);

  showPlanetNavKeys = $('#showPlanetNavKeys').is(':checked');
  GM_setValue("showPlanetNavKeys" + strUniverse, showPlanetNavKeys);

  showSatsBalance = $('#showSatsBalance').is(':checked');
  GM_setValue("showSatsBalance" + strUniverse, showSatsBalance);

  showResourcesInfo = $('#showResourcesInfo').is(':checked');
  GM_setValue("showResourcesInfo" + strUniverse, showResourcesInfo);

  fixForumLink = $('#fixForumLink').is(':checked');
  GM_setValue("fixForumLink" + strUniverse, fixForumLink);

  showMoonsRight = $('#showMoonsRight').is(':checked');
  GM_setValue("showMoonsRight" + strUniverse, showMoonsRight);

  showLinkFixed = $('#showLinkFixed').is(':checked');
  GM_setValue("showLinkFixed" + strUniverse, showLinkFixed);

  showSatsTerraformer = $('#showSatsTerraformer').is(':checked');
  GM_setValue("showSatsTerraformer" + strUniverse, showSatsTerraformer);

  showSatsGraviton = $('#showSatsGraviton').is(':checked');
  GM_setValue("showSatsGraviton" + strUniverse, showSatsGraviton);

  showConfirmTrader = $('#showConfirmTrader').is(':checked');
  GM_setValue("showConfirmTrader" + strUniverse, showConfirmTrader);

  showEfficiency = $('#showEfficiency').is(':checked');
  GM_setValue("showEfficiency" + strUniverse, showEfficiency);

  showSmallPlanets = $('#showSmallPlanets').is(':checked');
  GM_setValue("showSmallPlanets" + strUniverse, showSmallPlanets);

  if (document.getElementById('showCompactadorBatallas'))
  {
      showCompactadorBatallas = $('#showCompactadorBatallas').is(':checked');
      GM_setValue("showCompactadorBatallas" + strUniverse, showCompactadorBatallas);
  }

  //Mensajes
  acelMessageSection = $('#acelMessageSection').is(':checked');
  GM_setValue("acelMessageSection" + strUniverse, acelMessageSection);

  currentPlanetName = $('#currentPlanetName').is(':checked');
  GM_setValue("currentPlanetName" + strUniverse, currentPlanetName);

  replyCC = $('#replyCC').is(':checked');
  GM_setValue("replyCC" + strUniverse, replyCC);

  showColoredMessages = $('#showColoredMessages').is(':checked');
  GM_setValue("showColoredMessages" + strUniverse, showColoredMessages);

  showBBCode = $('#showBBCode').is(':checked');
  GM_setValue("showBBCode" + strUniverse, showBBCode);

  showSmiles = $('#showSmiles').is(':checked');
  GM_setValue("showSmiles" + strUniverse, showSmiles);

  allianceMessageBoxIcon = $('#allianceMessageBoxIcon').is(':checked');
  GM_setValue("allianceMessageBoxIcon" + strUniverse, allianceMessageBoxIcon);

  showMessageButtonLeft = $('#showMessageButtonLeft').is(':checked');
  GM_setValue("showMessageButtonLeft" + strUniverse, showMessageButtonLeft);

  //Recursos en vuelo
  showFleetResources = $('#showFleetResources').is(':checked');
  GM_setValue("showFleetResources" + strUniverse, showFleetResources);

  showResourcesPerFleet = $('#showResourcesPerFleet').is(':checked');
  GM_setValue("showResourcesPerFleet" + strUniverse, showResourcesPerFleet);

  showEmptySpace = $('#showEmptySpace').is(':checked');
  GM_setValue("showEmptySpace" + strUniverse, showEmptySpace);

  //Flota
  showColorFlightSlots = $('#showColorFlightSlots').is(':checked');
  GM_setValue("showColorFlightSlots" + strUniverse, showColorFlightSlots);

  showLoadButtons = $('#showLoadButtons').is(':checked');
  GM_setValue("showLoadButtons" + strUniverse, showLoadButtons);

  removeAdv = $('#removeAdv').is(':checked');
  GM_setValue("removeAdv" + strUniverse, removeAdv);

  showReturnFleetQuestion = $('#showReturnFleetQuestion').is(':checked');
  GM_setValue("showReturnFleetQuestion" + strUniverse, showReturnFleetQuestion);

  //Shortcut keys
  showKeyEverywhere = $('#showKeyEverywhere').is(':checked');
  GM_setValue("showKeyEverywhere" + strUniverse, showKeyEverywhere);

  showKeyMailbox = $('#showKeyMailbox').is(':checked');
  GM_setValue("showKeyMailbox" + strUniverse, showKeyMailbox);

  showKeyFleet = $('#showKeyFleet').is(':checked');
  GM_setValue("showKeyFleet" + strUniverse, showKeyFleet);

  if (showKeyEverywhere || showKeyMailbox || showKeyFleet)
    showShortcuts = $('#showShortcuts').is(':checked')
  else
    showShortcuts = false;

  GM_setValue("showShortcuts" + strUniverse, showShortcuts);

  //Chat
  idChat = parseInt($('#idChat').val().replace(".",""));
  GM_setValue("idChat" + strUniverse, idChat);

  if (idChat)
      showChat = $('#showChat').is(':checked')
  else
      showChat = false;

  GM_setValue("showChat" + strUniverse, showChat);


  //Otros
  minEscombros = parseInt($('#minEscombros').val().replace(".",""));
  GM_setValue("minEscombros" + strUniverse, minEscombros);

  hideOptions();
  document.location.reload(); //recargamos la pagina
}

function saveOptionsKey()
{
  showKeyEverywhere = $('#showKeyEverywhere').is(':checked');
  GM_setValue("showKeyEverywhere" + strUniverse, showKeyEverywhere);

  showKeyMailbox = $('#showKeyMailbox').is(':checked');
  GM_setValue("showKeyMailbox" + strUniverse, showKeyMailbox);

  showKeyFleet = $('#showKeyFleet').is(':checked');
  GM_setValue("showKeyFleet" + strUniverse, showKeyFleet);

  if (showKeyEverywhere || showKeyMailbox || showKeyFleet)
    showShortcuts = $('#showShortcuts').is(':checked')
  else
    showShortcuts = false;

  GM_setValue("showShortcuts" + strUniverse, showShortcuts);

  hideOptionsKey();
  document.location.reload(); //recargamos la pagina
}

function saveOptionsColor()
{
  for(var i=0 ; i < arrColorMessages.length ; i++)
  {
      strColor = document.getElementById('messageColor' + i).value;

      if (strColor.indexOf('#') >= 0)
          strColor = strColor.toUpperCase()     //Hexadecimales en MAYUSCULAS
      else
          strColor = strColor.toLowerCase();    //Constantes en minusculas

      // Color
      arrColorMessages[i][1] = trim(strColor);

      GM_setValue('messageColor' + i + strUniverse, arrColorMessages[i][1]);

      // Texto
      arrColorMessages[i][0] = trim(document.getElementById('messageText' + i).value);

      GM_setValue('messageText' + i + strUniverse, arrColorMessages[i][0]);
  }

  hideOptionsColor();
  document.location.reload(); //recargamos la pagina
}

function saveOptionsCompactador()
{
  usarCRFriki = $('#usarCRFriki').is(':checked');
  GM_setValue("usarCRFriki" + strUniverse, usarCRFriki);

  for(var i=0 ; i < arrColorBatalla.length ; i++)
  {
      var strColor = document.getElementById('batallaColor'+i).value;

      if (strColor.indexOf('#') >= 0)
          strColor = strColor.toUpperCase()     //Hexadecimales en MAYUSCULAS
      else
          strColor = strColor.toLowerCase();    //Constantes en minusculas

      arrColorBatalla[i][1] = strColor;

      GM_setValue('batallaColor' + i + strUniverse, arrColorBatalla[i][1]);
  }

  LANG.txtCR_PCarga    = trim(document.getElementById("batallaName1").value);
  GM_setValue("batallaName1" + strUniverse, LANG.txtCR_PCarga);
  LANG.txtCR_GrCarga   = trim(document.getElementById("batallaName2").value);
  GM_setValue("batallaName2" + strUniverse, LANG.txtCR_GrCarga);
  LANG.txtCR_CLigero   = trim(document.getElementById("batallaName3").value);
  GM_setValue("batallaName3" + strUniverse, LANG.txtCR_CLigero);
  LANG.txtCR_CPesado   = trim(document.getElementById("batallaName4").value);
  GM_setValue("batallaName4" + strUniverse, LANG.txtCR_CPesado);
  LANG.txtCR_Crucero   = trim(document.getElementById("batallaName5").value);
  GM_setValue("batallaName5" + strUniverse, LANG.txtCR_Crucero);
  LANG.txtCR_NB        = trim(document.getElementById("batallaName6").value);
  GM_setValue("batallaName6" + strUniverse, LANG.txtCR_NB);
  LANG.txtCR_Acoraz    = trim(document.getElementById("batallaName7").value);
  GM_setValue("batallaName7" + strUniverse, LANG.txtCR_Acoraz);
  LANG.txtCR_Bomb      = trim(document.getElementById("batallaName8").value);
  GM_setValue("batallaName8" + strUniverse, LANG.txtCR_Bomb);
  LANG.txtCR_Destruc   = trim(document.getElementById("batallaName9").value);
  GM_setValue("batallaName9" + strUniverse, LANG.txtCR_Destruc);
  LANG.txtCR_Edlm      = trim(document.getElementById("batallaName10").value);
  GM_setValue("batallaName10" + strUniverse, LANG.txtCR_Edlm);
  LANG.txtCR_Colony    = trim(document.getElementById("batallaName11").value);
  GM_setValue("batallaName11" + strUniverse, LANG.txtCR_Colony);
  LANG.txtCR_Recy      = trim(document.getElementById("batallaName12").value);
  GM_setValue("batallaName12" + strUniverse, LANG.txtCR_Recy);
  LANG.txtCR_Sonda     = trim(document.getElementById("batallaName13").value);
  GM_setValue("batallaName13" + strUniverse, LANG.txtCR_Sonda);
  LANG.txtCR_Satelite  = trim(document.getElementById("batallaName14").value);
  GM_setValue("batallaName14" + strUniverse, LANG.txtCR_Satelite);
  LANG.txtCR_Lanza     = trim(document.getElementById("batallaName15").value);
  GM_setValue("batallaName15" + strUniverse, LANG.txtCR_Lanza);
  LANG.txtCR_LPeque    = trim(document.getElementById("batallaName16").value);
  GM_setValue("batallaName16" + strUniverse, LANG.txtCR_LPeque);
  LANG.txtCR_LGrande   = trim(document.getElementById("batallaName17").value);
  GM_setValue("batallaName17" + strUniverse, LANG.txtCR_LGrande);
  LANG.txtCR_CGauss    = trim(document.getElementById("batallaName18").value);
  GM_setValue("batallaName18" + strUniverse, LANG.txtCR_CGauss);
  LANG.txtCR_CIonico   = trim(document.getElementById("batallaName19").value);
  GM_setValue("batallaName19" + strUniverse, LANG.txtCR_CIonico);
  LANG.txtCR_CPlasma   = trim(document.getElementById("batallaName20").value);
  GM_setValue("batallaName20" + strUniverse, LANG.txtCR_CPlasma);
  LANG.txtCR_CupPeque  = trim(document.getElementById("batallaName21").value);
  GM_setValue("batallaName21" + strUniverse, LANG.txtCR_CupPeque);
  LANG.txtCR_CupGrande = trim(document.getElementById("batallaName22").value);
  GM_setValue("batallaName22" + strUniverse, LANG.txtCR_CupGrande);

  hideOptionsCompactador();
  document.location.reload(); //recargamos la pagina
}

/**
 * Muestra los links
 */
function showLinks()
{
  if ((paginaActual == 'showmessage') ||
      (paginaActual == "combatreport") ||
      (paginaActual == "writemessage") ||
      (paginaActual == "search"))
      return;

  if ( ( (link1_name.length == 0) || (link1_href.length == 0) ) &&
       ( (link2_name.length == 0) || (link2_href.length == 0) ) &&
       ( (link3_name.length == 0) || (link3_href.length == 0) ) &&
       ( (link4_name.length == 0) || (link4_href.length == 0) ) &&
       ( (link5_name.length == 0) || (link5_href.length == 0) ) )
       return;

  anuncio = $('#lpunktkit-links');

  //insertamos los links si es que hay alguno
  if ( (link1_name != "" ) && (link1_href != "" ) ) {
    anuncio.append('<a href="' + link1_href + '" style="text-decoration:overline;" ' +
                   'target="_blank">' + link1_name + '</a>');

  }

  if ( (link2_name != "" ) && (link2_href != "" ) ) {
    anuncio.append('<a href="' + link2_href + '" style="text-decoration:overline;" ' +
                   'target="_blank">' + link2_name + '</a>');
  }

  if ( (link3_name != "" ) && (link3_href != "" ) ) {
    anuncio.append('<a href="' + link3_href + '" style="text-decoration:overline;" ' +
                   'target="_blank">' + link3_name + '</a>');
  }

  if ( (link4_name != "" ) && (link4_href != "" ) ) {
    anuncio.append('<a href="' + link4_href + '" style="text-decoration:overline;" ' +
                   'target="_blank">' + link4_name + '</a>');
  }

  if ( (link5_name != "" ) && (link5_href != "" ) ) {
    anuncio.append('<a href="' + link5_href + '" style="text-decoration:overline;" ' +
                   'target="_blank">' + link5_name + '</a>');
  }
}

// --------------------------------- funciones auxiliares ---------------------------------
/**
 * Convierte una cantidad de segundos en H, M y S
 */
function secondsToTime( secs )
{
  if (secs==1.7976931348623157E+10308) return LANG.infinito;
  else
  {
    if (secs<=0) return "0s";

    var hours = Math.floor(secs / (60 * 60));

    var divisor_for_minutes = secs % (60 * 60);
    var minutes = Math.floor(divisor_for_minutes / 60);

    var divisor_for_seconds = divisor_for_minutes % 60;
    var seconds = Math.ceil(divisor_for_seconds);

    resultado = "";
    if (hours > 0) resultado = hours + "h ";
    if (minutes > 0) resultado = resultado + minutes + "m ";
    if ((seconds > 0) && (hours <= 0)) resultado = resultado + seconds + "s";

    //devolvemos el formato adecuado segun idioma:
    //[PL] Xg Xmin. Xsek. -> Xh Xm Xs
    if (idioma=='pl') {
        resultado = resultado.replace("h", "g");
        resultado = resultado.replace("m", "min.");
        resultado = resultado.replace("s", "sek.");
    }
    else
      //[RU] X? X? X? -> Xh Xm Xs
      if (idioma=='ru') {
          resultado = resultado.replace("h", "?");
          resultado = resultado.replace("m", "?");
          resultado = resultado.replace("s", "?");
      }

    return resultado;
  }
}

/**
 * Convierte una cadena de texto de tipo: Xh Xm Xs en la cantidad
 * equivalente de segundos
 * [FIX] PL server: time format -> Xg Xmin. Xsek.
 * [FIX] RU server: time format -> X? X? X?
 */
function timeToSeconds( time )
{
  //Xg Xmin. Xsek. -> Xh Xm Xs
  time = time.replace("g", "h");
  time = time.replace("min.", "m");
  time = time.replace("sek.", "s");

  //X? X? X? -> Xh Xm Xs
  time = time.replace("?", "h");
  time = time.replace("?", "m");
  time = time.replace("?", "s");

  var seconds = 0;
  time = trim(time);
  parts = time.split(" ");

  for (i=0;i<parts.length;i++)
  {
    c = parts[i].charAt(parts[i].length-1);
    number = parseInt( parts[i].substring(0,parts[i].length-1), 10);
    switch (c)
    {
      case 'h' : seconds = seconds + (number*60*60);
                 break;
      case 'm' : seconds = seconds + (number*60);
                 break;
      case 's' : seconds = seconds + number;
                 break;
    }
  }
  return seconds;
}

/**
 * calcula el minimo (que sea mayor de cero) de los 3 primeros elementos
 * de un array en caso de no haber ninguno positivo, devuelve -1
 */
function minimo( lista )
{
  var min=-1;

  for (i=0;i<3;i++)
  {
    elemento = lista[i];
    if ((min==-1) && (elemento>0))
    {
      min=elemento;
    }
    else
    {
      if ((elemento>0) && (elemento<min))
        min=elemento;
    }
  }
  return min;
}

/**
 * Traduce a castellano algunas palabras necesarias para el funcionamiento
 */
function traduce(palabra)
{
  switch(palabra)
  {
  case LANG_EN.metal:    palabra = LANG_ES.metal;
                         break;
  case LANG_FR.metal:    palabra = LANG_ES.metal;
                         break;
  //case LANG_TR.metal:   palabra = LANG_ES.metal;
  //                      break; innecesario

  case LANG_EN.cristal:  palabra = LANG_ES.cristal;
                         break;
  case LANG_FR.cristal:  palabra = LANG_ES.cristal;
                         break;

  case LANG_EN.deuterio: palabra = LANG_ES.deuterio;
                         break;
  case LANG_FR.deuterio: palabra = LANG_ES.deuterio;
                         break;

  case LANG_EN.energia:  palabra = LANG_ES.energia;
                         break;
  case LANG_FR.energia:  palabra = LANG_ES.energia;
                         break;
  }

  return palabra;
}

/**************************************************************************
*                                       OTROS SCRIPTS                     *
**************************************************************************/

// name           OGame Redesign: Current Planet Name on Messages Pages
// description    Displays the current planet name on the Messages pages
// namespace      Vesselin
// version        1.01
function CurrentPlanetNameOnMessagesPages()
{
  if (!currentPlanetName) return;

  // The following "if" is not really necessary but with it this script
  // will work for Opera too
  if ((document.location.href.indexOf ('/game/index.php?page=messages') > -1) ||
      (document.location.href.indexOf ('/game/index.php?page=alliance') > -1) ||
      (document.location.href.indexOf ('/game/index.php?page=network')  > -1))

    document.getElementById("planet").getElementsByTagName("h2")[0].innerHTML += ' - ' +
                            document.getElementById ("selectedPlanetName").innerHTML;
}

// name           OGame Redesign: Resources in Flight
// namespace      Vesselin
// version        1.26
function ResourcesInFlight() {
  if ((!showFleetResources) ||
      (paginaActual!="movement")) return;

  // Settings:
  const colors = ["crimson",          // MetalColor,
                  "deepskyblue",      // CrystalColor,
                  "cornflowerblue",   // DeuteriumColor
                  "yellow"];          // TitleColor

  const below = false;
  const onlyToCurrent = true;
  const inEventList = true;
  const totalStr = "=";
  const titleImg = "data:image/jpg;base64," +
          "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQOD" +
          "wwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBw" +
          "oIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg" +
          "oKCgoKCgoKCgoKCj/wAARCAAUACEDASIAAhEBAxEB/8QAGwABAAICAwAAAAAAAAAA" +
          "AAAAAAYHAQMCBAX/xAArEAACAQMDBAAEBwAAAAAAAAABAgMEBREABhITFCExIjJBU" +
          "RUjQ2GBkbH/xAAXAQEBAQEAAAAAAAAAAAAAAAAEAQID/8QAHBEAAgMBAAMAAAAAAA" +
          "AAAAAAAAECESEDBDEz/9oADAMBAAIRAxEAPwCqdn2O3Wujo6++VUkNJJ1ahZOAJco" +
          "mFSJDjqNydcrkA5GcAEiW1N3tkMdVVDaVY0FOsTNUVFSIiQxAXlCqNwZh6Tnk5yCQ" +
          "DiIistW3rFHe7DVyT3rqRU6sKZWiSPgS+RImesCvzYZQDgfc9QbxlrrLt22XLt56B" +
          "blUVFQskIVmaRhyYsjcsYkcjAXB9csDEnrosXhYN3uVooYY6u4We2NBUusa9O6ZKo" +
          "cHDII2OMBiWPHAP9+DSWK0Q3+ottYgldFZzJRTCeKJeR8lwuG4qPi458g41t2Durb" +
          "9o2Xb/wAbpurcYamVYsOF/LR0eMOWGCOQdcZ+Vjrnddz22us9HbaG21EFPHCyCslg" +
          "LMFWHpIxUsFduGR4IwzcvGPPGV00jcaUk6IX0E01p7j99NOwLpjay09O7zyUVJVmC" +
          "OQqlVEJFPj6g+/X8atnb+wNrVRSontAZOAVYO6nCI3EsXGJOWTkD3j4R49ktNC7tp" +
          "YKgvRK4np9u1NRWWa30VPWNH1u6aPqz5HL9ZyZDn65bz69eNUbfqqaZpTI5Leck+S" +
          "xx7P++Pvppq+O2+VsxL6kZ6jaaaaSYo//2Q==";

  const closeImg = "data:image/gif;base64,R0lGODlhFwAWANUAABYaHgsNEAEC" +
          "AgwQEBUaHRYdHxASFREUFxUYHAoMDhIVFxIUFxETFw4QEhsfIxgfIA4RExETFhwhJ" +
          "S2sQBofJAkKDBofIxwgJAkLDRgfIRofIi6xQRsgJRoeIhkdIQgKCxkeIQ8SFA4RFB" +
          "kfIAwPEwkLDBgeIAwODy6tQBASFhgdIBgdIQ8SFhccHw0QEi6vQQ8SFRoeIwwOEBs" +
          "gJA4QEw8RFA0PEQAAAQ0PEhsfJC2tQBwgJQAAAAAAAAAAAAAAACH5BAAAAAAALAAA" +
          "AAAXABYAAAb/wIRCsWAcDgxGJJJsKg7DYcAQMYRgBph2q2XBUobUclmriSDltHpdu" +
          "8JCEAhtTq/b4yJRLe5q+BsugTiDOH2BgXSAODaMhI6Pji6Mk5SMh5WVMpqbMjYyAw" +
          "MboIyanpwBAScnmwGhGxsnqLKomgkVGBgluRgnL76+FR/CHxXFAgI3ycoCEzrOOs3" +
          "IysvHycfNz84vE8jSNwIECAQEAAQv2dkvKOMA7R8qLfEtKOfoz74F8R77KisrHiZM" +
          "PMgwMAPBESMeKAQBooOHGDE0SNQAsaJFiw4sOAAxw4FHBzlChqRAMkdJkTlmdJjBc" +
          "saFCyhjomy5suWOmzh3cNjJISdOGAstZ/gcStSCBAkviSr9SeKohKVKJZAIAgA7";

  const openImg  = "data:image/gif;base64,R0lGODlhFwAWANUAABYaHgsNEAEC" +
          "AgwQEBUaHRYdHxASFREUFxUYHAoMDhIVFxIUFxETFw4QEhsfIxgfIA4RExETFhwhJ" +
          "S2sQBofJAkKDBofIxwgJAkLDRgfIRofIi6xQRsgJRoeIhkdIQgKCxkeIQ8SFA4RFB" +
          "kfIAwPEwkLDBgeIAwODy6tQBASFhgdIBgdIQ8SFhccHw0QEi6vQQ8SFRoeIwwOEBs" +
          "gJA4QEw8RFA0PEQAAAQ0PEhsfJC2tQBwgJQAAAAAAAAAAAAAAACH5BAAAAAAALAAA" +
          "AAAXABYAAAb/QJJkRywaj0SJkmRBOo+Xi7L5rM6uM+qRw+U4sbMONkcum8tRsPhMo" +
          "eTabrNj7piBHBZHbM/v8zWAGnseHSAgD4gjIw8ZjYwPJiYeKysqHpctLQUvLzqen5" +
          "8vKJmZKh8AqAQEKJ2goQQAqggEAje2tQITraATArU3vr+2wwI6E7zCxAIVzB/OHxW" +
          "c0icYJdUYGBUJMjIB3t8BJxvjAwHcMicn3ufcNu02AwMb8TLu7O82+fr5Lv37//xw" +
          "CBxIsCAOfThcNKDBsF+/Bi4IOmxAESIECDVEiLjIsKPHjzQuhoABI0SNkyhTqoQg4" +
          "mSElxFSGEgBgwXJmzcNlDQQwUAAEwVAFRxQwKBo0ZdFDxxgsABogiAAOw==";

  // Code:
  if (! (typeof PRO_setValue == "function") &&
        ( !this.GM_getValue ||
          ( this.GM_getValue.toString &&
            this.GM_getValue.toString().indexOf("not supported") > -1)))
  {
      this.GM_getValue = function (key, def)
      {
           return localStorage [key] || def;
      }

      this.GM_setValue = function (key, value)
      {
           return localStorage [key] = value;
      }

      this.GM_deleteValue = function (key)
      {
           return delete localStorage [key];
      }
  }

/*  getElementsByClassName = function (element, cl)
  {
          var retnode = [];
          var myclass = new RegExp ('\\b' + cl + '\\b');
          var elem = element.getElementsByTagName ('*');
          for (var i = 0; i < elem.length; i++)
          {
            var classes = elem [i].className;
            if (myclass.test (classes))
              retnode.push (elem [i]);
          }
          return retnode;
  }*/

  if (document.location.href.indexOf('/game/index.php?page=movement') >= 0)
  {
          var expanded;
          if (typeof GM_setValue == "function") // greasemonkey
              expanded = GM_getValue ("expanded" + strUniverse, false);
          else if (typeof PRO_setValue == "function") // ie7pro
              expanded = PRO_getValue ("expanded" + strUniverse, false);
          else
              expanded = below;

          var div;
          var planetRes = [0, 0, 0];
          var curPlanet = "";
          var curPlanetCoords = "";

          function doTable ()
          {
            function addDots (n)
            {
              n += '';
              var rgx = /(\d+)(\d{3})/;
              while (rgx.test (n))
                n = n.replace (rgx, '$1' + '.' + '$2');
              return n;
            }

            function createFontElement (strText, strColor)
            {
              var myFont = document.createElement ("font");
              myFont.color = strColor;
              var myTextNode = document.createTextNode (strText);
              myFont.appendChild (myTextNode);
              return myFont;
            }

            function createCell (objRow, strText, intWidth, strAlignment, strColor)
            {
              var myTd = objRow.insertCell (-1);
              myTd.style.width = intWidth;
              myTd.style.paddingRight = "1em";
              myTd.style.paddingLeft  = "1em";
              myTd.setAttribute ("align", strAlignment);
              myTd.setAttribute ("nowrap", true);
              if (strText.indexOf ("data:image") < 0)
                myTd.appendChild (createFontElement (strText, strColor));
              else
              {
                var myImg = document.createElement ("img");
                myImg.setAttribute ("src", strText);
                myTd.appendChild (myImg);
              }
            }

            function addEvent (el, evt, fxn)
            {
              if (el.addEventListener)
                el.addEventListener (evt, fxn, false); // for standards
              else if (el.attachEvent)
                el.attachEvent ("on" + evt, fxn); // for IE
              else el ['on' + evt] = fxn; // old style, but defeats purpose of using this function
            }

            var mya;
            var span = document.createElement ("span");
                span.className = "current";

            if ((mya != null) && (mya.onclick != null))
                 mya.removeEventListenet ("click", redrawTable, false);

            var mySpan = document.createElement ("span");

            mya = document.createElement ("a");
            mya.setAttribute ("href", "#");

            var myImg = document.createElement ("img");
                myImg.style.position = "absolute";

            mya.appendChild (myImg);
            mySpan.appendChild (mya);

            if (expanded)
            {
              planetRes [0] = parseInt (document.getElementById("resources_metal").
                                                 innerHTML.replace (/\D+/gi, ""));
              planetRes [1] = parseInt (document.getElementById("resources_crystal").
                                                 innerHTML.replace (/\D+/gi, ""));
              planetRes [2] = parseInt (document.getElementById("resources_deuterium").
                                                 innerHTML.replace (/\D+/gi, ""));

              resInfo [curPlanet] [3] = 0;

              for (var i = 0; i < 3; i++)
              {
                resInfo [curPlanet] [i] = ((onlyToCurrent) ? toPlanet [i] :
                                            resInfo [totalStr] [i]) + planetRes [i];
                resInfo [curPlanet] [3] += resInfo [curPlanet] [i];
              }

              var myTable = document.createElement ("table");
                  myTable.setAttribute ("border", "2");
                  myTable.setAttribute ("bordercolor", "yellow");
                  myTable.setAttribute ("rules", "all");
                  myTable.setAttribute ("width", "100%");

              var myTr = myTable.insertRow (-1);
              //createCell (myTr, titleStr, "24%", "center", colors [3]);
              createCell (myTr, titleImg, "24%", "center", colors [3]);

              for (var i = 0; i < 3; i++)
                createCell (myTr, rstrings [i], "19%", "center", colors [i]);

              createCell (myTr, totalStr, "19%", "center", colors [3]);
              myImg.style.left = "96%";
              myImg.style.top = "0%";
              //myImg.setAttribute ("src", "img/layout/fleetCloseAll.gif");
              myImg.setAttribute ("src", closeImg);
              myTr.lastChild.setAttribute ("height", "23");
              myTr.lastChild.appendChild (mySpan);

              for (var resIndex in resInfo)
                if (resInfo [resIndex] [3] > 0)
                {
                  myTr = myTable.insertRow (-1);
                  myText = resIndex;

                  if ((resIndex != curPlanet) && (resIndex != totalStr))
                    myText += ' (' + addDots (resInfo [resIndex] [4]) + ')';

                  createCell (myTr, myText, "24%", "center",
                              (resIndex != totalStr) ? "silver" : colors [3]);

                  for (var i = 0; i < 3; i++)
                    createCell (myTr, addDots (resInfo [resIndex] [i]),
                                "19%", "right", "silver");

                  createCell (myTr, addDots (resInfo [resIndex] [3]),
                              "19%", "right", "silver");
                }
              span.appendChild (myTable);
            }
            else
            {
              span.style.marginLeft = "6px";
              span.style.color = "silver";

              var myImg2 = document.createElement ("img");
                  myImg2.setAttribute ("src", titleImg);
                  myImg2.style.verticalAlign = "middle";

              span.appendChild (myImg2);
              span.appendChild (createFontElement (": ", colors [3]));
              span.appendChild (createFontElement (rstrings [0], colors [0]));
              span.appendChild (document.createTextNode (" " +
                                addDots (resInfo [totalStr] [0])));
              span.appendChild (document.createTextNode (", "));
              span.appendChild (createFontElement (rstrings [1], colors [1]));
              span.appendChild (document.createTextNode (" " +
                                addDots (resInfo [totalStr] [1])));
              span.appendChild (document.createTextNode (", "));
              span.appendChild (createFontElement (rstrings [2], colors [2]));
              span.appendChild (document.createTextNode (" " +
                               addDots (resInfo [totalStr] [2])));
              span.appendChild (document.createTextNode ("."));

              mySpan.style.cssFloat = "right";
              mySpan.style.styleFloat = "right";
              mySpan.style.marginRight = "28px";
              myImg.style.bottom = "0%";
              //myImg.setAttribute ("src", "img/layout/fleetOpenAll.gif");
              myImg.setAttribute ("src", openImg);
              span.appendChild (mySpan);
            }
            div.appendChild (span);

            if (below)
              document.getElementById ("inhalt").appendChild (div);
            else
            {
              var fleetDetails = document.getElementsByClassName("fleetDetails");
              fleetDetails [0].parentNode.insertBefore (div, fleetDetails [0]);
            }
            addEvent (mya, "click", redrawTable);
          }

          function redrawTable ()
          {
            while (div.hasChildNodes ())
              div.removeChild (div.firstChild);

            div.parentNode.removeChild (div);
            expanded = !expanded;

            if (typeof GM_setValue == "function") // greasemonkey
                GM_setValue ("expanded" + strUniverse, expanded);
            else if (typeof PRO_setValue == "function") // ie7pro
                PRO_setValue ("expanded" + strUniverse, expanded);

            doTable ();
          }

          function getResName (resName)
          {
            var title = document.getElementById (resName + "_box").title;
            if (title.indexOf ("|") >= 0)
              return (title.substring (0, title.indexOf ("|")).replace (/<[^>]+>/g, ""));
            else
              return (title.split (/[<>]/) [2]);
          }

          if (document.getElementById ("resourcesInFlight") != null) return;

          var resInfo = new Object;
          var directions = new Array ();
          var flightTypes = new Array ();
          var destinations = new Array ();
          var destinationNames = new Array ();
          var origins = new Array ();
          var originNames = new Array ();
          var myRes = new Array (0, 0, 0);
          var allFlights = document.getElementsByClassName ("mission");

          for (var i = 0; i < allFlights.length; i++)
          {
            flightTypes [i] = allFlights [i].innerHTML;
            var matches = flightTypes [i].match (/\(.+\)/);
            if (matches != null)
            {
              flightTypes [i] = flightTypes [i].replace (matches [0], "");
              directions [i] = "<";
            }
          }

          allFlights = document.getElementsByClassName ("tipsTitleArrowCloseFleet");

          for (var i = 0; i < allFlights.length; i++)
            directions [i] = (allFlights [i].className.indexOf ("reverse") > -1) ? "<" : ">";

          allFlights = document.getElementsByClassName ("originCoords tipsStandard");

          for (var i = 0; i < allFlights.length; i++)
          {
            origins [i] = allFlights [i].firstChild.innerHTML;

            var mySpans = allFlights [i].parentNode.getElementsByTagName ("span");

            if (mySpans.length < 1)
                originNames [i] = "";
            else
            {
                var mySpan = mySpans [mySpans.length - 1];
                originNames [i] = (mySpan.title == "") ?
                                   mySpan.textContent.replace (/^\s+|\s+$/g, "") :
                                   mySpan.title.substring (mySpan.title.indexOf ("|") + 1);
            }

            if (typeof (directions [i]) == "undefined")
              directions [i] = ">";
          }

          allFlights = document.getElementsByClassName ("destinationCoords tipsStandard");

          for (var i = 0; i < allFlights.length; i++)
            if (directions [i] == "<")
            {
              destinations [i] =  origins [i];
              destinationNames [i] = ((onlyToCurrent) ? "=>" : "+") + originNames [i];
            }
            else
            {
              destinations [i] =  allFlights [i].firstChild.innerHTML;


              var mySpans = allFlights [i].parentNode.getElementsByTagName ("span");
              if (mySpans.length < 2)
                  destinationNames [i] = "";
              else
              {
                  var mySpan = mySpans [mySpans.length - 2];
                  destinationNames [i] = ((onlyToCurrent) ? "=>" : "+") +
                                         ((mySpan.title == "") ?
                                           mySpan.textContent.replace (/^\s+|\s+$/g, "") :
                                           mySpan.title.substring (mySpan.title.indexOf ("|") + 1));
              }
            }

          var flightCargo = new Object;
          allFlights = document.getElementsByClassName ("fleetinfo");

          if (allFlights.length > 0)
          {
            for (var i = 0; i < allFlights.length; i++)
            {
              var trs = allFlights [i].getElementsByTagName ("tr");
              var any = false;
              var shipInfos = trs.length;
              if (trs [shipInfos - 1].id == "freeSpace")
                shipInfos--;
              for (var j = 0; j < 3; j++)
              {
                myRes [j] = parseInt (trs [shipInfos - 3 + j].
                                      getElementsByTagName("td")[1].
                                      innerHTML.replace (/\D+/gi, ""));
                if (myRes [j] > 0)
                  any = true;
              }

              flightCargo [i] = new Array (myRes [0], myRes [1], myRes [2]);
              var type = directions [i] + flightTypes [i];

              if (resInfo [type])
              {
                for (var j = 0; j < 3; j++)
                  resInfo [type] [j] += myRes [j];
                if (any)
                  resInfo [type] [4] += 1;
              }
              else
                resInfo [type] = new Array (myRes [0], myRes [1], myRes [2], 0, (any) ? 1 : 0);
            }
          }
          else
          {
            allFlights = document.getElementsByClassName ("anti_fleetDetails");

            for (var i = 0; i < allFlights.length; i++)
            {
              var trs = allFlights [i].textContent.split (/\n/);
              var any = false;
              var shipInfos = trs.length;

              if (trs [shipInfos - 1].id == "freeSpace")
                shipInfos--;

              for (var j = 0; j < 3; j++)
              {
                myRes [j] = parseInt (trs [shipInfos - 3 + j].replace (/\D+/gi, ""));

                if (myRes [j] > 0)
                  any = true;
              }

              flightCargo [i] = new Array (myRes [0], myRes [1], myRes [2]);
              var type = directions [i] + flightTypes [i];

              if (resInfo [type])
              {
                for (var j = 0; j < 3; j++)
                  resInfo [type] [j] += myRes [j];
                if (any)
                  resInfo [type] [4] += 1;
              }
              else
                resInfo [type] = new Array (myRes [0],
                                            myRes [1],
                                            myRes [2],
                                            0,
                                            (any) ? 1 : 0);
            }
          }

          var rstrings = ["", "", ""];
              rstrings [0] = getResName ("metal");
              rstrings [1] = getResName ("crystal");
              rstrings [2] = getResName ("deuterium");

          curPlanet = ((onlyToCurrent) ? "=>" : "+") +
                        document.getElementById ("selectedPlanetName").innerHTML;

          allFlights = document.getElementsByClassName ("planet-koords");

          if (allFlights.length == 1)
            curPlanetCoords = allFlights [0].innerHTML;

          else
          {
            for (var i = 0; i < allFlights.length; i++)
              if (allFlights [i].parentNode.className.indexOf (" active ") != -1)
              {
                curPlanetCoords = allFlights [i].innerHTML;
                break;
              }
          }

          resInfo [totalStr]  = new Array (0, 0, 0, 0, 0);
          resInfo [curPlanet] = new Array (0, 0, 0, 0, 0);
          toPlanet = new Array (0, 0, 0);

          for (var i = 0; i < destinations.length; i++)
            if ((destinations [i] == curPlanetCoords) && (destinationNames [i] == curPlanet))
              for (var j = 0; j < 3; j++)
                toPlanet [j] += flightCargo [i] [j];

          planetRes [0] = parseInt (document.getElementById ("resources_metal").
                                             innerHTML.replace (/\D+/gi, ""));
          planetRes [1] = parseInt (document.getElementById ("resources_crystal").
                                             innerHTML.replace (/\D+/gi, ""));
          planetRes [2] = parseInt (document.getElementById ("resources_deuterium").
                                             innerHTML.replace (/\D+/gi, ""));

          for (var resIndex in resInfo)
            resInfo [resIndex] [3] = 0;
          for (var resIndex in resInfo)
            for (var i = 0; i < 3; i++)
            {
              if (resIndex == curPlanet)
                resInfo [curPlanet] [i] = ((onlyToCurrent) ? toPlanet [i] :
                                            resInfo [totalStr] [i]) + planetRes [i];
              else if (resIndex != totalStr)
                resInfo [totalStr] [i] += resInfo [resIndex] [i];

              resInfo [resIndex] [3] += resInfo [resIndex] [i];
            }
          if (resInfo [totalStr] [3] > 0)
          {
            div = document.createElement ("div");
            div.setAttribute ("id", "resourcesInFlight");
            div.className = "fleetDetails detailsOpened";
            div.style.height = "auto";
            div.style.fontWeight = "bold";
            div.style.lineHeight = "18px";

            doTable ();
          }
  }
}

// name           OGame Redesign: Show IPM and Phalanx Range
// description
// namespace      Vesselin
// version        1.01
function ShowIPMandPhalanxRange() {

   // The following "if" is not really necessary but with it this script
   // will work for Opera too
   if ((document.location.href.indexOf("/game/index.php?page=station") < 0) &&
       (document.location.href.indexOf("/game/index.php?page=defense") < 0))
       return;

   if (!showRange) return;

   function setShowRange ()
   {
        var theSpan = document.getElementsByClassName ("solarSatEnergyInfo");
        if ((theSpan == null) || (theSpan.length < 1))
          return;

        //Ocultar rangos de antigame
        spanAnti = document.getElementsByClassName('antigame_range')[0];
        if (spanAnti) spanAnti.innerHTML='';

        if (theSpan [0].textContent.indexOf ("(") > -1)
          return;

        var coverage = parseInt (theSpan [0].textContent.match (/\d+/) [0]);
        var activeA = document.getElementsByClassName ("planetlink active");

        if (activeA.length == 0)
          activeA = document.getElementsByClassName ("planetlink");

        if (activeA.length < 1)
          return;

        var activeSpans = activeA [0].getElementsByTagName ("span");

        if (activeSpans.length < 2)
          return;

        var coords = activeSpans [1].textContent.split (/[\[:]/);
        var galaxy = parseInt (coords [1]);
        var system = parseInt (coords [2]);
        var system1 = system - coverage;
        var system2 = system + coverage;

        if (document.location.href.indexOf("/game/index.php?page=station") > -1)
        {
          system1++;
          system2--;
        }

        if (system1 < 1)
          system1 = 1;

        if (system2 > 499)
          system2 = 499;

        var range = '<span class=\"lpunktkit_range\" style=\"color:' +
                    strColor_LPuNKTKit + ';\">';

            range += ' (' + galaxy + ':' + system1 + ' - ' + galaxy + ':' + system2 + ')';

            range += '</span>';

        theSpan [0].innerHTML += range;

   }

   setInterval (setShowRange, 500);
}


// name           OGame Redesign: Disable Useless Stuff
// namespace      Vesselin
// version        1.03
function DisableUselessStuff () {
  if (disableUselessStuff)
  {
     var theUrl = document.location.href
     var unsafe = window;
     var myA, previousA, mySpans;
     try
     {
       unsafe = unsafeWindow
     }
     catch (e)
     {
     }

     if (!EsPlaneta())
     {
       if (theUrl.indexOf ("/game/index.php?page=resources") >= 0)
       {
         for (var i = 6; i <= 9; i++)
         {
           var myLi = document.getElementById ("button" + i);
           myLi.className = "off";
           var myAs = myLi.getElementsByTagName ("a");

           for (var j = 0; j < myAs.length; j++)
           {
             myA = myAs [j];
             if (myA.className.indexOf ("fastBuild") >= 0)
             {
               myA.style.display = "none";
               break;
             }
           }

         }
       }
       else if (theUrl.indexOf ("/game/index.php?page=shipyard") >= 0)
            document.getElementById ("civil").children [5].className = "off";
       else if ((theUrl.indexOf ("/game/index.php?page=station") >= 0) &&
                (theUrl.indexOf ("openJumpgate=1") < 0))
       {
         myA = document.getElementById ("details43");

         if (myA == null)
           return;

         mySpans = myA.getElementsByTagName ("span");
         for (var i = 0; i < mySpans.length; i++)
           if ((mySpans [i].className == "textlabel") &&
               (parseInt (mySpans [i].nextSibling.textContent) >= 1))
           {
             myA.parentNode.parentNode.parentNode.className = "off";
             previousA = myA.previousElementSibling;

             if (previousA && (previousA.className.indexOf ("fastBuild") >= 0))
               previousA.style.display = "none";
             break;
           }
       }
     }
     else if (theUrl.indexOf ('/game/index.php?page=research') >= 0)
     {
       var limits = [["120", 12], ["121", 5], ["114", 8], ["122", 7], ["199", 1]];

       for (var i = 0; i < limits.length; i++)
       {
         myA = document.getElementById ("details" + limits [i] [0]);
         if (myA == null)
           continue;

         mySpans = myA.getElementsByTagName ("span");
         for (var j = 0; j < mySpans.length; j++)
           if ((mySpans [j].className == "textlabel") &&
               (parseInt (mySpans [j].nextSibling.textContent) >= limits [i] [1]))
           {
             myA.parentNode.parentNode.parentNode.className = "off";
             previousA = myA.previousElementSibling;
             if (previousA && (previousA.className.indexOf ("fastBuild") >= 0))
               previousA.style.display = "none";

             break;
           }
       }
     }
  }//IF (disableUselessStuff) {
}


// name           Ogame Redesign: Acceleration messages section
// namespace      Shuusaku
// description    Car c'est plus mieux comme ca
// version 3.0
function AccelerateMessageSection(){
  if (acelMessageSection) {
    if ( !unsafeWindow.$ ) return;

    var links = document.getElementsByTagName('link');

    for (var i=0; i<links.length; i++) {
      if (links[i].getAttribute('type')!=null &&
          links[i].getAttribute('type').toLowerCase() == 'text/css' &&
          links[i].getAttribute('href').toLowerCase().indexOf('01style.css') > -1)
      {
        var rules = document.styleSheets[0].cssRules;
        for (var i = 0; i < rules.length; i++)
          if (rules[i].type == 1 && rules[i].selectorText == ":active, :focus") {
            document.styleSheets[0].deleteRule(i);
            document.styleSheets[0].insertRule("a:active, a:focus { outline: none; }", i);
            break;
          }
      }
    }
  }
}


// name           OGame Redesign: Fix the Action Icons
// description    Prevents the shifting of the action icons if no spy icon
//                available and removes the IPM and spy icons and menus
//                if not applicable
// namespace      Vesselin
// version        1.17
function FixActionIcons()
{

  // The following "if" is not really necessary but with it this script
  // will work for Opera too
  if (document.location.href.indexOf ("/game/index.php?page=galaxy") == -1)
    return;

  if (!setFixActionIcons) return;

  const MOON_PICS = true; // Set this to false if you want the original ("ghostly") moon pictures

  var isIE;
  var planetRelocationPrice = 240000;
  var now = new Date ();
  var monthDay = now.getDate ();
  var year = now.getYear ();

  if (year < 2000)
    year += 1900;

  if ((year == 2010) && (now.getMonth () == 11) && (monthDay >= 20) && (monthDay <= 22))
    planetRelocationPrice = 160000;

  else if ((year == 2011) && (now.getMonth () == 7) && (monthDay >= 25) && (monthDay <= 26))
    planetRelocationPrice = 180000;

  function fixIcons (event)
  {
    function addDots (n)
    {
      n += '';
      var rgx = /(\d+)(\d{3})/;
      while (rgx.test (n))
        n = n.replace (rgx, '$1' + '.' + '$2');
      return n;
    }
    if (isIE)
    {
      if (document.getElementById ("galaxyContent") == null)
        return;
    }
    else
    {
      if (event.target.innerHTML.indexOf('id="galaxyheadbg2"') < 0)
        return;
    }
    if (parseInt (document.getElementById("resources_darkmatter").
                           textContent.replace(/\D+/g, "")) < planetRelocationPrice)
    {
      var myAs = document.getElementsByClassName ("planetMoveIcons");
      for (var i = 0; i < myAs.length; i++)
      {
        var theA = myAs [i];
        if (theA.className.indexOf ("planetMoveDefault") >= 0)
        {
          theA.removeAttribute ("onclick");
          theA.title = "|" + document.getElementById ("darkmatter_box").title.
                             split (/:/) [0] + " < " + addDots (planetRelocationPrice);
          theA.className = "planetMoveIcons planetMoveInactive tipsStandard";
          theA.href = document.location.href.replace ("galaxy", "premium") +
                      "&openDetail=1";
        }
      }
    }
    var allRows = document.getElementsByClassName ("row");
    var coords, galaxy, system, planet, anchors, a0, activity, moonUls, curPlanetCoords;
    coords = document.getElementsByClassName ("planet-koords");
    if (coords.length == 1)
      curPlanetCoords = coords [0].textContent;
    else
    {
      for (var i = 0; i < coords.length; i++)
        if (coords [i].parentNode.className.indexOf (" active ") != -1)
        {
          curPlanetCoords = coords [i].textContent;
          break;
        }
    }

    var oldVersion = checkVersionOgame();

    for (var row = 0; row < allRows.length; row++)
    {
      var tds = allRows [row].getElementsByTagName ("td");
      var isNoob = false;
      var onVacation = false;
      activity = "";

      for (var td = 0; td < tds.length; td++)
      {
        var theClass = tds [td].className;
        if ((theClass.indexOf ("noob") >= 0) || (theClass.indexOf ("strong") >= 0))
        {
          isNoob = true;
          anchors = tds [2].getElementsByTagName ("ul") [1].getElementsByTagName ("a");
          for (var anchor = 0; anchor < anchors.length; anchor++)
          {
            a0 = anchors [anchor];
            if (a0.href.indexOf ("missileattacklayer") >= 0)
              a0.parentNode.removeChild (a0);
          }
          moonUls = tds [4].getElementsByTagName ("ul");
          if (moonUls.length > 1)
          {
            anchors = moonUls [1].getElementsByTagName ("a");
            for (var anchor = 0; anchor < anchors.length; anchor++)
            {
              a0 = anchors [anchor];
              if (a0.href.indexOf ("missileattacklayer") >= 0)
                a0.parentNode.removeChild (a0);
            }
          }
        }
        if (theClass.indexOf ("vacation") >= 0)
        {
          onVacation = true;
          var myUl = tds [2].getElementsByTagName ("ul") [1];
          while (myUl.childNodes.length > 0)
            myUl.removeChild (myUl.firstChild);
          moonUls = tds [4].getElementsByTagName ("ul");
          if (moonUls.length > 1)
          {
            myUl = moonUls [1];
            while (myUl.childNodes.length > 0)
              myUl.removeChild (myUl.firstChild);
          }
        }
        if (MOON_PICS && (theClass.indexOf ("moon") >= 0))
        {
          var moonImages = Array ();

          if (oldVersion)
            moonImages = [
              "img/planets/moon/moon_1_3.gif",
              "img/planets/moon/moon_2_3.gif",
              "img/planets/moon/moon_3_3.gif",
              "img/planets/moon/moon_4_3.gif",
              "img/planets/moon/moon_5_3.gif"
            ];
          else
            moonImages = [
              "http://gf1.geo.gfsrv.net/8d/fb0bad7c74712fe0d4f3e2b13e4d21.gif",
              "http://gf1.geo.gfsrv.net/2d/c56f1dc20c57cc934f75aa7c8f64dd.gif",
              "http://gf1.geo.gfsrv.net/07/9d5182ada9be53e12593f89715555e.gif",
              "http://gf1.geo.gfsrv.net/57/1d3c27a190ef6620e01b841b02c15c.gif",
              "http://gf1.geo.gfsrv.net/11/09f7964b201e1b5adb596c5a4d8785.gif"
            ];
          var moonImg = moonImages [system % 5];
          var myImg = tds [td].getElementsByTagName ("img");
          if (myImg.length > 0)
          {
            myImg [0].setAttribute ("src", moonImg);
            if (myImg.length > 1)
            {
              myImg [1].setAttribute ("src", moonImg);
              myImg [1].style.width  = "30px";
              myImg [1].style.height = "30px";
            }
          }
        }
        else if (theClass.indexOf ("alaxy microplanet") >= 0)
        {
          var uls = tds [td].getElementsByTagName ("ul");
          if (uls.length > 1)
            if (uls [1].className == "ListLinks");
            {
              var lis = uls [1].getElementsByTagName ("li");
              if (lis.length > 0)
                if (lis [0].textContent.indexOf (":") >= 0)
                  if (lis [0].getElementsByTagName ("img").length > 0)
                    activity = "*";
                  else
                    activity = lis [0].textContent.match (/\d+/) [0];
            }
          var spans = tds [td].getElementsByTagName ("span");
          for (var span = 0; span < spans.length; span++)
          {
            if (spans [span].getAttribute ("id") == "pos-planet")
            {
              coords = spans [span].innerHTML.split (/[\[:\]]/);
              galaxy = coords [1];
              system = coords [2];
              planet = coords [3];
              if ("[" + galaxy + ":" + system + ":" + planet + "]" == curPlanetCoords)
                activity = "*";
              break;
            }
            if ((activity == "") &&
                (spans [span].className == "spacing") &&
                (spans [span].parentNode.tagName.toLowerCase () != "h4"))
            {
              if (spans [span].parentNode.childNodes.length > 2)
                activity = "*";

              else
              {
                activity = spans [span].nextSibling.textContent;
                if (activity.length > 1)
                  activity = activity.match (/\d+/) [0];
                else
                  activity = "";
              }
            }
          }
        }
        else if (theClass == "planetname")
        {
          if ((activity.length > 0) && (tds [td].textContent.indexOf ("(") < 0))
          {
            var mySpan = document.createElement ("span");
            mySpan.className = "undermark";
            mySpan.appendChild (document.createTextNode (activity));
            tds [td].textContent += "(";
            tds [td].appendChild (mySpan);
            tds [td].appendChild (document.createTextNode (")"));
          }
        }
        else if (theClass == "action")
        {
          anchors = tds [td].getElementsByTagName ("a");
          if (anchors.length <= 0)
            continue;
          a0 = anchors [0];
          if (a0.innerHTML.length <= 0)
            continue;
          var myA;
          if ((a0.getAttribute ("href") == "#") ||
              (a0.getAttribute ("href") == "javascript:void(0);"))
          {
            var onClick = a0.getAttribute ("onclick");
            if (onClick)
            {
              var params = onClick.split (/\D+/);
              var targetGalaxy = params [2];
              var numProbes = params [6];
              var activePlanets = document.querySelectorAll ("a.planetlink");
              var activePlanet = activePlanets [0];
              if (activePlanets.length > 1)
                for (var i = 0; i < activePlanets.length; i++)
                {
                  activePlanet = activePlanets [i];
                  if (activePlanet.className.indexOf ("active") >= 0)
                    break;
                }
              var coords = activePlanet.querySelector("span.planet-koords").
                                                      textContent.split (/\D+/);
              var currentGalaxy = coords [1];
              var galaxyDistance = Math.abs (targetGalaxy - currentGalaxy);
              if ((galaxyDistance > 2) ||
                  ( (galaxyDistance == 2) &&
                    (numProbes <= 1)))
              {
                a0.firstChild.style.display = "none";
                a0.removeAttribute ("href");
                a0.removeAttribute ("title");
                a0.removeAttribute ("class");
                a0.removeAttribute ("onclick");
              }
            }
          }
          if (((a0.getAttribute ("href") != "#") &&
               (a0.getAttribute ("href") != "javascript:void(0);") &&
               (a0.firstChild != null) &&
               (a0.firstChild.style.display != "none")) ||
              (a0.href.indexOf ("page=writemessage") > -1))
          {
            myA = document.createElement ("a");
            if (! (isNoob || onVacation))
            {
              myA.href = "javascript:void(0);";
              myA.setAttribute ("onclick", "sendShips (6, " +
                                galaxy + ", " + system + ", " + planet +
                                ", 1); return false;");
              var myImg = document.createElement ("img");
              myImg.setAttribute ("width", "16");
              myImg.setAttribute ("height", "16");
              myImg.setAttribute ("src", "data:image/gif;base64,R0lGODlhEAAQ" +
                                         "AJEDAP///1x2i2+JnQAAACH5BAEAAAMALA" +
                                         "AAAAAQABAAAAIrXI6Zpu0P4wMUyFohxs4G" +
                                         "+h1eIAhAaVboiZor67YlvMrtRtv6zvf84E" +
                                         "MNCgA7");
              myA.appendChild (myImg);
            }
            a0.parentNode.insertBefore (myA, a0);
          }
          if (isNoob || onVacation)
            for (var anchor = 0; anchor < anchors.length; anchor++)
            {
              a0 = anchors [anchor];
              if (a0.innerHTML.length <= 0)
                continue;
              if (a0.href.indexOf ("missileattacklayer") >= 0)
                a0.style.display = "none";
              else if ((a0.getAttribute ("href") == "#") ||
                       (a0.getAttribute ("href") == "javascript:void(0);"))
              {
                a0.firstChild.style.display = "none";
                a0.removeAttribute ("href");
                a0.removeAttribute ("title");
                a0.removeAttribute ("class");
                a0.removeAttribute ("onclick");
              }
            }
        }
      }
    }
  }

  isIE = (navigator.appName == "Microsoft Internet Explorer");

  if (isIE)
    var interval = setInterval (fixIcons, 1000);
  else
    document.addEventListener ("DOMNodeInserted", fixIcons, false);
}

// name           OGame Redesign: Reply to Circular Messages
// description    Allows the player to reply directly to circular messages.
// namespace      Vesselin
// author         Vesselin Bontchev
// version        1.03
function ReplyCircularMessages ()
{
  if (!replyCC) return;

  // The following "if" is not really necessary but with it this script
  // will work for Opera too
  if (document.location.href.indexOf ("/game/index.php?page=showmessage") == -1)
    return;

  var wrapperDiv = document.getElementById ("wrapper");

  if (wrapperDiv == null)
  {
    wrapperDiv = document.getElementById ("messagebox");
    if (wrapperDiv == null)
      return;
  }

  var theDivs = wrapperDiv.getElementsByTagName ("div");

  if (theDivs.length < 5)
    return;

  var infoHeadDiv = theDivs [1];
  var showMsgNaviDiv = theDivs [2];
  var theLis = showMsgNaviDiv.getElementsByTagName ("a");

  for (var i = 0; i < theLis.length; i++)
    if (theLis [i].className.indexOf ("answerHeadline") > -1)
      return;

  var textWrapperDiv = theDivs [4];
  var theTable = infoHeadDiv.getElementsByTagName ("table");

  if (theTable.length < 1)
    return;

  if (theTable [0].rows [0].cells [1].textContent.trim ().indexOf("[") == -1)
    return;

  var subject = theTable [0].rows [2].cells [1].textContent.trim ();

  textWrapperDiv.className = "textWrapperSmall";

  var newDiv = document.createElement ("div");

  newDiv.innerHTML =
    '<div id="answerForm" class="textWrapperSmall">' +
      '<form target="_parent" method="post" action="index.php?page=' +
      'networkkommunikation' +
      ( (parseInt(getVersionOgame()[0])==3) ? '' : '&' + getSession() ) +
      '&empfaenger=0" name="asdf">' +
        '<input type="hidden" name="empfaenger" value="0" />' +
        '<div class="answerText">' +
          '<textarea tabindex="3" name="text" class="mailnew" ' +
          'onkeyup="javascript:cntchar(2000)""></textarea>' +
          '<input type="hidden" name="betreff" value="RE:' + subject + '" />' +
        '</div>' +
           '<div class="answerText" stype="padding-left: 0;>' +
          '<div class="fleft count textBeefy">(<span id="cntChars">0</span>' +
          ' / 2000)</div>' +
          '<div class="fleft buttonbox">' +
            '<input tabindex="4" name="submitMail" type="submit" ' +
            'class="button188" value="' + LANG.txtEnviar + '" />' +
          '</div>' +
          '<br class="clearfloat" />' +
        '</div>' +
      '</form>' +
    '</div>';
  wrapperDiv.appendChild (newDiv);
}

// name           OGame Redesign: Keyboard Shortcuts
// description    Assigns keyboard shortcuts to various game functions
// namespace      Vesselin
// version        1.27
// author         Vesselin Bontchev
function ShortcutKeys()
{
  if (!showShortcuts) return;

     var theHref = document.location.href;

     // The following "if" is not really necessary but with it this script
     // will work for Opera too
     if ((theHref.indexOf ("/game/index.php?page=")             <  0) ||
         (theHref.indexOf ("/game/index.php?page=notices")      > -1) ||
         (theHref.indexOf ("/game/index.php?page=combatreport") > -1))
       return;

     var unsafe = window;

     try
     {
       unsafe = unsafeWindow
     }
     catch (e)
     {
     }

     var $ = unsafe.$;

     if (! $)
       return;

     function badTarget (e)
     {
       var targ;
       if (! e)
         var e = window.event;

       if (e.target)
         targ = e.target;
       else if (e.srcElement)
         targ = e.srcElement;

       if (targ.nodeType == 3) // defeat Safari bug
         targ = targ.parentNode;

       if ((targ.nodeName == "INPUT") || (targ.nodeName == "TEXTAREA"))
         return true;

       return false;
     }

     var oldVersion = checkVersionOgame();

     if (oldVersion)
     {
       rewind      = "rewind.gif";
       fastforward = "fastforward.gif";
       skip        = "skip.gif";
       skipback    = "skip-back.gif";
     }
     else
     {
       rewind      = "3488b556496631d9eec3ce15b768f9.gif";
       fastforward = "dcebd689a4e760f779a1a1b1ab0584.gif";
       skip        = "a6c5c6838009102254ec50807be663.gif";
       skipback    = "c1246af2584e9696edd7111a0d9418.gif";
     }


     if ((theHref.indexOf ("/game/index.php?page=showmessage") >= 0) &&
         (showKeyMailbox))
     {
       $ (document).ready (function ()
       {
         setTimeout (function ()
         {
           $ ("#2,#4").focus ();
           $ ("#2,#4").blur ();
           $ (document).keydown (function (e)
           {
             if (badTarget (e))
               return;
             switch (e.keyCode)
             {
               case 27:  // Esc
                 $ (".closeTB").click ();

                 return false;
                 break;

               case 37:  // <-
                 if ($ ("#contentPageNavi").find("img").eq(1).attr("src").indexOf(rewind) > -1)
                   window.location = $ ("#contentPageNavi").find ("a:nth-child(2)").attr ("href");

                 return false;
                 break;

               case 39:  // ->
                 if ($ ("#contentPageNavi").find("img").eq(2).attr("src").indexOf(fastforward) > -1)
                   window.location = $ ("#contentPageNavi").find ("a:nth-child(5)").attr ("href");

                 return false;
                 break;

               case 46:  // Del
                 if ($ ("#2").length > 0)
                   $ ("#2").click ();
                 else
                   $ ("#4").click ();

                 return false;
                 break;
             }
           });
         }, 200);
       });
       return;
     }
     else if ((theHref.indexOf ("page=jumpgatelayer") > -1) &&
              (showKeyEverywhere))
     {
       $ (document).ready (function ()
       {
         setTimeout (function ()
         {
           $ ("div#jumpgate a").eq (0).focus ();
           $ ("div#jumpgate a").eq (0).blur ();
           $ (document).keydown (function (e)
           {
             switch (e.keyCode)
             {

               case 65:  // "a"
                 if (e.shiftKey || e.ctrlKey || e.altKey)
                   break;
                 $ ("#sendall").click ();
                 return false;
                 break;
               case 78:  // "n"
                 if (e.shiftKey || e.ctrlKey || e.altKey)
                   break;
                 $ ("span.send_none a").click ();
                 return false;
                 break;
               case 27:  // Esc
                 $ ("a.close_details").click ();
                 return false;
                 break;
             }
           });
         }, 200);
       });
       return;
     }
     $ (document).keydown (function (e)
     {
       if (($ ("div").is ("#anti_options_window")) ||
           ($ ("div").is ("#lpunktkit-overlay")) ||
           ($ ("div").is ("#lpunktkey-overlay")) ||
           ($ ("div").is ("#lpunktcolor-overlay")) ||
           ($ ("div").is ("#lpunktcompactador-overlay")) ||
           (($ ("div").is ("#TB_window") ||
             $ ("body").is ("#writemessage") ||
             $ ("body").is ("#search") ||
             $ ("body").is ("#showmessage") ||
             (theHref.indexOf ("/game/index.php?page=alliance") >= 0) ||
             (theHref.indexOf ("/game/index.php?page=networkkommunikation") >= 0) ||
             (theHref.indexOf ("/game/index.php?page=preferences") >= 0)) && badTarget (e)))
         return;
       switch (e.keyCode)
       {
         case 27:  // Esc
           if (e.shiftKey || e.ctrlKey || e.altKey)
             break;
           if ((theHref.indexOf ("/game/index.php?page=fleet1") >= 0) &&
               (showKeyFleet))
           {
             $ ("a.close_details").click ();
             return false;
           }
           break;
         case 38:  // UpArrow
         case 40:  // DownArrow
           if ((e.ctrlKey) && (showKeyEverywhere))
           {
             if (unsafe.resourceTickerMetal ["production"] > 0)
             {
               var planetLinks = $ (".planetlink");
               var numPlanets = planetLinks.length;
               if (numPlanets < 2)
                 break;
               var activePlanet = planetLinks.index ($ (".active"));
               if (activePlanet >= 0)
               {
                 window.location = planetLinks [((e.keyCode == 38) ?
                                   (activePlanet + numPlanets - 1) :
                                   (activePlanet + 1)) % numPlanets].href;
                 return false;
               }
             }
             else
             {
               var moonLinks = $ (".moonlink");
               var numMoons = moonLinks.length;
               if (numMoons < 2)
                 break;
               var activeMoon = -1;
               for (var i = 0; i < numMoons; i++)
                 if (moonLinks[i].previousElementSibling.className.indexOf("active") >= 0)
                 {
                   activeMoon = i;
                   break;
                 }
               if (activeMoon >= 0)
               {
                 window.location = moonLinks [((e.keyCode == 38) ?
                                   (activeMoon + numMoons - 1) :
                                   (activeMoon + 1)) % numMoons].href;
                 return false;
               }
             }
           }
           else if ((e.shiftKey) && (showKeyEverywhere))
           {
             var leftMenu = $ ("#menuTable li a.menubutton");
             var numButtons = leftMenu.length;
             var activeButton = leftMenu.index ($ (".selected"));
             if (activeButton >= 0)
             {
               window.location = leftMenu [((e.keyCode == 38) ?
                                 (activeButton + numButtons - 1) :
                                 (activeButton + 1)) % numButtons].href;
               return false;
             }
           }
           break;
         case 37:  // "<-"
         case 39:  // "->"
           if (e.altKey ||
              ( badTarget(e) &&
                ( (theHref.indexOf ("page=fleet3") >= 0) &&
                  (showKeyFleet))))
             break;

           if ((e.shiftKey) && (showKeyEverywhere))
           {
             var planetLinks = $ (".planetlink,.moonlink");
             var numPlanets = planetLinks.length;
             if (numPlanets < 2)
               break;

             var activePlanet = planetLinks.index ($ (".active"));
             if (unsafe.resourceTickerMetal ["production"] <= 0)
               activePlanet++;

             if (activePlanet >= 0)
             {
               window.location = planetLinks [((e.keyCode == 37) ?
                                 (activePlanet + numPlanets - 1) :
                                 (activePlanet + 1)) % numPlanets].href;
               return false;
             }
           }
           else if ((e.ctrlKey) && (showKeyEverywhere))
           {
             if (unsafe.resourceTickerMetal ["production"] > 0)
             {
               if ($ (".active").next ().hasClass ("moonlink"))
                 window.location = $ (".active").next ().attr ("href");
             }
             else
               window.location = $ (".active").attr ("href");

             return false;
           }
           else
           {
             if ((theHref.indexOf ("/game/index.php?page=statistics") >= 0) &&
                 (showKeyEverywhere))
             {
               var myDiv = $ ("div#paging").eq (0);
               var myA = myDiv.find ("a");
               if (myA.length == 2)
                 myA.eq ((e.keyCode == 37) ? 0 : 1).click ();
               else
               {
                 if (myDiv.get (0).children [0].tagName.toLowerCase () == "span")
                 {
                   if (e.keyCode == 39)
                     myA.click ();
                 }
                 else
                 {
                   if (e.keyCode == 37)
                     myA.click ();
                 }
               }
             }
           }
           break;
         case 66:  // "b"
           if (e.shiftKey || e.ctrlKey || e.altKey || (!showKeyEverywhere))
             break;
           $ ("div#bar a[href*='page=buddies']").click ();
           return false;
           break;
         case 72:  // "h"
           if (e.ctrlKey || e.altKey)
             break;
           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                 (showKeyFleet))
             {
               $ ("#missionButton8").click ();
               return false;
             }
           }
           else
               if (showKeyEverywhere) $ ("a[href*='page=search']").click ();
           return false;
           break;
         case 75:  // "k"
           if (e.ctrlKey || e.altKey)
             break;

           if (theHref.indexOf ("/game/index.php?page=fleet3") >= 0)
           {
             if ((e.shiftKey) && (showKeyFleet))
             {
               if ($ ("#crystal").val () == 0)
                 $ ("a.max").eq (1).click ();
               else
                 $ ("a.min").eq (1).click ();
               return false;
             }
             else
             {
               if (showKeyEverywhere) {
                  var targ;
                  if (! e)
                    var e = window.event;
                  if (e.target)
                    targ = e.target;
                  else if (e.srcElement)
                    targ = e.srcElement;
                  if (targ.nodeType == 3) // defeat Safari bug
                    targ = targ.parentNode;
                  if (targ.nodeName == "INPUT")
                  {
                    targ.value = 10000 * Math.floor (targ.value / 10000);
                    return false;
                  }
                  return true;
               }
             }
           }
           else if ((! e.shiftKey) && (showKeyEverywhere))
           {
             window.location = $ ("a[href*='page=statistics']").attr ("href");
             return false;
           }
           break;
         case 77:  // "m"
           if (e.ctrlKey || e.altKey)
             break;
           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               var myEvent = document.createEvent ("MouseEvents");
               myEvent.initMouseEvent ("click", true, true, window, 0, 0, 0, 0,
                                       0, false, false, false, false, 0, null);
               document.getElementById ("mbutton").dispatchEvent (myEvent);

               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("#metal").val () == 0)
                 $ ("a.max").eq (0).click ();
               else
                 $ ("a.min").eq (0).click ();

               return false;
             }
           }
           else
           {
             if (showKeyEverywhere) {
                if ($ ("#message_alert_box_default").length > 0)
                   window.location = $("#message_alert_box_default").attr("href");
                else
                    window.location = $("#message_alert_box").attr("href");
             }
             return false;
           }
           break;

         case 84:  // "t"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                 (showKeyFleet))
             {
               $ ("#missionButton3").click ();
               return false;
             }
           }
           else
                 if (showKeyEverywhere)
                     $("#bar").find("li").children("a[onclick*='page=notices']").click();

           return false;
           break;

         case 79:  // "o"
           if (e.ctrlKey || e.altKey || (!showKeyEverywhere))
             break;

           if (e.shiftKey)
             $ ("#eventboxFilled").click ();
           else
             window.location = $ ("a[href*='page=overview'].menubutton").attr ("href");

           return false;
           break;

         case 82:  // "r"
           if (e.ctrlKey || e.altKey || (!showKeyEverywhere))
             break;

           if (e.shiftKey)
             window.location = $ ("a[href*='page=resourceSettings']").attr ("href");
           else
             window.location = $ ("a[href*='page=resources'].menubutton").attr("href");

           return false;
           break;

         case 67:  // "c"
           if (e.ctrlKey || e.altKey || (!showKeyEverywhere))
             break;

           if (e.shiftKey)
           {
             if ($ ("a[href*='openJumpgate=1']").length > 0)
               window.location = $ ("a[href*='openJumpgate=1']").attr ("href");
           }
           else
           {
             if ($ ("a[href*='openJumpgate=1']").length > 0)
               window.location = $ ("a[href*='page=station']").eq (1).attr ("href");
             else
               window.location = $ ("a[href*='page=station']").eq (0).attr ("href");
           }

           return false;
           break;

         case 69:  // "e"
           if (e.ctrlKey || e.altKey)
             break;

           if ((e.shiftKey) && (showKeyFleet))
           {
             if (theHref.indexOf ("/game/index.php?page=fleet2") >= 0)
             {
               var myEvent;
               var elem = document.getElementById ("position");
                   elem.value = 16;
               if (elem.fireEvent) // IE 5.5(WIN)
               {
                 elem.fireEvent ("onChange");
                 elem.fireEvent ("onClick");
               }
               else // Mozilla, Safari...
               {
                 myEvent = document.createEvent ("HTMLEvents");
                 myEvent.initEvent ("change", true, true);
                 elem.dispatchEvent (myEvent);
                 myEvent = document.createEvent ("MouseEvents");
                 myEvent.initMouseEvent ("click", true, true, window, 0, 0, 0, 0,
                                        0, false, false, false, false, 0, null);
                 document.getElementById ("pbutton").dispatchEvent (myEvent);
               }
               return false;
             }
             else if (theHref.indexOf ("/game/index.php?page=fleet3") > -1)
             {
               $ ("#missionButton15").click ();
               return false;
             }
           }
           else
           {
             if (showKeyEverywhere) {
                     window.location = $ ("a[href*='page=research'].menubutton").attr("href");
                     return false;
             }
           }
           break;

         case 83:  // "s"
           if (e.shiftKey || e.ctrlKey || e.altKey)
             break;

           if ((e.shiftKey) && (showKeyFleet))
           {
             if (theHref.indexOf ("/game/index.php?page=fleet3") > -1)
             {
               $ ("#missionButton2").click ();
               return false;
             }
           }
           else
               if (showKeyEverywhere)
                   window.location = $ ("a[href*='page=shipyard'].menubutton").attr("href");

           return false;
           break;

         case 68:  // "d"
           if (e.ctrlKey || e.altKey)
             break;
           if ((e.shiftKey) && (showKeyFleet))
           {
             if (theHref.indexOf ("/game/index.php?page=fleet2") >= 0)
             {
               var myEvent = document.createEvent ("MouseEvents");
               myEvent.initMouseEvent ("click", true, true, window, 0, 0, 0, 0,
                                       0, false, false, false, false, 0, null);
               document.getElementById ("dbutton").dispatchEvent (myEvent);
               return false;
             }
             else if (theHref.indexOf ("/game/index.php?page=fleet3") >= 0)
             {
               if ($ ("#deuterium").val () == 0)
                 $ ("a.max").eq (2).click ();
               else
                 $ ("a.min").eq (2).click ();
               return false;
             }
           }
           else
           {
             if (showKeyEverywhere)
                 window.location = $ ("a[href*='page=defense'].menubutton").attr("href");
             return false;
           }
           break;

         case 70:  // "f"
           if (e.ctrlKey || e.altKey || (!showKeyEverywhere))
             break;

           if (e.shiftKey)
             window.location = $ ("a[href*='page=movement']").attr("href");
           else
             window.location = $ ("a[href*='page=fleet1'].menubutton").attr("href");

           return false;
           break;

         case 71:  // "g"
           if (e.shiftKey || e.ctrlKey || e.altKey || (!showKeyEverywhere))
             break;

           window.location = $ ("a[href*='page=galaxy'].menubutton").attr ("href");
           return false;
           break;
         case 76:  // "l"
           if (e.ctrlKey || e.altKey || (!showKeyEverywhere))
             break;

           if (e.shiftKey)
             window.location = $ ("a[href*='page=alliance']").attr ("href").
                                  replace ("alliance", "networkkommunikation");
           else
             window.location = $ ("a[href*='page=alliance'].menubutton").attr("href");

           return false;
           break;

         case 65:  // "a"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                 (showKeyFleet))
             {
               $ ("#missionButton1").click ();
               return false;
             }
           }
           else
           {
             if (((theHref.indexOf ("/game/index.php?page=fleet1") > -1) &&
                  (showKeyFleet)) ||
                 ((document.getElementById ("fleet1") != null) &&
                  (showKeyEverywhere)))
             {
               $ ("#sendall").click ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               $ ("#allresources").click ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=messages") > -1) &&
                      (showKeyMailbox))
             {
               if ($ ("#checkAll").length > 0)
                 $ (".checker").attr ("checked", true);
               return false;
             }
           }
           break;

         case 78:  // "n"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                 (showKeyFleet))
             {
               $ ("#missionButton5").click ();
               return false;
             }
           }
           else
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet1") > -1) &&
                 (showKeyFleet))
             {
               $ ("span.send_none > a").click ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               $ ("a.min").click ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=messages") > -1) &&
                      (showKeyMailbox))
             {
               if ($ ("#checkAll").length > 0)
                 $ (".checker").attr ("checked", false);
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=movement") > -1) &&
                      (showKeyFleet))
             {
               $ (".reload").children ("a").click ();
               return false;
             }
           }
           break;

         case 86:  // "v"
           if (e.shiftKey || e.ctrlKey || e.altKey)
             break;

           if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
               (showKeyFleet))
           {
             $ ("a.min").click ();
             $ ("a.max").eq (2).click ();
             $ ("a.max").eq (1).click ();
             $ ("a.max").eq (0).click ();
             return false;
           }
           break;

         case 80:  // "p"
           if (e.ctrlKey || e.altKey)
             break;

           if ((e.shiftKey) && (showKeyFleet))
           {
             if (theHref.indexOf ("/game/index.php?page=fleet2") > -1)
             {
               var myEvent = document.createEvent ("MouseEvents");
               myEvent.initMouseEvent ("click", true, true, window, 0, 0, 0, 0,
                                       0, false, false, false, false, 0, null);
               document.getElementById ("pbutton").dispatchEvent (myEvent);
               return false;
             }
             else if (theHref.indexOf ("/game/index.php?page=fleet3") > -1)
             {
               $ ("#missionButton4").click ();
               return false;
             }
           }
           else
           {
             if ((theHref.indexOf ("/game/index.php?page=movement") > -1) &&
                 (showKeyFleet))
             {
               $ (".closeAll").children ("a").click ();
               return false;
             }
           }
           break;

         case 90:  // "z"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                 (showKeyFleet))
             {
               $ ("#missionButton7").click ();
               return false;
             }
           }
           break;

         case 73:  // "i"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                 (showKeyFleet))
             {
               $ ("#missionButton6").click ();
               return false;
             }
           }
           break;

         case 89:  // "y"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                 (showKeyFleet))
             {
               $ ("#missionButton9").click ();
               return false;
             }
           }
           break;

         case 49:  // "1"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("1");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("1");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
               else if ($ ("input[name=mission]").val () == "5")
               {
                 $ ("#holdtimeline select").val ("1");
                 $ ("#holdtimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 50:  // "2"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("2");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("2");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
               else if ($ ("input[name=mission]").val () == "5")
               {
                 $ ("#holdtimeline select").val ("2");
                 $ ("#holdtimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 51:  // "3"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("3");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("3");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
               else if ($ ("input[name=mission]").val () == "5")
               {
                 $ ("#holdtimeline select").val ("4");
                 $ ("#holdtimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 52:  // "4"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("4");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("4");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
               else if ($ ("input[name=mission]").val () == "5")
               {
                 $ ("#holdtimeline select").val ("8");
                 $ ("#holdtimeline select").change ();
                 return false;
               }
             }
           }
           break;
         case 53:  // "5"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("5");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("5");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
               else if ($ ("input[name=mission]").val () == "5")
               {
                 $ ("#holdtimeline select").val ("16");
                 $ ("#holdtimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 54:  // "6"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("6");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("6");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
               else if ($ ("input[name=mission]").val () == "5")
               {
                 $ ("#holdtimeline select").val ("32");
                 $ ("#holdtimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 55:  // "7"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("7");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("7");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 56:  // "8"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("8");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("8");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 57:  // "9"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("9");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("9");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 48:  // "0"
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey)
           {
             if ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) &&
                 (showKeyFleet))
             {
               $ ("#speed").val ("10");
               $ ("#speed").change ();
               return false;
             }
             else if ((theHref.indexOf ("/game/index.php?page=fleet3") > -1) &&
                      (showKeyFleet))
             {
               if ($ ("input[name=mission]").val () == "15")
               {
                 $ ("#expeditiontimeline select").val ("10");
                 $ ("#expeditiontimeline select").change ();
                 return false;
               }
               else if ($ ("input[name=mission]").val () == "5")
               {
                 $ ("#holdtimeline select").val ("0");
                 $ ("#holdtimeline select").change ();
                 return false;
               }
             }
           }
           break;

         case 8:    // Backspace
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey && (showKeyFleet) &&
               ((theHref.indexOf ("/game/index.php?page=fleet2") > -1) ||
                (theHref.indexOf ("/game/index.php?page=fleet3") > -1)))
           {
             $ ("#back").click ();
             return false;
           }
           break;

         case 46:  // Del
           if (e.shiftKey || e.ctrlKey || e.altKey)
             break;

           if ((theHref.indexOf ("/game/index.php?page=messages") > -1) &&
               (showKeyMailbox))
           {
             unsafe.mod = 7;
             $ (".buttonOK").click ();
             return false;
           }
           break;

         case 33:  // PgUp:
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey &&
               (theHref.indexOf ("/game/index.php?page=messages") > -1) &&
               (showKeyMailbox))
           {
             $ ("img[src*='" + rewind + "']").parent ().click ();
             return false;
           }
           break;

         case 34:  // PgDown
           if (e.ctrlKey || e.altKey)
             break;

           if (e.shiftKey &&
               (theHref.indexOf ("/game/index.php?page=messages") > -1) &&
               (showKeyMailbox))
           {
             $ ("img[src*='" + fastforward + "']").parent ().click ();
             return false;
           }
           break;

         case 35:  // End
           if (e.altKey)
             break;

           if ((e.shiftKey) && (showKeyEverywhere))
           {
             var planetLinks = $ (".planetlink,.moonlink");
             window.location = planetLinks [planetLinks.length - 1].href;
             return false;
           }
           if (e.ctrlKey &&
               (theHref.indexOf ("/game/index.php?page=messages") > -1) &&
               (showKeyMailbox))
           {
             $ ("img[src*='" + skip + "']").parent ().click ();
             return false;
           }
           break;

         case 36:  // Home
           if (e.altKey)
             break;

           if ((e.shiftKey) && (showKeyEverywhere))
           {
             window.location = $ (".planetlink,.moonlink").eq (0).attr ("href");
             return false;
           }
           if (e.ctrlKey &&
               (theHref.indexOf ("/game/index.php?page=messages") > -1) &&
               (showKeyMailbox))
           {
             $ ("img[src*='" + skipback + "']").parent ().click ();
             return false;
           }
           break;

       }
       return true;
     });
}

// name OGame Redesign : Highlight Players and Alliances
// description OGame : highlight top 300 players and alliance tags in galaxy view.
// creator Black Cat
function HighlightPlayersAndAlliances(){
  if (paginaActual.indexOf("galaxy") == -1) return;

  if (!highlightPlayers) return;

  var allytags = {
    "ally1": "#FF4500",
    "ally2": "#FF8C00",
    "ally3": "#FFA500"
    };

  var $;
  try { $ = unsafeWindow.$; }
  catch(e) { $ = window.$; }

  var rows = document.querySelectorAll("#galaxytable tr.row");

  for (var i = 0; i < rows.length; i++) {
     var playername = rows[i].querySelector("td.playername");

     if (playername) {
       var link = playername.getElementsByTagName("a")[0];
       if (link && link.getAttribute("rel") != null) {
         var rel_attr = link.getAttributeNode("rel").nodeValue;
         var div = document.querySelector(rel_attr);
         if (div) {
           var rank = parseInt(div.getElementsByClassName("rank")[0].
                               innerHTML.replace(/\D/g, ''));
           if (rank > 0 && rank <= 300) {
             var GBcolor = (Math.ceil(rank/2) + 15).toString(16).toUpperCase();
             var color = "#FF" + GBcolor + GBcolor;
             link.getElementsByTagName("span")[0].style.color = color;
           }
         }
       }
     }
     var allytag = rows[i].querySelector("td.allytag");
     if (allytag) {
       var span = allytag.getElementsByTagName("span")[0];
       if (span) {
         var color = allytags[span.childNodes[0].nodeValue];
         if (color)
           span.style.color = color;
       }
     }
  }
}

// name           OGame: Color Flight Slots
// namespace      Vess
// description    Color-codes the number of free/used flight slots:
//                red - none free, yellow - one free, green - more free
// version        1.04
function ColorFlightSlots()
{
 if (!showColorFlightSlots) return;

  var strColor0 = 'red';

  var intFlightDiff1 = 1; //Colorear Naranja
  var strColor1 = 'orange';

  var intFlightDiff2 = 2; //Colorear Amarillo
  var strColor2 = 'yellow';

  var strColor3 = 'lime';

  var flights, flightDiff, expDiff, slotColor;
  if (document.location.href.indexOf ("/game/index.php?page=flotten1") > -1)
  {
    var myTR = document.getElementById("content").getElementsByTagName("table")[0].
               getElementsByTagName("table")[0].getElementsByTagName("tr")[0];

    var myTDs = myTR.getElementsByTagName ("td");

    flights = myTDs [0].textContent.match (/\d+/g);
    flightDiff = parseInt (flights [1]) - parseInt (flights [0]);

    if (flights.length > 2)
      flightDiff += parseInt (flights [2]);

    if (flightDiff <= 0)
      slotColor = strColor0;
    else if (flightDiff <= intFlightDiff1)
      slotColor = strColor1;
    else if (flightDiff <= intFlightDiff2)
      slotColor = strColor2;
    else
      slotColor = strColor3;

    myTDs [0].style.color = slotColor;
    flights = myTDs [1].innerHTML.match (/\d+/g);
    expDiff = parseInt (flights [1]) - parseInt (flights [0]);

    if ((expDiff <= 0) || (flightDiff <= 0))
      slotColor = strColor0;
    else
      slotColor = strColor3;

    myTDs [1].style.color = slotColor;
  }
  else if (document.location.href.indexOf ("/game/index.php?page=fleet1") > -1)
  {
    var myDivs = document.getElementById ("slots").getElementsByTagName ("div");

    if (myDivs [0].className == "fleft tiptipsStandard")
      myDivs [0].className = "fleft tipsStandard";  // Fix a stupid 2.1.3 bug

    flights = myDivs [0].textContent.match (/\d+/g);
    flightDiff = parseInt (flights [1]) - parseInt (flights [0]);

    if (flightDiff <= 0)
      slotColor = strColor0;
    else if (flightDiff <= intFlightDiff1)
      slotColor = strColor1;
    else if (flightDiff <= intFlightDiff2)
      slotColor = strColor2;
    else
      slotColor = strColor3;

    var mySpans = myDivs [0].getElementsByTagName ("span");

    if (mySpans.length > 1)
      mySpans [1].style.color = slotColor;
    else
      myDivs  [0].style.color = slotColor;

    flights = myDivs [1].textContent.match (/\d+/g);
    expDiff = parseInt (flights [1]) - parseInt (flights [0]);

    if ((expDiff <= 0) || (flightDiff <= 0))
      slotColor = strColor0;
    else
      slotColor = strColor3;

    myDivs [1].style.color = slotColor;
  }
  else if (document.location.href.indexOf ("/game/index.php?page=movement") > -1)
  {
    var mySpan = document.getElementsByClassName ("fleetSlots") [0];
    flights = mySpan.textContent.match (/\d+/g);
    flightDiff = parseInt (flights [1]) - parseInt (flights [0]);

    if (flightDiff <= 0)
      slotColor = strColor0;
    else if (flightDiff <= intFlightDiff1)
      slotColor = strColor1;
    else if (flightDiff <= intFlightDiff2)
      slotColor = strColor2;
    else
      slotColor = strColor3;

    mySpan.getElementsByTagName ("span") [0].style.color = slotColor;
    mySpan = document.getElementsByClassName ("expSlots") [0];
    flights = mySpan.textContent.match (/\d+/g);
    expDiff = parseInt (flights [1]) - parseInt (flights [0]);

    if ((expDiff <= 0) || (flightDiff <= 0))
      slotColor = strColor0;
    else
      slotColor = strColor3;

    mySpan.getElementsByTagName ("span") [0].style.color = slotColor;
  }
  else
    return;
}

// name           OGame Redesign: Pranger in Header
// description    Puts a link to the Pranger in the header of the game window
// version        1.03
function PrangerInHeader()
{
  // The following "if" is not really necessary but with it this script will work for Opera too
  if ((document.location.href.indexOf("/game/index.php?page=")           == -1) ||
      (document.location.href.indexOf("/game/index.php?page=buddies")     > -1) ||
      (document.location.href.indexOf("/game/index.php?page=notices")     > -1) ||
      (document.location.href.indexOf("/game/index.php?page=showmessage") > -1) ||
      (document.location.href.indexOf("/game/index.php?page=trader")      > -1) ||
      (document.location.href.indexOf("/game/index.php?page=search")      > -1))
    return;

 if (!showPrangerInHeader) return;

 var servers = [
    ["AR.OGAME.ORG", "Pillory"],
    ["AE.OGAME.ORG", "Pranger"],
    ["BA.OGAME.ORG", "Sramni stup"],
    ["OGAME.COM.BR", "Pranger"],
    ["OGAME.DE",     "Pranger"],
    ["OGAME.DK",     "Pranger"],
    ["OGAME.COM.ES", "Infractores"],
    ["OGAME.FR",     "Pilori"],
    ["OGAME.COM.HR", "Sramni stup"],
    ["OGAME.HU",     "Kitiltottak"],
    ["OGAME.IT",     "Lista Ban"],
    ["OGAME.JP",     "Pranger"],
    ["OGAME.LV",     "Kauna Stabs"],
    ["MX.OGAME.ORG", "Pillory"],
    ["OGAME.NL",     "Schandpaal"],
    ["OGAME.NO",     "Banliste"],
    ["OGAME.COM.PT", "Bloqueados"],
    ["OGAME.RO",     "Banatilor"],
    ["OGAME.SI",     "Sramotilni steber"],
    ["OGAME.TW",     "Pranger"],
    ["OGAME.US",     "Pranger"],
    ["OGAME.ORG",    "Pranger"]
  ];

  var server = document.location.href.split (/\//) [2];
  var universe = server.split (/\./) [0];
  server = server.replace (universe + ".", "").toUpperCase ();
  var locaPranger = "Pranger";
  for (var i = 0; i < servers.length; i++)
    if (server.indexOf (servers [i] [0]) > -1)
    {
      locaPranger = servers [i] [1];
      break;
    }

  var div = document.getElementById ("bar");
  if ((div == null) || (div.length < 5))
    return;
  var li4 = div.getElementsByTagName ("li") [4];

  var li = document.createElement ("li");

  var a = document.createElement ("a");
      a.setAttribute ("href", "pranger.php");
      a.setAttribute ("target", "_blank");
      a.appendChild (document.createTextNode (locaPranger));

  li.appendChild (a);
  li4.parentNode.insertBefore (li, li4);
}

// name    OGame - Chat Alianza
// author  Elwe - ogame.com.es - uniFornax
// Version 1.0
function ChatAlianza(){
  if ((!idChat) || (!showChat)) return;

  var elemento = document.getElementById('planet');  //para ponerlo en la imagen
  var titulo = document.getElementsByTagName('h2');

  var p = document.createElement("p");

  var chat = '<img style="visibility:hidden;width:0px;height:0px;" border=0 ' +
             'width=0 height=0 src="http://c.gigcount.com/wildfire/IMP/CXNID' +
             '=2000002.0NXC/bT*xJmx*PTEyOTg1ODc*ODM1NzgmcHQ9MTI5ODU4NzYxNjE3' +
             'MSZwPTUzMTUxJmQ9Jmc9MSZvPTA5NWEwZWEzNTc3NzRlNzE5M2Vh/YWYxOGE2N' +
             'WQ1ZDUw.gif" /><embed src="http://www.xatech.com/web_gear/chat' +
             '/chat.swf" quality="high" width="640" height="300" name="chat"' +
             ' FlashVars="id=' + idChat + '" align="middle" allowScriptAcces' +
             's="sameDomain" type="application/x-shockwave-flash" pluginspag' +
             'e="http://xat.com/update_flash.shtml" />';

  elemento.setAttribute('style', 'height:346px;background-image:none;');
  p.setAttribute('style', 'margin:0px;');
  p.innerHTML = chat;
  elemento.appendChild(p);
};

// name           OGame Redesign: Color Message Subjects
// author         Vesselin
// version        1.08
function ColoredMessages() {
     // The following "if" is not really necessary but with it this script
     // will work for Opera too
     if (document.location.href.indexOf ("/game/index.php?page=messages") == -1)
         return;

     if (!showColoredMessages) return;

     var serveur = location.href.split('/')[2]; // recuperation du nom du serveur

     var myInterval;
     var isIE = (navigator.appName == "Microsoft Internet Explorer");

     LoadColorMessages();

     function colorSubjects ()
     {
           //////////////////////////////////////////////////////////////////
           //  Developed by Robert Nyman, http://www.robertnyman.com
           //  Code/licensing: http://code.google.com/p/getelementsbyclassname/
           ///////////////////////////////////////////////////////////////////
           var getElementsByClassName = function (className, tag, elm)
           {
             if (document.getElementsByClassName)
             {
               getElementsByClassName = function (className, tag, elm)
               {
                 elm = elm || document;
                 var elements = elm.getElementsByClassName (className),
                   nodeName = (tag)? new RegExp ("\\b" + tag + "\\b", "i") : null,
                   returnElements = [],
                   current;
                 for (var i = 0, il = elements.length; i < il; i++)
                 {
                   current = elements [i];
                   if (! nodeName || nodeName.test (current.nodeName))
                     returnElements.push (current);
                 }
                 return returnElements;
               };
             }
             else if (document.evaluate)
             {
               getElementsByClassName = function (className, tag, elm)
               {
                   tag = tag || "*";
                   elm = elm || document;
                   var classes = className.split (" "),
                                 classesToCheck = "",
                                 xhtmlNamespace = "http://www.w3.org/1999/xhtml",
                                 namespaceResolver = (document.documentElement.
                                                      namespaceURI === xhtmlNamespace)?
                                                      xhtmlNamespace : null,
                                 returnElements = [],
                                 elements,
                                 node;
                   for (var j = 0, jl = classes.length; j < jl; j++)
                        classesToCheck += "[contains(concat(' ', @class, ' '), ' " +
                                          classes [j] + " ')]";

                   try
                   {
                        elements = document.evaluate (".//" + tag + classesToCheck,
                                                      elm,
                                                      namespaceResolver,
                                                      0,
                                                      null);
                   }
                   catch (e)
                   {
                          elements = document.evaluate (".//" + tag + classesToCheck,
                                                        elm,
                                                        null,
                                                        0,
                                                        null);
                   }

                   while ((node = elements.iterateNext())) returnElements.push(node);

                   return returnElements;
               };
           }
           else
           {
               getElementsByClassName = function (className, tag, elm)
               {
                   tag = tag || "*";
                   elm = elm || document;
                   var classes = className.split (" "),
                                 classesToCheck = [],
                                 elements = (tag === "*" && elm.all) ? elm.all :
                                             elm.getElementsByTagName (tag),
                                 current,
                                 returnElements = [],
                                 match;
                   for (var k = 0, kl = classes.length; k < kl; k++)
                        classesToCheck.push (new RegExp ("(^|\\s)" + classes [k] +
                                                         "(\\s|$)"));

                   for (var l = 0, ll = elements.length; l < ll; l++)
                   {
                        current = elements [l];
                        match = false;
                        for (var m = 0, ml = classesToCheck.length; m < ml; m++)
                        {
                             match = classesToCheck [m].test (current.className);
                             if (! match) break;
                        }
                        if (match) returnElements.push (current);
                   }
                   return returnElements;
               };
           }
           return getElementsByClassName (className, tag, elm);
     }

     var mailz = document.getElementById ("mailz");

     if (mailz == null) return;

     var subjects = getElementsByClassName ("subject", "td", mailz);

     for (var i = 0; i < subjects.length; i++)
     {
          var links = subjects [i].getElementsByTagName ("a");
          if (links.length < 1) continue;
          var theLink = links [0];
          var theHref = links [0].href;

          if (theHref.indexOf ("cat=2") >= 0)
               theLink.style.color = arrColorMessages[2][1]

          else if (theHref.indexOf ("cat=6") >= 0)
               theLink.style.color = arrColorMessages[6][1]

          else if (theHref.indexOf ("cat=8") >= 0)
               theLink.style.color = arrColorMessages[8][1]

/*          else if (theLink.textContent.toLowerCase().indexOf(arrColorMessages[4][0].toLowerCase()) >= 0)
               theLink.style.color = arrColorMessages[4][1]*/

          else {
                // 0 - Despliegue
                // 1 - Retorno
                // 2 - CC
                // 3 - Escombros
                // 4 - Espionaje
                // 5 - Accion de espionaje
                // 6 - PM
                // 7 - Llegada
                // 8 - Expedicion
                // 9 - Colonizacion

                var blnFound = false;

                for (var j=0; j < arrColorMessages.length; j++)
                    if (theLink.textContent.toLowerCase().indexOf(arrColorMessages[j][0]
                                                          .toLowerCase()) >= 0)
                    {
                        theLink.style.color = arrColorMessages[j][1];
                        blnFound = true;
                        break;
                    }

                if (!blnFound) theLink.style.color = strColor_LPuNKTKit;
          }
     }

     if (isIE) clearInterval (myInterval);
  }
  if (isIE)
       myInterval = setInterval (colorSubjects, 10)
  else
       document.addEventListener ("DOMNodeInserted", colorSubjects, false);
}


// name OGame Redesign : BBCode
// description OGame : BBCode in messages
// creator Black Cat
function BBCode() {

  if ((paginaActual != 'writemessage') &&
      (paginaActual != 'showmessage') &&
      (paginaActual != 'alliance') &&
      (paginaActual != 'networkkommunikation'))
      return;

  if (!showBBCode) return;

  if(typeof GM_addStyle === 'undefined') {
    //GM_addStyle by TarquinWJ
    GM_addStyle = function (css) {
      var NSURI = 'http://www.w3.org/1999/xhtml';
      var hashead = document.getElementsByTagName('head')[0];
      var parentel = hashead || document.documentElement;
      var newElement = document.createElementNS(NSURI,'link');
      newElement.setAttributeNS(NSURI,'rel','stylesheet');
      newElement.setAttributeNS(NSURI,'type','text/css');
      newElement.setAttributeNS(NSURI,'href','data:text/css,'+encodeURIComponent(css));
      if( hashead ) {
        parentel.appendChild(newElement);
      } else {
        parentel.insertBefore(newElement,parentel.firstChild);
      }
    }
  }

  var script = document.createElement("script");
  script.setAttribute("type","text/javascript");
  script.setAttribute("language","javascript");
  script.text =
  'function addBBCode() {' +
    'var tag = arguments[0];' +
    'var value = arguments[1];' +
    'var str1;' +
    'if (value) {' +
      'if (value=="0") return;' +
      'str1 = "[" + tag + "=" + value + "]";' +
    '} else {' +
      'str1 = "[" + tag + "]";' +
    '}' +
    'var str2 = "[/" + tag + "]";' +
    'if (tag == "list") {' +
      'str1 += "[*]";' +
      'str2 = "\\n" + str2;' +
    '}' +
    'var message = document.getElementsByName("text")[0];' +
    'message.focus();' +
    'if (message.isTextEdit) {' +
      'var sel = document.selection;' +
      'var rng = sel.createRange();' +
      'var seltext = rng.text;' +
      'rng.text = str1 + seltext + str2;' +
      'rng.collapse(false);' +
      'rng.move("character",-str2.length);' +
      'rng.moveStart("character",-seltext.length);' +
      'rng.select();' +
    '} else {' +
      'var start = message.selectionStart;' +
      'var starttext = message.value.substring(0,start);' +
      'var seltext = message.value.substring(start,message.selectionEnd);' +
      'var endtext = message.value.substring(message.selectionEnd,message.textLength);' +
      'message.value = starttext + str1 + seltext + str2 + endtext;' +
      'message.selectionStart = start + str1.length;' +
      'message.selectionEnd = start + str1.length + seltext.length;' +
    '}' +
    'message.focus();' +
  '}';
  document.body.appendChild(script);

  function funcBBCode() {
    var form = document.getElementsByTagName("form")[0];
    if (!form) return;
    var ta = document.getElementsByName("text")[0];
    var div = document.createElement("div");
    div.innerHTML += "<select class='dropdown' style='font-size:10pt;height:1.7em' onchange='var value=this.value;this.selectedIndex=0;addBBCode(\"font\",value)'><option value='0'>FONT</option><option value='arial,sans-serif' style='font-family:arial,sans-serif'>Arial</option><option value='cursive' style='font-family:\"Comic Sans MS\",cursive'>Comic</option><option value='courier,monospace' style='font-family:courier,monospace'>Courier</option><option value='georgia,serif' style='font-family:georgia,serif'>Georgia</option><option value='impact,fantasy' style='font-family:impact,fantasy'>Impact</option><option value='times,serif' style='font-family:times,serif'>Times</option><option value='verdana,sans-serif' style='font-family:verdana,sans-serif'>Verdana</option></select> ";
    div.innerHTML += "<select class='dropdown' style='font-size:10pt;height:1.7em' onchange='var value=this.value;this.selectedIndex=0;addBBCode(\"size\",value)'><option value='0'>SIZE</option><option value='7' style='font-size:7pt'>tiny</option><option value='10' style='font-size:10pt'>small</option><option value='12' style='font-size:12pt'>normal</option><option value='16' style='font-size:16pt'>big</option><option value='20' style='font-size:20pt'>huge</option></select> ";
    div.innerHTML += "<select class='dropdown' style='font-size:10pt;height:1.7em' onchange='var value=this.value;this.selectedIndex=0;addBBCode(\"color\",value)'><option value='0'>COLOR</option><option value='black' style='color:black;font-size:9pt'>black</option><option value='silver' style='color:silver;font-size:9pt'>silver</option><option value='gray' style='color:gray;font-size:9pt'>gray</option><option value='maroon' style='color:maroon;font-size:9pt'>maroon</option><option value='#A52A2A' style='color:brown;font-size:9pt'>brown</option><option value='red' style='color:red;font-size:9pt'>red</option><option value='orange' style='color:orange;font-size:9pt'>orange</option><option value='yellow' style='color:yellow;font-size:9pt'>yellow</option><option value='lime' style='color:lime;font-size:9pt'>lime</option><option value='green' style='color:green;font-size:9pt'>green</option><option value='olive' style='color:olive;font-size:9pt'>olive</option><option value='teal' style='color:teal;font-size:9pt'>teal</option><option value='aqua' style='color:aqua;font-size:9pt'>aqua</option><option value='blue' style='color:blue;font-size:9pt'>blue</option><option value='navy' style='color:navy;font-size:9pt'>navy</option><option value='purple' style='color:purple;font-size:9pt'>purple</option><option value='fuchsia' style='color:fuchsia;font-size:9pt'>fuchsia</option><option value='#FFC0CB' style='color:pink;font-size:9pt'>pink</option><option value='white' style='color:white;font-size:9pt'>white</option></select> ";
    if (document.location.href.indexOf("page=alliance") != -1)
      div.innerHTML += "<br />";
    div.innerHTML += "<a href='javascript:addBBCode(\"b\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAAZlBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////39/fu7u7l5eXf39/W1tbMzMzFxcW9vb21tbWtra2lpaWZmZmKioqCgoJ8fHx1dXVfX19VVVUcHBwQEBAAAABvQ4WDAAAAInRSTlMAESIzRFVmd4iZqrv/////////////////////////////erKVdwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAACtSURBVCiRvY3XEsIgFERDsRAN4dJuFNv+/0+KJY6jvOp5WWaXA133C5TBujmYyUI2eo3ttpjG0PMwtBSNwVrbUHq2Y+VLkbDBOTd+KebgTjsich+KvLiAsw+eDuZD8N5RiDEQ1Fu/AtUuporf4+0+UjiiUnJOdMTi2S/gQo57bEpi5kQZryEy54K+ZJ4mzhPEYxD97Rlo/UhgOQ9SKa2kqKkr9TR/Lu7MKUT3J66l/Q2irNMvNQAAAABJRU5ErkJggg==' alt='Bold' title='Bold' border='0' /></a>";
    div.innerHTML += "<a href='javascript:addBBCode(\"i\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAAY1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD39/fu7u7n5+fe3t7S0tLMzMzDw8O+vr61tbWvr6+kpKSZmZmQkJB6enpjY2NXV1dTU1M6OjooKCggICAREREAAACW3aPzAAAAIXRSTlMAESIzRGZ3iJmqu//////////////////////////////ewDs2AAAACXBIWXMAAAsSAAALEgHS3X78AAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjSeAAAAJdJREFUKJG10MsSgjAMBVDaIvJKX6FYlcL9/6+UcSPYbrmLLHJmkkyq6qo0aIr9Fhqlfo1hgChACsNYgtvbj1SAeuNIugDdTNAmh3skLNpnoDajtTacQWJy1rnpD2SKlIAXz2dowfbZ94j8OP1ErmS8XUBu8ozj4tWFwAv2OoXjLNFhT/etaI4g1B4plaqVPF8lfsk+cl0+nUwKek1swHwAAAAASUVORK5CYII=' alt='Italic' title='Italic' border='0' /></a>";
    div.innerHTML += "<a href='javascript:addBBCode(\"u\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAAaVBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4+Pjv7+/n5+ff39/W1tbMzMzFxcW8vLy1tbWtra2mpqacnJyRkZGFhYV/f39mZmZSUlJDQ0MzMzMREREAAAAvziwyAAAAI3RSTlMAESIzRFVmd4iZqrvu/////////////////////////////6saOpIAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAAtElEQVQokbWR3RaCIBCEQzD/UthFyErT5v0fMr1RIG/7bjjMnDOzC5fLX6hQnerF1M75iS7gW9+cGGqhrkP2a9SPQXe+PEliDJpuIjWub1vORi9pvZj9BLDxc2JIGKM1EX2S+mokJmamZxHpOdyIlQc7hPUF7haNUg0sT5CHsd6tQXYFu56eCHbwzlmIHL33/Sswyi2/FqLeTqhjJMTUe5I2EYiSAvb/ElJKdZAFy4uQ9H1jvp0jEWFcRQbjAAAAAElFTkSuQmCC' alt='Underline' title='Underline' border='0' /></a>";
    div.innerHTML += "<a href='javascript:addBBCode(\"s\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAAYFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////29vbu7u7m5ube3t7V1dXMzMzCwsKzs7Otra2lpaWZmZmOjo58fHxmZmZRUVFDQ0M7OzszMzMAAABWp2jsAAAAIHRSTlMAESIzRFVmd4iZqu7//////////////////////////5UxFAAAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAAo0lEQVQokbVQ7Q6CMBDjtqEw2MfBmIJK3/8tncYgyBJ/0WS7pM2u7YriENSos/x5au9lhidwG5AR1OxNC7EX9MU4O1a5TXN0DPoVTjfTPLzDzh48oel83NjX2GKpA2OtdS4dny5r8PcFVYgdtJQazIBakqWozA6ihO97vmIlDEPsQSVCjGH8BkurEjSRfluoVW0hpSR6DSXFunwi6TNo9ymH4QksEA2GU5CXhAAAAABJRU5ErkJggg==' alt='Strike through' title='Strike through' border='0' /></a> ";
    div.innerHTML += "<a href='javascript:addBBCode(\"align\",\"center\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAAA3NCSVQICAjb4U/gAAAACVBMVEX///////8AAACO9MPsAAAAA3RSTlMA//9EUNYhAAAACXBIWXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjSeAAAADNJREFUCJljYMAGmFYBQQMDYygQOCCLNgApRjQxLCoZuBaAKdYAQmYyrFoFpkJDsToEDgBeyRP8DhwWwQAAAABJRU5ErkJggg==' alt='Align center' title='Align center' border='0' /></a> ";
    div.innerHTML += "<a href='javascript:addBBCode(\"list\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAAA3NCSVQICAjb4U/gAAAACVBMVEX///////8AAACO9MPsAAAAA3RSTlMA//9EUNYhAAAACXBIWXMAAAsSAAALEgHS3X78AAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjSeAAAABh0RVh0Q3JlYXRpb24gVGltZQAxNC4xMS4yMDA3+XeAJAAAACVJREFUCJljYEAFDWCSKWHVqlUNDIwTQkNDHRgYHBhwA9prAAMA3f4QUeGCZkAAAAAASUVORK5CYII=' alt='List' title='List' border='0' /></a> ";
    div.innerHTML += "<a href='javascript:addBBCode(\"url\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAAhFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4+Pjw8PDm5ube3t7X19fMzMzFxcW8vLy1tbWtra2np6ecnJyUlJSEhIR+fn5zc3NsbGxmZmZXV1dNTU1AQEA5OTkzMzMpKSkVFRUQEBAGBgYAAACU9KEpAAAALHRSTlMAESIzRFVmd4iZqrvM3e7///////////////////////////////////////+D3T4AAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAABA0lEQVQokWXR2ZKDIBAFUNFoWAxhs3GNmphl0v//f8NMVSqo/cDDuTTVQJJsqqA021oohiPAJPKtU7Tn89nWYutSK2WVUo91C8PgiwzruoWgVXoR+Qk0lCSe56r10sz8rfVE44ANpg+bURmD2Sq4dN6Ypzbmxb+eU8okWNsZY18i/QQMb8MgnXW1cy5yilqbtrLuOU0zRi6NdUPjqpfgnB2ic4yDewvQjDxLU/JxgqaCRw9+gJGRaMziWvl7OXcP72e6eqHRt7IQCLXH+CcIG4OIt/PND4/vmxT3pobeBv/O+V9peWlrqHeekGO5DP0Ntx6SjJ0kP+w8JGmWpWTvf9GefwHM/BUabF+V+wAAAABJRU5ErkJggg==' alt='Insert link' title='Insert link' border='0' /></a> ";
    div.innerHTML += "<a href='javascript:addBBCode(\"img\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAABO1BMVEX//////////////73/2Gb+zFj+xVv+xFT+vlL+vFf/vUr/vzX/vTr+tVL/s0r/tEH+sE/+szP/r0X+rUrjp5/+pkn3qEf/pUD/ozz3oUD/nUH/mjr3mjy1pKX/lDyuoaGqn6D5kjv3jjv+izfxjzq0mJWjnJ2emZv/hDP/hDimk5WZlZb0gTaVkZKRjpDsezL5dTLvdyzwcDD4bS6FhIV/f39/f4CBf3/iaTDVWiXbWCXJWCumYEHQUiCsVDSgTzKgTjOHRzNsSkuFQzGWPCJgQ0NcQkN/OS1VQEJSPT9zLidHODtGOTpqMCeKJgZCNDg9NDhgKi08MTRYKSRTKChNJypAKyxRJSpaIyVQJiM0LC5vGQsvKCsnIiQkICEhGhwaFxggFBUWDg4IBwgEBAUFBAUDBQUFAwIAAABu8F9vAAAAaXRSTlMAEf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8HvOsQAAAACXBIWXMAAAsSAAALEgHS3X78AAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjSeAAAATNJREFUKJF10llbgkAUgGGjgrECFUIIymxV2jXD9kXDFrS9bAEy0fD//4LOzLRgj35Xw3m5mjORSL86fYp0mJ5hkKU4H4VYHAcHPi6FgaVFoygMCAEMQyyLEC/JBDQqHIeBg7kgKQRmNEXBAgRjJEiyphNYSc3Oi2IyOQLB36Kip+YIGMa6rk1OCGJiNBETyDxLIJ83sjldiY0NMsyQqqp6Kkthd3PjYGd7LyczzPj+Wfn48OikjGGhVrt/eajXby9Pr96e64+kJYBpy6pULMsqPTWbH6XvpgDSFzQHX13jnJYGWKzaVdu2XXqp73C0q9cZgMwNzv25bhd/3a0CLL9C3t8iXMdx3ALAmud5jfCKAqgIUPB9v3t5rVbbBCh+Bv+2GrQDDKa51aNO/8fw20D36/kCJGJ6DPnsRqYAAAAASUVORK5CYII=' alt='Insert image' title='Insert image' border='0' /></a> ";
    div.innerHTML += "<a href='javascript:addBBCode(\"player\")'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAAVFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////39/fv7+/n5+ff39/W1tbDw8O1tbWtra2mpqaZmZmUlJSNjY2FhYVTU1NAQEA4ODgAAACdbSmwAAAAHHRSTlMAESIzRFVmd6q7////////////////////////lSG5lgAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAC4SURBVCiRddHpFoIgEEBhNsMSYlhMjfd/zxhwA+3+Ur4jg0rI/7p4qcvrs3012RkluqEF5SIhNLbLWKQJzg8MaxvUo5UqoIZmiNZqg5zSewV02rLq/dYZwDYv4j1sYJ2v2qHeKoQVnKu3OsCPTQWMGz91wSDIxQAWcClfgVkkJYTJMhLCNME6XrL02SnjXIju+YUxQSeE4JzR/AtpinEUiAxv6PkHUxQ8zaUsd5CkX/o7SMd4HNv/AE/9G3IdzcVWAAAAAElFTkSuQmCC' alt='Player tooltip' title='Player tooltip' border='0' /></a>";
    div.innerHTML += "<br />";
    ta.parentNode.insertBefore(div,ta);
    if (document.location.href.indexOf("page=writemessage") != -1 || document.location.href.indexOf("page=showmessage") != -1) {
      if (document.location.href.indexOf("page=showmessage") != -1) {
        var messageBox = document.getElementById("messagebox");
        messageBox.style.height = "508px";
        ta.style.height = "70px";
      }
      if (document.location.href.indexOf("page=writemessage") != -1) {
        ta.parentNode.style.height="99%";
      }
      GM_addStyle("select.dropdown{border:1px solid #141A1E;background-color:#274650;color:#848484}");
    }
  }

  if (document.location.href.indexOf("page=alliance") != -1) {
    var $;
    try { $ = unsafeWindow.$; }
    catch(e) { $ = window.$; }
    $("#eins").ajaxSuccess(function(e,xhr,settings){
      if (settings.url.indexOf("page=allianceBroadcast") == -1) return;

      funcBBCode();
    });
  } else {
    funcBBCode();

    if (document.location.href.indexOf("page=showmessage") != -1){

      function removeClass (element, className) {
         var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
         element.className=element.className.replace(reg,' ');
      }

      var images = document.getElementsByClassName("reloadimage");

      for (var i=images.length-1; i>=0; i--) {
          images[i].src = images[i].title;

          removeClass(images[i], "reloadimage");
      }
    }
  }
}


// name Ogame Redesign New Smilies
// description Ogame Redesign New Smilies
// creator Black Cat
function NewSmiles(){

    if ((paginaActual != 'writemessage') &&
      (paginaActual != 'showmessage') &&
      (paginaActual != 'alliance') &&
      (paginaActual != 'networkkommunikation'))
      return;

  if (!showSmiles) return;

  var smilies = new Array();

  smilies.push(new Array(":)","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAwFBMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD//5n/+4v/+or/+IP/"+
    "9Xv/8nL/8Gr/7mT/6lr/61v/51H/5Ur/40P/4T/+3jn/3TH/2yv/2Sf/1yH41zD51ir/1Rn/0xP1"+
    "0CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwTO"+
    "pwvOpABmZjNlXyllXCFlWRllWBQGwRrPAAAAQHRSTlMAEREREVVVVWZmZnd3d3f/////////////"+
    "////////////////////////////////////////////////////Z8jW7AAAAAlwSFlzAAAK8AAA"+
    "CvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAADgSURB"+
    "VBiVPZDpUsMwDIQNDVdLAySxE98OuActR7nZkrTv/1aVCcP+0ze70qwYIx1NkDQdsT+dAJv53fwd"+
    "OBvABAtrjLEuvCBP4By3WkmptHFhjTHtwELLuhGNVMa1rxhRxqim6you+p0NkXJ40FJ0P0XJ+974"+
    "+AlGW2pe3lwVlZAUe9wyuESK64HE5TZ5pOBlWfFaWR+TZ2NVLzinY3ofZt9gl3BG9XUtCfi4pFvH"+
    "WDmrd6S9b2dvyBi7wMo7a50LCYxTjSme2xBCGwnkQ9VT4GN9//T1352xLP/9T56l4QC+cSG8sDMu"+
    "4AAAAABJRU5ErkJggg=="));

  smilies.push(new Array(":(","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAulBMVEX/"+
    "///XshTVrQrXqwDTsBjVrQrXqwDTsBjVrQrXqwDTsBjUrg/VrQrXqwD//5n/+4v/+IP/9Xv/83X/"+
    "8nL/8Gr/7mT/6lr/61v/51H/5Ur/40P/4T//3zn/3TH/2yv/2Sf/1yH41zD51ir/1Rn/0xP10CX9"+
    "zw/vzzD5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwTOpwtm"+
    "ZjNlXiZlWyBlWRplVxKqr4HDAAAAPnRSTlMAERERVVVVZmZmd3d3d///////////////////////"+
    "/////////////////////////////////////////8kZH4cAAAAJcEhZcwAACvAAAArwAUKsNJgA"+
    "AAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAA4ElEQVQYlT2Q2VaD"+
    "QBBER1GzGAyEGZitGXSymLjE3SLE//8tG+KxHu+p6u5qIVhnU/SaJeJPF8B+dbd6B65OYIqNd855"+
    "Ci9IezDCrTVaG+so7DDhGdhYXVaq0sZR84qEM85Usiik0saHyDk8WK3aNsvloXN1/ITgKaVs25us"+
    "YELNIxNissjmWaG0o7gePFrJPF/I0vg69p69N4wkL7MUlt8Q1yBndHfouiNb1rzrHFvyR8sH+p9m"+
    "+cb3iDG2NXlPFHow6WvM8NyEEJrIID1VvQQ+dvdPX//dhUjS4T/p8J9f9rIgces2Wi8AAAAASUVO"+
    "RK5CYII="));

  smilies.push(new Array(";)","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAvVBMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD//5n/+4v/+or/+IP/"+
    "9Xv/8nL/8Gr/7mT/613/6lr/51H/5Ur/40P/4T/+3jn/3TH/2yv/2Sf/1yH41zD51ir/1Rn/0xP1"+
    "0CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwTO"+
    "pwtmZjNlXytlXCFlWRllWBTLLF3oAAAAP3RSTlMAEREREVVVVWZmZnd3d3f/////////////////"+
    "//////////////////////////////////////////////8a9lBCAAAACXBIWXMAAArwAAAK8AFC"+
    "rDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjSeAAAAN9JREFUGJU9"+
    "kOlSwkAQhFeJoiArJtnsfUQDKHjgbUPg/R/LWbDsf/NV90z1MEY6GSNrMmB/OgPW87v5BzA8gjEW"+
    "3jnnQ3oFz+ACt9ZobawLaYUR7cDCaiWl1MaF9g0DyjjTi7reNv3Op45yeLS62W42leh7F7svMNqi"+
    "RHVzXdaNptgTkZBJOS1rSaS7P3i0FFVVC2V87LJn7U0vhWiktvs0+wG7QqBjSmkCkUKcnWIZvN2R"+
    "9rGdvaNg7BLLGLwPIWUwyjUmeGlTSm1HgB+rngOfq4fn7//ujBX88B9e5OEX0iAh1FJDXDEAAAAA"+
    "SUVORK5CYII="));

  smilies.push(new Array(":P","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAz1BMVEX/"+
    "///XshTVrQrXqwDTqADTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD//5n/+4v/+or/"+
    "+IP/9Xv/83X/8nL/8Gz/7mT/6lr/61v/51H/5Ur/40P/4kH+3jn/3TH/2yv/2Sf/1yH41zD51ir/"+
    "1Rn/0xP10CXvzzD9zw/5zhPxzCH0yxfqyy/2yAruyBrzxw/lxCfpwhjrwRHuwAfkvx3mvRLmuwrk"+
    "uAnktwTOpwtmZjNlXyllXihlWyBlWhplVxJlVQ//AABmAACnKUKjAAAARXRSTlMAERERETNVVVVm"+
    "ZmZ3d3d3////////////////////////////////////////////////////////////////////"+
    "//+CR8jIAAAACXBIWXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZp"+
    "cmV3b3JrcyA4tWjSeAAAAOdJREFUGJU9kOtygjAQhdNqr1pTC0ogIQlgUVvtxd57CgHi+z9Tk+L0"+
    "/Ntv9tuZs4S4HI3hMxmQQ06B3ep29Q6c92CMtZJSKZ2/gHpwgYUUnItU6nyLkbuBdcrjhCVcSF28"+
    "YuAcKZKqmkfMNCovnYeHlLPqJwij2sis/ATBIo2j8OY6mDPutEdHdBqzWTDtSXnnd6RhURjOolio"+
    "tvQ7OyVMXVV1bZo2X36DXEFLYazdW9tmTqLkGButmp4UyzecEHKJTaZba23nwcjXmOCpyLuuKx2g"+
    "fdUz4GN7//z1352QIf37Dx364RcG5Cbq10CabQAAAABJRU5ErkJggg=="));

  smilies.push(new Array(":nice:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAt1BMVEX/"+
    "///WtRDVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD/////+4v/+IP/9Xv/"+
    "8nH/8Gr/7mb/6lr/613/51H/5Ur/40P/3kL+3jn/3TH/2yv/2Sf62jT/1yH51ir41zD/1Rn/0xP1"+
    "0CX9zw/vzzD5zhPxzCH0yxfqyy/2yAruyBrzxw/lxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwTO"+
    "pwtlWRllWBQ7OR3WwDA+AAAAPXRSTlMAEREREVVVVWZmZnd3d3f/////////////////////////"+
    "////////////////////////////////////OEICLgAAAAlwSFlzAAAK8AAACvABQqw0mAAAAB90"+
    "RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAADSSURBVBiVPZDpUgJBDISj"+
    "rKIgI8c6l5kdRxdE8MDbXnz/5zIBtX90Tb6aTlWHSHQwhGrUo18dAZvF9eIN6O/BEEvmS+aUn2EU"+
    "nOAqBu9DFLTGQHZgGb11zvnAqbygJxkO36JaLbeSw70+z//sAyRbrI4TtVQehKQdGU9mStpbITfR"+
    "u3o6ndU2cNPqnw0HQfWF83Gb51+gMyRB1noBjYQMHWKVOMau67ZNmb+iIjrFqknSIWUFA60xwmPJ"+
    "OZdWgNlXPQbe13dPn//diSqzu4+pdPgByyAkbui4xW8AAAAASUVORK5CYII="));

  smilies.push(new Array(":D","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAA1VBMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD//////5n/+or/+IP/"+
    "9Xv/8nLr6+v/8Gz/7mT/613/6Vf/51H/5Un/40P/4T/+3jn/3TL/2yz/2Sf/1yH41zD51ir/1Rv/"+
    "0hL10CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx26urrmvRLmuwrk"+
    "uAnktwTOpwuLeyGLeBqLdBCLcwxmZjNlXyllXSZlWyBlWRllVQ9lUwhSeUxkAAAAR3RSTlMAERER"+
    "EVVVVWZmZnd3d3f/////////////////////////////////////////////////////////////"+
    "/////////////4CyhhwAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAfdEVYdFNvZnR3YXJlAE1hY3Jv"+
    "bWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAA5ElEQVQYlT2Q6VLCQBCER4kXSEYh5NosMSCCigeKeDQK"+
    "2Wzy/o/kLFh21fzor6anqodIdNCBU7dFfzoCFtPr6RtwsgcdzIZa62FevMB34BTjTKWpUjov5mjL"+
    "Dcyy1Jg4Tiqbj17RkoxWJgrK0CTKFhPJ4SFLoqDX64dxqq8mHyCMVRL2Ly96QeTIo5DcVuVWVJrK"+
    "1j+3bscOmLfMbJgHjdtZrFfMpZCKebX5Ap0jX+8cW2YJ+XSI+2/rnEzdLOERnQmqHakdaLsaXTyP"+
    "alFzs9z3IjoG3ud3T5//3Yk8f/cf33PmFze+Jo/YnJCUAAAAAElFTkSuQmCC"));

  smilies.push(new Array(";(","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAw1BMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD/////83X/8Gr/7mb/"+
    "613/6Vf/51H/5Umq6///40P/4kH/3zn/3TH/2yv62jT/1yH51ir41zD/1Rn/0xP10CXvzzD9zw/5"+
    "zhPxzCH0yxfqyy/2yArzxw/uyBpb1//lxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwQ+yPTOpwtm"+
    "ZjNlZDplXyllXSZlXCFlWRplVxJlUwj1G6ziAAAAQXRSTlMAEREREVVVVWZmZnd3d3f/////////"+
    "/////////////////////////////////////////////////////////1bbZoUAAAAJcEhZcwAA"+
    "CvAAAArwAUKsNJgAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAA"+
    "4UlEQVQYlT2Q6VICMRCER1hPJBHZK5sluoCCByhe2yG7ie//VE7EsqvyY77qTvUMEetohKjxkP50"+
    "DGwXN4s34PQARlhW3vsQzAtEBGeYKS9lL2Uwa1zwH1iWPMlORvSKIWcUA+dcF10N5/AQLdZa10Xy"+
    "AcIs74tiv2dSFME8MtFlv2nb1vLbhOaOya3KOmftleu9r5vo2VZ5Op1MrqdZqc38C3QJrfIsTdOs"+
    "rGoOCRpgpblyXiouPd8hocE5VkFXIYTafO9iZ6Ixnk1Uww5xWPUEeF/fP33+706UiN/7iCQOP49p"+
    "JZU6SzyTAAAAAElFTkSuQmCC"));

  smilies.push(new Array(":rolleyes:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAw1BMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD//////5n/+4v/+IP/"+
    "9Xv/8nL/8Gr/7mb/6lr/613/51H/5Un/40P/4T//4Dr/3TH/2yv62jT/1yH51ir41zD/1Rn/0xP1"+
    "0CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwTO"+
    "pwtmZjNlXytlXidlWyBlWRllVxNlVQ9mnBHFAAAAQXRSTlMAEREREVVVVWZmZnd3d3f/////////"+
    "/////////////////////////////////////////////////////////1bbZoUAAAAJcEhZcwAA"+
    "CvAAAArwAUKsNJgAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAA"+
    "5ElEQVQYlT2Q61LCMBBGo9QbSKO9kKZpUioBEbzg3a82ad//qdyAw/mxM3tmdzNfGCNOJghMR+yf"+
    "M2C3ult9ABcHMcG995XW/fCKOIhLzL1zrvS+H7YY0w2a4K7jHXeeD28Y0U7lOPEbymBpD49Kdpy3"+
    "KSlf2y8wzEuRt+1NknWuMs0TGaPELE1uk6yQlbFrMgslizxNs1yUurZhZqdLV+T5rJCqb5Y/YNcw"+
    "VemEkFLR4TW9dYqN0coTfd0s3xExdoVNbbQ2Zi/GIcYUL03AkogPUc+Bz+3D8/cxO2NRvP+fOArN"+
    "H/MIJC1WhC7VAAAAAElFTkSuQmCC"));

  smilies.push(new Array(":thumbup:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABoAAAARCAMAAAD0U0w/AAAAA3NCSVQICAjb4U/gAAAAxlBMVEX/"+
    "///WtRDVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqACZcwr/////+4v/+IP/"+
    "9Xv+8nL/8Gr/7mb96l//6lr/613/51H/5Ur/40P/4T774Uf+3jn/3TH63Tv/2yv/2Sf62jT/1yH5"+
    "1ir41zD/1Rn/0xP10CXvzzD9zw/5zhPxzCH0yxfqyy/2yAruyBrzxw/lxCfpwhjrwRHuwAfkvx3m"+
    "vRLmuwrkuAnktwTOpwuZcwplWRllWBQ7OR1/MgreAAAAQnRSTlMAEREREVVVVWZmZnd3d3fu////"+
    "//////////////////////////////////////////////////////////////+9Tl6hAAAACXBI"+
    "WXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjS"+
    "eAAAARVJREFUGJVdkWlTAjEMhqviBbKrsEe3B61bVxdQ8MDbZPH//ymTIs7I+yGdyTPJmyZCkPYG"+
    "wBoeiF0dAqxm17M3gOMdMoC5s9Y6H54h2aRSTPk5gSujldLG+rCE/oZcIvvA3ChZlZXS1jcvwH44"+
    "mWBsZ/U3KecQWm6ZolKM4J5z59vwAURkGb3ISXJ+xME3DyCIFMgMfEQXo4xRe0uISJYRgxujynw8"+
    "znKpXd1yVZnjKMtRwMppYnlRKbMO069tVYHiDLzVSkpFpKZ+CXshS+zDwjtjuq5b1830FXoCFWJZ"+
    "Shr/FBa1d877wKTPH45FPP4QHpsQQtMSSeKaaBtxHUIcAbwv754+/zaf/haRekm8V9L7d5EfGdY1"+
    "s2cfbHAAAAAASUVORK5CYII="));

  smilies.push(new Array("X(","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAxlBMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD//////5n/+IP/9Xv/"+
    "83X/8nL/8Gr/7WL/6lr/613/51H/5Ur/40P/4kL/3zn/3TH/2yv/2Sf62jT/1yH51ir41zD/1Rn/"+
    "0xP10CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnk"+
    "twTOpwtmZjNlXyllXSZlWyBlWRllVxJlVQ7hcj+NAAAAQnRSTlMAEREREVVVVWZmZnd3d3f/////"+
    "//////////////////////////////////////////////////////////////9ihKzJAAAACXBI"+
    "WXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjS"+
    "eAAAAOVJREFUGJU90OlWwyAQBWC0cWttamI2IBAaTRdbl7p7aSC+/0s5WI/3H9+ZgXNhjHI0Qch0"+
    "xP5yAuyWN8s34OwAE6yUqpXS5hlxgHPMa+G4kF6bLcZ0B1ael1VfOaH09wtGtKNEn2fZvuBiMB3t"+
    "4V66mU2SNK/cbOg+wDAPYq+SrCdpH0i0dHtrbWJ754duTXJb8yJP0+u8FKrpwsxOCaK8qLjUZvEF"+
    "dglNVJacSxpZ01vH2GhVS++9atrFKyLGLrBp9KC0HgKMQ40pnlpjTNsRxIeqp8D79u7x8787Y1H8"+
    "+z9xFA4/sVUkceW3vYMAAAAASUVORK5CYII="));

  smilies.push(new Array("8|","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAt1BMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD/////8nH/8Gr/7mb/"+
    "6lr/613/51H/5Un/40P/4kL/3zn/3TH/2yv62jT/1yH51ir41zD/1Rn/0xP10CXvzzD9zw/5zhPx"+
    "zCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwTOpwtmZjNlXyllXSZl"+
    "XCFlWRllVxJlVhCoNhrdAAAAPXRSTlMAEREREVVVVWZmZnd3d3f/////////////////////////"+
    "////////////////////////////////////OEICLgAAAAlwSFlzAAAK8AAACvABQqw0mAAAAB90"+
    "RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAADWSURBVBiVPZDpUsMwDIQF"+
    "DVdLk6aJ7dipwb05ys2mdcL7PxdSwrAz+qFvVtKsiFhnE4imI/rTBXBY3a3egasBTLC2trLW+Rek"+
    "Aq6xqGKMWjPaY8w7sDYxy7KTim3nXzHiGSuAEddP4Dk89JasEdSFTxAWevA0XJ1/ZOJMcRQwO8XW"+
    "hQ2T+0qVx6aZ5YW2dRDPwWpV5vm8VMb55TfoFo5RUShl2LLhW+fYOVtpbdqu9ss3JEQ32NWOM7ge"+
    "jCXGFM9eFBikQ9RL4GO/ffr6z06UpP1/0kSaX+EbH4v5Ul+5AAAAAElFTkSuQmCC"));

  smilies.push(new Array("?(","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAAYCAMAAAArvOYAAAAAA3NCSVQICAjb4U/gAAAA0lBMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD/////+r3/97T/+IP/"+
    "9az/8qX/9Xv/8J//83X/8nL/8Gr/7mT/61v/6Vf/51H/5Ur/40P/4T//3zn/3TH/2yv/2Sf/1yH4"+
    "1zD51ir/1Rn/0xP10CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3m"+
    "vRLmuwrkuAnktwTOpwtmZmZmZjNlZDplXytlXSZlXCFlWRhlVxPu5Mm3AAAARnRSTlMAEREREVVV"+
    "VWZmZnd3d3f/////////////////////////////////////////////////////////////////"+
    "////////2IunTAAAAAlwSFlzAAAK8AAACvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRp"+
    "YSBGaXJld29ya3MgOLVo0ngAAAD+SURBVBiVjZBpT8MwDIYNK9fGmnXAWNPcTaA72DjGjXe06///"+
    "SySbQID2AUux5Uevbb0BAJjDrxTK/GcC2C36A3bEfzSw18IQ7cYXOECcDa+HL4hHW9DCkVZKaWMf"+
    "MQ7gGK+k4FzIdW2n2PQ7cCR5VZYZE6p2T9jwM0pkab+fUia0Lfwc3kpGyWJxsSqJyos3BL+FJWS5"+
    "7HrSM+7OExMIIV3/eqYYbzScJp3OZXJ2rvMiaGZaMJqmNOPS2MEHwikaJTirqkp6ydjf2seJ0XIt"+
    "pKpzN3jGCOAEJ7nR2hgbQDPYaOODs9a6woN4a/UQ8XV6c//+7R0gijf/E0eh+QSBOyk/YNDjhwAA"+
    "AABJRU5ErkJggg=="));

  smilies.push(new Array("8o","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAz1BMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAALCQAAAAD//////5n/"+
    "+4v/+IP/9Xv/9Hf/8nL/72j/6Vf/6FT/40P/4kH/4Dr/3TH/2yv/1yH41zD51ir/1Rn/0xPw0TL1"+
    "0CX9zw/5zhPxzCHqyy/2yArzxw/uyBroxyfrwRHuwAfmvRLmuwrkuAnktwTOpwtmZjNlXyllXSZl"+
    "WyBlWhplVxJlVQ5hVRX/ICBhUApbThBcTQpURw5TRQguIwuWCvp4AAAARXRSTlMAEREREVVVVWZm"+
    "Znd3d3eZmf//////////////////////////////////////////////////////////////////"+
    "//+7Bq24AAAACXBIWXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZp"+
    "cmV3b3JrcyA4tWjSeAAAANdJREFUGJU1kNtWwjAQRUetoiCh0SIIbagGQQTvnrRJsIDy/99kpsX9"+
    "MGtl55yHGSKiuNcB0+3FVBOf4mc7u5/tftFqVAffUrrMS7mDYHHOQkrLY4M20REenJRl49avOAmd"+
    "rP4ueHgdengaj0LC9INyE/0Bwt34dmjMVTIobaryZTAqmJvkOhkMR6nSc86ktiyMMUVpndececnc"+
    "/p/19At0CZXZg/ChJOgYCxVSVVXtfT59Q0R0gcVEeYZFm9fo4jlndBCiWf4MeF89rj6BFh2IRH0f"+
    "EfHjD1c0JsGC/bZuAAAAAElFTkSuQmCC"));

  smilies.push(new Array(":evil:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAxlBMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD/+4v/+IP/9Xv/8nL/"+
    "8Gr/7mT/613/6lr/51H/5Ur/40P/4T//3zn/3TH/2yv/2Sf62jT/1yH51ir41zD/1Rn/0xP10CXv"+
    "zzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwTOpwtm"+
    "ZjNlZDplXyllXiZlWyBlWhxlVxJlVQ1lVQzRtSBMAAAAQnRSTlMAEREREVVVVWZmZnd3d3f/////"+
    "//////////////////////////////////////////////////////////////9ihKzJAAAACXBI"+
    "WXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjS"+
    "eAAAAOVJREFUGJU9kOlWwkAMhUepoiC17XQms6RDtSyCC+4Gihbf/6XMAMf7L9/JTXIjBOtkSFGj"+
    "njjqjGg1vZm+EfUPYEgz75zzGJ4pjeCCxtYAGOswLGnAM2hmQSulwDisX6jHHme2bVHIEn660LCP"+
    "7i2U7TrL5fbbVc0HCZ6i5XqzyVomWD8wQSZFdp0VChw2cya3FpTM80Jq46sm9qy8YSRLBRZ3ky8S"+
    "V4TOgNYA1ne/c951Sgv01vKBvttNXikR4pIWFXqPuAeDGGNET3UIoW4YpIeo50Tvy7vHz//sQiTp"+
    "/j9pEos/amEhCNVGSxcAAAAASUVORK5CYII="));

  smilies.push(new Array(":thumbdown:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABwAAAARCAMAAAD5TTx4AAAAA3NCSVQICAjb4U/gAAAA1VBMVEX/"+
    "///WtRDVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqACZcwr//5n/+4v/+or/"+
    "+IP/9Xv/83X/8nL/8Gr/7WL/6lr96l//61v/51H/5Ur/40P74Uf/3zn730L/3TH63Tv/2yv/2Sf6"+
    "2jT/1yH51ir41zD/1Rn/0xP10CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHu"+
    "wAfkvx3mvRLmuwrkuAnktwTOpwuZcwpmZjNlXyllXidlWx9lWRplWBSeNQAJAAAAR3RSTlMAERER"+
    "EVVVVWZmZnd3d3fu////////////////////////////////////////////////////////////"+
    "/////////////58HrvoAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAfdEVYdFNvZnR3YXJlAE1hY3Jv"+
    "bWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAABK0lEQVQYlWXRa1cCIRAGYEq7aa6Vu8uCgITi1npJu9i9"+
    "Gdf0//+kgF07p9N8g+cMDC+E/K2DNvjqNMj/OgJYTW+mbwAnYd1FxG5tbZhprbQ29hkiv4Hj4bDm"+
    "UxgrKYRUTpfQqhoRr9HfBzMlGM/6QmqTv0CD4EAKRInhUC37NE1p5tQW7uDQyJlHuFdiU67Xcbn5"+
    "3o6KDyDIOEXKA44VK+Ori16ZCWXyB4ecppjSgEYxmvQue6nHYg5uIJpgUuGtEhmN44QyqUeF6/Tj"+
    "JnXnSkun1I2rjJ18QUiB0vDOczBOGRNCucZ5iAE5rzI4hIXR261UzvLJKzQ9CoFVemewGBm92xnr"+
    "rRXyG/xm24Gn3FqbF86iOvm9EXIM8L68e/zc/8rfakbhPyN/H/kBRAQ0FMRQi4AAAAAASUVORK5C"+
    "YII="));

  smilies.push(new Array(":thumbsup:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAACcAAAARCAMAAABpXkW3AAAAA3NCSVQICAjb4U/gAAAA5FBMVEX/"+
    "///WtRDVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqACZcwr//////5n/+or/"+
    "+IP/9Xv/8nLr6+v/8Gz/7mT96l//613/51H86Fj/5Un/40P74Uf730L+3jn/3TL63Tv/2yz/2Sf/"+
    "1yH41zD51ir/1Rv/1hD10CX9zw/vzzD5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfk"+
    "vx26urrmvRLmuwrkuAnktwTOpwuLeyGLeBqZcwqLdBCLcwxmZjNlXyllXSZlWyBlWRllVQ9lUwje"+
    "tui4AAAATHRSTlMAEREREVVVVWZmZnd3d3fu////////////////////////////////////////"+
    "////////////////////////////////////////jlu26AAAAAlwSFlzAAAK8AAACvABQqw0mAAA"+
    "AB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAFhSURBVCiRbZKJUsJA"+
    "DIaL4AVCV9vSlu1hyyUiigeKeASj9OL938fstrSOwz/TmZ38X5NNsoqiqKgqpWotEGrXq9DOx34F"+
    "HgIsplfTV4DjCutjzvk+FrEWzILAC4Jw+AydIlbayHmR8ATGnsu56xI4h2aRjuziZNsSrMHM43Fs"+
    "95wkDUcvUJemk5t0QtOyUVYN3NgyIjN23HQ4kZUJs1CAKloGGpbg4N7jlqFputnjwWDyDoIjTDcI"+
    "RNvUUTclN3YdU7841wyLe4PJQ86ZqAmbfijzhWkSbUhRnKTZ902Vj2wUyu8H47TL2IYxFjPW3eb5"+
    "qA0hmoo4OZJbrFeMRcQljK1+PiXHkcZBtipxV3BnEK4lw1LGqKzs15c+NYyXNHA5ogO4+0oFQ1+2"+
    "XUIjn5qfL0TNcaFTAjPBZQJr7vaLfx+KVBueRhlpe70s97tXRwBv89vHjz/vZb8aHfn+Oo1/8V/p"+
    "2UfQfZLdcQAAAABJRU5ErkJggg=="));

  smilies.push(new Array(":sleeping:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABoAAAARCAMAAAD0U0w/AAAAA3NCSVQICAjb4U/gAAAAxlBMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD//5n/+4v/+or/+IP/"+
    "9Xv/83X/8nL/8Gr/7mT/613/6lr/51H/5Ur/40P/4T//3zn/3TH/2yv/2Sf/1yH41zD51ir/1Rn/"+
    "0xP10CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnk"+
    "twTOpwtmZmZmZjNlXidlWx9lWBVlVhBlVxJwpB0YAAAAQnRSTlMAEREREVVVVWZmZnd3d3f/////"+
    "//////////////////////////////////////////////////////////////9ihKzJAAAACXBI"+
    "WXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA4tWjS"+
    "eAAAAP1JREFUGJVVkel2gjAQRmOlm1bagoQw2QiKS7WL3TtCl/d/qQ4cQbg/cnJyz3yTSRgjBmOs"+
    "mAzZgT1Rb04Rd8v58g3xnLWyXse4MlprY90z+j1zgTMlAaTS1m1xVKUdAge4UpAIIUBqm73gsCmp"+
    "4rQseVTwEuSPyymyMQzvFcRFEYS8/NZp/oFs3zjqlPDw9jqIYqDEB2wvydCSmgY3QSRI5euumikQ"+
    "PAynPJEmzXtVOyPJ8ViAsm7x1VFXaLWEJAFQVLRuhyZOcGONUjSx+csWr+gdFbvETWqNsfa3MiPW"+
    "ZYJPmXMuy8n4rM8Z4vv27vGz+/INnl//l+/1Tv8BpFwlQT+ZqMwAAAAASUVORK5CYII="));

  smilies.push(new Array(":whistling:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAz1BMVEX/"+
    "///XshTXrQfXqwDTqADTsBjTqADOpwvTsBjTqADOpwvTsBjUrg/TqADOpwv/////+4v/+IP/9Xv/"+
    "83X/8nH/8Gr/7mb/6lr/613/51H/5Un/40P/3zn/3TH/2yv62jT/1yH51ir41zD/1Rn/0hL10CXv"+
    "zzD/zhD5zhPxzCH0zBjqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAncswrXrQfO"+
    "pwvOpACxlRWLdRJmZjNlZDplXyllXSZlXCFlWRllVxJlVhCBBeAyAAAARXRSTlMAEREREVVVVWZm"+
    "Znd3d3f/////////////////////////////////////////////////////////////////////"+
    "//+J5uZxAAAACXBIWXMAAArwAAAK8AFCrDSYAAAAH3RFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZp"+
    "cmV3b3JrcyA4tWjSeAAAAORJREFUGJU9kOtSwjAQhVfBK5YIWtrcSjSAgiLe7VFqm8L7P5MbdPx+"+
    "ZGa/ydmZs0TMXg+Rfof+OABW06vpC3D4K3qYGaONse4RSRTHGOsQpFLtxi1wwjswY9E0eQisntDh"+
    "jAmirkUtQiu2nnO400EwVXw2/g2EscpqIb4HrFrr7tlYnY2q6nxw2QRt/Q2bay3zdDi8SDNlCh//"+
    "rIxilY5yqa1zJegMllWWSalN8bX+AO1jbo1WSrNw6+3ik+gU88JyB1u4CadKrtHHg4v4yTNQ7qoe"+
    "Aa/L2+X7f3eibrK7T9KNww/lwCSDp9okLAAAAABJRU5ErkJggg=="));

  smilies.push(new Array("^^","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAwFBMVEX/"+
    "///XshTVrQrXqwDTqADTsBjVrQrTqADTsBjVrQrTqADTsBjUrg/VrQrTqAD//5n/+4v/+or/+IP/"+
    "9Xv/8nL/8Gr/7WH/6lr/61v/51H/5Un/40P/4T/+3jn/3TH/2yv/2Sf/1yH41zD51ir/1Rn/0xP1"+
    "0CXvzzD9zw/5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrkuAnktwTO"+
    "pwtmZjNlXyllXidlXCFlWRllWBQ6XzhpAAAAQHRSTlMAEREREVVVVWZmZnd3d3f/////////////"+
    "////////////////////////////////////////////////////Z8jW7AAAAAlwSFlzAAAK8AAA"+
    "CvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAADhSURB"+
    "VBiVPZDZUsJAEEVHiRtI1CSTpGfLBAMouODuNQv//1f0GMvz1qf6dtVtIZijGQLzifjjBNitblfv"+
    "wNkoZlhbY4x1/gVxEOdYaEWklHF+iynfwFpT0eUl9cbVr5hwxqiyzVrZ0WB9wzk8aOqy5CdtSxqq"+
    "5hMCC1XI9OYqyXLi2CMbp9kk16Np7sKOplymaSYLZasm7Oys6nMpZUl675ffEJdwRvVFQSwqDsXi"+
    "GBtn9cDsq3r5hkiIC2wqZ61zPohpqDHHc+29rxsW8Vj1FPjY3j99/XcXIop//xNHYTgA9g8h+dN9"+
    "TEAAAAAASUVORK5CYII="));

  smilies.push(new Array(":evilgrin:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAA2FBMVEX/"+
    "///XshTVrQrXqwDVqQDTsBjVqQDTsBjVrQrVqQDTsBjSrRHVrQrVqQD//////ZP/+or/+IP/9Xvr"+
    "6+v/8nL/8Gz/7WL/613/6Vf/51H/5Ur/40P/4T/+3jn/3TL/1yH41zD51ir/1Rv/0hL10CX9zw/v"+
    "zzD5zhPxzCH0yxfqyy/2yArzxw/uyBroxyfpwhjrwRHuwAe6urrmvRLmuwrkuAnktwTOpguLeyGL"+
    "eBqLdBCLcwxlYzdlYjJlXyllXSZlWyBlWRllVxJlVQ9lUwhbThBaTAxRQgQpEg3WAAAASHRSTlMA"+
    "EREREVVVZmZmd3d3d///////////////////////////////////////////////////////////"+
    "//////////////////8u4sMDAAAACXBIWXMAAAsSAAALEgHS3X78AAAAH3RFWHRTb2Z0d2FyZQBN"+
    "YWNyb21lZGlhIEZpcmV3b3JrcyA4tWjSeAAAAORJREFUGJU9kOlSwjAUha9SQZZckKVQGgtWRHEH"+
    "l4NK0qSt8v5vZFIcv3/nm5PMnEvkOGrD06nRHyfA9+Ji8QPUD6K1X55LK/Nk9rQXXjQwt9MoMrFM"+
    "ihWa7g8sLWfjcDyZWi6eUaMWpGGth6PQOJNCEG5jk2ml+jozNk9fQZjHk1G/1z0bhpFM0jtnEmu0"+
    "2u1U1fm88h07YFbMnDEPSt953G6YtTOGefP1Dmoj2VaJLbN7JOgYNx/WJ865KNcIiE6dynNnCi+a"+
    "fkYHD7PCUV6uIQ5T68DL6vr+7X87USCq+4jAh183CCcSYHoznwAAAABJRU5ErkJggg=="));

  smilies.push(new Array(":chinese:","data:image/png;base64,"+
    "iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAA3NCSVQICAjb4U/gAAAAw1BMVEX/"+
    "///XshTVrQrXqwDVqQDTsBjVqQDTsBjVrQrVqQDTsBjSrRHVrQrVqQD//////ZP/+4v/+or/+IP/"+
    "9Xv/83P/8nL/8Gz/7mT/613/6Vf/51H/5Ur/40P/4T//3zn/3TH/2yv/2Sf62jT/1yH51ir41zD/"+
    "1Rn/0xP10CX9zw/vzzD5zhPxzCH0yxfqyy/2yArzxw/uyBrlxCfpwhjrwRHuwAfkvx3mvRLmuwrk"+
    "uAnktwTOpgtlYTFlXyllXihlWyBlWRkI8MDyAAAAQXRSTlMAEREREVVVZmZmd3d3d///////////"+
    "/////////////////////////////////////////////////////////zcgRzwAAAAJcEhZcwAA"+
    "CxIAAAsSAdLdfvwAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAA"+
    "5klEQVQYlT2Q6VLDMAyEDQ2F0iZAQhrfigmkBy1HuVFc+/2fCpky7D99syvNijHS0RSTZiP2pxPE"+
    "3fJ2+Y44PoBzXFtjjAX3gnkCp3ijlZRKG3BbnNAOXGspOOdCGehecUQZo/be1/MmxOh6yuGDFs11"+
    "OVSeS9P2n8hoi5hXVxdl3UiKPRIBLXxVXpY1lxH6FZE7LbkfhsGHYNs+eXZWCe6LfRE0uMU3simC"+
    "UTIUoYhkWdGtY9yA1TGp7RZvmDF2hpsWrAVwCUxSjRk+d865rieQH6qOET+2909f/90Zy/Lf/+RZ"+
    "Gn4ANockX66zUJgAAAAASUVORK5CYII="));

  smilies.push(new Array(":dash:","data:image/gif;base64,"+
    "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"));

  smilies.push(new Array(":rofl:","data:image/gif;base64,"+
    "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"+
    "0pM3k3oQylXoi29GWATQScSDWTVBAAA7"));

  smilies.push(new Array(":inibido:","data:image/gif;base64,"+
    "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"+
    "FHEgnzyCFC0MCAA7"));

  var script = document.createElement("script");
      script.setAttribute("type","text/javascript");
      script.setAttribute("language","javascript");

      script.text = 'function addSmiley(smiley) {' +
                       'var message = document.getElementsByName("text")[0];' +
                       'var str = " " + smiley;' +
                       'message.focus();' +
                       'if (message.isTextEdit) {' +
                            'var sel = document.selection;' +
                            'var rng = sel.createRange();' +
                            'rng.text = str;' +
                            'rng.collapse(false);' +
                            'rng.select();' +
                       '} else {' +
                            'var start = message.selectionStart;' +
                            'var starttext = message.value.substring(0,start);' +
                            'var endtext = message.value.substring(message.' +
                            'selectionEnd,message.textLength);' +
                            'message.value = starttext + str + endtext;' +
                            'start += str.length;' +
                            'message.selectionStart = start;' +
                            'message.selectionEnd = start;' +
                       '}' +
                       'message.focus();' +
                    '}';

  document.body.appendChild(script);

  function funcSmilies() {
    var form = document.getElementsByTagName("form")[0];

    if (!form) return;

    var div = document.createElement("div");

    for (var i = 0; i < smilies.length; i++) {
      div.innerHTML += "<a href=\"javascript:addSmiley('" + smilies[i][0]
      .replace(/'/g,"\\'")+"')\"><img src=\""+smilies[i][1]+"\" alt=\""+smilies[i][0]+"\" border='0' /></a> ";

//      var a = '\''; // Para una lectura mejor del código en el editor, unicamente
    }

    div.style.textAlign = "center";
    div.style.height = "200px";
    div.style.overflow = "auto";

    var cell = document.getElementsByName("text")[0].parentNode;

    do {
      cell = cell.previousSibling;
    }while(cell && cell.nodeType != 1);

    if (cell) {
      div.style.width = "99%";
      cell.appendChild(document.createElement("br"));
      cell.appendChild(document.createElement("br"));
      cell.appendChild(div);
    } else {
      var message = document.getElementsByName("text")[0];
      var message_div = message.parentNode;
      var parentDiv = message_div;

      do {
        parentDiv = parentDiv.parentNode;
      }while(parentDiv && parentDiv.nodeName.toLowerCase() != "div");

      parentDiv.style.position = "relative";
      div.style.position = "absolute";
      div.style.width = "160px";
      div.style.marginLeft = "10px";

      if (parentDiv.className == "textWrapperSmall") {
        div.style.top = "5px";
      } else {
        div.style.top = "50%";
        div.style.marginTop = "-50px";
      }

      message.style.width = "540px";
      message_div.style.width = "550px";
      message_div.style.marginLeft = "170px";
      message_div.parentNode.insertBefore(div, message_div);
    }
  }

  if (document.location.href.indexOf("page=alliance") != -1) {
    var $;

    try { $ = unsafeWindow.$; }
    catch(e) { $ = window.$; }

    $("#eins").ajaxSuccess(function(e,xhr,settings){
      if (settings.url.indexOf("page=allianceBroadcast") == -1) return;

      funcSmilies();
    });
  } else {
    funcSmilies();

    if (document.location.href.indexOf("page=showmessage") != -1) {
      function rep_smilies(value,index) {
               var text = value;
               for (var i = index; i < smilies.length; i++) {
                    var smiley = smilies[i][0];
                    smiley = smiley.replace(/([\\\[\](){}.+*?^$|-])/g,"\\$1");
                    var expression = new RegExp(smiley,"i");
                    var pos = value.search(expression);

                    if (pos != -1) {
                        var part1 = value.substring(0,pos);
                        var part2 = value.substring(pos + smilies[i][0].length,
                                                    value.length);
                        text = rep_smilies(part1,i) + "<img src=\"" +
                               smilies[i][1] + "\" alt=\"" +
                               smilies[i][0] + "\" border='0' />" +
                               rep_smilies(part2,i);
                        break;
                    }
               }
               return text;
      }
    }

    function sort_smilies(a,b) {
             return b[0].length-a[0].length;
    }

    smilies.sort(sort_smilies);

    if (document.location.href.indexOf("page=writemessage") != -1 ||
        document.location.href.indexOf("page=showmessage") != -1) {

/*        if ( ( parseInt(getVersionOgame()[0]) == 3 ) &&
             ( document.location.href.indexOf("page=showmessage") != -1 )
             ( document.location.href.indexOf("cat=2") != -1 ) )
           return;*/

        var divs = document.getElementById("messagebox").getElementsByTagName("div");
        var message;
        var i = 0;

        do {
            message = divs[i];
            i++;
        }while(message.className != "note");

        message.innerHTML = rep_smilies(message.innerHTML, 0);
    }
  }
}

// name           OGame Redesign: Alliance icon opens the message box
// namespace      Vesselin
// version        1.10
// date           2011-10-21
// description    Makes the icon of the Alliance button open the message box.
function AllianceMessageBox()
{
  if (!allianceMessageBoxIcon) return;

  var url = document.location.href;
  // The following "if" is not really necessary but with it this script
  // will work for Opera too
  if ((url.indexOf ("/game/index.php?page=")                   < 0) ||
      (url.indexOf ("/game/index.php?page=search")            >= 0) ||
      (url.indexOf ("/game/index.php?page=logout")            >= 0) ||
      (url.indexOf ("/game/index.php?page=buddies")           >= 0) ||
      (url.indexOf ("/game/index.php?page=notices")           >= 0) ||
      (url.indexOf ("/game/index.php?page=payment")           >= 0) ||
      (url.indexOf ("/game/index.php?page=showmessage")       >= 0) ||
      (url.indexOf ("/game/index.php?page=traderlayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=searchLayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=rocketlayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=combatreport")      >= 0) ||
      (url.indexOf ("/game/index.php?page=globalTechtree")    >= 0) ||
      (url.indexOf ("/game/index.php?page=allianceBroadcast") >= 0))
    return;

  var alliance = Array ();
  var research = Array ();
  var oldVersion = checkVersionOgame();

  if (oldVersion)
  {
    alliance =
    [
      "img/navigation/navi_ikon_alliance_a.gif",
      "img/navigation/navi_ikon_alliance_b.gif"
    ];
    research =
    [
      "img/navigation/navi_ikon_research_a.gif",
      "img/navigation/navi_ikon_research_b.gif"
    ];
  }
  else
  {
    alliance =
    [
      //"http://gf1.geo.gfsrv.net/bb/e95e882e8916c0be653cb7a57e9581.gif",
      "data:image/gif;base64,R0lGODlhJgAdAPcAAAAAABwhJTU4OhwgJT1CRTxBRBsfJBoeIxsgJBkdIT1BRQcICgkJCRoeIikuMRsgJRofIhofJDxAQxATFjtAQwoMDxYaHiQpLQ8TFQ8SFRsfIxcZGhsdHiAiIxkbHCQoLR8lKiktMQoNEAICAi4zNxgdIAYICRccIBofIzxBRR8jKAIDAwsNEAkKCh0iJhgaGzY7PhcbHwwPEQEBARkeISMnKy0yNh8lKQcKCwQEBBgcIAYICgYHBwgJCyovMhccHw4PEAoMDgoNDxcaHiouMy8zNBgdIQ4PDzE2OgcICAYGBiYqLyksLh8hIjQ4OxsgIyUoKRwhJDQ5PDY5PBEUGB4iJwkLDh0fIA8RFQsNDwsMDSsvMiMoLBcYGSInKhkdIiwwNCElKQMDBAUFBgwNDh8kKSgtMQYHCQkJDA0ODh0iJxESEycrLyswMxIVGSgsMQgJCRgZGiElKB4jKDM3OgoNDikuMyEjJAsOESQoLAgKCwgLCyQnKBocHQ8TFg8SFg4REgkLDQwQEhIWGTk+QicsLwwOEAcJCiImKxUXGC4xMxATFygrLDY6Ph8iIxMUFSotLhAUGBEVGDc7PycpKwcJCxkdICMnKhUaHCouMiYrLgwPEgcICR0fIQkMDRQVFgYGBzQ3ORkeIwwPEA0PEiAkKQgKDRAUFjo/QxkaGyInKy0xNR0hJRAUFyMnLCElKgsOECswNAQGCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAALIALAAAAAAmAB0AAAj/AGUJBBGgoMGDCBOCEMiwocMyCp9EjOiwoqwbE10R2GhjgMeJFhtONKCRo4GPKFGGZIgi5UmPXDYS6PiRhM1VrKIUXDmwgcuPS0IgeQVUgcyDPGXR+PmgadM3KFXJJISUp88LWLG6jPWSpNGNCMI2SOrzq1E1EbpyTasixAdENcJomDvWqoYUZlt+OZB2CV8XRFT8XUqYbIMCiBFfkuPFgWM6jh24IKzDiOW9hhMrdjzVpIUfJ0DHGE0j6SELMFJPakRaAgXXri98tqBpi4/bmDglBcC7d28GAoIL39C7iHABvHf79g38uIBUK6IzOZ6c53LmzgVA2cBdEXUAyq8DtGiR3cOI88aFV18pfvwnLQziNwEyo3ecDk3yrw/ZnkOS5Ynk0N5+FtnnAQcI8nBdEubVJ1540wX3woCPOHgdhKFI2B4QjDDRwRgXWscbFMP1N0VwLYS4kgnjcXJEGkcoYSKKKoZkhSeBmIJDJTsu4OOPJuzgyIl0AAKkHmgkJYsgpGwiAx4sRCnElBVUGYSVImQJyyhcKinQIG5E0soEZGKQgZln/pHmmpJI4uWbcMYpp5cBAQA7",

      //"http://gf1.geo.gfsrv.net/05/5492a049ce3b74efc44f0e7a66f73b.gif"
      "data:image/gif;base64,R0lGODlhJgAdAPcAAAAAABwhJX2OmRwgJYWYpISXoxsfJBoeIxsgJBoeIhkdIQcIChQXGRofIhofJBsgJRATFjc/RAoMDxYaHg8TFQ8SFVZia0pUXAsNEAoNEAYICRccIEtWXISWooSXokBJTxsfIxgdIBofIwQFBQYGBx8lKgwPER8lKTlCSA0PEDxESiElKAoNDyctMxccHxYZG4WXowcKC0lUXBgcIBgdIRkeIYWYox4jKFNgaAYICg8SEwoMDklTWREUFXCAihcbHzlBSBcaHggJC1NfZ3SFkDM6Pi81OxATFyInKh8kKQwOEAkKCztDSDhARB8jJjpCR3yOmQ4QEUVOVlJeZhQWGGJweQgJCTtESRAUGFRgaHmKlSUqMDU9Qj1GSz9ITzM8QSkvNUJLUgsOEAwOD1BcZBAUFyInLUZQVy81OSYtMhkeIycsMisxN0ZQVTY9QgMDAzY+RB8kKAYHCQ8RFRsgIwgKDVZiaU1YX2NxeVNeZyImKW59hkROVB0hJBwhJAsNDxEUGDhAR1hkbBoeIQ8SFmBudxEVGDM7QAwPEh4jJzQ7Qh0iJ29/iTc/RkpVXTE3PltocE1YYUxXXzA3PF9sdFNgZwcICSMpL3aHknOEjgoNDoCSngcJCwwPEBAUFgkLDQECAhkdIDE4PgkMDUZQWC00OEVPVXuMlhIVGQsOEQ0PEjM6QQcJCh0jJ0tWXQwQEiguMkdSWTI5P4GTnxIWGQgKC0tWXkZRWAgKCjlBRhkdIn2PmggLCxwgJHaHkQkLDmNyeyguNA8TFjQ7QRsfIRUaHDxES2JveElUWwkJDHqMlwQGCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMsALAAAAAAmAB0AAAj/AJcJLBGgoMGDCBOWEMiwocMkCulEjOiw4rITE1cR2Iijl8eJFhtONCBrI4FIA1KqXLloUUiGIliCUDnMZB6VYCzonJLIT8GXAxPITGnGmJRCbGiaJHADgVOgy2oMfUCVapiVj0wqa+U0AVShKMICCdTygAEDLS6cPatx466mT4EKXcr04BoZDvLehSPqkJGPg76CsEEYxqyEXsxusdXCbIPHaswK9lCg8iwuk1Zd4EEGmAxkrtJInaGAhmldMyZbPnlmyOrKjki72DD7h+0aUFlNIMIbE6MJE+J0KDz8VpDjpLLgqDSkmCWoAKJLl85AgPXrEaT7uC4gOvTp06tz1BfAhIT5Y9y9AwUffrwAQRHi70kP4Dt7AC/clx8xYvt19S/dB4AORRDDAAN9mKLHG9I1wQEPEIJS33rspaBCD9MtgQYuAgIYknSlfCBiFzpUSGKH9uGBnYQVrsEie/bZseJ9elBSBQdjwEghAJDMyN4d172g40saACAHgnGskIKAbQQ5ZEi/jPJJlJzEsMCVWGqgJR9QaOHLIFkukQxUy7yiCiImpILBmiy0KcGbO8CZwZxidGInmQLRggoWZUDgJwUVABooIYMWaogheCaq6KKM4hkQADs%3D"
    ];
    research =
    [
      //"http://gf1.geo.gfsrv.net/42/46d133829e8b9e025470dd1d4ec79d.gif",
      "data:image/gif;base64,R0lGODlhJgAdAOYAAAAAABwhJRwgJTU4OhocHRsfJBsgJBoeIxYaHhccIBkeIRoeIgcICicqLBsfIwMDBBkdIRofJAYHBxofIhsgJRATFi4xMw8SFQ8TFQoMDxofIxwgJBgcIBgdID1CRTQ4PAoNEAYICR8lKiEjJAcJChkeIhAREhQVFjE1Nw0ODgsNECAkKQoMDggJCyUqLjxBRSgsMDQ5PQwPETk+QTE1OR8lKQcICQYICgoNDxUaHDxBRAcKCxcbHxccHxoeIRcbHjo+QhgdIRkeIyktMD1BRRgcIQkLDhATFwYHCTM3OwwPEBYaHQoNDh8kKRsgIxkdICsvMzxAQzM4OyElKiQnKCMnLBEVGA8RFRIWGQwPEggKCw0PEg8SFhAUFi4zNxcaHigtMAkLDTg9QRwhJCsvNBAUGAsNDxIVGQkJDAkMDQgLCwsOEDk9QRcYGRkdIgwQEhUYHAgKDREUGCQpLQcJCwwOEBUZHQ8TFiswNBAUFwsOEQQGCwAAAAAAAAAAAAAAACH5BAEAAHsALAAAAAAmAB0AAAf/gHuCIgGFhoeIiSKCjI2OTYpOkZGOlXs1kwWGcxudk5aNmQKjXh40o6iphaCMGqqaqjSmoqyDC6+vHlO4kgYTtXslvBTEhboHwwvAt76wyDAxuwVRB9GftczOERFVYnjbLxFALtrZyw6u2W7VZMjUH8jrE/NCyOcK+Pk+Ch9Qwu/6IAQZKPAejwQIE0aBwYGDjiJA1P042KEDMBIIMmrMCGZGxS/vhsAZmcNOyRw2gAFYyXKlhAEmHshEAcDEAAktW6rMuXJEgwcofg5Y2WAEz5U7c6a4CYAKAQBDAbxMcTRpywZPW0YFQOAnT6srT1hoOsDr0BQNTFg48bUWTwsDc+LKnSt3bE6wBOjqnZuVJVgUewPT1OmW5QnBgdsQZpWTgOPHkCM7xum3VgipRzNrvsgkTJwddEAzGE06xA0bpVOHAbbnzZYsMvSomI2jdobbLHCD2L1GiW/WgrCcKZOngnEMF5An57K8uRUrwKNLn04deCAAOw%3D%3D",

      //"http://gf1.geo.gfsrv.net/f0/6ddd15cc22223be8f74ffa541c9997.gif"
      "data:image/gif;base64,R0lGODlhJgAdAOYAAAAAABwhJRwgJX2OmT5HTBsfJBsgJBoeIxYaHhkeIRccIAcICl5rcxsfIwgJCYWYpBoeIhkdIQ8SExofIhsgJRofJBATFgoMDw8TFRofIw8SFRgcIG59hhwgJE5ZYC81OWp5gx8lKiYsLwYICRkeIgcJCgoNEAsNEB8jJhgdIHWGkISXo32PmikvNRcbHwoNDwwPER8lKRoeIQcICR8kKH2Pm2p5hF5rdBccHxUaHDxESwcKC3iJlAoMDgYIChcbHggJCxgdIRkdIAwQEml5ggoNDhsgIwwPEhkdIhIWGTY+RBkeIxYaHRIVGQ8RFQkMDYWXowsNDx0jJgwOEAkLDoSWog8TFk1YYExYYA0PEhAUFg8SFhUYHAkLDQsOETY+QwsOEGRyfB8kKRgcIRATF0NMVAcJCwgKDREVGDU9Q09aYggLCxAUFy81PFZiaQYHCREUGE9bZE9aYxcaHhUZHQkJDBwhJFdjbAgKCxAUGEdSWQwPEAQGCwAAAAAAAAAAACH5BAEAAHwALAAAAAAmAB0AAAf/gHyCIQGFhoeIiSGCjI2OYopGkZGOlXwxkwWGSh2dk5aNmQKjdw83o6iphaCMGaqaqjcPYa+eq6yXB7WpLQ8tuwbBuHwkwBTHAg/GwrgQwc+wZTZtmlAFNjqwtsysztq6FWk8cRUVyjzZ3w2Swwnr70jgIHK6VQcg4DIT+0u67d4p3AmcV8wekWIbIigMEnDDPxwJFUhUQKOGnoQrxtSgAXGii48JhpVAQLIkSSwspPz4YW/AlTkmc3DJMWMYgJs4b0oYIMKBAwADAIgYICFnTptGb3pg4EAFA6A3GXhIehOpURREAbghABXAThRUreZkwDVn0JsEniYVe/MDBwAehQaoDYqCgQgOH9biSsphgN+/gP++NcqWQODDgMviFNsUsWMVPxfvxfnBseUvRyffdECgs+fPoDsXlcxqBIA3VFOrFlmky5kdZmAvmE17hI8ZtXN3GcZnSJYjMLycGP6i+IXjPZCbWA5mj3PegpI0ycPGgnUMGrBn37K9Oxo00MOLH08eeiAAOw%3D%3D"
    ];
  }

  function setIcon (page)
  {
    var menuTable = document.getElementById ("menuTable");
    if (menuTable == null)
      return;

    var lis = menuTable.getElementsByTagName ("li");

    for (var i = 0; i < lis.length; i++)
    {
      var thisLi = lis [i];
      var button = thisLi;
      var links = button.getElementsByTagName ('a');

      for (var j = 0; j < links.length; j++)
      {
        var a, span, img;
        if (links [j].getAttribute("href").match ("page=" + page + "&") != null)
        {
          a = document.createElement("a");
          var imageA, imageB;
          switch (page)
          {
            case "network":
            case "alliance":
              a.setAttribute ("target", "_self");
              a.setAttribute ("class","");
              a.setAttribute ("href",
                              "index.php?page=networkkommunikation" +
                              ( (parseInt(getVersionOgame()[0]) == 3) ? '' : '&' + getSession() ));

              imageA = alliance [0];
              imageB = alliance [1];
              break;

            case "research":
              a.setAttribute ("target", "_blank");
              a.setAttribute ("class","");
              a.setAttribute ("href", "index.php?page=globalTechtree&open=all" +
                              ( (parseInt(getVersionOgame()[0]) == 3) ? '' : '&' + getSession() ));

              imageA = research [0];
              imageB = research [1];
              break;

          }
          span = document.createElement ("span");
          span.setAttribute ("class", "menu_icon");
          span.appendChild (a);
          img = document.createElement ("img");
          img.setAttribute ("class", "lpunktkit-micon");
          img.setAttribute ("src", imageA);
          img.setAttribute ("rel", imageB);
          img.setAttribute ("height", "29");
          img.setAttribute ("width", "38");
          a.appendChild (img);
          thisLi.replaceChild (span, thisLi.firstElementChild);
          return;
        }
      }
    }
  }

  setIcon ("network");
  setIcon ("alliance");  // Stupid Redesign version 1.2.1...
  setIcon ("research");

  if (document.location.href.indexOf ("page=networkkommunikation") > -1)
  {
    var myScript = document.createElement ("script");
        myScript.setAttribute ("type", "text/javascript");
        myScript.setAttribute ("language", "javascript");
        myScript.text = "function fadeBox () {}";

    document.body.appendChild (myScript);
  }

  mouseOverImageSwitch();
}

// name           Ogame Redesign: Message button in left menu
// version        0.1
// description    Add message button in left menu
function MessageButtonLeft()
{
  if (!showMessageButtonLeft) return;

  var unsafe = window;
  try {unsafe = unsafeWindow} catch (e) {}

  var $ = unsafe.$;
  var session = unsafe.session;

  if ( !$ ) return;

  try {
        var arrMessages = new Array();

        arrMessages = ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAdCAYAAADGgB7AAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK6wAACusBgosNWgAAAehJREFUWEftl0tOwzAQhpsCKmnTJk1J+gg0pQ8humOFxIILsGXDlvNxDo7AGZA4AQI0eNxOcFM3jh1nR6RfcRzP5PM/jqM4DXa07h7x1Bh9vMHP9xdv2zyOjk8a79HawZyfry/lUyNYuryG88vVrmbsOq/8GLymMbJ7rC9drSGZLYAMKE2GgTtQMqCyfQSH44U2gsWTKZSGwoEYYA3swAQu5leGYGUdMR3H3DNybDKd768nUwgq4zY+mS15biMw6SKvAibEIhjKDpglKJywFbCb23uwqU0lWClN11iSLvg6IKiHp2eoIsojLhGjUopgCISJTcEoFs+VwfhetnWMgHTdy48XwYZJqr/4W26bB6FkTqkAD90nMMrdOnX1dn62+WMAV1EJZY6oxou5t22tr1IhmAqoyLFawFQlzL8csglYBdMFOgSIeWoBs7HREpjTbBKk2RqTzFA268I+AcKeY7pgCoj6wJp/JYAyEI7jqBy2V0oCEiHR2RIQ9TnGAQTXdEtt7a208GB7pXQ7PVWyyvfRddf19L6V+L/nBSF0/RA8v8/V6TF1g0ztrg+ZPNbO1Ntts5g2it3HHJ4fZNL+r8QAVBiPIYzGEJwNNxrEmfxBBH7IROesHQv9++1+NAIUPUPrlfwfrOHAL4rryeT3RN1JAAAAAElFTkSuQmCC",

                       "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAdCAYAAADGgB7AAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK6wAACusBgosNWgAAAedJREFUWEftl91OgzAUx8fUTDY2GBP2gY65jxh355WJFz6Fj+Dj+Rw+gs9g4pWXi5pjT7eDHeugLeVOkn8opefw6/+UEpwGO1oPT3hqjD7e4Of7i7dtHienZ433aO1gzs3ri3pqBEuXt3B5vdrXjF3nlR+D1zRGdo/1pas1JLMFkAHKZBi4ByUDUu0jOBwvtBEsnkxBGQoHYoA1sCMTuJrfGIKpOmI6jrln5NhkOj9cT6YQVMZdfDJb8txGYNJFXgVMiEUwlB0wS1A4YStgd/ePYFPbSrBSmq6xJF3wdUBQz58bqCLKIy4Ro1KKYAiEiU3BKBbPlcH4XrZzjIB03cuPF8GGSaq/+FtumwehZE6VAR67T2CUu3Xu6u38bPPHAK6iEsocKRsv5t61tb5KhWBlQEWO1QJWVsL8yyGbgFUwXaBjgJinFjAbGy2BOc0mQZqtMckMZbMu7BMg7DmmC1YCUR9Y868EoALhOE6Zw/ZKSUAiJDqrAFGfYxxAcE231NbeSgsPtldKt9MrS1b5Prruup7etxL/97wghK4fguf3uTo9pm6Qqd31IZPH2pl6+20W00ax+5jD84NM2v+VGIAK4zGE0RiCi+FWgziTP4jAD5nonLVjof+w3Y9GgKJnaL2S/4M1HPgFjcNcA//zxawAAAAASUVORK5CYII%3D",

                       "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAdCAYAAADGgB7AAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK6wAACusBgosNWgAAAelJREFUWEftl0tOwzAQhpsCKmnTJk1J+gg0pQ8humOFxIJTcCXuwJ4t5+AInAGJEyBAg8ftBDd149hxdkT6FcfxTD7/4ziK02BH6+4BT43Rxxv8fH/xts3j6Pik8R6tHcz5+fpSPjWCpctrOL9c7WrGrvPKj8FrGiO7x/rS1RqS2QLIgNJkGLgDJQMq20dwOF5oI1g8mUJpKByIAdbADkzgYn5lCFbWEdNxzD0jxybT+f56MoWgMm7jk9mS5zYCky7yKmBCLIKh7IBZgsIJWwG7ub0Hm9pUgpXSdI0l6YKvA4J6fHqGKqI84hIxKqUIhkCY2BSMYvFcGYzvZVvHCEjXvfx4EWyYpPqLv+W2eRBK5pQK8NB9AqPcrVNXb+dnmz8GcBWVUOaIaryYe9vW+ioVgqmAihyrBUxVwvzLIZuAVTBdoEOAmKcWMBsbLYE5zSZBmq0xyQxlsy7sEyDsOaYLpoCoD6z5VwIoA+E4jsphe6UkIBESnS0BUZ9jHEBwTbfU1t5KCw+2V0q301Mlq3wfXXddT+9bif97XhBC1w/B8/tcnR5TN8jU7vqQyWPtTL3dNotpo9h9zOH5QSbt/0oMQIXxGMJoDMHZcKNBnMkfROCHTHTO2rHQv9/uRyNA0TO0Xsn/wRoO/ALnqBzHFWa9twAAAABJRU5ErkJggg%3D%3D"];

        var message_num = document.getElementById('message_alert_box');
        var m_num = 0;

        if (message_num) m_num = message_num.children[0].textContent.replace(/\D/g, '');

        var objButton = $('#menuTable li').eq(1).clone(true);

            objButton.find('.menu_icon')
                      .html('<a href="index.php?page=messages' +
                            ( (parseInt(getVersionOgame()[0])==3) ? '' : '&session=' + session ) +
                            '" target="_self">' +
                            '<img rel="' + arrMessages[2] +
                            '" src="' + ((m_num == 0) ? arrMessages[0] : arrMessages[1]) +
                            '" class="lpunktkit-micon" height="29" width="38"></a>');

        mouseOverImageSwitch();

            objButton.find('.menubutton')
                     .removeClass('selected')
                     .attr('href', 'index.php?page=messages' +
                           ( (parseInt(getVersionOgame()[0])==3) ? '' : '&session=' + session ))
                     .attr('target', '_self')
                     .find('.textlabel').html(LANG.mensajes + ': ' + m_num);

            objButton.appendTo('#menuTable');

        message_num = document.getElementById('menuTable');
        if(m_num > 0) {
            message_num.children[message_num.childElementCount-1].children[1].className = "menubutton premiumHighligt";
        }
        if (document.location.href.indexOf('page=messages') > -1)
            message_num.children[message_num.childElementCount-1].children[1].className = "menubutton selected";
    }
     catch (e) {}
}

// name           OGame Redesign: Set the Focus Correctly
// description    Fixes som places in the game where the focus isn't set correctly.
// version        1.02
// date           2011-01-03
// author         Vesselin Bontchev
function FocusCorrectly()
{
  if (!setFocusCorrectly) return;

  if (document.location.href.indexOf ("/game/index.php?page=search") >= 0)
    setTimeout ("document.getElementsByName ('searchtext') [0].focus ();", 100);
  else if (document.location.href.indexOf ("/game/index.php?page=fleet1") >= 0)
  {
    buttons = document.querySelectorAll ("a.max");
    for (var i = 0; i < buttons.length; i++)
      if (buttons [i].getAttribute ("onclick") != null)
      {
        var input = buttons [i].parentNode.childNodes [3];
        if (input.value)
          continue
        input.focus ();
        break;
      }
  }
  else if (document.location.href.indexOf ("/game/index.php?page=galaxy") >= 0)
  {
    var focusSet = false;
    function setFocus ()
    {
      theInput = document.getElementById ("anz");
      if (theInput == null)
        focusSet = false;
      else
      {
        if (! focusSet)
        {
          theInput.focus ();
          focusSet = true;
        }
        if (theInput.getAttribute ("onkeypress") == null)
        {
          theInput.setAttribute ("onkeydown",
            "var keycode; " +
            "if (event) " +
              "keycode = window.event.keyCode; " +
            "else if (e) " +
              "keycode = e.which; " +
            "else return true; " +
            "if (keycode == 13) " +
            "{ " +
              "ajaxFormSubmit ('rocketForm', " +
                "'index.php?page=missileattack_execute" +
                ( (parseInt(getVersionOgame()[0])==3) ? '' : '&' + getSession()) +
                "', launchMissiles); " +
              "return false; "+
            "} " +
            "else " +
              "return true;");
        }
      }
    }
    setInterval (setFocus, 500);
  }
}

// name           OGame Redesign: Fix the Universe Name in the Pillory
// description    Fixes the universe name in the Pillory.
// author         Vesselin Bontchev
// version        1.04
// date           2011-06-14
function UniverseNameInPillory() //Caracteristica FIJA
{
  var theUrl = document.location.href;

  // The following "if" is not really necessary but with it this script will work for Opera too
  if (theUrl.indexOf ("/game/pranger.php") < 0)
    return;

  var titles = document.getElementsByTagName ("title");

  if (titles.length <= 0)
    return;

  var titleText = titles [0].textContent;
  var master = document.getElementById ("master");

  if (master == null)
    return;

  var myHls = master.childNodes;

  if ((myHls == null) || (myHls.length < 2))
    return;

  var titleSpan = myHls [1].firstChild;

  if (titleSpan == null)
    return;

  var titleSpanText = titleSpan.textContent;
  var titleTextUniNums = titleText.match (/\d+/);

  if (titleTextUniNums.length < 1)
    return;

  var uniNum = titleTextUniNums [0];
  var uniNames = [
                    ["101", "Andromeda"],
                    ["102", "Barym"],
                    ["103", "Capella"],
                    ["104", "Draco"],
                    ["105", "Electra"],
                    ["106", "Fornax"],
                    ["107", "Gemini"],
                    ["108", "Hydra"],
                    ["109", "Io"],
                    ["110", "Jupiter"],
                    ["111", "Kassiopeia"],
                    ["112", "Leo"],
                    ["113", "Mizar"],
                    ["114", "Nekkar"],
                    ["115", "Orion"],
                    ["116", "Pegasus"],
                    ["117", "Quantum"],
                    ["118", "Rigel"],
                    ["119", "Sirius"],
                    ["120", "Taurus"],
                    ["121", "Ursa"],
                    ["122", "Vega"],
                    ["123", "Wasat"],
                    ["124", "Xalynth"],
                    ["125", "Yakini"],
                    ["126", "Zagadra"]
  ];

  for (var i = 0; i < uniNames.length; i++)
    if (uniNum == uniNames [i] [0])
    {
      titles [0].textContent = titleText.replace     (uniNum, uniNames [i] [1]);
      titleSpan.textContent  = titleSpanText.replace (uniNum, uniNames [i] [1]);
      break;

    }

  var theTable = document.getElementsByTagName ("table");

  if (theTable.length < 1)
    return;

  theTable = theTable [0];
  var theLines = theTable.rows;
  var lastPage = theTable.rows.length < 52;  // 50 lines per page, 1 header, 1 paginator
  var paginator = theTable.rows [theTable.rows.length - 1].cells [0];

  if (paginator.innerHTML.replace (/\s+/, "").length > 0)
    return;

  var parts = theUrl.split ("?&site=");
  var site = parts [0];
  var currentPage = (parts.length < 2) ? 1 : parseInt (parts [1]);

  function addButton (link, text)
  {
    var myA = document.createElement ("a");
        myA.href = link;

    var myButton = document.createElement ("input");
        myButton.type = "button";
        myButton.value = text;

    myA.appendChild (myButton);
    return myA;
  }

  if (currentPage > 1)
  {
    paginator.appendChild (addButton (site + "?&site=1", "<<"));
    paginator.appendChild (document.createTextNode (" "));
    paginator.appendChild (addButton (site + "?&site=" + (currentPage - 1), "<"));
    paginator.appendChild (document.createTextNode (" "));
  }

  var mySpan = document.createElement ("span");
      mySpan.style.fontSize = "20px";
      mySpan.style.verticalAlign = "text-bottom";
      mySpan.appendChild (document.createTextNode (" " + currentPage + " "));

  paginator.appendChild (mySpan);

  if (! lastPage)
  {
    paginator.appendChild (document.createTextNode (" "));
    paginator.appendChild (addButton (site + "?&site=" + (currentPage + 1), ">"));
  }
}


// name           OGame Redesign: Planet Navigation Keys
// description    Adds previous/next planet buttons to the planet selector
// version        1.06
// date           2011-10-19
// author         Vesselin Bontchev
function PlanetNavigationKeys()
{
  var url = document.location.href;
  // The following "if" is not really necessary but with it this script will work for Opera too
  if ((url.indexOf ("/game/index.php?page=")                < 0) ||
      (url.indexOf ("&openJumpgate=1")                     >= 0) ||
      (url.indexOf ("/game/index.php?page=search")         >= 0) ||
      (url.indexOf ("/game/index.php?page=logout")         >= 0) ||
      (url.indexOf ("/game/index.php?page=buddies")        >= 0) ||
      (url.indexOf ("/game/index.php?page=notices")        >= 0) ||
      (url.indexOf ("/game/index.php?page=payment")        >= 0) ||
      (url.indexOf ("/game/index.php?page=showmessage")    >= 0) ||
      (url.indexOf ("/game/index.php?page=traderlayer")    >= 0) ||
      (url.indexOf ("/game/index.php?page=searchLayer")    >= 0) ||
      (url.indexOf ("/game/index.php?page=rocketlayer")    >= 0) ||
      (url.indexOf ("/game/index.php?page=globalTechtree") >= 0))
    return;

  if (!showPlanetNavKeys) return;

  const min = "data:image/gif;base64," +
    "R0lGODlhDgALAOYAAN2YJt9yONpTC96iMN+POd+OOd54PN1zNt53Od53O995QN+FOt5xNt5qLd1q" +
    "Ld6cKdxqFt17H9lgE95tMd10M950Nt6bKt92MtpaENxqKtpTDNlZEtxzNuCKQ9tjGN+QO9tbFd93" +
    "N92AIN+CRtx/HN+ESttXE92XJd9vM9pcEN6gLdx1HNtaEt6rMN98Ot2PIdxwLNlUENtmENpVEt5s" +
    "L9ttGttTC918Idx2G918IN55Pd6jMd9wN9tvHNtjFt5tLd94PN5qLtxzMdthFdpnGd1sMOCIQN16" +
    "H9pcEt19It18M9xuHN+kMt+EO9xxFt51NtptGdxyHtlWEt95P95zNt1zN91yNttqFtx3G+CGTd2A" +
    "Jdx5Ht2ANNpWDtx4Hd+VON1+I9+PO9peEdtrGN+SPNpWEttfEt6dKuB/Q9pvHHhBJN+MNv///wAA" +
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5" +
    "BAAAAAAALAAAAAAOAAsAAAePgGpkH2EEBWtrh4hfak08AQEMKBM0RUENDj9oRgkGQAlsbE8UoUIX" +
    "Ix1TCgqhOgahCAguWQtVVqEcB6EHFVQhJRAgoTEzoWUmG1IsGTJIGKECGqE2Al1mME4eQxKhYimh" +
    "PkRLSiQ9NWNXoVBpoVErXC9HW1g4XhFgWkk3OSIEag8ATgCwcEbFgB1MBrRQEwgAOw==";

  const max = "data:image/gif;base64," +
    "R0lGODlhDgALAOYAAN2YJt9yONpTC96iMN+POd+OOd54PN1zNt53Od53O995QN+FOt5xNt5qLd1q" +
    "Ld6cKdxqFt17H9lgE95tMd10M950Nt6bKt92MtpaENxqKtpTDNlZEtxzNuCKQ9tjGN+QO9tbFd93" +
    "N92AIN+CRtx/HN+ESttXE92XJd9vM9pcEN6gLdx1HNtaEt6rMN98Ot2PIdxwLNlUENtmENpVEt5s" +
    "L9ttGttTC918Idx2G918IN55Pd6jMd9wN9tvHNtjFt5tLd94PN5qLtxzMdthFdpnGd1sMOCIQN16" +
    "H9pcEt19It18M9xuHN+kMt+EO9xxFt51NtptGdxyHtlWEt95P95zNt1zN91yNttqFtx3G+CGTd2A" +
    "Jdx5Ht2ANNpWDtx4Hd+VON1+I9+PO9peEdtrGN+SPNpWEttfEt6dKuB/Q9pvHHhBJN+MNv///wAA" +
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5" +
    "BAAAAAAALAAAAAAOAAsAAAeOgGpfa4QFhQRhH2RqaD8ODUFFNBMoDAEBPE0jF0JsbBRPnglABglG" +
    "WS4ICJ4GOp4KClMdJSFUFQeeBxyeVlULGSxSGyZlnjMxniAQMGZdAjaeGgKeGEgySktEPp4pYp4S" +
    "Qx5OXCtRnmlQnldjNT0kBCI5N0laYBFeOFhbRy9qLQNMdgxQccYCgBMAHqgJBAA7"

  var unsafe = window;
  try
  {
    unsafe = unsafeWindow
  }
  catch (e)
  {
  }

  var divCountColonies = document.getElementById ("countColonies");

  if (divCountColonies == null)
    return;

  var myAs = divCountColonies.parentNode.getElementsByTagName ("a");

  if (myAs.length < 2)
    return;

  var planetLinks = new Array ();
  var planetNames = new Array ();
  var planetCoords = new Array ();
  var activePlanet = -1;
  var j = 0;
  var onMoon = unsafe.resourceTickerMetal ["production"] <= 0;

  for (var i = 0; i < myAs.length; i++)
  {
       var thisA = myAs [i];
       if ((thisA.className.indexOf ("planetlink") > -1) ||
           (thisA.className.indexOf ("moonlink") > -1))
       {
           planetLinks.push (thisA);

           var mySpans = thisA.getElementsByTagName ("span");

           if (mySpans.length > 0)
           {
               planetNames.push (mySpans [0].textContent);
               planetCoords.push (mySpans [1].textContent);
           }
           else
           {
               var title = thisA.getAttribute ("title").replace (/\|<b>(.+)<\/b>/i, "$1");
               planetNames.push (title);
               planetCoords.push (planetCoords [planetCoords.length - 1]);
           }

           if ((thisA.className.indexOf ("active") > -1) && !onMoon)

                activePlanet = j;

           else if ( (thisA.className.indexOf ("moonlink") > -1) &&
                     (i > 0) &&
                     (myAs [i - 1].className.indexOf ("active") > -1) &&
                     onMoon)

                     activePlanet = j;
           j++;
       }
  }
  var numPlanets = planetLinks.length;

  if ((numPlanets < 2) || (activePlanet < 0))
    return;

  var myCenter = document.createElement ("center");

  function createButton (left)
  {
       var index = ((left) ? (activePlanet + numPlanets - 1) :
                             (activePlanet + 1)) % numPlanets;
       var myA = document.createElement ("a");
       var myImg = document.createElement ("img");

       //myImg.setAttribute ("src", "img/navigation/icon-" + ((left) ? "min" : "max") + "-small.gif");
       myImg.setAttribute ("src", (left) ? min : max);
       myImg.setAttribute ("width", 20);
       myA.appendChild (myImg);
       myA.href = planetLinks [index].href;
       myA.title = "" + planetNames [index] + " " + planetCoords [index];
       myA.className = "tipsStandard";

       return myA;
  }

  myCenter.appendChild (createButton (true));
  myCenter.appendChild (document.createTextNode (" "));
  myCenter.appendChild (createButton (false));

  divCountColonies.appendChild (myCenter);

//  if (numPlanets <= 5) document.getElementsByClassName("smallplanet")[0].setAttribute('style', 'position:relative;top:5px');
}


// version        0.08
// name           Compactador Batallas
// author         HoChiChaos
// date           2010-05-01
function CompactadorBatallas()
{
         if (document.location.href.indexOf("page=combatreport") < 0)
             return;

         if (!showCompactadorBatallas)
             return;

         //Cargamos colores y textos del CR y su config.
         LoadColoresCR(usarCRFriki);

         //Cargamos datos de naves y defensas
         LoadDatosFlota(usarCRFriki);

         function SAC() {
             var lstNombres = new Array();
             var lstFlotas = new Array();

             this.length = function() {
                  return lstNombres.length
             }

             this.getNombre = function(n) {
                  return lstNombres[n];
             }


             this.getFlotas = function(n) {
                  var ret = null;

                  if(isNaN(parseInt(n))) {
                     for(var i = 0; i < lstNombres.length; i++) {
                         if(lstNombres[i] == n) ret = lstFlotas[i];

                     }
                  }
                  else {
                        ret = lstFlotas[n];
                  }

                  return ret;
             }


             this.add = function (nombre, idFlota, unidades) {

                  var insertado = false;

                  for (var i = 0; i < lstNombres.length; i++) {
                       if(lstNombres[i] == nombre) {
                          insertado = true;

                          if(arguments.length == 3)
                             lstFlotas[i].add(idFlota, unidades);
                       }
                  }

                  if(!insertado) {
                     var pos = lstNombres.length;
                     lstNombres[pos] = nombre;
                     lstFlotas[pos] = new Flota();

                     if(arguments.length == 3)
                        lstFlotas[pos].add(idFlota, unidades);
                  }

             }

             this.addSupervivientes = function(s) {

                  for(var i = 0; i < s.length(); i++) {

                      var nombre = s.getNombre(i);

                      for(var j = 0; j < lstNombres.length; j++){

                          if(lstNombres[j] == nombre)
                             lstFlotas[j].addSupervivientes(s.getFlotas(i));

                      }
                  }
             }


             this.ordenar = function() {

                  for(var i = 0; i < lstNombres.length; i++) {
                      lstFlotas[i].ordenar();
                  }
             }


             this.getCostePerdidas = function(id) {

                  var ret = [0,0,0, 0]; // metal, cristal, deu, total

                  if(id == -1) {
                     for(var i = 0; i < lstNombres.length; i++) {

                         var coste = lstFlotas[i].getCostePerdidas();
                         ret[0] += coste[0];
                         ret[1] += coste[1];
                         ret[2] += coste[2];
                         ret[3] += coste[3];
                     }
                  }
                  else {
                        var coste = lstFlotas[id].getCostePerdidas();
                        ret[0] += coste[0];
                        ret[1] += coste[1];
                        ret[2] += coste[2];
                        ret[3] += coste[3];
                  }


                  return ret;
             }

         } //function SAC


         function Flota() {
             var idNombre = new Array();
             var nombre = new Array();
             var unidades = new Array();
             var perdidas = new Array();

             this.length = function () {
                  return idNombre.length;
             }

             this.getId = function(n) {
                  return idNombre[n];
             }

             this.getNombre = function(n) {

                  var id = idNombre[n]
                  var ret = id;

                  for(var i = 0; i < arrDatosFlota.length; i++) {
                      if(id == arrDatosFlota[i][0]) ret = arrDatosFlota[i][1];
                  }

                  return ret;
             }

             this.getUnidades = function(n) {
                  return unidades[n];
             }

             this.getPerdidas = function(n) {
                  return perdidas[n];
             }

             this.add = function(id, u) {

                  var insertado = false;

                  for(var i = 0; i < idNombre.length; i++) {

                      if(idNombre[i] == id) {
                         insertado = true;
                         unidades[i] += parseInt(u);
                         perdidas[i] += parseInt(u);
                      }
                  }

                  if(!insertado) {
                     var pos = idNombre.length;
                     idNombre[pos] = id;
                     nombre[pos] = '';
                     unidades[pos] = parseInt(u);
                     perdidas[pos] = parseInt(u);
                  }
             }

             this.addSupervivientes = function(f) {

                  for(var i = 0; i < f.length(); i++) {

                      for(var j = 0; j < idNombre.length; j++) {

                          if(idNombre[j] == f.getId(i)) {
                             perdidas[j] -= parseInt(f.getUnidades(i));
                          }
                      }
                  }
             }


             this.ordenar = function() {
                  var n_idNombre = new Array();
                  var n_nombre = new Array();
                  var n_unidades = new Array();
                  var n_perdidas = new Array();

                  var contador = 0;

                  for(var i = 0; i < arrDatosFlota.length; i++) {

                      for(var j = 0; j < idNombre.length; j++) {

                          if(idNombre[j] == arrDatosFlota[i][0]) {
                             n_idNombre[contador] = idNombre[j];
                             n_nombre[contador] = arrDatosFlota[i][1];
                             n_unidades[contador] = unidades[j];
                             n_perdidas[contador] = perdidas[j];
                             contador++;
                          }
                      }
                  }

                  idNombre = n_idNombre;
                  nombre = n_nombre;
                  unidades = n_unidades;
                  perdidas = n_perdidas;
             }

             this.getCostePerdidas = function() {

                  var ret = [0,0,0, 0];

                  for(var i = 0; i < idNombre.length; i++) {

                      for(var j = 0; j < arrDatosFlota.length; j++) {

                          if (idNombre[i] == arrDatosFlota[j][0]) {
                              ret[0] += (perdidas[i] * arrDatosFlota[j][2]);
                              ret[1] += (perdidas[i] * arrDatosFlota[j][3]);
                              ret[2] += (perdidas[i] * arrDatosFlota[j][4]);
                              ret[3] += ((perdidas[i] * arrDatosFlota[j][2]) +
                                         (perdidas[i] * arrDatosFlota[j][3]) +
                                         (perdidas[i] * arrDatosFlota[j][4]));
                          }
                      }
                  }

                  return ret;
             }
         } //function Flota


         function getElementsByClass(searchClass,node,tag) {

             var classElements = new Array();

             if (node == null)
                 node = document;

             if (tag == null)
                 tag = '*';

             var els = node.getElementsByTagName(tag);
             var elsLen = els.length;

             for (var i = 0, j = 0; i < elsLen; i++) {

                  var sep = els[i].className.split(" ");
                  var content = false;

                  for( var k = 0; k < sep.length; k++){

                       if(sep[k] == searchClass)
                          content = true;
                  }

                  if (els[i].className == searchClass || content) {
                      classElements[j] = els[i];
                      j++;
                  }
             }

             return classElements;
         } //function getElementsByClass

         function mostrarNumero(num) {

             var negativo = false;

             if(parseInt(num) < 0) {
                num = parseInt(num)*-1;
                negativo = true;
             }

             var nNmb = String(parseInt(num));
             var sRes = "";

             for (var j = 0, i = nNmb.length - 1; i >= 0; i--, j++)
                  sRes = nNmb.charAt(i) +
                         ((j > 0) && (j % 3 == 0)? ".": "") +
                         sRes;

             if(negativo) sRes = '-' + sRes;

             return sRes;
         } //function mostrarNumero

         function N(num) {

             var ret = new Array();

             if(typeof num == 'object') {

                for(var i = 0; i < num.length; i++) {

                    ret[i] = mostrarNumero(num[i]);
                }

                return ret;
             }
             else {
                return mostrarNumero(num);
             }
         }//function N

         function codificar(patron, tipo) {

             var marcas = new Array();
             var txt_firma = LANG.txtCRAuto + ' LPuNKTKit [' + VERSION_LPUNKTKIT + ']{NL}';

             switch (tipo) {
             case "MESSAGES":
                        marcas = [
                            [/{B}/gi, '[B]'],
                            [/{\/B}/gi, '[/B]'],
                            [/{I}/gi, '[I]'],
                            [/{\/I}/gi, '[/I]'],
                            [/{NL}/gi, '\n'],
                            [/{CENTER}/gi, '[CENTER]'],
                            [/{\/CENTER}/gi, '[/CENTER]'],
                            [/{SIZE_PEQ}/gi, '[SIZE=9]'],
                            [/{SIZE_MED}/gi, '[SIZE=14]'],
                            [/{SIZE_GRA}/gi, '[SIZE=18]'],
                            [/{\/SIZE}/gi, '[/SIZE]'],
                            [/{\/COLOR_T}/gi, ''],
                            [/{\/COLOR_O}/gi, ''],
                            [/{\/COLOR}/gi, '[/COLOR]']
                          ];

                          patron = patron.replace(/{ENLACE_SCRIPT}/gi,
                                                  '[URL=' + URL_SCRIPT + ']' +
                                                  '[COLOR=lime]' + txt_firma + '[/COLOR][/URL]');

                          patron = patron.replace(/{COLOR_T1}/gi,'');
                          patron = patron.replace(/{COLOR_A1}/gi, '[COLOR=#00FF40]');
                          patron = patron.replace(/{COLOR_A2}/gi, '[COLOR=#00DDDD]');
                          patron = patron.replace(/{COLOR_D1}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_D2}/gi, '[COLOR=#00DDDD]');
                          patron = patron.replace(/{COLOR_R1}/gi, '[COLOR=#F0EC64]');
                          patron = patron.replace(/{COLOR_R2}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_R4}/gi, '[COLOR=#F0EC64]');
                          patron = patron.replace(/{COLOR_R3}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_RA1}/gi, '[COLOR=#00FF40]');
                          patron = patron.replace(/{COLOR_RAM1}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_RAC1}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_RAD1}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_RA2}/gi, '[COLOR=#00DDDD]');
                          patron = patron.replace(/{COLOR_RAM2}/gi, '[COLOR=#00DDDD]');
                          patron = patron.replace(/{COLOR_RAC2}/gi, '[COLOR=#00DDDD]');
                          patron = patron.replace(/{COLOR_RAD2}/gi, '[COLOR=#00DDDD]');
                          patron = patron.replace(/{COLOR_RD}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_RDM}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_RDC}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_RDD}/gi, '[COLOR=#ED7010]');
                          patron = patron.replace(/{COLOR_L}/gi, '[COLOR=#F0EC64]');
                          patron = patron.replace(/{COLOR_IN}/gi, '');

                          break;

             case "HTML":
                         marcas = [
                            [/{B}/gi, '<b>'],
                            [/{\/B}/gi, '</b>'],
                            [/{I}/gi, '<i>'],
                            [/{\/I}/gi, '</i>'],
                            [/{NL}/gi, '<br>\n'],
                            [/{CENTER}/gi, '<center>'],
                            [/{\/CENTER}/gi, '</center>'],
                            [/{SIZE_PEQ}/gi, '<font style="font-size:8pt;">'],
                            [/{SIZE_MED}/gi, '<font style="font-size:14pt;">'],
                            [/{SIZE_GRA}/gi, '<font style="font-size:18pt;">'],
                            [/{\/SIZE}/gi, '</font>'],
                            [/{\/COLOR_T}/gi, '</font>'],
                            [/{\/COLOR_O}/gi, '</font>'],
                            [/{\/COLOR}/gi, '</font>']
                         ];

                         patron = '{CENTER}' +  patron + '{/CENTER}';

                         patron = patron.replace(/{ENLACE_SCRIPT}/gi,
                                                 '<a href="' + URL_SCRIPT + '">' +
                                                 '<font color="' + strColor_LPuNKTKit + '">' +
                                                 txt_firma + '</font></a>');

                         for(var i = 0; i < arrColorBatalla.length; i++)
                             patron = patron.replace(arrColorBatalla[i][0],
                                                     '<font color="' + arrColorBatalla[i][1] + '">');

                         break;

             case "OGame":
                          marcas = [
                            [/{B}/gi, '[B]'],
                            [/{\/B}/gi, '[/B]'],
                            [/{I}/gi, '[I]'],
                            [/{\/I}/gi, '[/I]'],
                            [/{NL}/gi, '\n'],
                            [/{CENTER}/gi, '[CENTER]'],
                            [/{\/CENTER}/gi, '[/CENTER]'],
                            [/{SIZE_PEQ}/gi, '[SIZE=10]'],
                            [/{SIZE_MED}/gi, '[SIZE=14]'],
                            [/{SIZE_GRA}/gi, '[SIZE=18]'],
                            [/{\/SIZE}/gi, '[/SIZE]'],
                            [/{\/COLOR_T}/gi, '[/COLOR]'],
                            [/{\/COLOR_O}/gi, '[/COLOR]'],
                            [/{\/COLOR}/gi, '[/COLOR]']
                          ];

                          patron = '{CENTER}' +  patron + '{/CENTER}';

                          patron = patron.replace(/{ENLACE_SCRIPT}/gi,
                                                  '[URL="' + URL_SCRIPT + '"]' +
                                                  '[COLOR="' + strColor_LPuNKTKit + '"]' +
                                                  txt_firma + '[/COLOR][/URL]');

                          for(var i = 0; i < arrColorBatalla.length; i++)
                              patron = patron.replace(arrColorBatalla[i][0],
                                                      '[COLOR="' + arrColorBatalla[i][1] + '"]');

                          break;

             case "phpBB":
                          marcas = [
                            [/{B}/gi, '[B]'],
                            [/{\/B}/gi, '[/B]'],
                            [/{I}/gi, '[I]'],
                            [/{\/I}/gi, '[/I]'],
                            [/{NL}/gi, '\n'],
                            [/{CENTER}/gi, '[CENTER]'],
                            [/{\/CENTER}/gi, '[/CENTER]'],
                            [/{SIZE_PEQ}/gi, '[SIZE=9]'],
                            [/{SIZE_MED}/gi, '[SIZE=14]'],
                            [/{SIZE_GRA}/gi, '[SIZE=18]'],
                            [/{\/SIZE}/gi, '[/SIZE]'],
                            [/{\/COLOR_T}/gi, '[/COLOR]'],
                            [/{\/COLOR_O}/gi, '[/COLOR]'],
                            [/{\/COLOR}/gi, '[/COLOR]']
                          ];

                          patron = '{CENTER}' +  patron + '{/CENTER}';

                          patron = patron.replace(/{ENLACE_SCRIPT}/gi,
                                                  '[URL=' + URL_SCRIPT + ']' +
                                                  '[COLOR=' + strColor_LPuNKTKit +
                                                  ']' + txt_firma + '[/COLOR][/URL]');

                          for(var i = 0; i < arrColorBatalla.length; i++)
                              patron = patron.replace(arrColorBatalla[i][0],
                                                      '[COLOR=' + arrColorBatalla[i][1] + ']');

                          break;

             case "phpBB3":
                           marcas = [
                             [/{B}/gi, '[b]'],
                             [/{\/B}/gi, '[/b]'],
                             [/{I}/gi, '[i]'],
                             [/{\/I}/gi, '[/i]'],
                             [/{NL}/gi, '\n'],
                             [/{CENTER}/gi, '[center]'],
                             [/{\/CENTER}/gi, '[/center]'],
                             [/{SIZE_PEQ}/gi, '[size=90]'],
                             [/{SIZE_MED}/gi, '[size=140]'],
                             [/{SIZE_GRA}/gi, '[size=180]'],
                             [/{\/SIZE}/gi, '[/size]'],
                             [/{\/COLOR_T}/gi, '[/color]'],
                             [/{\/COLOR_O}/gi, '[/color]'],
                             [/{\/COLOR}/gi, '[/color]']
                           ];

                           patron = '{CENTER}' +  patron + '{/CENTER}';

                           patron = patron.replace(/{ENLACE_SCRIPT}/gi,
                                                   '[URL=' + URL_SCRIPT + ']' +
                                                   '[COLOR=' + strColor_LPuNKTKit +
                                                   ']' + txt_firma + '[/COLOR][/URL]');

                           for(var i = 0; i < arrColorBatalla.length; i++)
                               patron = patron.replace(arrColorBatalla[i][0],
                                                       '[COLOR=' + arrColorBatalla[i][1] + ']');

                           break;
             }

             for(var i = 0; i < marcas.length; i++)
                 patron = patron.replace(marcas[i][0],marcas[i][1]);


             return patron;
         } //function codificar

         function getLuna() {
             var salida = "";
             var ret = new Array();
             var cresult = document.getElementById('combat_result');
             var str_luna = getElementsByClass('action',cresult)[1].innerHTML.split('<br>');

             if(str_luna.length >= 5) {
                salida =  str_luna[3].replace(/(^s*)|(s*$)/g,"");
             }

             if(str_luna.length == 6) {
                salida += '{NL}' + str_luna[4].replace(/(^s*)|(s*$)/g,"");
             }

             return salida;
         } //function getLuna

         function getEscombros() {
             var ret = new Array();
             var cresult = document.getElementById('combat_result');
             var str_escombros = getElementsByClass('action',
                                 cresult)[1].innerHTML.split('<br>')[2];
             ret[0] = parseInt(str_escombros.split(LANG.txtCRAnd)[0].replace(/\D/g,''));
             ret[1] = parseInt(str_escombros.split(LANG.txtCRAnd)[1].replace(/\D/g,''));
             ret[2] = parseInt(ret[0]) + parseInt(ret[1]);

             return ret;
         } //function getEscombros

         function getCaptura() {
             var ret = [0, 0, 0, 0];

             if(getMensajeConclusion().indexOf(LANG.txtCRAttacker.toLowerCase()) != -1) {
                var cresult = document.getElementById('combat_result');
                var str_captura = getElementsByClass('action',cresult)[0].innerHTML;
                var str_metal = str_captura.substring(str_captura.indexOf(LANG.txtCRCaptured),
                                                      str_captura.toLowerCase().indexOf(LANG.metal.toLowerCase()));
                var str_cristal = str_captura.substring(str_captura.indexOf(','),
                                                        str_captura.toLowerCase().indexOf(LANG.cristal.toLowerCase()));
                var str_deu = str_captura.substring(str_captura.indexOf(LANG.txtCRAnd),
                                                    str_captura.toLowerCase().indexOf(LANG.deuterio.toLowerCase()));

                if(str_metal.length == 0) str_metal = '0';
                if(str_cristal.length == 0) str_cristal = '0';
                if(str_deu.length == 0) str_deu = "0";

                ret[0] = parseInt(str_metal.replace(/\D/g,''));
                ret[1] = parseInt(str_cristal.replace(/\D/g,''));
                ret[2] = parseInt(str_deu.replace(/\D/g,''));
                ret[3] = parseInt(ret[0]) + parseInt(ret[1]) + parseInt(ret[2]);
             }

             return ret;
         } //function getCaptura


         function getFecha() {

             var listaMes = [
                               LANG.txtEnero,
                               LANG.txtFebrero,
                               LANG.txtMarzo,
                               LANG.txtAbril,
                               LANG.txtMayo,
                               LANG.txtJunio,
                               LANG.txtJulio,
                               LANG.txtAgosto,
                               LANG.txtSeptiembre,
                               LANG.txtOctubre,
                               LANG.txtNoviembre,
                               LANG.txtDiciembre
                            ];

             var strFecha = getElementsByClass("start")[0].innerHTML;
                 strFecha = strFecha.substring(strFecha.indexOf('(')+1,
                                               strFecha.indexOf(')'));

             var fecha = strFecha.split(" ")[0];
             var hora = strFecha.split(" ")[1];

             var dia = fecha.split(".")[0];
             var mes = fecha.split(".")[1];
             var anyo = fecha.split(".")[2];

             return (dia + ' ' + LANG.txtCRDe + ' ' + listaMes[parseInt(mes)-1] +
                     ' ' + LANG.txtCRDe + ' ' + anyo);

         }//function getFecha

         function getMensajeConclusion() {
             var ret = '';
             var cresult = document.getElementById('combat_result');
             var str = getElementsByClass('action',cresult)[0].innerHTML;

             if(str.indexOf(LANG.txtCRAttacker.toLowerCase()) != -1)
                ret = LANG.txtCRAttWin;

             if(str.indexOf(LANG.txtCRDefender.toLowerCase()) != -1)
                ret = LANG.txtCRDefWin;

             if(str.indexOf(LANG.txtCRDraw) != -1)
                ret = LANG.txtCREmpate;

             return ret;
         } //function getMensajeConclusion

         function calcularRecicladores(escombros) {
             var ret = 0;

             if(escombros > 0) ret = (parseInt(escombros)/20000)+1;

             return ret;
         } //function calcularRecicladores

         function getNumRondas() {
             return getElementsByClass("combat_round").length-1;

         } //function getNumRondas


         function getCuadrosBBCode(patron) {

             var html = "";

             // cuadros de texto
             html += '<table cellspacing="0" cellpadding="0">';
             html += '<tr><td>';

             // foro ogame
             html += '<b><font color=' + strColor_LPuNKTKit +
                     '>' + LANG.txtCRForo + ' OGame:</font></b><br>';
             html += '<textarea id="txtBB" name="txtBB" style="background-color:' +
                     '#1F273C;width:200px;height:100px;border: 2px solid ' +
                     '#FFFFFF;color:#FFFFFF" onFocus="javascript:this.select()">';

             html += codificar(patron, "OGame");
             html += '</textarea><br><br>';
             html += '</td><td>';

             // foro phpBB
             html += '<b><font color=' + strColor_LPuNKTKit +
                     '>' + LANG.txtCRForo + ' phpBB:</font></b><br>';
             html += '<textarea id="txtBB" name="txt_phpBB" style="background-' +
                     'color:#1F273C;width:200px;height:100px;border: 2px solid ' +
                     '#FFFFFF;color:#FFFFFF" onFocus="javascript:this.select()">';
             html += codificar(patron, "phpBB");
             html += '</textarea><br><br>';
             html += '</td></tr><tr><td>';

             // foro phpBB3
             html += '<b><font color=' + strColor_LPuNKTKit +
                     '>' + LANG.txtCRForo + ' phpBB 3:</font></b><br>';
             html += '<textarea id="txtBB" name="txt_phpBB" style="background-' +
                     'color:#1F273C;width:200px;height:100px;border: 2px solid ' +
                     '#FFFFFF;color:#FFFFFF" onFocus="javascript:this.select()">';
             html += codificar(patron, "phpBB3");
             html += '</textarea><br><br>';
             html += '</td><td>'

             // html
             html += '<b><font color=' + strColor_LPuNKTKit +
                     '>HTML:</font></b><br>';
             html += '<textarea id="txtBB" name="txt_phpBB" style="background-' +
                     'color:#1F273C;width:200px;height:100px;border: 2px solid ' +
                     '#FFFFFF;color:#FFFFFF" onFocus="javascript:this.select()">';
             html += codificar(patron, "HTML");
             html += '</textarea><br><br>';
             html += '</td></tr>';


             // messages
             html += '<td colspan=2>' +
                     '<b><font color=' + strColor_LPuNKTKit + '>MESSAGES:</font></b><br>';
             html += '<textarea id="txtBB" name="txt_phpBB" style="background-' +
                     'color:#1F273C;width:400px;height:100px;border: 2px solid ' +
                     '#FFFFFF;color:#FFFFFF" onFocus="javascript:this.select()">';
             html += codificar(patron, "MESSAGES");
             html += '</textarea><br><br>';
             html += '</td></tr></table>';

             return html;

         } //function getCuadrosBBCode

         function getColumnas(tabla){
             return tabla.rows[0].cells.length;
         }

         function getFilas(tabla){
            return tabla.rows.length;
         }

         function getContenido(tabla, fila, col)
         {
             var rowElem = tabla.rows[fila];
             var tdValue = rowElem.cells[col].innerHTML;

             return tdValue;
         }

         function getFlotas(numRonda, ataque) {
             var ret = new SAC();

             var cround = getElementsByClass("combat_round");
             var maxRondas = cround.length-1;


             if(ronda > maxRondas) return 0 // excede el num de rondas

             // ronda de ataque o defensa
             var idTipoBando = (ataque)? 'round_attacker':'round_defender';

             var ronda = cround[numRonda];

             var rondaBando = getElementsByClass(idTipoBando, ronda)[0];
             var newBack = getElementsByClass("newBack", rondaBando);

             for(var i = 0; i < newBack.length ; i++ ) {
                 var destroyed = getElementsByClass("destroyed", newBack[i])[0];
                 if(typeof destroyed != 'undefined') {
                     var nombre = destroyed.innerHTML;
                     nombre = nombre.replace(LANG.txtCRTheDefender + ' ', '');
                     nombre = nombre.replace(LANG.txtCRDestroyed, '');
                     ret.add(nombre);
                 }
                 else {

                     var nombre = getElementsByClass("name",
                                                     newBack[i])[0].firstChild.textContent;
                     var tabla = newBack[i].getElementsByTagName("TABLE")[0];

                     nombre = nombre.replace(LANG.txtCRAttacker + ' ', '');
                     nombre = nombre.replace(LANG.txtCRDefender + ' ', '');

                     for(var j = 1; j < getColumnas(tabla); j++) {
                         nave = getContenido(tabla, 0, j);
                         cantidad = getContenido(tabla, 1, j).replace(/\./gi, '');
                         ret.add(nombre, nave, cantidad);
                     }
                 }
             }


             return ret;
         } // function getFlotas

         function actualizar () {

             var codHTML = document.getElementById("codHTML");
             var txtBB = document.getElementById("txtBB");
             var txtInfo = document.getElementById("txtInfo");
             var tipoCodif = document.F1.lstBB.options[document.F1.lstBB.selectedIndex].value;

             txtInfo.innerHTML = 'C\u00f3digo ' + tipoCodif;

             codHTML.innerHTML = codificar(patron, "HTML", document.F1.centrado.checked);
             txtBB.value = codificar(patron, tipoCodif, document.F1.centrado.checked);

         } //function actualizar


         var patron = '';

         // atacantes
         var lstAtaq = getFlotas(0, true);
         var lstAtaq_final = getFlotas(getNumRondas(), true);
         lstAtaq.addSupervivientes(lstAtaq_final);

         // defensores
         var lstDef = getFlotas(0, false);
         var lstDef_final = getFlotas(getNumRondas(), false);
         lstDef.addSupervivientes(lstDef_final);

         lstAtaq.ordenar();
         lstDef.ordenar();

         var perdidasAtaq = lstAtaq.getCostePerdidas(-1);
         var perdidasDef = lstDef.getCostePerdidas(-1);
         var N_perdidasAtaq = N(perdidasAtaq);
         var N_perdidasDef = N(perdidasDef);

         patron = '';

         patron += '{COLOR_IN}{SIZE_PEQ}' + LANG.txtCRBattleDay + ' ' + getFecha() +
                   '{/SIZE}{/COLOR_O}{NL}{NL}';

         // ATACANTES
         patron += '{COLOR_T1}{B}{SIZE_MED}' + LANG.txtCRAttackers + ' (' + lstAtaq.length() +
                   '):{/SIZE}{/B}{/COLOR_T}{NL}{NL}';

         for(var i = 0; i < lstAtaq.length(); i++){
             patron += '{COLOR_A1}{B}{SIZE_MED}'+ lstAtaq.getNombre(i) +
                       '{/SIZE}{/B}{/COLOR}{NL}';

             for(var j = 0; j < lstAtaq.getFlotas(i).length(); j++) {

                 var nombre = lstAtaq.getFlotas(i).getNombre(j);
                 var unidades = N(lstAtaq.getFlotas(i).getUnidades(j));
                 var perdidas = N(lstAtaq.getFlotas(i).getPerdidas(j));
                 patron += nombre + " {COLOR_A1}" + unidades +
                           "{/COLOR} {COLOR_A2}" + LANG.txtCRLost + " " + perdidas +
                           "{/COLOR}{NL}";
             }

             patron += '{NL}';

             //if(lstAtaq.getCostePerdidas(i)[3] != 0) {
                var coste = N(lstAtaq.getCostePerdidas(i));
                patron += '{COLOR_T1}' + LANG.txtCRLoses + ':{/COLOR_T} {COLOR_R1} ' +
                          coste[3] + ' {/COLOR} {COLOR_IN}' + LANG.txtCRUnits +
                          '.{/COLOR_O}{NL}';

                if (usarCRFriki) {
                  patron += '({I}{COLOR_R2} ' + coste[0] +
                          ' {/COLOR} ' + LANG_FRIKI.metal + ',  {COLOR_R2} ' + coste[1] +
                          ' {/COLOR} ' + LANG_FRIKI.cristal + ', {COLOR_R2} ' + coste[2] +
                          ' {/COLOR} ' + LANG_FRIKI.deuterio + '{/I}){NL}{NL}';
                } else {
                  patron += '({I}{COLOR_R2} ' + coste[0] +
                          ' {/COLOR} ' + LANG.metal + ',  {COLOR_R2} ' + coste[1] +
                          ' {/COLOR} ' + LANG.cristal + ', {COLOR_R2} ' + coste[2] +
                          ' {/COLOR} ' + LANG.deuterio + '{/I}){NL}{NL}';
                }
             //}
         }

         patron += '{NL}';

         // DEFENSOR
         patron += '{COLOR_T1}{B}{SIZE_MED}' + LANG.txtCRDefenders + ' (' + lstDef.length() +
                   '):{/SIZE}{/B}{/COLOR_T} {NL}{NL}';

         for(var i = 0; i < lstDef.length(); i++){
             patron += '{COLOR_D1}{B}{SIZE_MED}'+ lstDef.getNombre(i) +
                       '{/SIZE}{/B}{/COLOR}{NL}';

             for(var j = 0; j < lstDef.getFlotas(i).length(); j++) {

                 var nombre = lstDef.getFlotas(i).getNombre(j);
                 var unidades = N(lstDef.getFlotas(i).getUnidades(j));
                 var perdidas = N(lstDef.getFlotas(i).getPerdidas(j));
                 patron += nombre + " {COLOR_D1} " +
                           unidades + " {/COLOR} {COLOR_D2}" + LANG.txtCRLost + " " +
                           perdidas +  "{/COLOR}{NL}";
             }

             if(lstDef.getFlotas(i).length() == 0) {
                patron += "{COLOR_D1}{I}" + LANG.txtCRWithoutDef + "{/I}{/COLOR}{NL}";
             }

             patron += '{NL}';

             //if(lstDef.getCostePerdidas(i)[3] != 0) {
                var coste = N(lstDef.getCostePerdidas(i));
                patron += '{COLOR_T1}' + LANG.txtCRLoses + ':{/COLOR_T} {COLOR_R1} ' +
                          coste[3] + ' {/COLOR} {COLOR_IN}' + LANG.txtCRUnits +
                          '.{/COLOR_O}{NL}';

                if (usarCRFriki) {
                   patron += '({I}{COLOR_R2} ' + coste[0] +
                          ' {/COLOR} {COLOR_IN}' + LANG_FRIKI.metal + ', {/COLOR_O}{COLOR_R2} ' +
                          coste[1] + ' {/COLOR} {COLOR_IN}' + LANG_FRIKI.cristal +
                          ', {/COLOR_O}{COLOR_R2} ' + coste[2] + ' {/COLOR} {COLOR_IN}' +
                          LANG_FRIKI.deuterio + '{/COLOR_O}{/I}){NL}{NL}';
                } else {
                   patron += '({I}{COLOR_R2} ' + coste[0] +
                          ' {/COLOR} {COLOR_IN}' + LANG.metal + ', {/COLOR_O}{COLOR_R2} ' +
                          coste[1] + ' {/COLOR} {COLOR_IN}' + LANG.cristal +
                          ', {/COLOR_O}{COLOR_R2} ' + coste[2] + ' {/COLOR} {COLOR_IN}' +
                          LANG.deuterio + '{/COLOR_O}{/I}){NL}{NL}';
                }
             //}
         }

         patron += '{NL}{SIZE_MED}{COLOR_T1}{B}' + getMensajeConclusion() +
                   '{/B}{/COLOR_T}{/SIZE}{NL}{NL}{NL}';

         // RESUMEN (robos, escombros, perdidas, rentabilidad...)

         var perdidasTotales = new Array();
             perdidasTotales[0] = (perdidasAtaq[0] + perdidasDef[0]);
             perdidasTotales[1] = (perdidasAtaq[1] + perdidasDef[1]);
             perdidasTotales[2] = (perdidasAtaq[2] + perdidasDef[2]);
             perdidasTotales[3] = (perdidasAtaq[0] + perdidasDef[0]) +
                                  (perdidasAtaq[1] + perdidasDef[1]) +
                                  (perdidasAtaq[2] + perdidasDef[2]);

         var N_perdidasTotales = N(perdidasTotales);

         var escombros = getEscombros();
         var N_escombros = N(escombros);

         var captura = getCaptura();
         var N_captura = N(captura);

         // RENTABILIDAD Y PORCENTAJE: ATACANTE CON RECICLAJE
         var renta_ataq_conReci = new Array();
             renta_ataq_conReci[0] = (-1*perdidasAtaq[0])+captura[0]+escombros[0];
             renta_ataq_conReci[1] = (-1*perdidasAtaq[1])+captura[1]+escombros[1];
             renta_ataq_conReci[2] = (-1*perdidasAtaq[2])+captura[2];
             renta_ataq_conReci[3] = (-1*perdidasAtaq[3])+captura[3]+escombros[2];

         var N_renta_ataq_conReci = N(renta_ataq_conReci);

         var p_renta_ataq_conReci = new Array();
             p_renta_ataq_conReci[3] = Math.floor((renta_ataq_conReci[3]/perdidasAtaq[3])*100);
             p_renta_ataq_conReci[0] = Math.floor((renta_ataq_conReci[0]/perdidasAtaq[0])*100);
             p_renta_ataq_conReci[1] = Math.floor((renta_ataq_conReci[1]/perdidasAtaq[1])*100);
             p_renta_ataq_conReci[2] = Math.floor((renta_ataq_conReci[2]/perdidasAtaq[2])*100);

         var p_renta_ataq_conReci = N(p_renta_ataq_conReci);

         // RENTABILIDAD Y PORCENTAJE: ATACANTE SIN RECICLAJE
         var renta_ataq_sinReci = new Array();
             renta_ataq_sinReci[0] = (-1*perdidasAtaq[0])+captura[0];
             renta_ataq_sinReci[1] = (-1*perdidasAtaq[1])+captura[1];
             renta_ataq_sinReci[2] = (-1*perdidasAtaq[2])+captura[2];
             renta_ataq_sinReci[3] = (-1*perdidasAtaq[3])+captura[3];

         var N_renta_ataq_sinReci = N(renta_ataq_sinReci);

         var p_renta_ataq_sinReci = new Array();
             p_renta_ataq_sinReci[3] = Math.floor((renta_ataq_sinReci[3]/perdidasAtaq[3])*100);
             p_renta_ataq_sinReci[0] = Math.floor((renta_ataq_sinReci[0]/perdidasAtaq[0])*100);
             p_renta_ataq_sinReci[1] = Math.floor((renta_ataq_sinReci[1]/perdidasAtaq[1])*100);
             p_renta_ataq_sinReci[2] = Math.floor((renta_ataq_sinReci[2]/perdidasAtaq[2])*100);
             p_renta_ataq_sinReci = N(p_renta_ataq_sinReci);

         // RENTABILIDAD Y PORCENTAJE: DEFENSOR CON RECICLAJE
         var renta_def_conReci = new Array();
             renta_def_conReci[0] = (-1*perdidasDef[0])+escombros[0];
             renta_def_conReci[1] = (-1*perdidasDef[1])+escombros[1];
             renta_def_conReci[2] = (-1*perdidasDef[2]);
             renta_def_conReci[3] = (-1*perdidasDef[3])+escombros[2];

         var N_renta_def_conReci = N(renta_def_conReci);

         var p_renta_def_conReci = new Array();
             p_renta_def_conReci[3] = Math.floor((renta_def_conReci[3]/perdidasDef[3])*100);
             p_renta_def_conReci[0] = Math.floor((renta_def_conReci[0]/perdidasDef[0])*100);
             p_renta_def_conReci[1] = Math.floor((renta_def_conReci[1]/perdidasDef[1])*100);
             p_renta_def_conReci[2] = Math.floor((renta_def_conReci[2]/perdidasDef[2])*100);

             p_renta_def_conReci = N(p_renta_def_conReci);

         if (usarCRFriki) {
            patron += '{B}{COLOR_T1}{SIZE_MED}' + LANG.txtCRStolen +
                   ':{/SIZE}{/COLOR_T}{/B}{NL}{NL}{COLOR_R4}{SIZE_MED} ' +
                   N_captura[0] + ' {/SIZE}{/COLOR}{COLOR_IN} ' + LANG_FRIKI.metal +
                   ', {/COLOR_O}{COLOR_R4}{SIZE_MED} ' + N_captura[1] +
                   ' {/SIZE}{/COLOR}{COLOR_IN} ' + LANG_FRIKI.cristal + ' ' +
                   LANG.txtCRAnd + ' {/COLOR_O}{COLOR_R4}{SIZE_MED} ' + N_captura[2] +
                   ' {/SIZE}{/COLOR}{COLOR_IN} ' + LANG_FRIKI.deuterio + '{/COLOR_O}{NL}{NL}{NL}';
         } else {
            patron += '{B}{COLOR_T1}{SIZE_MED}' + LANG.txtCRStolen +
                   ':{/SIZE}{/COLOR_T}{/B}{NL}{NL}{COLOR_R4}{SIZE_MED} ' +
                   N_captura[0] + ' {/SIZE}{/COLOR}{COLOR_IN} ' + LANG.metal +
                   ', {/COLOR_O}{COLOR_R4}{SIZE_MED} ' + N_captura[1] +
                   ' {/SIZE}{/COLOR}{COLOR_IN} ' + LANG.cristal + ' ' +
                   LANG.txtCRAnd + ' {/COLOR_O}{COLOR_R4}{SIZE_MED} ' + N_captura[2] +
                   ' {/SIZE}{/COLOR}{COLOR_IN} ' + LANG.deuterio + '{/COLOR_O}{NL}{NL}{NL}';
         }

         patron += '{COLOR_T1}{SIZE_MED}{B}' + LANG.txtCRLoses +
                   ': {/B}{/SIZE}{/COLOR_T}{NL}{NL}{COLOR_T1}' + LANG.txtCRAttFleet +
                   ':{/COLOR_T} {COLOR_A1}{SIZE_MED} ' + N_perdidasAtaq[3] +
                   ' {/SIZE}{/COLOR}{COLOR_IN} ' + LANG.txtCRUnits + '.{/COLOR_O}{NL}';

         patron += '{COLOR_T1}' + LANG.txtCRDefFleet + ':{/COLOR_T} {COLOR_D1}{SIZE_MED} ' +
                   N_perdidasDef[3] + ' {/SIZE}{/COLOR}{COLOR_IN} ' + LANG.txtCRUnits +
                   '.{/COLOR_O}{NL}{NL}';

         patron += '{COLOR_T1}' + LANG.txtCRTotLoses + ':{/COLOR_T} {B}{COLOR_R1}{SIZE_MED} ' +
                   N(perdidasTotales[3]) + ' {/SIZE}{/COLOR}{/B}{COLOR_IN} ' + LANG.txtCRUnits +
                   '.{/COLOR_O}{NL}{NL}{NL}';

         if (usarCRFriki) {
            patron += '{COLOR_T1}{SIZE_MED}{B}' + LANG.txtCRDebris + ': {/B}{/SIZE}{/COLOR_T}{NL}{NL}' +
                   '{COLOR_R3}{SIZE_GRA}{B} ' + N_escombros[0] +
                   ' {/B}{/SIZE}{/COLOR}{COLOR_IN} ' + LANG_FRIKI.metal + ' ' + LANG.txtCRAnd +
                   ' {/COLOR_O}{COLOR_R3}{SIZE_GRA}{B} ' + N_escombros[1] +
                   ' {/B}{/SIZE}{/COLOR}{COLOR_IN} ' + LANG_FRIKI.cristal + ' [ {/COLOR_O}{COLOR_R3} ' +
                   N(calcularRecicladores(escombros[2])) + " {/COLOR}{COLOR_IN} " +
                   LANG_FRIKI.txtCRRecys + " ]{/COLOR_O}{NL}";
         } else {
            patron += '{COLOR_T1}{SIZE_MED}{B}' + LANG.txtCRDebris + ': {/B}{/SIZE}{/COLOR_T}{NL}{NL}' +
                   '{COLOR_R3}{SIZE_GRA}{B} ' + N_escombros[0] +
                   ' {/B}{/SIZE}{/COLOR}{COLOR_IN} ' + LANG.metal + ' ' + LANG.txtCRAnd +
                   ' {/COLOR_O}{COLOR_R3}{SIZE_GRA}{B} ' + N_escombros[1] +
                   ' {/B}{/SIZE}{/COLOR}{COLOR_IN} ' + LANG.cristal + ' [ {/COLOR_O}{COLOR_R3} ' +
                   N(calcularRecicladores(escombros[2])) + " {/COLOR}{COLOR_IN} " +
                   LANG.txtCRRecys + " ]{/COLOR_O}{NL}";
         }

         patron += '{NL}{NL}';

         if(escombros[2] > 0) {
            patron += '{COLOR_T1}{SIZE_MED}{B}' + LANG.txtCRProfit +
                      ': {/B}{/SIZE}{/COLOR_T}{NL}{NL} {COLOR_T1}{B}' + LANG.txtCRAttHarvest +
                      '{/B}:{/COLOR_T} {COLOR_RA1}{B} ' + N_renta_ataq_conReci[3] + ' {/B} [' +
                      p_renta_ataq_conReci[3] + '%]{/COLOR}{NL}';

            if (usarCRFriki) {
              patron += '{COLOR_T1}' + LANG_FRIKI.metal + ':{/COLOR_T} {COLOR_RAM1} ' +
                      N_renta_ataq_conReci[0] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.cristal + ':{/COLOR_T} {COLOR_RAC1} ' +
                      N_renta_ataq_conReci[1] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.deuterio + ':{/COLOR_T} {COLOR_RAD1} ' +
                      N_renta_ataq_conReci[2] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}{NL}';

              patron += '{COLOR_T1}{B}' + LANG.txtCRAttNoHarvest +
                      '{/B}:{/COLOR_T} {COLOR_RA2}{B} ' + N_renta_ataq_sinReci[3] +
                      ' {/B} [' + p_renta_ataq_sinReci[3] + '%]{/COLOR}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.metal + ':{/COLOR_T} {COLOR_RAM2} ' +
                      N_renta_ataq_sinReci[0] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.cristal + ':{/COLOR_T} {COLOR_RAC2} ' +
                      N_renta_ataq_sinReci[1] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.deuterio + ':{/COLOR_T} {COLOR_RAD2} ' +
                      N_renta_ataq_sinReci[2] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}{NL}';

              patron += '{COLOR_T1}{B}' + LANG.txtCRDefHarvest + '{/B}:{/COLOR_T} {COLOR_RD}{B} ' +
                      N_renta_def_conReci[3] + ' {/B} [' + p_renta_def_conReci[3] +
                      '%]{/COLOR}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.metal + ':{/COLOR_T} {COLOR_RDM} ' +
                      N_renta_def_conReci[0] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.cristal + ':{/COLOR_T} {COLOR_RDC} ' +
                      N_renta_def_conReci[1] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.deuterio + ':{/COLOR_T} {COLOR_RDD} ' +
                      N_renta_def_conReci[2] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}{NL}';
            } else {
              patron += '{COLOR_T1}' + LANG.metal + ':{/COLOR_T} {COLOR_RAM1} ' +
                      N_renta_ataq_conReci[0] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG.cristal + ':{/COLOR_T} {COLOR_RAC1} ' +
                      N_renta_ataq_conReci[1] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG.deuterio + ':{/COLOR_T} {COLOR_RAD1} ' +
                      N_renta_ataq_conReci[2] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}{NL}';

              patron += '{COLOR_T1}{B}' + LANG.txtCRAttNoHarvest +
                      '{/B}:{/COLOR_T} {COLOR_RA2}{B} ' + N_renta_ataq_sinReci[3] +
                      ' {/B} [' + p_renta_ataq_sinReci[3] + '%]{/COLOR}{NL}';

              patron += '{COLOR_T1}' + LANG.metal + ':{/COLOR_T} {COLOR_RAM2} ' +
                      N_renta_ataq_sinReci[0] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG.cristal + ':{/COLOR_T} {COLOR_RAC2} ' +
                      N_renta_ataq_sinReci[1] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG.deuterio + ':{/COLOR_T} {COLOR_RAD2} ' +
                      N_renta_ataq_sinReci[2] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}{NL}';

              patron += '{COLOR_T1}{B}' + LANG.txtCRDefHarvest + '{/B}:{/COLOR_T} {COLOR_RD}{B} ' +
                      N_renta_def_conReci[3] + ' {/B} [' + p_renta_def_conReci[3] +
                      '%]{/COLOR}{NL}';

              patron += '{COLOR_T1}' + LANG.metal + ':{/COLOR_T} {COLOR_RDM} ' +
                      N_renta_def_conReci[0] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG.cristal + ':{/COLOR_T} {COLOR_RDC} ' +
                      N_renta_def_conReci[1] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG.deuterio + ':{/COLOR_T} {COLOR_RDD} ' +
                      N_renta_def_conReci[2] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}{NL}';
            }

         }
         else {
            patron += '{COLOR_T1}{SIZE_MED}{B}' + LANG.txtCRProfit +
                      '{/B}{/SIZE}{/COLOR_T}{NL}{NL}{COLOR_T1}{B}' +
                      LANG.txtCRAttackers + '{/B}:{/COLOR_T} {COLOR_RA1}{B} ' +
                      N_renta_ataq_sinReci[3] + ' {/B} [' +
                      p_renta_ataq_sinReci[3] + '%]{/COLOR}{NL}';

            if (usarCRFriki) {
              patron += '{COLOR_T1}' + LANG_FRIKI.metal + ':{/COLOR_T} {COLOR_RAM1} ' +
                      N_renta_ataq_sinReci[0] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.cristal + ':{/COLOR_T} {COLOR_RAC1} ' +
                      N_renta_ataq_sinReci[1] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG_FRIKI.deuterio + ':{/COLOR_T} {COLOR_RAD1} ' +
                      N_renta_ataq_sinReci[2] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}{NL}';

            } else {
              patron += '{COLOR_T1}' + LANG.metal + ':{/COLOR_T} {COLOR_RAM1} ' +
                      N_renta_ataq_sinReci[0] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG.cristal + ':{/COLOR_T} {COLOR_RAC1} ' +
                      N_renta_ataq_sinReci[1] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}';

              patron += '{COLOR_T1}' + LANG.deuterio + ':{/COLOR_T} {COLOR_RAD1} ' +
                      N_renta_ataq_sinReci[2] + ' {/COLOR}{COLOR_IN} ' +
                      LANG.txtCRUnits + '.{/COLOR_O}{NL}{NL}';
            }
         }

         // si rentabilidad = infinita, lo cambia por MAX
         patron = patron.replace(/infinity\%/gi, "Max.");
         patron = patron.replace(/NaN\%/gi, "Max.");
         patron = patron.replace(/NaN/gi, " 0 ");

         if(getLuna().length > 4)
            patron += '{NL}{COLOR_L}{SIZE_GRA}' + getLuna() + '{/SIZE}{/COLOR}{NL}';

         patron += '{NL}{SIZE_PEQ}{ENLACE_SCRIPT}{/SIZE}{NL}';


         // ****************************************************************
         // ***** PATRON MINI **********************************************

         var patronMini = "{COLOR_T1}{B}" + LANG.txtCRFarming + "{/B} [{/COLOR_T} {COLOR_A1}";

         for(var i = 0; i < lstAtaq.length(); i++){
             patronMini  += ''+ lstAtaq.getNombre(i) + '';
         }

         patronMini += '{/COLOR}{COLOR_T1} vs {/COLOR_T}{COLOR_D1}';

         for(var i = 0; i < lstDef.length(); i++){
             patronMini += ''+ lstDef.getNombre(i) + '{/COLOR}';
         }

         if (usarCRFriki) {
           patronMini += ' {COLOR_T1}]{NL}{B}' + LANG.txtCRAttProfit + ': {/B}{/COLOR_T} {COLOR_R4} ' +
                       N_renta_ataq_conReci[0] + ' {/COLOR}{COLOR_IN} ' + LANG_FRIKI.metal +
                       ', {/COLOR_O}{COLOR_R4}' + N_renta_ataq_conReci[1] +
                       '{/COLOR}{COLOR_IN} ' + LANG_FRIKI.cristal + ', {/COLOR_O}{COLOR_R4} ' +
                       N_renta_ataq_conReci[2] + ' {/COLOR}{COLOR_IN} ' +
                       LANG_FRIKI.deuterio + '{/COLOR_O}{NL}';
         } else {
           patronMini += ' {COLOR_T1}]{NL}{B}' + LANG.txtCRAttProfit + ': {/B}{/COLOR_T} {COLOR_R4} ' +
                       N_renta_ataq_conReci[0] + ' {/COLOR}{COLOR_IN} ' + LANG.metal +
                       ', {/COLOR_O}{COLOR_R4} ' + N_renta_ataq_conReci[1] +
                       ' {/COLOR}{COLOR_IN} ' + LANG.cristal + ', {/COLOR_O}{COLOR_R4} ' +
                       N_renta_ataq_conReci[2] + ' {/COLOR}{COLOR_IN} ' +
                       LANG.deuterio + '{/COLOR_O}{NL}';
         }

         patronMini = patronMini.replace(/NaN/gi, "0");
         // ****************************************************************
         // ***** MOSTRAR **************************************************

         var html = '';

         //cabecera
         html +=  '<div><table border="0" width="100%" style="">';
         html += '<tr><td height="30" bgcolor="#000000" style="border: 2px ' +
                 'solid #000000;">';
         html += '<p align="center"><font style="font-size:12pt;" color="' +
                 strColor_LPuNKTKit + '">';
         html += '<b>' + LANG.txtCRScript.toUpperCase() + '<br>' +
                 'LPuNKTKit ' + VERSION_LPUNKTKIT + '</b>';
         html += '</font></p></td></tr></table></div>';
         // ...
         html += '<div style="font-size:14px;font-family:Verdana,sans-serif;">';
         html +=  '<br><center><table border="0" width="90%" style="">';
         html += '<tr><td colspan="2" height="450" bgcolor="#1F273C" ' +
                 'style="border: 2px solid #FFFFFF;"><br><br>'
         html += '<div id="codHTML">' + codificar(patron, 'HTML') + '</div>';
         html += '</td></tr>';
         html += '<tr><td><br><center>';

         html += getCuadrosBBCode(patron);

         html += '</center></td></tr></table></center><br>';

         // patron mini
         //cabecera
         html += '<div><table border="0" width="100%" style="">';
         html += '<tr><td colspan="2" height="30" bgcolor="#000000" ' +
                 'style="border: 2px solid #000000;">';
         html += '<p align="center"><font style="font-size:12pt;" color="' +
                 strColor_LPuNKTKit + '">';
         html += '<b>' + LANG.txtCRMinimal + '<br>' +
                 'LPuNKTKit ' + VERSION_LPUNKTKIT + '</b>';
         html += '</font></p></td></tr></table></div>';

         html +=  '<br><center><table border="0" width="90%" style="">';
         html += '<tr><td colspan="2" height="100" bgcolor="#1F273C" ' +
                 'style="border: 2px solid #FFFFFF;"><br><br>'
         html += '<div id="codHTML">' + codificar(patronMini, 'HTML') + '</div>';
         html += '</td></tr>';
         html += '<tr><td><br><center>';

         html += getCuadrosBBCode(patronMini);

         html += '</center></td></tr></table></center><br>';

         html += '</div>';

         var compactador = document.createElement('div');
         var master = document.getElementById("master");

         compactador.innerHTML = html;
         master.insertBefore(compactador, master.firstChild);
}


// name           OGame Redesign: Fleet Empty Space
// description    Adds information about the available empty cargo space in the tooltip of every fleet on the fleet movement page.
// version        1.00
// date           2011-05-24
// author         Vesselin Bontchev
function EmptySpace()
{
  // The following "if" is not really necessary but with it this script will work for Opera too
  if ((document.location.href.indexOf ("/game/index.php?page=movement") < 0))
    return;

  if (!showEmptySpace) return;

  function addDots (n)
  {
    n += '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test (n))
      n = n.replace (rgx, '$1' + '.' + '$2');
    return n;
  }

  // SC, LC, LF, HF, CR, BS, CS, RC, BM, DR, DS, BC
  var shipCargoes = [5000, 25000, 50, 100, 800, 1500, 7500, 20000, 500, 2000, 1000000, 750];
  var shipNames = [LANG.npc, LANG.ngc, LANG.cl, LANG.cp, LANG.crucero,
                   LANG.nb, LANG.txtColonizador, LANG.reciclador, LANG.bombardero,
                   LANG.destructor, LANG.edlm, LANG.acorazado];
  var locaFreeSpace = LANG.txtEspacioLibre;

  var fleets = document.querySelectorAll ("table.fleetinfo");

  if ((fleets == null) || (fleets.length <= 0))
    return;

  var fleet, i, shipsInfo, shipName, shipNumber, cargoUsed, cargoTotal, emptySpace, myTds, myTr, myTd;

  for (var fleet = 0; fleet < fleets.length; fleet++)
  {
    shipsInfo = fleets [fleet].getElementsByTagName ("tr");

    if (shipsInfo == null)
      continue;

    if (shipsInfo.length < 7)
      continue;

    cargoUsed = 0;

    for (i = shipsInfo.length - 3; i < shipsInfo.length; i++)
    {
      myTds = shipsInfo [i].getElementsByTagName ("td");
      if ((myTds != null) && (myTds.length >= 2) && (myTds [1].className == "value"))
        cargoUsed += parseInt (myTds [1].textContent.replace (/\D+/g, ""));
    }

    cargoTotal = 0;

    for (var i = 1; i < shipsInfo.length - 5; i++)
    {
      myTds = shipsInfo [i].getElementsByTagName ("td");

      if ((myTds == null) && (myTds.length < 2) && (myTds [1].className != "value"))
        continue;

      var shipName   = myTds [0].textContent.replace (/:$/, "");
      var shipNumber = parseInt (myTds [1].textContent.replace (/\D+/g, ""));

      found = false;

      for (j = 0; j < shipNames.length; j++)
        if (shipName == shipNames [j])
        {
          found = true;
          break;
        }

      if (! found)
        continue;  // Unrecognized ship name or a ship that doesn't have cargo space

      cargoTotal += shipCargoes [j] * shipNumber;
    }

    emptySpace = cargoTotal - cargoUsed;
    myTr = document.createElement ("tr");
    myTd = document.createElement ("td");
    myTd.appendChild (document.createTextNode (locaFreeSpace + ":"));
    myTr.appendChild (myTd);
    myTd = document.createElement ("td");
    myTd.className = "value";
    var myFont = document.createElement ("font");
    myFont.color = colorEmptySpace;
    myFont.appendChild (document.createTextNode (addDots (emptySpace)));
    myTd.appendChild (myFont);
    myTr.appendChild (myTd);
    myTr.id = "freeSpace";
    fleets [fleet].getElementsByTagName ("tbody") [0].appendChild (myTr);
  }
}

// Description: Obtiene la produccion de energia del planeta, asi como la que
//              suministra cada satelite y el excedente de esta.
// Usado por MissingSats y CalculateTime
function getEnergy()
{
    // The following "if" is not really necessary but with it this script
    // will work for Opera too
    if ((document.location.href.indexOf ("/game/index.php?page=resources") == -1) &&
        (document.location.href.indexOf ("/game/index.php?page=shipyard")  == -1) &&
        (document.location.href.indexOf ("/game/index.php?page=research")  == -1) &&
        (document.location.href.indexOf ("/game/index.php?page=station")  == -1))
    return;

    if (((!showSatsBalance)     &&
         (!showSatsTerraformer) &&
         (!showSatsGraviton))   ||
        (!EsPlaneta()))
    return;

    var resourceBox = document.getElementById ("energy_box");
    if (resourceBox)
    {
        var resourceTitle = resourceBox.title;
        var myMatch;

        myMatch = resourceTitle.match (/<B>(.+)<\/B>[^\d]+([\d\-\.]+)[^\d]+\(([\d\.]+)\/([\d\.]+)/i);
        if (myMatch == null)
            myMatch = resourceTitle.match (/^(.+)\|[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)/i);

        energyProduced = parseInt (myMatch[3].replace (/\./g, ""));
    }

    var energyBalanceSpan = document.getElementById ("resources_energy");

    if (energyBalanceSpan == null)
      return;

    if ((paginaActual == 'resources') || (paginaActual == 'shipyard')) {

         energyBalance = parseInt (energyBalanceSpan.textContent.replace (/\./g, ""));

         if (energyBalance >= 0)
             return;
    }

    var activePlanets = document.getElementsByClassName ("planetlink active");

    if ((activePlanets == null) || (typeof (activePlanets) == "undefined"))
      return;

    if (activePlanets.length < 1)
    {
      activePlanets = document.getElementsByClassName ("planetlink");
      if (activePlanets.length != 1)
        return;
    }

    var theNumbers =  activePlanets [0].title.split (/[^\d.-]+/);

    if (theNumbers.length < 2)
      return;

    var maxTemp = parseInt (theNumbers [theNumbers.length - 2]);

    energyPerSat = Math.floor ((maxTemp + 120) / 6);
}


// name           OGame Redesign: Missing Sats
// description    Shows the number of Solar Sats that need to be built, in order
//                to make the energy balance positive.
// namespace      Vesselin
// version        1.05
// date           2010-10-11
function MissingSats()
{
  // The following "if" is not really necessary but with it this script will work for Opera too
  if ((document.location.href.indexOf ("/game/index.php?page=resources") == -1) &&
      (document.location.href.indexOf ("/game/index.php?page=shipyard")  == -1))
    return;

  if ((!showSatsBalance) ||
      (!EsPlaneta()))
  return;

  function showMissingSats ()
  {
    var theSpan = document.getElementById ("solarSatEnergyInfo");

    if (theSpan == null)
      return;

    var mySpan = document.getElementById ("missingSats");

    if (mySpan != null)
      return;

    getEnergy();

    var engineerBonus = 1.0;
    if (document.getElementById("officers").getElementsByTagName("a")[2].
                 getAttribute ("class").indexOf ("tipsTitle on") > -1)
      engineerBonus = 1.1;

    var satsNeeded = Math.ceil (Math.abs (energyBalance) / energyPerSat);// / engineerBonus);

    if (!satsNeeded) return;

    mySpan = document.createElement ("span");
    mySpan.setAttribute ("id", "missingSats");
    mySpan.style.color = strColor_LPuNKTKit;
    mySpan.style.fontWeight = "bold";
    mySpan.style.cursor = "pointer";
    mySpan.style.cursor = "hand";
    mySpan.appendChild (document.createTextNode (" (" + satsNeeded + " Sat.)"));
    mySpan.setAttribute ("onclick", "document.getElementById ('number').value = " + satsNeeded);
    theSpan.parentNode.appendChild (mySpan);
  }

  setInterval (showMissingSats, 500);
}


// name           OGame Redesign: Show Resource Details
// description    Shows the details of the top resource boxes near them
// version        1.03
// date           2011-10-21
// author         Vesselin Bontchev
function ResourcesInfo()
{
  var url = document.location.href;
  // The following "if" is not really necessary but with it this script will work for Opera too
  if ((url.indexOf ("/game/index.php?page=")                   < 0) ||
      (url.indexOf ("/game/index.php?page=search")            >= 0) ||
      (url.indexOf ("/game/index.php?page=logout")            >= 0) ||
      (url.indexOf ("/game/index.php?page=buddies")           >= 0) ||
      (url.indexOf ("/game/index.php?page=notices")           >= 0) ||
      (url.indexOf ("/game/index.php?page=payment")           >= 0) ||
      (url.indexOf ("/game/index.php?page=showmessage")       >= 0) ||
      (url.indexOf ("/game/index.php?page=traderlayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=searchLayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=rocketlayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=combatreport")      >= 0) ||
      (url.indexOf ("/game/index.php?page=globalTechtree")    >= 0) ||
      (url.indexOf ("/game/index.php?page=allianceBroadcast") >= 0))
    return;

  if ((!showResourcesInfo) ||
      (!EsPlaneta()))
  return;

  function showResInfo (resName)
  {
    var resourceBox = document.getElementById (resName + "_box");
    if (resourceBox == null)
      return;
    var resourceTitle = resourceBox.title;
    var myMatch;
    if (resName == "energy")
    {
      myMatch = resourceTitle.match (/<B>(.+)<\/B>[^\d]+([\d\-\.]+)[^\d]+\(([\d\.]+)\/([\d\.]+)/i);
      if (myMatch == null)
        myMatch = resourceTitle.match (/^(.+)\|[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)/i);
    }
    else
    {
      if (parseInt(getVersionOgame()[0]) == 3) {
          myMatch = resourceTitle.match (/<B>(.+)<\/B>[^\d]+([\d\.]+)\/([\d\.]+)[^\(]+(\([\+\-\.\d]+\))/i);
          if (myMatch == null)
          {
              myMatch = resourceTitle.match (/<B>(.+)<\/B>[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)/i);
              if (myMatch == null)
                  myMatch = resourceTitle.match (/^(.+)\|[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)/i);
          }
      }
      else {
          myMatch = resourceTitle.match (/<B>(.+)<\/B>[^\d]+([\d\.]+)\/([\d\.]+)[^\(]+(\([\+\-\.\d]+\))/i);
          if (myMatch == null)
          {
              myMatch = resourceTitle.match (/<B>(.+)<\/B>[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)/i);
              if (myMatch == null)
                  myMatch = resourceTitle.match (/^(.+)\|[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)/i);
          }
      }
    }
    if (myMatch == null)
      return;
    var myDiv = document.createElement ("div");
    myDiv.style.position = "absolute";
    myDiv.style.width = "45px";
    myDiv.style.margin = "-35px 0px 0px 53px";
    myDiv.style.fontSize = "9px";
    myB = document.createElement ("b");
    var resTitle = "";
    resTitle = myMatch [1];
    myB.appendChild (document.createTextNode (resTitle));  // Res_title
    myDiv.appendChild (myB);
    myDiv.appendChild (document.createElement ("br"));
    var mySpan = document.createElement ("span");

    if (resName == "energy") {
        mySpan.style.color = "#99CC00";
        mySpan.setAttribute("Id","energy_produced");
    }
    else
        mySpan.style.color = "rgb(153, 153, 153)";

    mySpan.appendChild (document.createTextNode (myMatch [3]));  // Res_storage
    myDiv.appendChild (mySpan);

    if ((resName != "energy") && (parseInt(getVersionOgame()[0]) == 3)) {
        myDiv.appendChild (document.createElement ("br"));
        mySpan = document.createElement ("span");

        mySpan.style.color = "#DAA520";
        mySpan.appendChild (document.createTextNode (myMatch [5]))  // Res_den
        myDiv.appendChild (mySpan);
    }

    myDiv.appendChild (document.createElement ("br"));
    mySpan = document.createElement ("span");
    mySpan.className = "undermark";

    if (resName=="energy") {
        mySpan.style.color = "crimson";
        mySpan.className = "";
    }

    mySpan.appendChild (document.createTextNode (myMatch [4]))  // Res_production
    myDiv.appendChild (mySpan);

    resourceBox.appendChild (myDiv);
  }
  showResInfo ("metal");
  showResInfo ("crystal");
  showResInfo ("deuterium");
  showResInfo ("energy");



}

// name           OGame Redesign: Point Board Link Really to the Forum
// description    Makes the "Board" link in the footer menu point really to the forum instead of to the useless portal.
// version        1.00
// date           2010-08-18
// author         Vesselin Bontchev
function ForumLink()
{
  // The following "if" is not really necessary but with it this script will
  // work for Opera too
  if ( (document.location.href.indexOf ("page=techinfo") >= 0) ||
       (document.location.href.indexOf ("page=globalTechtree") >= 0) ||
       (document.location.href.indexOf ("page=techtree") >= 0) ||
       (document.location.href.indexOf ("page=buddies") >= 0) ||
       (document.location.href.indexOf ("page=notices") >= 0) ||
       (document.location.href.indexOf ("page=combatreport") >= 0) ||
       (document.location.href.indexOf ("page=writemessage") >= 0) ||
       (document.location.href.indexOf ("page=search") >= 0))
    return;

  if (!fixForumLink) return;

  var footer = document.getElementById ("siteFooter");
  if (footer == null)
    return;
  myAs = footer.getElementsByTagName ("a");

  for (var i in myAs)
  {
    var theA = myAs [i];
    if (theA.href.indexOf ("http://board.") >= 0)
    {
      theA.href += "index.php?page=Index";
      break;
    }
  }
}


// name           OGame Redesign: Moons to the Right
// description    Makes the icon of the moon larger and to the right for easier clicking.
// version        1.05
// date           2011-10-20
// author         Vesselin Bontchev
function MoonsToRight()
{
  var url = document.location.href;

  // The following "if" is not really necessary but with it this script will work for Opera too
  if ((url.indexOf ("/game/index.php?page=")                   < 0) ||
      (url.indexOf ("/game/index.php?page=search")            >= 0) ||
      (url.indexOf ("/game/index.php?page=logout")            >= 0) ||
      (url.indexOf ("/game/index.php?page=buddies")           >= 0) ||
      (url.indexOf ("/game/index.php?page=notices")           >= 0) ||
      (url.indexOf ("/game/index.php?page=payment")           >= 0) ||
      (url.indexOf ("/game/index.php?page=showmessage")       >= 0) ||
      (url.indexOf ("/game/index.php?page=traderlayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=searchLayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=rocketlayer")       >= 0) ||
      (url.indexOf ("/game/index.php?page=combatreport")      >= 0) ||
      (url.indexOf ("/game/index.php?page=globalTechtree")    >= 0) ||
      (url.indexOf ("/game/index.php?page=allianceBroadcast") >= 0))
    return;

  if (!showMoonsRight) return;

  var moons = document.getElementsByClassName ("moonlink tips reloadTips");
  if (moons.length == 0)
    moons = document.getElementsByClassName ("moonlink tipsStandard");
  if (moons.length == 0)
    return;

  for (var i = 0; i < moons.length; i++)
  {
    var thisMoon = moons [i];
    thisMoon.style.left = ( $(".planetlink").length > 5 ? "115px" : "105px");
    thisMoon.style.top  = "10px";
    var img = thisMoon.getElementsByTagName ("img") [0];
    img.removeAttribute ("width");
    img.removeAttribute ("height");
    img.style.width  = "25px";
    img.style.height = "25px";
  }
  var wrenches = document.getElementsByClassName ("constructionIcon tips reloadTips");
  if (wrenches.length == 0)
    wrenches = document.getElementsByClassName ("constructionIcon tipsStandard");
  for (var i = 0; i < wrenches.length; i++)
  {
    var thisWrench = wrenches [i];
    thisWrench.style.left = "105px";
    thisWrench.style.top  =  "22px";
  }
  var alerts = document.getElementsByClassName ("alert tips reloadTips");
  if (alerts.length == 0)
    alerts = document.getElementsByClassName ("alert tipsStandard");
  for (var i = 0; i < alerts.length; i++)
  {
    var thisAlert = alerts [i];
    thisAlert.style.left = "132px";
    thisAlert.style.top  =   "0px";
  }
}


// name           OGame Redesign: Direct Colonization
// description    Removes the annoying prompt when trying to colonize without available planet slots.
// version        1.00
// date           2010-08-16
// author         Vesselin Bontchev
function QuitarAdvertencia()
{
  // The following "if" is not really necessary but with it this script will work for Opera too
  if (document.location.href.indexOf ("/game/index.php?page=fleet3") == -1)
    return;

  if (!removeAdv) return;

  var myScript = document.createElement ("script");
  myScript.setAttribute ("type", "text/javascript");
  myScript.setAttribute ("language", "javascript");
  myScript.text =
    "function trySubmit () " +
    "{ " +
      "if (validated) " +
        "document.sendForm.submit (); " +
    "}";
  document.body.appendChild (myScript);
}


// name           OGame Redesign: Coordinates Links Fix
// description    Fix the coordinates links.
// author         Vesselin Bontchev
// version        1.00
// date           2010-09-16
function LinkFixed()
{
        var url = document.location.href;

        if ((url.indexOf('showmessage') < 0) &&
            (url.indexOf('eventList') < 0) &&
            (url.indexOf('movement') < 0)) return;

        if (!showLinkFixed) return;

        var theAs, thisA, theHref, i;
        if (url.indexOf ("showmessage") >= 0)
        {
            var base = url.split ('?') [0];

            if (! base) return;

            theAs = document.getElementsByTagName ("a");
            for (i in theAs)
            {
                 thisA = theAs [i];
                 theHref = thisA.href;

                 if (!theHref) continue;

                 var coords = theHref.match (/showGalaxy\((\d{1,2}),\s*(\d{1,3}),\s*(\d{1,2})\)/i);

                 if (! coords) continue;

                 thisA.href = base + '?page=galaxy&galaxy=' + coords [1] +
                              '&system=' + coords [2] + '&position=' + coords [3] +
                              ( (parseInt(getVersionOgame()[0])==3) ? '' : '&' + getSession() );
            }
        }
        else if ((url.indexOf ("eventList") >= 0) ||
                 (url.indexOf ("movement")  >= 0))
        {
            theAs = document.getElementsByTagName ("a");

            for (i in theAs)
            {
                 thisA = theAs [i];
                 theHref = thisA.href;

                 if (!theHref) continue;

                 if ((theHref.indexOf ("galaxy=") >= 0) &&
                     (theHref.indexOf ("system=") >= 0) &&
                     (theHref.indexOf ("position=") < 0))

                     thisA.href += "&position=" + thisA.textContent.split (/[\[:\]]/) [3];
            }
        }
}


// name           OGame Redesign: Additional Resource Loading Buttons
// description    Buttons for "None" and "Reverse order" resource loading on the
//                3rd fleet dispatch page
// author         Vesselin
// version        1.03
// date           2011-10-19
function ResourceLoadButtons()
{
  // The following "if" is not really necessary but with it this script will
  // work for Opera too
  if (document.location.href.indexOf ("fleet3") == -1)
    return;

  if (!showLoadButtons) return;

  iconReverse = "data:image/gif;base64," +
    "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";

  function addEvent (el, evt, fxn)
  {
      if (el.addEventListener)
          el.addEventListener (evt, fxn, false) // for standards

      else if (el.attachEvent)
          el.attachEvent ("on" + evt, fxn) // for IE

      else el ['on' + evt] = fxn; // old style, but defeats purpose of using this function
  }

  var myDiv, myA, myImg;
  var theDiv = document.getElementById ("loadAllResources");
  var theMins = document.getElementsByClassName ("min");
  var myEvent = document.createEvent ("MouseEvents");

      myEvent.initMouseEvent ("click", true, true, window, 0, 0, 0, 0, 0,
                              false, false, false, false, 0, null);

  // Add a "load resources in reverse order" button
  myDiv = document.createElement ("div");
  myDiv.style.position = "relative";
  myDiv.style.top = "-128px";
  myDiv.style.left = "140px";
  myDiv.setAttribute('title', LANG.recInversos);

  myA = document.createElement ("a");
  myA.setAttribute ("href", "#");

  addEvent (myA, "click", function (e)
  {
      for (var i = 0; i < theMins.length; i++)
           theMins [i].dispatchEvent (myEvent);

      var theMaxes = document.getElementsByClassName ("max");

      for (var i = theMaxes.length; i >= 1 ; i--)
           theMaxes [i - 1].dispatchEvent (myEvent);
  });

  myImg = document.createElement ("img");
  myImg.setAttribute ("src", iconReverse);
  myA.appendChild (myImg);
  myDiv.appendChild (myA);
  theDiv.parentNode.insertBefore (myDiv, theDiv);

  /* Add a "unload all loaded resources" button */
  myDiv = document.createElement ("div");
  myDiv.className = "send_none";
  myDiv.style.position = "relative";
  myDiv.style.top = "-160px";
  myDiv.style.left = "-95px";
  myDiv.setAttribute('title', LANG.borrarSel);

  myA = document.createElement ("a");
  myA.className = "tipsStandard";
  myA.setAttribute ("href", "#");

  addEvent (myA, "click", function (e)
  {
      for (var i = 0; i < theMins.length; i++)
           theMins [i].dispatchEvent (myEvent);
  });

  myDiv.appendChild (myA);
  theDiv.parentNode.insertBefore (myDiv, theDiv);
}


// name           OGame Redesign: Options in User Name
// description    Links the user name in the top menu to the options and removes the Options item from the menu
// author         Vesselin
// version        1.02
// date           2011-10-19
function OgameOptionsInUserName()
{
   var url = document.location.href;

   // The following "if" is not really necessary but with it this script will work for Opera too
   if ((url.indexOf ("/game/index.php?page=") < 0) ||
       (url.indexOf ("search")                >= 0) ||
       (url.indexOf ("logout")                >= 0) ||
       (url.indexOf ("buddies")               >= 0) ||
       (url.indexOf ("notices")               >= 0) ||
       (url.indexOf ("payment")               >= 0) ||
       (url.indexOf ("showmessage")           >= 0) ||
       (url.indexOf ("traderlayer")           >= 0) ||
       (url.indexOf ("searchLayer")           >= 0) ||
       (url.indexOf ("rocketlayer")           >= 0) ||
       (url.indexOf ("combatreport")          >= 0) ||
       (url.indexOf ("globalTechtree")        >= 0) ||
       (url.indexOf ("allianceBroadcast")     >= 0))
       return;

   if (!showOptionsInUserName) return;

   function addEvent (el, evt, fxn)
   {
       if (el.addEventListener)
           el.addEventListener (evt, fxn, false) // for standards

       else if (el.attachEvent)
           el.attachEvent ("on" + evt, fxn) // for IE

       else el ['on' + evt] = fxn; // old style, but defeats purpose of using this function
   }

   var divBar = document.getElementById ("bar");
   var divPlayer = document.getElementById ("playerName");

   if ((divBar == null) || (divPlayer == null))
        return;

   var text;
   var href = "";
   var lis = divBar.getElementsByTagName ("li");

   for (var i = 0; i < lis.length; i++)
   {
        var myLi = lis [i];
        href = myLi.firstChild.href;

        if ((href != null) && (href.indexOf ("page=preferences") >= 0))
        {
             text = myLi.firstChild.textContent;
             myLi.parentNode.removeChild (myLi);

             break;
        }
   }

   if ((href == null) || (href == ""))
        return;

   divBar.style.position = "static";
   divPlayer.style.textAlign = "left";
   divPlayer.style.left = "0px";
   divPlayer.style.width = "150px";
   divPlayer.style.marginLeft = "20px";
   divPlayer.removeChild (divPlayer.firstChild);
   var span = divPlayer.firstChild;
   divPlayer.removeChild (span);

   var a = document.createElement ("a");
       a.setAttribute ("href", href);
       a.setAttribute ("title", text);
       a.style.textDecoration = "none";
       a.appendChild (span);

  var  img = document.createElement ("img");
       img.setAttribute ("src", "data:image/gif;base64," +
    "R0lGODlhEAAQAOZcACc1Q6rK4z5VbGB8mjpPZT5UbERigUFcekVjhExphUVkhENffj1Ycz1WcTxW" +
    "cj1WcEZfejxWcTtPZUVfeUNhgEpngkNhglx5lEBZckVkg0Fac0FadD1Ua5KxyjpOZENgfi9EWpWz" +
    "zI6tyHiWsERhgV55klVyjUVgeYGfuUxmgExohWF8mkZjg198mEllgFZyjURigJCux4qpxGR8k46s" +
    "xVp2kUVgeklnh0pmgUNdeX2ZsVRyk5i30XyatIalwYWjvZSzzIWivD1UbXiWsYmow2F9mk9qhJKy" +
    "zExphEBbeUJffWaEom6Mp1d0kI2rxoyrxYmowmB9mmSCn5m40T5VbT1Xc3GPqjxXc0plgFt6l0ph" +
    "d2B6kgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5" +
    "BAEAAFwALAAAAAAQABAAQAfFgFwAg4SFhYIPWAGLKQ0RRgE/DxENgxgbJVMaQQE0MQEdlxqDFAYG" +
    "WT4sJAFHBjClBoMeBLQSWjMStASzBIMuOBVWixcmi09AFxWDSQfNi8+LPM2DDAPWA0UDUQMr1ksM" +
    "gyACBQUC4+TlDAIggxzm5joBQlQhW+4CgxMQHdDPJ/o2BiFRkQBKgBYJEjR5xiTBIAc5UIxY9KLG" +
    "oh4OqlwZpGTBByIBnAwJIGKBDCkeB1lQgKBlBgU7bijIsBIBAEGGcg7iEggAOw==");

       img.setAttribute ("align", "absmiddle");
       img.style.opacity = "0.5";
       a.appendChild (img);

  addEvent (a, "mouseover", function () { this.lastChild.style.opacity = "1"; });
  addEvent (a, "mouseout",  function () { this.lastChild.style.opacity = "0.5"; });

  divPlayer.appendChild (a);
}


// name           OGame Redesign: Return Fleet Question
// description    Asks the user for confirmation before returning a fleet.
// version        1.01
// date           2011-08-31
// author         Vesselin Bontchev
function ReturnFleetQuestion()
{
  // The following "if" is not really necessary but with it this script will work for Opera too
  if (document.location.href.indexOf ("movement") < 0)
    return;

  if (!showReturnFleetQuestion) return;

  function getWord (id)
  {
     var decisionYes = document.getElementById (id);

     if (decisionYes == null)
         return "";

     var myOnClick = decisionYes.parentNode.getAttribute ("onclick");

     if (myOnClick == "")
         return "";

     var parts = myOnClick.split ("'");

     if (parts.length < 2)
         return "";

     return parts [1];
  }

  function addEvent (el, evt, fxn)
  {
     if (el.addEventListener)
         el.addEventListener (evt, fxn, false) // for standards

     else if (el.attachEvent)
         el.attachEvent ("on" + evt, fxn) // for IE

     else el ['on' + evt] = fxn; // old style, but defeats purpose of using this function
  }

  function myIndexOf (myArray, myElement)
  {
     if (myArray == null)
         return -1;

     for (var i = 0; i < myArray.length; i++)
          if (myArray [i] == myElement)
              return i;
     return -1;
  }

  function fixTheLink (flight, flightID, enabled)
  {
     var theAs = flight.getElementsByTagName ("a");

     if (theAs.length < 1)
         return;

     var myA = theAs [0];
     var url = document.location.href + "&return=" +
               flight.parentNode.getAttribute ("id").match (/(\d+)/) [1];

         myA.href = "#";
         myA.removeAttribute ("onclick");
         myA.setAttribute ("onclick", "cancelFlight ('" + url + "', '" +
                           questionTitle + "', '" + questionBody + "', " + enabled + ")");

         myA.style.textDecoration = "none";
         myA.getElementsByTagName ("img") [0].style.verticalAlign = "middle";

     var mySpan = document.createElement ("span");
         mySpan.setAttribute ("id", "qMark" + flightID);
         mySpan.style.color = strColor_LPuNKTKit;
         mySpan.style.fontWeight = "bold";
         mySpan.style.cursor = "hand";
         mySpan.style.cursor = "pointer";
         mySpan.style.opacity = (enabled) ? "1.0" : "0.6";
         mySpan.appendChild (document.createTextNode (" ?"));

    flight.appendChild (mySpan);

    addEvent (mySpan, "click", function ()
    {
       var enabled = (this.style.opacity == "1");

       if (enabled)
       {
           turnedOff.push (flightID);
           this.style.opacity = "0.6";
       }
       else
       {
           turnedOff.splice (turnedOff.indexOf (flightID), 1);
           this.style.opacity = "1.0";
       }

       var myA = this.parentNode.getElementsByTagName ("a") [0];
       var newOnClick = myA.getAttribute ("onclick")
                        .replace (/,\s+\w+\)/, ", " + ! enabled + ")");

           myA.removeAttribute ("onclick");
           myA.setAttribute ("onclick", newOnClick);

       localStorage.setItem ("returnFleetOffQs", JSON.stringify (turnedOff));
    });
  }

  if (! (typeof PRO_setValue == "function") &&
        ( !this.GM_getValue ||
          (this.GM_getValue.toString &&
           this.GM_getValue.toString ().indexOf ("not supported") > -1)))
  {
      this.GM_getValue = function (key, def)
      {
           return localStorage.getItem (key);
      }

      this.GM_setValue = function (key, value)
      {
           return localStorage.setItem (key, value);
      }

      this.GM_deleteValue = function (key)
      {
           return localStorage.deleteItem (key);
      }
  }

  var yesWord = getWord ("errorBoxDecisionYes");

  if (yesWord == "")
      return;

  var noWord  = getWord ("errorBoxDecisionNo");

  if (noWord == "")
      return;

  var myCode = "var theURL;\n" +
               "function cancelFlight (url, title, question, enabled)\n" +
               "{\n" +
                      "\ttheURL = url;\n" +
                      "\tif (enabled)\n" +
                             "\t\terrorBoxDecision (title, '' + question + '', '" +
                             yesWord + "', '" + noWord + "', returnFlightStart)\n" +
                      "\telse\n" +
                             "\t\twindow.location.replace (theURL);\n" +
               "}\n" +

               "function returnFlightStart ()\n" +
               "{\n" +
                      "\twindow.location.replace (theURL);\n" +
                      "\tcloseErrorBox ();\n" +
               "}\n";

  var myScript = document.createElement ("script");
      myScript.setAttribute ("type", "text/javascript");

  if (window.opera)
      myScript.innerText = myCode
  else
      myScript.innerHTML = myCode;

  document.body.appendChild (myScript);

  if (GM_getValue ("ReturnFleetQuestion"))
      GM_deleteValue ("ReturnFleetQuestion");

  var turnedOff = new Array ();
      turnedOff = JSON.parse (localStorage.getItem ("returnFleetOffQs"));

  if (turnedOff == null)
      turnedOff = [];

  var retFlights = document.querySelectorAll ("span.reversal");

  for (var i = 0; i < retFlights.length; i++)
  {
       var flight = retFlights [i];
       var flightID = flight.parentNode.id.match (/(\d+)/) [1];

       if (myIndexOf (turnedOff, flightID) >= 0)
           fixTheLink (flight, flightID, false)
       else
       {
           var questionTitle = flight.parentNode
               .querySelector ("span.originData span.originCoords a").textContent +
                               " => " + flight.parentNode.querySelector
                               ("span.destinationData span.destinationCoords a")
                               .textContent;

           var questionBody = LANG.txtCancelarViaje + "<br>";
           var tableCells = flight.parentNode.querySelectorAll
                            ("span.starStreak div.route div table.fleetinfo tr td");

           for (var j = 0; j < tableCells.length; j += 2)
           {
                if (tableCells [j].textContent.match (/^\s+$/))
                    break;

                questionBody += tableCells [j].textContent + " " + tableCells [j + 1]
                                .textContent.replace (/\s+/g, "") + ", ";
           }

           questionBody = questionBody.replace (/, $/, "");
           fixTheLink (flight, flightID, true);
       }
  }
}

// name  OGame Redesign: Merchant Warning
// description  Shows a warning if you're about to waste 2.500 DM for a Merchant
// version  1.00
// date        2010-08-17
// author      Vesselin Bontchev
function ConfirmTrader()
{
  // The following "if" is not really necessary but with it this script
  // will work for Opera too
  if (document.location.href.indexOf ("/game/index.php?page=trader") == -1)
    return;

  if (!showConfirmTrader) return;

  var buttonzDiv = document.getElementById ("buttonz");

  if (buttonzDiv == null)
    return;

  var mySpans = buttonzDiv.getElementsByTagName ("span");

  if (mySpans.length < 1)
    return;

  var lastSpan = mySpans [mySpans.length - 1];

  if (lastSpan.className != "crucial")
    return;

  var warningText = lastSpan.textContent + "!";
  var onClick;

  for (var i = 1; i <= 3; i++)
  {
    var myA = document.getElementById("imageRes_" + i);

    if (myA == null)
      continue;

    onClick = myA.getAttribute("onclick");
    myA.setAttribute("onclick", onClick.replace (/(callTrader\(\d\))/,
                                "if (confirm ('" + warningText + "')) $1"));
  }

  function fixPopUp ()
  {
    var myTable = document.getElementById ("merchanttable");

    if (myTable == null)
      return;

    var myAs = myTable.getElementsByTagName ("a");

    for (var i in myAs)
    {
      onClick = myAs[i].getAttribute("onclick");

      if ((onClick.indexOf ("callTrader") >= 0) && (onClick.indexOf ("confirm") < 0))
        myAs [i].setAttribute ("onclick", onClick.replace (/(callTrader\(\d\))/,
                                          "if (confirm ('" + warningText + "')) $1"));
    }
  }
  setInterval (fixPopUp, 500);
}

// name           OGame Redesign: Efficiency Tool
// description    Provides some useful efficiency information
// version        0.1
function Efficiency(){

    if (document.location.href.indexOf ("/game/index.php?page=station") == -1)
        return;

    if (!showEfficiency) return;

    // get an element via its class name | thx @ marshen for the code
    function getElementsByClass (cName, domNode) {
        if (cName == undefined || cName.length == 0) return;

        if (domNode == undefined) domNode = document;

        if (domNode.getElementsByClassName)
            return domNode.getElementsByClassName(cName);

        // browser doesn't support getElementsByClassName
        cName = " " + cName + " "; // add spaces here so that we won't find
                                   // class "a" in className == "abc"
        var elements = domNode.getElementsByTagName('*');
        var res = new Array();

        for (var i = 0; i < elements.length; i++) {
             var className = " " + elements[i].className + " ";

             if (className.indexOf(cName) > -1) res.push(elements[i]);
        }

        return res;
    }

    function getBuildingLevel(id) {

        var res = getElementsByClass('station' + id)[0];
            res = getElementsByClass('level', res)[0].innerHTML;
            res = res.match(/\d+/);

        return parseInt(res);
    }

    function oRound(value, dec) {
        var res = Math.round(value * Math.pow(10, dec)) / Math.pow(10, dec);

        return res;
    }

    function insertText(e) {

        if(e.target.id != 'content') return;

        var RLevel = getBuildingLevel(14);
        var RWLevel = getBuildingLevel(21);
        var NLevel = getBuildingLevel(15);

        var buildingId = getElementsByClass('detail_screen')[0];
            buildingId = buildingId.getElementsByTagName('input')[1].value;

        var timeReduction = '';

        if(buildingId == 14)
           timeReduction = (1 / (RLevel + 2)) / (1 / (RLevel + 1));

        if(buildingId == 15)
           timeReduction = 0.5;

        if(buildingId == 21)
           timeReduction = (1 / (RWLevel + 2)) / (1 / (RWLevel + 1));

        if(timeReduction != '') {
           timeReduction = oRound((1 - timeReduction) * 100, 2);

           var productionText = document.getElementById('action').getElementsByTagName('ul')[0];

           var buildTimeEff = document.createElement('li');
               buildTimeEff.innerHTML = LANG.txtEfficiency +
                                        ': <span class="time" style="color:' +
                                        strColor_LPuNKTKit + ';">' +
                                        timeReduction + '%</span>';

               productionText.appendChild(buildTimeEff);
        }
    }

    document.getElementById('planet').addEventListener('DOMNodeInserted', insertText, false);
}


// name           small planets
// namespace      marshen
// description    Makes the planets on the navigation to right smaller so that
//                more planets can be viewed on smaller resolutions.
function SmallPlanets() {
  if ( (location.href.indexOf('/game/index.php?page=overview') == -1) &&
       (location.href.indexOf('/game/index.php?page=resources') == -1) &&
       (location.href.indexOf('/game/index.php?page=resourceSettings') == -1) &&
       (location.href.indexOf('/game/index.php?page=station') == -1) &&
       (location.href.indexOf('/game/index.php?page=trader') == -1) &&
       (location.href.indexOf('/game/index.php?page=research') == -1) &&
       (location.href.indexOf('/game/index.php?page=shipyard') == -1) &&
       (location.href.indexOf('/game/index.php?page=defense') == -1) &&
       (location.href.indexOf('/game/index.php?page=fleet1') == -1) &&
       (location.href.indexOf('/game/index.php?page=fleet2') == -1) &&
       (location.href.indexOf('/game/index.php?page=fleet3') == -1) &&
       (location.href.indexOf('/game/index.php?page=movement') == -1) &&
       (location.href.indexOf('/game/index.php?page=galaxy') == -1) &&
       (location.href.indexOf('/game/index.php?page=alliance') == -1) &&
       (location.href.indexOf('/game/index.php?page=premium') == -1) &&
       (location.href.indexOf('/game/index.php?page=messages') == -1) &&
       (location.href.indexOf('/game/index.php?page=statistics') == -1) &&
       (location.href.indexOf('/game/index.php?page=preferences') == -1) &&
       (location.href.indexOf('/game/index.php?page=changelog') == -1)
    ) return;

  if (!showSmallPlanets) return;

  var borderImage = 'http://gf3.geo.gfsrv.net/13/5110ff22e6ab54a890c1243c9fabab.gif';
//  var borderImageBold = 'http://gf3.geo.gfsrv.net/70/347433264dea4c39f83d8ce78cdd0e.gif';
  var borderImageBold = "data:image/gif;base64,R0lGODlhkwA0APcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAACTADQAQAj/AFu1gkCwoMGDCBMqXMiwocOHECNKTChQ4MSLGDNq3MixYMWBHUOKHEnS4ceSKFOq1HhypcuXMA22jEmz5siZNnPqnIhzp8+fFCsCHUqUYM+iSGseTcrU5dKmUEs+jUq1Y0VTVbOSNCUQq9avHLm28gq27EWxZM2qfYh2rVuHbd/KTRh3rl2Cde/Ozav3Ld++a/8CNit4MNjChrVy5ZrYbStBgkA2Nvs48mS1lSVf/vqY8WawmT+DhqxZNNXQprN2Lp26KerWUV/Ddk16dmxBnm0zla27KO/eQ38D/7l6OFLhxnUiT25zOXOaxZ8Try3dp/PqTqljzxl9e3PIp7xzAxcUEAA7";

  var myPlanets = document.getElementById("myPlanets");

  var smallplanets = document.createElement('style');
      smallplanets.setAttribute('type', 'text/css');
      smallplanets.appendChild(document.createTextNode(
               "div#cutty " + (myPlanets ? "#myPlanets" : "#myWorlds") + " .smallplanet {height:38px;}" +
               "div#cutty " + (myPlanets ? "#myPlanets" : "#myWorlds") + " .smallplanet .planetPic{top:4px;}" +
               "div#cutty " + (myPlanets ? "#myPlanets" : "#myWorlds") + " .smallplanet a.moonlink{top:21px;}" +
               "div#cutty " + (myPlanets ? "#myPlanets" : "#myWorlds") + " .smallplanet:hover {" +
                   "background-image:url('" + borderImage + "'),url('" + borderImage + "');" +
                   "background-position:left top, left bottom;}" +
               "div#cutty " + (myPlanets ? "#myPlanets" : "#myWorlds") + " .smallplanet a.active, " +
               "#rechts #cutty " + (myPlanets ? "#myPlanets" : "#myWorlds") + " .smallplanet a.active:link{" +
                   "background-image:url('" + borderImageBold + "');" +
                   "background-position:left top;}"));

  document.getElementsByTagName('head')[0].appendChild(smallplanets);
}

/**********************************************************************
 *                            LENGUAJES                               *
 **********************************************************************/
var LANG_ES = {
  metal: 'Metal',
  cristal: 'Cristal',
  deuterio: 'Deuterio',
  energia: 'Energ\u00A1a',
  almMetalLleno: 'Alm. de metal lleno en: ',
  almCristalLleno: 'Alm. de cristal lleno en: ',
  almDeuterioLleno: 'Alm. de deut. lleno en: ',
  prod321: 'Producci\u00f3n seg\u00fan ratio 3:2:1',
  prodActual: 'Prod. Actual',
  prodIdeal: 'Prod. Ideal',
  infinito: 'Infinito',
  guardar: 'Guardar',
  lenguaje: 'Lenguaje',
  showFleetResources: 'Mostrar recursos en viaje',
  minEscombros: 'Tama\u00F1o min. escombros',
  tiempoTotal: 'Tiempo total',
  flota: 'Flota',
  sonda: 'Sonda de espionaje',
  satelite: 'Sat\u00e9lite Solar',
  npc: 'Nave peque\u00f1a de carga',
  ngc: 'Nave grande de carga',
  reciclador: 'Reciclador',
  cl: 'Caza ligero',
  cp: 'Caza pesado',
  crucero: 'Crucero',
  nb: 'Nave de batalla',
  acorazado: 'Acorazado',
  bombardero: 'Bombardero',
  destructor: 'Destructor',
  edlm: 'Estrella de la Muerte',
  defensa: 'Defensas',
  lanza: 'Lanzamisiles',
  laserp: 'L\u00e1ser peque\u00f1o',
  laserg: 'L\u00e1ser grande',
  gauss: 'Ca\u00f1\u00f3n gauss',
  ionico: 'Ca\u00f1\u00f3n i\u00f3nico',
  plasma: 'Ca\u00f1\u00f3n de plasma',
  mInterplanet: 'Misiles Interplanetarios',
  mIntercep: 'Misiles de intercepci\u00f3n',
  metSobrante: 'Metal sobrante',
  criSobrante: 'Cristal sobrante',
  deuSobrante: 'Deuterio sobrante',
  porDia: 'Al d\u00eda',
  reciclar: 'Reciclar',
  imperio: 'Imperio',
  recursos: 'Recursos',
  produccion: 'Producci\u00f3n',
  total: 'Total',
  planeta: 'Planeta',
  disableUselessStuff: 'Desactivar cosas in\u00fatiles',
  showRange: 'Mostrar rango de Misiles y Phalanx',
  showResourcesPerFleet: 'Mostrar recursos por cada flota',
  produccionPlanetaria: 'Producci\u00f3n estimada en el planeta actual',
  excedente: 'Excedente',
  general:'Visi\u00f3n general',
  listaEventos:'Lista de eventos',
  recursosDetalle:'Par\u00e1metros de recursos',
  instalaciones:'Instalaciones',
  salto:'Salto cu\u00e1ntico',
  investigaciones:'Investigaciones',
  hangar:'Hangar',
  galaxia:'Galaxia',
  movFlota:'Movimientos de Flota',
  alianza:'Alianza',
  sendCC:'Enviar Mensaje Circular',
  amigos:'Amigos',
  notas:'Notas',
  clasificacion:'Clasificaci\u00f3n',
  buscar:'Buscar',
  mensajes:'Mensajes',
  priPlaneta:'Primer planeta',
  ultPlaneta:'Ultimo planeta/luna',
  antPlaneta:'Anterior planeta/luna',
  sigPlaneta:'Siguiente planeta/luna',
  antItem:'Opc. anterior del menu izq.',
  sigItem:'Opc. siguiente del menu izq.',
  altPlanetaLuna:'Alternar planeta/luna',
  antCelestial:'Anterior cuerpo celestial del mismo tipo',
  sigCelestial:'Siguiente cuerpo celestial del mismo tipo',
  izquierda:'Izq',
  derecha:'Drcha',
  antPag:'Anterior p\u00e1gina',
  sigPag:'Siguiente p\u00e1gina',
  allNaves:'Seleccionar todas las naves',
  borrarSel:'Borrar selecci\u00f3n',
  allMens:'Seleccionar todos los mensajes visibles',
  borrarMens:'Borrar los mensajes seleccionados',
  priPag:'Primera p\u00e1gina',
  ultPag:'Ultima p\u00e1gina',
  antMens:'Anterior mensaje',
  sigMens:'Siguiente mensaje',
  delMens:'Borrar mensaje',
  cerrarMens:'Cerrar mensaje',
  arriba:'Arriba',
  abajo:'Abajo',
  avPag:'AvPag',
  retPag:'RePag',
  inicio:'Inicio',
  fin:'Fin',
  mayusc:'May\u00fas',
  borrar:'Supr',
  tecla:'Tecla',
  accion:'Acci\u00f3n',
  retroceso:'Back',
  velocidad:'Velocidad',
  destPlaneta:'Destino Planeta',
  destLuna:'Destino Luna',
  destEscombros:'Destino Escombros',
  destExpedicion:'Destino coord. 16',
  volver:'Volver a p\u00e1gina anterior',
  usarGeneral:'Usar en p\u00e1ginas comunes',
  usarFlota:'Usar en p\u00e1ginas de flota',
  usarMens:'Usar en p\u00e1ginas de mensajes',
  usarKeys:'Usar Teclas de acceso r\u00e1pido',
  txtOgame:'En todas partes, salvo en algunas p\u00e1ginas',
  txtClasif:'En la p\u00e1gina de Clasificaciones',
  txtSalto:'En la p\u00e1gina de Salto cu\u00e1ntico',
  txtMailbox:'En la bandeja de correo',
  txtMensaje:'En los mensajes',
  txt1Flota:'En la primera p\u00e1gina de flotas',
  txt2Flota:'En la segunda p\u00e1gina de flotas',
  txt3Flota:'En la tercera p\u00e1gina de flotas',
  txtFlota:'En la p\u00e1gina de movimientos de flota',
  recargar:'Recargar',
  allRecursos:'Seleccionar todos los recursos',
  recInversos:'Cargar recursos en orden inverso',
  maxMetal:'Max/Min Metal',
  maxCristal:'Max/Min Cristal',
  maxDuty:'Max/Min Deuterio',
  expedicion:'Expedici\u00f3n',
  colonizar:'Colonizar',
  tranportar:'Transportar',
  desplegar:'Desplegar',
  espiar:'Espiar',
  defender:'Defensa SAC',
  atacarSAC:'Ataque SAC',
  atacar:'Atacar',
  destruir:'Destruir',
  permanecer:'Permanecer',
  hora:'hora',
  expInfo:'Expandir/Contraer info. Flota',
  txtErrorKey:'El script no funciona correctamente en estos casos. La p\u00e1' +
              'gina correspondiente se abre, pero si la ventana pop-up se cie' +
              'rra haciendo clic en su bot\u00f3n [X], el script parece haber' +
              ' dejado de funcionar. La situaci\u00f3n se puede corregir haci' +
              'endo clic en alg\u00fan lugar de la p\u00e1gina.',
  txtFixActionButtons:'Corregir botones de acci\u00f3n',
  txtHighlightPlayers:'Resaltar jugadores y alianzas',
  txtColorFlightSlots:'Colorear ranuras de flota',
  txtPrangerInHeader:'Enlace a infractores en la cabecera',
  acelerarMens:'Acelerar secci\u00f3n de mensajes',
  replyCC:'Responder Mensajes Circulares',
  planetaMens:'Mostrar planeta actual en mensajes',
  smiles:'Smiles',
  txtChat:'Mostrar Chat de Xat.com',
  txtIdChat:'Id del chat',
  txtDespColor:'Despliegue de una flota',
  txtRetColor:'Retorno de una flota',
  txtCCColor:'Mensaje circular',
  txtEscColor:'Informe desde el campo de escombros',
  txtEspColor:'Reporte de espionaje',
  txtAEspColor:'Acci\u00f3n de espionaje',
  txtPMColor:'Mensaje privado',
  txtLleColor:'Llegada a un planeta',
  txtExpColor:'Resultado de la expedici\u00f3n',
  txtColColor:'Informe de colonizaci\u00f3n',
  txtColoredMessages:'Colorear cabecera de mensajes',
  txtTexto:'Texto',
  txtColor:'Color',
  allianceMessageBoxIcon:'Icono de Alianza abre CC',
  showMessageButtonLeft:'Bot\u00f3n de mensajes en el men\u00fa izquierdo',
  setFocusCorrectly:'Posicionar el foco correctamente',
  txtFontColor:'Color de la fuente',
  showPlanetNavKeys:'Botones de navegaci\u00f3n entre planetas',
  txtColonizador:'Colonizador',
  txtShowMissingSats:'Mostrar satelites para balance positivo',
  txtEspacioLibre:'Espacio libre',
  txtEnviar:'Enviar',
  txtResourcesInfo:'Detalle de producci\u00f3n de recursos',
  txtShowEmptySpace:'Espacio libre en cada flota',
  txtHabilitaVentana:'Habilita otra ventana de configuraci\u00f3n',
  txtFixForumLink:'Arreglar enlace al foro',
  cupPeque:'C\u00fapula peque\u00f1a',
  cupGrande:'C\u00fapula grande',
  txtCR_PCarga:'P.Carga',
  txtCR_GrCarga:'Gr.Carga',
  txtCR_CLigero:'Cazador L.',
  txtCR_CPesado:'Cazador P.',
  txtCR_Crucero:'Crucero',
  txtCR_NB:'Nave de batalla',
  txtCR_Acoraz:'Acoraz.',
  txtCR_Bomb:'Bombardero',
  txtCR_Destruc:'Destructor',
  txtCR_Edlm:'Est.Muerte',
  txtCR_Colony:'Colonizador',
  txtCR_Recy:'Reciclador.',
  txtCR_Sonda:'Sonda',
  txtCR_Satelite:'Sat\u00e9lite S.',
  txtCR_Lanza:'Misil',
  txtCR_LPeque:'L\u00e1ser Peq.',
  txtCR_LGrande:'L\u00e1ser Gr.',
  txtCR_CGauss:'C.Gauss',
  txtCR_CIonico:'C.I\u00f3nico',
  txtCR_CPlasma:'C.Plasma',
  txtCR_CupPeque:'C\u00fapula Peq.',
  txtCR_CupGrande:'C\u00fapula Gr.',
  txtCRAnd:'y',
  txtCRAttacker:'Atacante',
  txtEnero:'Enero',
  txtFebrero:'Febrero',
  txtMarzo:'Marzo',
  txtAbril:'Abril',
  txtMayo:'Mayo',
  txtJunio:'Junio',
  txtJulio:'Julio',
  txtAgosto:'Agosto',
  txtSeptiembre:'Septiembre',
  txtOctubre:'Octubre',
  txtNoviembre:'Noviembre',
  txtDiciembre:'Diciembre',
  txtCRDe:'de',
  txtCRAttWin:'\u00a1El atacante ha ganado la batalla!',
  txtCRDefWin:'\u00a1El defensor ha ganado la batalla!',
  txtCREmpate:'\u00a1La batalla ha terminado en empate!',
  txtCRDefender:'Defensor',
  txtCRDraw:'empate',
  txtCRLost:'perdi\u00f3',
  txtCRAttackers:'Atacantes',
  txtCRBattleDay:'Batalla del d\u00eda',
  txtCRLoses:'Perdidas',
  txtCRUnits:'unidades',
  txtCRDefenders:'Defensores',
  txtCRWithoutDef:'Sin defensas',
  txtCRStolen:'Robo',
  txtCRAttFleet:'Flota atacante',
  txtCRDefFleet:'Flota defensora',
  txtCRTotLoses:'Perdidas TOTALES',
  txtCRCaptured:'captura',
  txtCRTheDefender:'El defensor',
  txtCRDestroyed:'ha sido destruido.',
  txtCRDebris:'Escombros',
  txtCRRecys:'reciclador(es)',
  txtCRProfit:'Rentabilidad',
  txtCRAttHarvest:'Atacantes reciclando',
  txtCRAttNoHarvest:'Atacantes sin reciclar',
  txtCRDefHarvest:'Defensores reciclando',
  txtCRFarming:'Ataque-Granjeo',
  txtCRAttProfit:'Renta atacante',
  txtCRMinimal:'COMPACTADO MINIMO',
  txtCRForo:'Foro',
  txtCRAuto:'Compactador autom\u00e1tico de batallas',
  txtCRTexts:'Textos del informe de batalla',
  txtCRColors:'Colores del compactador de batallas',
  txtMoonRight:'Lunas a la derecha',
  txtCRLossesXRes:'Perdidas por tipo de recurso',
  txtCRLostUnits:'Unidades perdidas',
  txtCRTitles:'Titulos',
  txtCRLostShips:'Naves perdidas',
  txtMoon:'Luna',
  txtOthers:'Otros',
  txtQuitarAdv:'Quitar advertencia de colonizaci\u00f3n',
  txtJump:'Listo',
  txtBackTransparent:'Fondo de ventanas de config. transparente',
  txtCRScript:'Compactador de Batallas',
  txtIzquierda:'Men\u00fa inferior',
  txtArriba:'Sobre planetas',
  txtAbajo:'Tras planetas',
  txtConfBotones:'Botones de config. adicionales',
  txtDisableStar:'Quitar estrella parpadeante',
  txtSupMenu:'Men\u00fa superior',
  txtLinkFixed:'Encuadrar coordenadas enlazadas',
  txtLoadButtons:'Botones adicionales de carga',
  txtOptionsInUserName:'Opciones de oGame en el nombre de usuario',
  txtCancelarViaje:'\u00bfCancelar la misi\u00f3n?',
  txtReturnFleetQuestion:'Preguntar por retorno de flota',
  txtFaltaEnergy:'Energ\u00eda restante',
  txtSatGraviton:'Satelites para Gravit\u00f3n',
  txtSatTerraformer:'Satelites para Terraformer',
  txtConfirmTrader:'Advertencia del comerciante',
  txtShowEfficiency:'Mostrar reducci\u00f3n de tiempo',
  txtEfficiency:'Reducci\u00f3n de tiempo',
  txtSmallPlanets:'Mostrar planetas peque\u00f1os',
  usarCRFriki:'Usar lenguaje friki',
  notAvailCRFriki:'Lenguaje friki no disponible'
};

var LANG_ES_FRIKI = {
  metal: 'Chatarra',
  cristal: 'Cart\u00f3n',
  deuterio: 'Gasofa',
  sonda: 'Gorda de espionaje',
  satelite: 'Motor de gasofa',
  npc: 'Carreta peque\u00f1a de carga',
  ngc: 'Cami\u00f3n grande de carga',
  reciclador: 'Recicladora',
  cl: 'Fragoneta ligera',
  cp: 'Fragoneta pesada',
  crucero: 'Burrero',
  nb: 'Cabra de batalla',
  acorazado: 'Navajero',
  bombardero: 'Malacatonero',
  destructor: 'Farruquito',
  edlm: 'Gitanazo de la Muerte',
  txtColonizador: 'Patriarca',
  lanza: 'Churumbeles',
  laserp: 'Segurata peque\u00f1o',
  laserg: 'Segurata grande',
  gauss: 'Benemeritos',
  ionico: 'Jenys',
  plasma: 'Pasma',
  cupPeque:'Toldo peque\u00f1o de protecci\u00f3n',
  cupGrande:'Toldo grande de protecci\u00f3n',
  mInterplanet: 'Jonco interfabelario',
  mIntercep: 'Jonco de intercepci\u00f3n',
  txtCRRecys:'recicladora(s)'
};

var LANG_EN = {
  metal: "Metal",
  cristal: "Crystal",
  deuterio: "Deuterium",
  energia: "Energy",
  almMetalLleno: "Metal storage full in: ",
  almCristalLleno: "Crystal storage full in: ",
  almDeuterioLleno: "Deut. storage full in: ",
  prod321: "Production compared to 3:2:1 rate",
  prodActual: "Current Prod.",
  prodIdeal: "Ideal Prod.",
  infinito: "Infinity",
  guardar: "Save",
  lenguaje: "Language",
  showFleetResources: "Show fleet resources",
  minEscombros: "Min. size of debris",
  tiempoTotal: "Total time",
  flota: "Ships",
  sonda: "Espionage Probe",
  satelite: "Solar Satellite",
  npc: "Small Cargo",
  ngc: "Large Cargo",
  reciclador: "Recycler",
  cl: "Light Fighter",
  cp: "Heavy Fighter",
  crucero: "Cruiser",
  nb: "Battleship",
  acorazado: "Battlecruiser",
  bombardero: "Bomber",
  destructor: "Destroyer",
  edlm: "Deathstar",
  defensa: "Defense",
  lanza: "Rocket Launcher",
  laserp: "Light Laser",
  laserg: "Heavy Laser",
  gauss: "Gauss Cannon",
  ionico: "Ion Cannon",
  plasma: "Plasma Turret",
  mInterplanet: "Interplanetary Missiles",
  mIntercep: "Anti-Ballistic Missiles",
  metSobrante: "Remaining Metal",
  criSobrante: "Remaining Crystal",
  deuSobrante: "Remaining Deuterium",
  porDia: "Per day",
  reciclar: "Recycle",
  imperio: "Empire",
  recursos: "Resources",
  produccion: "Production",
  total: "Total",
  planeta: "Planet",
  disableUselessStuff: "Disable Useless Stuff",
  showRange: "Show IPM and Phalanx Range",
  showResourcesPerFleet: "Show resources for each fleet",
  produccionPlanetaria: "Estimated production in the current planet",
  excedente: "Excess",
  general:'Overview',
  listaEventos:'Event list',
  recursosDetalle:'Resource settings',
  instalaciones:'Facilities',
  salto:'Jumpgate',
  investigaciones:'Research',
  hangar:'Shipyard',
  galaxia:'Galaxy',
  movFlota:'Fleet movement',
  alianza:'Alliance',
  sendCC:'Send Circular Message',
  amigos:'Buddies',
  notas:'Notes',
  clasificacion:'Ranking',
  buscar:'Search',
  mensajes:'Messages',
  priPlaneta:'First planet',
  ultPlaneta:'Last planet/moon',
  antPlaneta:'Previous planet/moon',
  sigPlaneta:'Next planet/moon',
  antItem:'Prev. item on the left menu',
  sigItem:'Next item on the left menu',
  altPlanetaLuna:'Switches the planet and its moon',
  antCelestial:'Previous celestial body of the same type (planet or moon)',
  sigCelestial:'Next celestial body of the same type (planet or moon)',
  izquierda:'Left',
  derecha:'Right',
  antPag:'Previous page',
  sigPag:'Next page',
  allNaves:'Select all ships',
  borrarSel:'Clear selection',
  allMens:'Select all visible messages',
  borrarMens:'Delete selected messages',
  priPag:'First page',
  ultPag:'Last page',
  antMens:'Previous message',
  sigMens:'Next message',
  delMens:'Delete message',
  cerrarMens:'Close message',
  arriba:'Up',
  abajo:'Down',
  avPag:'PgDn',
  retPag:'PgUp',
  inicio:'Home',
  fin:'End',
  mayusc:'Shift',
  borrar:'Del',
  tecla:'Key',
  accion:'Action',
  retroceso:'BackSp',
  velocidad:'Speed',
  destPlaneta:'Target Planet',
  destLuna:'Target Moon',
  destEscombros:'Target Debris Field',
  destExpedicion:'Target\'s coord. to 16',
  volver:'Return to the previous page',
  usarGeneral:'Use in common pages',
  usarFlota:'Use in fleet pages',
  usarMens:'Use in message pages',
  usarKeys:'Use shortcut keys',
  txtOgame:'Everywhere, except on some special pages',
  txtClasif:'On the Ranking',
  txtSalto:'On the Jumpgate',
  txtMailbox:'On the mailbox',
  txtMensaje:'On the messages',
  txt1Flota:'On the first fleet dispatch page',
  txt2Flota:'On the second fleet dispatch page',
  txt3Flota:'On the third fleet dispatch page',
  txtFlota:'On the fleet movement page',
  recargar:'Reload',
  allRecursos:'Select all resources',
  recInversos:'Load resources in reverse order',
  maxMetal:'Max/Min Metal',
  maxCristal:'Max/Min Crystal',
  maxDuty:'Max/Min Deuterium',
  expedicion:'Expedition',
  colonizar:'Colonize',
  tranportar:'Transport',
  desplegar:'Deploy',
  espiar:'Espionage',
  defender:'ACS-Defend',
  atacarSAC:'ACS-Atack',
  atacar:'Attack',
  destruir:'Destroy',
  permanecer:'Staying time to',
  hora:'hour',
  expInfo:'Expand/Collapse fleet info.',
  txtErrorKey:'The script does not work properly in these cases. The correspo' +
              'nding page is opened, but if the pop-up window is closed by cl' +
              'icking on its [X] button, the script seems to have stopped wor' +
              'king. The situation can be rectifying by clicking somewhere in' +
              ' the page.',
  txtFixActionButtons:'Fix action buttons',
  txtHighlightPlayers:'Highlight players and alliances',
  txtColorFlightSlots:'Color flight slots',
  txtPrangerInHeader:'Pranger in header',
  acelerarMens:'Acelerate messages section',
  replyCC:'Reply Circular Messages',
  planetaMens:'Show planet name in messages',
  smiles:'Smiles',
  txtChat:'Show Xat.com\'s chat',
  txtIdChat:'Id chat',
  txtDespColor:'Fleet deployment',
  txtRetColor:'Return of a fleet',
  txtCCColor:'Circular message',
  txtEscColor:'Harvesting report',
  txtEspColor:'Espionage report',
  txtAEspColor:'Espionage Action',
  txtPMColor:'Private message',
  txtLleColor:'Reaching a planet',
  txtExpColor:'Expedition result',
  txtColColor:'Colonization report',
  txtColoredMessages:'Color message subjects',
  txtTexto:'Text',
  txtColor:'Color',
  allianceMessageBoxIcon:'Alliance icon opens the message box',
  showMessageButtonLeft:'Message button in left menu',
  setFocusCorrectly:'Set the focus correctly',
  txtFontColor:'Font color',
  showPlanetNavKeys:'Navigation buttons between planets',
  txtColonizador:'Colony Ship',
  txtShowMissingSats:'Show missing sats to positive balance',
  txtEspacioLibre:'Available space',
  txtEnviar:'Send',
  txtResourcesInfo:'Resource production details',
  txtShowEmptySpace:'Free space for each fleet',
  txtHabilitaVentana:'Enables another setting window',
  txtFixForumLink:'Fix forum link',
  cupPeque:'Small Shield Dome',
  cupGrande:'Large Shield Dome',
  txtCR_PCarga:'S.Cargo',
  txtCR_GrCarga:'H.Cargo',
  txtCR_CLigero:'L.Fighter',
  txtCR_CPesado:'H.Fighter',
  txtCR_Crucero:'Cruiser',
  txtCR_NB:'Battleship',
  txtCR_Acoraz:'Battlecr.',
  txtCR_Bomb:'Bomb.',
  txtCR_Destruc:'Destr.',
  txtCR_Edlm:'Death star',
  txtCR_Colony:'Colonyship',
  txtCR_Recy:'Recyklator',
  txtCR_Sonda:'Esp.Probe',
  txtCR_Satelite:'Sol sat',
  txtCR_Lanza:'R.Launcher',
  txtCR_LPeque:'L.Laser',
  txtCR_LGrande:'T.Laser',
  txtCR_CGauss:'Gauss',
  txtCR_CIonico:'Ion. K.',
  txtCR_CPlasma:'Plazma',
  txtCR_CupPeque:'S.Dome',
  txtCR_CupGrande:'L.Dome',
  txtCRAnd:'and',
  txtCRAttacker:'Attacker',
  txtEnero:'January',
  txtFebrero:'February',
  txtMarzo:'March',
  txtAbril:'April',
  txtMayo:'May',
  txtJunio:'June',
  txtJulio:'July',
  txtAgosto:'August',
  txtSeptiembre:'September',
  txtOctubre:'October',
  txtNoviembre:'November',
  txtDiciembre:'December',
  txtCRDe:'of',
  txtCRAttWin:'The attacker has won the battle!',
  txtCRDefWin: 'The defender has won the battle!',
  txtCREmpate: 'The battle has ended in a draw!',
  txtCRDefender:'Defender',
  txtCRDraw:'draw',
  txtCRLost:'lost',
  txtCRAttackers:'Attackers',
  txtCRBattleDay:'Battle of the day',
  txtCRLoses:'Losses',
  txtCRUnits:'units',
  txtCRDefenders:'Defenders',
  txtCRWithoutDef:'Without defenses',
  txtCRStolen:'Robbery',
  txtCRAttFleet:'Attacker\'s fleet',
  txtCRDefFleet:'Defender\'s fleet',
  txtCRTotLoses:'TOTAL Losses',
  txtCRCaptured:'He captured',
  txtCRTheDefender:'Defender',
  txtCRDestroyed:'destroyed.',
  txtCRDebris:'Debris',
  txtCRRecys:'recycler(s)',
  txtCRProfit:'Profit',
  txtCRAttHarvest:'Attackers harvesting',
  txtCRAttNoHarvest:'Attackers without harvest',
  txtCRDefHarvest:'Defenders harvesting',
  txtCRFarming:'Attack-Farming',
  txtCRAttProfit:'Attacker\'s profit',
  txtCRMinimal:'MINIMUM COMPACTED',
  txtCRForo:'Forum',
  txtCRAuto:'Automatic combat report convertor',
  txtCRTexts:'Texts of Battle report',
  txtCRColors:'Colors of combat report convertor',
  txtMoonRight:'Moons to the right',
  txtCRLossesXRes:'Losses for each resource',
  txtCRLostUnits:'Lost units',
  txtCRTitles:'Titles',
  txtCRLostShips:'Lost ships',
  txtMoon:'Moon',
  txtOthers:'Others',
  txtQuitarAdv:'Remove warning colonization',
  txtJump:'Ready',
  txtBackTransparent:'Transparent background in config. windows',
  txtCRScript:'CR conversor',
  txtIzquierda:'Bottom menu',
  txtArriba:'Over planets',
  txtAbajo:'Under planets',
  txtConfBotones:'Extra config buttons',
  txtDisableStar:'Remove blink star',
  txtSupMenu:'Upper menu',
  txtLinkFixed:'Coordinate frame linked',
  txtLoadButtons:'Additional resource loading buttons',
  txtOptionsInUserName:'oGame options in user name',
  txtCancelarViaje:'Cancel the mission?',
  txtReturnFleetQuestion:'Ask for return of fleet',
  txtFaltaEnergy:'Energy needed',
  txtSatGraviton:'Satellites for Graviton',
  txtSatTerraformer:'Satellites for Terraformer',
  txtConfirmTrader:'Merchant Warning',
  txtShowEfficiency:'Show time reduction',
  txtEfficiency:'Time reduction',
  txtSmallPlanets:'Show small planets',
  usarCRFriki:'Use geek language',
  notAvailCRFriki:'Geek language no available'
};

//Thanks to "la faucille"
var LANG_FR = {
  metal: "M\u00e9tal",
  cristal: "Cristal",
  deuterio: "Deut\u00e9rium",
  energia: "Energie",
  almMetalLleno: "Hangar M\u00e9tal rempli ds: ",
  almCristalLleno: "Hangar Cristal rempli ds: ",
  almDeuterioLleno: "R\u00e9servoir Deut. rempli ds: ",
  prod321: "Production compar\u00e9e au rapport 3:2:1",
  prodActual: "Prod. actuelle",
  prodIdeal: "Prod. id\u00e9ale",
  infinito: "Infini",
  guardar: "Sauver",
  lenguaje: "Langue",
  showFleetResources: "Montrer ressources des flottes",
  minEscombros: "Taille min. d\u00e9bris",
  tiempoTotal: "Temps total",
  flota: "Flotte",
  sonda: "Sonde espionnage",
  satelite: "Satellite solaire",
  npc: "Petit transporteur",
  ngc: "Grand transporteur",
  reciclador: "Recycleur",
  cl: "Chasseur l\u00e9ger",
  cp: "Chasseur lourd",
  crucero: "Croiseur",
  nb: "Vaisseau de bataille",
  acorazado: "Traqueur",
  bombardero: "Bombardier",
  destructor: "Destructeur",
  edlm: "\u00c9toile de la mort",
  defensa: "D\u00e9fense",
  lanza: "Lanceur de missiles",
  laserp: "Artillerie laser l\u00e9g\u00e8re",
  laserg: "Artillerie laser lourde",
  gauss: "Canon de Gauss",
  ionico: "Artillerie \u00e0 ions",
  plasma: "Lanceur de plasma",
  mInterplanet: "Missile Interplan\u00e9taire",
  mIntercep: "Missile d`interception",
  metSobrante: "M\u00e9tal restant",
  criSobrante: "Cristal restant",
  deuSobrante: "Deut\u00e9rium restant",
  porDia: "Par jour",
  reciclar: "Recycler",
  imperio: "Empire",
  recursos: "Ressources",
  produccion: "Production",
  total: "Total",
  planeta: "Plan\u00e8te",
  disableUselessStuff: "D\u00e9sactiver trucs inutiles",
  showRange: "Montrer port\u00e9e des missiles et Phalanx",
  showResourcesPerFleet: "Voir les ressources pour chaque flotte",
  produccionPlanetaria: "Estimation de la production actuelle de la plan\u00e8te",
  excedente: "Exc\u00e9dentaires",
  general:'Aper\u00e7u',
  listaEventos:'Liste des \u00e9v\u00e8nements',
  recursosDetalle:'Les param\u00e8tres de ressources',
  instalaciones:'Installations',
  salto:'Jumpgate',
  investigaciones:'Recherche',
  hangar:'Hangar',
  galaxia:'Galaxy',
  movFlota:'Mouvements de la flotte',
  alianza:'Alliance',
  sendCC:'Envoyer un message circulaire',
  amigos:'Amis',
  notas:'Notes',
  clasificacion:'Classement',
  buscar:'Rechercher',
  mensajes:'Messages',
  priPlaneta:'Premier plan\u00e8te',
  ultPlaneta:'Derni\u00e8re plan\u00e8te/lune',
  antPlaneta:'Plan\u00e8te/lune pr\u00e9c\u00e9dente',
  sigPlaneta:'Suivant la plan\u00e8te/lune',
  antItem:'Article pr\u00e9c\u00e9dent sur le menu de gauche',
  sigItem:'Suivant le point sur le menu de gauche',
  altPlanetaLuna:'Basculer la plan\u00e8te/lune',
  antCelestial:'Pr\u00e9c\u00e9dente corps c\u00e9leste du m\u00eame type ' +
               '(plan\u00e8te/lune)',
  sigCelestial:'Suivant corps c\u00e9leste du m\u00eame type (plan\u00e8te/lune)',
  izquierda:'Gauche',
  derecha:'Droite',
  antPag:'Page pr\u00e9c\u00e9dente',
  sigPag:'Page suivante',
  allNaves:'S\u00e9lectionnez tous les navires',
  borrarSel:'Effacer la s\u00e9lection',
  allMens:'S\u00e9lectionner tous les messages visibles',
  borrarMens:'Effacer les messages s\u00e9lectionn\u00e9s',
  priPag:'Premi\u00e8re page',
  ultPag:'Derni\u00e8re page',
  antMens:'Message pr\u00e9c\u00e9dente',
  sigMens:'Message suivant',
  delMens:'Supprimer le message',
  cerrarMens:'Fermer le message',
  arriba:'Jusqu\'\u00e0',
  abajo:'Bas',
  avPag:'PgDn',
  retPag:'PgUp',
  inicio:'Init',
  fin:'Fin',
  mayusc:'Majus',
  borrar:'Supp',
  tecla:'Cl\u00e9s',
  accion:'Action',
  retroceso:'BackSp',
  velocidad:'Vitesse',
  destPlaneta:'Destination plan\u00e8te',
  destLuna:'Destination lune',
  destEscombros:'Champ de d\u00e9bris cible',
  destExpedicion:'Destination coord. 16',
  volver:'Retour \u00e0 la page pr\u00e9c\u00e9dente',
  usarGeneral:'Utilisez des pages communes',
  usarFlota:'Utilisez des pages de la flotte',
  usarMens:'Utilisez des pages de messages',
  usarKeys:'Utilisez les touches de raccourcis',
  txtOgame:'Partout, sauf en quelques pages',
  txtClasif:'Sur la page de classement',
  txtSalto:'Sur la page de Jumpgate',
  txtMailbox:'Sur bo\u00eete',
  txtMensaje:'Sur les messages',
  txt1Flota:'Sur la page d\'envoi de la premi\u00e8re flotte',
  txt2Flota:'Sur la page d\'exp\u00e9dition deuxi\u00e8me flotte',
  txt3Flota:'Sur la page d\'exp\u00e9dition troisi\u00e8me flotte',
  txtFlota:'Sur la page mouvement de la flotte',
  recargar:'Recharger',
  allRecursos:'S\u00e9lectionnez toutes les ressources',
  recInversos:'Des ressources de charge dans l\'ordre inverse',
  maxMetal:'Max/Min M\u00e9tal',
  maxCristal:'Max/Min Cristal',
  maxDuty:'Max/Min Deut\u00e9rium',
  expedicion:'Exp\u00e9dition',
  colonizar:'Coloniser',
  tranportar:'Transports',
  desplegar:'Affichage',
  espiar:'\u00c9pier',
  defender:'D\u00e9fenseur SAC',
  atacarSAC:'Attaque SAC',
  atacar:'Attaque',
  destruir:'D\u00e9truire',
  permanecer:'Restent',
  hora:'heure',
  expInfo:'D\u00e9velopper/R\u00e9duire renseignements sur le parc',
  txtErrorKey:'Le script ne fonctionne pas correctement dans ces cas. La page' +
              ' correspondante est ouvert, mais si la fen\u00eatre pop-up est' +
              ' ferm\u00e9 en cliquant sur son bouton [X], le script semble a' +
              'voir cess\u00e9 de travailler. La situation peut \u00eatre rec' +
              'tifier en cliquant quelque part dans la page.',
  txtFixActionButtons:'Fixer les boutons d\'action',
  txtHighlightPlayers:'Mettez en surbrillance et les joueurs des alliances',
  txtColorFlightSlots:'Cr\u00e9neaux horaires couleur',
  txtPrangerInHeader:'Pranger en t\u00eate',
  acelerarMens:'Acc\u00e9l\u00e9rer section de message',
  replyCC:'R\u00e9pondre messages circulaire',
  planetaMens:'Afficher le nom de la plan\u00e8te dans les messages',
  smiles:'Smiles',
  txtChat:'Montrer Xat.com discussion',
  txtIdChat:'Id chat',
  txtDespColor:'Stationnement d`une flotte',
  txtRetColor:'Retour d`une flotte',
  txtCCColor:'Message circulaire',
  txtEscColor:'Rapport d`exploitation',
  txtEspColor:'Rapport d`espionnage',
  txtAEspColor:'Activit\u00e9 d`espionnage',
  txtPMColor:'Message priv\u00e9',
  txtLleColor:'Arriv\u00e9e sur une plan\u00e8te',
  txtExpColor:'R\u00e9sultat de l`exp\u00e9dition',
  txtColColor:'Rapport de colonisation',
  txtColoredMessages:'Coloriage-t\u00eate du message',
  txtTexto:'Texte',
  txtColor:'Couleur',
  allianceMessageBoxIcon:'Alliance ic\u00f4ne ouvre la bo\u00eete de message',
  showMessageButtonLeft:'Bouton Message dans le menu gauche',
  setFocusCorrectly:'R\u00e9glez la mise au point correcte',
  txtFontColor:'Couleur des caract\u00e8res',
  showPlanetNavKeys:'Les boutons de navigation entre les plan\u00e8tes',
  txtColonizador:'Colonisateur',
  txtShowMissingSats:'Satellites \u00e0 montrer des r\u00e9sultats positifs',
  txtEspacioLibre:'Espace libre',
  txtEnviar:'Envoyer',
  txtResourcesInfo:'D\u00e9tails de la ressource',
  txtShowEmptySpace:'L\'espace libre pour chaque flotte',
  txtHabilitaVentana:'Permet de r\u00e9gler une autre fen\u00eatre',
  txtFixForumLink:'Fixer un lien du forum',
  cupPeque:'Petit bouclier',
  cupGrande:'Grand bouclier',
  txtCR_PCarga:'P.transp.',
  txtCR_GrCarga:'G.transp.',
  txtCR_CLigero:'Ch.l\u00e9ger',
  txtCR_CPesado:'Ch.lourd',
  txtCR_Crucero:'Croiseur',
  txtCR_NB:'V.bataille',
  txtCR_Acoraz:'Traqueur',
  txtCR_Bomb:'Bombardier',
  txtCR_Destruc:'Destr.',
  txtCR_Edlm:'RIP',
  txtCR_Colony:'V.colo',
  txtCR_Recy:'Recycleur',
  txtCR_Sonda:'Sonde',
  txtCR_Satelite:'Sat.sol.',
  txtCR_Lanza:'Missile',
  txtCR_LPeque:'L.l\u00e9ger.',
  txtCR_LGrande:'L.lourd',
  txtCR_CGauss:'Can.Gauss',
  txtCR_CIonico:'Art.ions',
  txtCR_CPlasma:'Lanc.plasma',
  txtCR_CupPeque:'P.bouclier',
  txtCR_CupGrande:'G.bouclier',
  txtCRAnd:'et',
  txtCRAttacker:'Attaquant',
  txtEnero:'Janvier',
  txtFebrero:'F\u00e9vrier',
  txtMarzo:'Mars',
  txtAbril:'Avril',
  txtMayo:'Mai',
  txtJunio:'Juin',
  txtJulio:'Juillet',
  txtAgosto:'Ao\u00fbt',
  txtSeptiembre:'Septembre',
  txtOctubre:'Octobre',
  txtNoviembre:'Novembre',
  txtDiciembre:'D\u00e9cembre',
  txtCRDe:'des',
  txtCRAttWin:'L\'attaquant a gagn\u00e9 la bataille!',
  txtCRDefWin: 'Le d\u00e9fenseur a remport\u00e9 la bataille!',
  txtCREmpate: 'La bataille s\'est termin\u00e9e par un match nul!',
  txtCRDefender:'D\u00e9fenseur',
  txtCRDraw:'match nul',
  txtCRLost:'perdus',
  txtCRAttackers:'Attaquants',
  txtCRBattleDay:'Bataille jours',
  txtCRLoses:'Pertes',
  txtCRUnits:'unit\u00e9s',
  txtCRDefenders:'D\u00e9fenseurs',
  txtCRWithoutDef:'Sans d\u00e9fenses',
  txtCRStolen:'Pillage',
  txtCRAttFleet:'L\'attaquant de la flotte',
  txtCRDefFleet:'D\u00e9fenseur de la flotte',
  txtCRTotLoses:'Pertes totales',
  txtCRCaptured:'gagne',
  txtCRTheDefender:'Defender',
  txtCRDestroyed:'d\u00e9truites.',
  txtCRDebris:'D\u00e9bris',
  txtCRRecys:'Recycleur(s)',
  txtCRProfit:'Profit',
  txtCRAttHarvest:'Les attaquants de r\u00e9colte',
  txtCRAttNoHarvest:'Les attaquants, sans r\u00e9colte',
  txtCRDefHarvest:'D\u00e9fenseurs de r\u00e9colte',
  txtCRFarming:'Attaque-agriculture',
  txtCRAttProfit:'Attaquant lucratif',
  txtCRMinimal:'MINIMUM COMPACT\u00c9',
  txtCRForo:'Forum',
  txtCRAuto:'Automatique convertisseur de rapport de combat',
  txtCRTexts:'Textes du rapport de bataille',
  txtCRColors:'Couleurs du convertisseur de rapport de combat',
  txtMoonRight:'Lunes \u00e0 la droite',
  txtCRLossesXRes:'Les pertes pour chaque ressource',
  txtCRLostUnits:'Unit\u00e9s perdues',
  txtCRTitles:'Titres',
  txtCRLostShips:'Navires perdus',
  txtMoon:'Lune',
  txtOthers:'D\'autres',
  txtQuitarAdv:'Retirez la colonisation avertissement',
  txtJump:'Pr\u00eat',
  txtBackTransparent:'Transparent fen\u00eatres de configuration',
  txtCRScript:'CR Convertisseur',
  txtIzquierda:'Menu du bas',
  txtArriba:'Sur les plan\u00e8tes',
  txtAbajo:'Sous plan\u00e8tes',
  txtConfBotones:'Suppl\u00e9mentaires boutons de config.',
  txtDisableStar:'Retirer clin \u00e9toiles',
  txtSupMenu:'Menu sup\u00e9rieur',
  txtLinkFixed:'Cadre des coordonn\u00e9es li\u00e9es',
  txtLoadButtons:'Charge suppl\u00e9mentaire des boutons',
  txtOptionsInUserName:'oGame options au nom de l\'utilisateur',
  txtCancelarViaje:'Annuler la mission??',
  txtReturnFleetQuestion:'Demandez pour le retour de la flotte',
  txtFaltaEnergy:'\u00c9nergie restante',
  txtSatGraviton:'Satellites pour Graviton',
  txtSatTerraformer:'Satellites pour Terraformeur',
  txtConfirmTrader:'Attention Marchand',
  txtShowEfficiency:'Voir la r\u00e9duction du temps',
  txtEfficiency:'R\u00e9duction du temps',
  txtSmallPlanets:'Montrer petites plan\u00e8tes',
  usarCRFriki:'Utiliser le langage Geek',
  notAvailCRFriki:'Geek langue n\'est pas disponible'
};

window.addEventListener('load',main,true);

0 comments:

Post a Comment