MediaWiki:Common.js

De Inciclopedia
Ir a la navegación Ir a la búsqueda

Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.

  • Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
  • Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
  • Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
  • Opera: Presiona Ctrl+F5.
/*
Código de migración desde wikia
*/
if (!window.importStylesheetPage) {
  window.importStylesheetPage = function(page, wiki) {
    if (!wiki || wiki == 'inciclopedia') {
      mw.loader.load( mw.config.get('wgScript') + '?title='+encodeURIComponent(page)+'&action=raw&ctype=text/css', 'text/css' );
    } else {
      mw.log('No se pueden importar estilos de otros wikis con importStylesheetPage ('+page+', '+wiki+')');
    }
  };
}
if (!window.importScriptPage) {
  window.importScriptPage = function(page, wiki) {
    if (!wiki || wiki == 'inciclopedia') {
      mw.loader.load( mw.config.get('wgScript') + '?title='+encodeURIComponent(page)+'&action=raw&ctype=text/javascript' );
    } else {
      mw.log('No se pueden importar scripts de otros wikis con importScriptPage ('+page+', '+wiki+')');
    }
  };
}
if (!window.importScriptURI) {
  window.importScriptURI = function(uri) {
    mw.loader.load( uri );
  };
}
/* -----------------------------------
               InciAPI
--------------------------------------
Funciones genéricas copiadas del WSS para trastear en las páginas usando el JS
-------------------------------------- */
var InciAPI = new Object();

InciAPI = {
  // InciAPI.ObtenerElemento (identificador, nowarning))
  // Busca el elemento que tenga ese <identificador> 
  // nowarning = true -> no muestra el error (por ejemplo si se usa para comprobar la existencia del elemento)
  ObtenerElemento : function (identificador, nowarning) {
    var elemento = document.getElementById ? document.getElementById(identificador) : document.all[identificador];
    if (!elemento && !nowarning) {
      var Error = WSS.FP.AnadirHijo(document.body, "div");
      Error.innerHTML = "<p>InciAPI: ¡OOOPPPSSS! No se ha encontrado el identificador: " + identificador + "</p>";
    }
    return elemento
  },

  // InciAPI.AnadirHijo (padre, tipo, atributos)
  // Crea un elemento <tipo> (p.e., "div") con unos <atributos>
  //   (p.e., {className:"clase", id: "nombre"}) y lo pone como hijo del
  //   elemento <padre>
  // Además devuelve el elemento recién creado
  AnadirHijo : function(padre, tipo, atributos)
  {
    var elemento = document.createElement(tipo);
    if (atributos)
    {
      for (key in atributos) { elemento[key] = atributos[key] }
    }

    if (!padre) {
      padre = WSS.FP.AnadirHijo(document.body, "div");
      padre.innerHTML = "<p>InciAPI: ¡OOOPPPSSS! No se ha encontrado el padre para poder añadir: " + tipo + "</p>";      
    }
    return padre.appendChild(elemento);
  },

  // InciAPI.AnadirAntes (padre, elemento0, tipo, atributos)
  // Crea un elemento <tipo> (p.e., "div") con unos <atributos>
  //   (p.e., {className:"clase", id: "nombre"}) y lo coloca antes del elemento
  //   <elemento0> que se encuentra dentro de <padre>
  // Además devuelve el elemento recién creado
  AnadirAntes : function(padre, elemento0, tipo, atributos)
  {
    var elemento = document.createElement(tipo);
    if (atributos)
    {
      for (key in atributos) { elemento[key] = atributos[key]; }
    }

    if (!padre) {
      padre = WSS.FP.AnadirHijo(document.body, "div");
      padre.innerHTML = "<p>InciAPI: ¡OOOPPPSSS! No se ha encontrado el padre para poder añadir: " + tipo+ "</p>";      
    }

    if (!elemento0) {
      padre.innerHTML = "<p>InciAPI: ¡OOOPPPSSS! No se ha encontrado el elemento0 para poder añadir: " + tipo+ "</p>";      
      elemento0 = WSS.FP.AnadirHijo(padre, "div");
    }

    return padre.insertBefore(elemento, elemento0);
  }
};

/*
Desactivación del botón de edición de los temas del foro antiguos
--------------------------------------------------------------------
Adaptado de Uncyclopedia, autor original: [[uncyclopedia:en:user:Spang]]
*/

function ArchivarTemaForo() {
  if (typeof(ActivarForoArchivado) != 'undefined' && ActivarForoArchivado) return;
  if (!InciAPI.ObtenerElemento('ca-edit', true) || !InciAPI.ObtenerElemento('ForoArchivado', true)) return;
  editLink = InciAPI.ObtenerElemento('ca-edit').firstChild;
  editLink.removeAttribute('href', 0);
  editLink.style.color = 'gray';
  editLink.innerHTML = 'No edites';
};
$(ArchivarTemaForo);


/*
-------------------
BOTONES ADICIONALES
-------------------
Añadido por: [[uncyclopedia:es:user:Chixpy]]
*/

if (typeof(mwCustomEditButtons) != 'undefined' && mwCustomEditButtons) {
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "https://images.uncyclomedia.co/inciclopedia/es/3/35/Bot%C3%B3n_Super%C3%ADndice.png",
    "speedTip": "Superíndice",
    "tagOpen": "<sup>",
    "tagClose": "</sup>",
    "sampleText": "superíndice"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "https://images.uncyclomedia.co/inciclopedia/es/b/bd/Bot%C3%B3n_Sub%C3%ADndice.png",
    "speedTip": "Subíndice",
    "tagOpen": "<sub>",
    "tagClose": "</sub>",
    "sampleText": "subíndice"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "https://images.uncyclomedia.co/inciclopedia/es/8/83/Bot%C3%B3n_C%C3%B3digofuente.png",
    "speedTip": "Código fuente",
    "tagOpen": "<code><nowiki>",
    "tagClose": "</" + "nowiki></code>",
    "sampleText": "código fuente"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "https://images.uncyclomedia.co/inciclopedia/es/4/49/Bot%C3%B3n_plantilla.png",
    "speedTip": "Plantillas",
    "tagOpen": "{{",
    "tagClose": "}}",
    "sampleText": "plantilla"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "https://images.uncyclomedia.co/inciclopedia/es/4/43/Enlace_a_usuario.png",
    "speedTip": "Enlace a usuario",
    "tagOpen": "[[user:",
    "tagClose": "|]]",
    "sampleText": "usuario"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "https://images.uncyclomedia.co/inciclopedia/es/6/64/Bot%C3%B3n_categor%C3%ADa.png",
    "speedTip": "Categoría",
    "tagOpen": "[[Category:",
    "tagClose": "|{" + "{PAGENAME}}]]",
    "sampleText": "Nombre categoría"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "https://images.uncyclomedia.co/inciclopedia/es/7/7a/Bot%C3%B3n_tablas.png",
    "speedTip": "Insertar tabla",
    "tagOpen": '{| {' + '{tablabonita|alineacion=col1izq col2cen col3der|}}\n|-\n',
    "tagClose": "\n|}",
    "sampleText": "!| encabezado 1\n!| encabezado 2\n!| encabezado 3\n|-\n|| fila 1, columna 1\n|| fila 1, columna 2\n|| fila 1, columna 3\n|-\n|| fila 2, columna 1\n|| fila 2, columna 2\n|| fila 2, columna 3"
  };
};

/*
-------------------------------------
CSS Y JS PERSONALIZADO DE LAS PÁGINAS
-------------------------------------

Para añadir .js o .css específico para una página.

Véase [[Mediawiki:Inciskin]] para más información
*/

// Si se trata de una subpágina primero buscamos el CSS y JS de la página padre
if (mw.config.get('wgPageName') && (mw.config.get('wgAction') == 'view' || mw.config.get('wgAction') == 'edit') && document.location.href.indexOf('diff=') == -1)
{
  if (mw.config.get('wgPageName').indexOf("/") != -1) {
    var pagina = mw.config.get('wgPageName').slice(0, mw.config.get('wgPageName').indexOf("/"));
    importStylesheetPage('MediaWiki:Inciskin/CSS/' + pagina + '.css', 'inciclopedia');
    importStylesheetPage('MediaWiki:Inciskin/' + mw.config.get('skin') + '/' + pagina + '.css', 'inciclopedia');
    importScriptPage('MediaWiki:Inciskin/JS/' + pagina + '.js', 'inciclopedia');
    importScriptPage('MediaWiki:Inciskin/' + mw.config.get('skin') + '/' + pagina + '.js', 'inciclopedia');
  };

  importStylesheetPage('MediaWiki:Inciskin/CSS/' + mw.config.get('wgPageName') + '.css', 'inciclopedia');
  importStylesheetPage('MediaWiki:Inciskin/' + mw.config.get('skin') + '/' + mw.config.get('wgPageName') + '.css', 'inciclopedia');
  importScriptPage('MediaWiki:Inciskin/JS/' + mw.config.get('wgPageName') + '.js', 'inciclopedia');
  importScriptPage('MediaWiki:Inciskin/' + mw.config.get('skin') + '/' + mw.config.get('wgPageName') + '.js', 'inciclopedia');
};

/*
----------------------------------------
EDITAR JUSTO A LA DERECHA DE LOS TÍTULOS
----------------------------------------
Traido de la ladrona: [[wikipedia:es:MediaWiki:Monobook.js]]
  que a su vez está traido de [[wikipedia:de:MediaWiki:Monobook.js]].
Pone los enlaces a editar justo a la la derecha de los títulos.

Si alguien desea conservar el comportamiento original de los botones
  (es decir que estén a la derecha del todo), puede copiar en su monobook.js
  la siguiente línea:

  var oldEditsectionLinks = true;

TO DO: ARREGLAR PARA IE6...

*/

function moveEditsection() {
  if (typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false) {
    var spans = document.getElementsByTagName("span");
    for (var i = 0; i < spans.length; i++) {
      if (spans[i].className == "editsection") {
        spans[i].style.fontSize = "small";
        spans[i].style.fontWeight = "normal";
        spans[i].style.cssFloat = "none";
        spans[i].style.marginLeft = "0px";
        spans[i].parentNode.appendChild(document.createTextNode(" "));
        spans[i].parentNode.appendChild(spans[i]);
      };
    };
  };
};
$(moveEditsection);

/*
-----------------------------------------
CÓDIGO PARA PLEGADO/DESPLEGADO DE BLOQUES
-----------------------------------------
Traido de [[wikipedia:es:mediwiki:common.js]]

Modificado por Chixpy en [[w:c:videojuego:mediawiki:monobook.js]]
  para su correcto funcionamiento en Wikia.

Plantillas que hacen uso de este código: [[Plantilla:Desplegable]]

Prerequisitos:

NavigationBarShowDefault : Si hay más de este número de desplegables
  ocultar todas automáticamente.
*/

var NavigationBarHide = '[Ocultar]';
var NavigationBarShow = '[Mostrar]';

function toggleNavigationBar(indexNavigationBar) {
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

  if (!NavFrame || !NavToggle) {
    return false;
  };

  // if shown now
  if (NavToggle.firstChild.data == NavigationBarHide) {
    for (
    var NavChild = NavFrame.firstChild;
    NavChild != null;
    NavChild = NavChild.nextSibling) {
      if (NavChild.className == 'NavPic') {
        NavChild.style.display = 'none';
      };
      if (NavChild.className == 'NavContent') {
        NavChild.style.display = 'none';
      };
      if (NavChild.className == 'NavToggle') {
        NavChild.firstChild.data = NavigationBarShow;
      };
    };
    // if hidden now
  } else if (NavToggle.firstChild.data == NavigationBarShow) {
    for (
    var NavChild = NavFrame.firstChild;
    NavChild != null;
    NavChild = NavChild.nextSibling) {
      if (NavChild.className == 'NavPic') {
        NavChild.style.display = 'block';
      };
      if (NavChild.className == 'NavContent') {
        NavChild.style.display = 'block';
      };
      if (NavChild.className == 'NavToggle') {
        NavChild.firstChild.data = NavigationBarHide;
      };
    };
  };
};

// adds show/hide-button to navigation bars


function createNavigationBarToggleButton() {
  var indexNavigationBar = 0;
  // iterate over all <div>-elements
  for (
  var i = 0;
  NavFrame = document.getElementsByTagName("div")[i];
  i++) {
    // if found a navigation bar
    if (NavFrame.className == "NavFrame") {
      indexNavigationBar++;
      var NavToggle = document.createElement("a");
      NavToggle.className = 'NavToggle';
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');

      var NavToggleText = document.createTextNode(NavigationBarShow);
      NavToggle.appendChild(NavToggleText);

      // add NavToggle-Button as first div-element 
      // in <div class="NavFrame">
      NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
    };
  };

  //Plegamos todas....
  for (
  var i = 1;
  i <= indexNavigationBar;
  i++) {
    toggleNavigationBar(i);
    toggleNavigationBar(i);
  };
};

$(createNavigationBarToggleButton);

/* 
------------------
NOMBRE DEL USUARIO
------------------
Inserta el nombre del usuario donde esté "<span class="insertusername"></span>"
  o la [[Plantilla:NOMBREUSUARIO]]

Traida inicialmente de Uncyclopedia y corregida por uncyclopedia:es:user:Ciencia Al Poder ,
  para que funcione correctamente usando ''class='' en vez de ''id=''.
*/

function UserNameReplace() {
  if ( mw.config.get('wgUserName') ) {
    var $spans = $('span.insertusername').text( mw.config.get('wgUserName') );
  };
};

$(UserNameReplace);

/*
-------------------------------------------------------------------------------
                    REDEFINICIONES DE COMPORTAMIENTO
-------------------------------------------------------------------------------
*/


/*
-----------------------------------------------
REDEFINICIÓN DE ORDENACIÓN DE TABLAS "SORTABLE"
-----------------------------------------------
Añadido por: [[uncyclopedia:es:user:Chixpy]]

Estos ingleses se creen el centro del universo y en las tablas que se
  pueden ordenar reconocen el punto como símbolo decimal así que hago
  este apaño para que lo haga correctamente..
*/

function ts_dateToSortKey(date) {
  // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
  if (date.length == 11) {
    switch (date.substr(3, 3).toLowerCase()) {
    case "ene":
      var month = "01";
      break;
    case "feb":
      var month = "02";
      break;
    case "mar":
      var month = "03";
      break;
    case "abr":
      var month = "04";
      break;
    case "may":
      var month = "05";
      break;
    case "jun":
      var month = "06";
      break;
    case "jul":
      var month = "07";
      break;
    case "ago":
      var month = "08";
      break;
    case "sep":
      var month = "09";
      break;
    case "oct":
      var month = "10";
      break;
    case "nov":
      var month = "11";
      break;
    case "dic":
      var month = "12";
      break;
      // default: var month = "00";
    };
    return date.substr(7, 4) + month + date.substr(0, 2);
  } else if (date.length == 10) {
    if (ts_europeandate == false) {
      return date.substr(6, 4) + date.substr(0, 2) + date.substr(3, 2);
    } else {
      return date.substr(6, 4) + date.substr(3, 2) + date.substr(0, 2);
    };
  } else if (date.length == 8) {
    yr = date.substr(6, 2);
    if (parseInt(yr) < 50) {
      yr = '20' + yr;
    } else {
      yr = '19' + yr;
    };
    if (ts_europeandate == true) {
      return yr + date.substr(3, 2) + date.substr(0, 2);
    } else {
      return yr + date.substr(0, 2) + date.substr(3, 2);
    };
  };
  return "00000000";
}

//Modificado por Sanbec en WP-es aplicando la solución de WP en sueco
//(Anteriormente parece que solo cambiaba un punto)
//- Añadido además para que ordene los porcentajes.
function ts_parseFloat(num) {
  if (!num) return 0;
  num = num.replace("%", "");
  num = num.replace(/\./g, "");
  num = num.replace(/,/, ".");
  num = parseFloat(num);
  return (isNaN(num) ? 0 : num);
}

//Modificación hecha por Sanbec en WP-es para que ordene alfabéticamente bien
// ignorando acentos y no se limite a ordenarlo según el código ASCII.
function ts_sort_caseinsensitive(a, b) {
  var aa = a[1].toLowerCase();
  var bb = b[1].toLowerCase();
  return (aa.localeCompare(bb));
}


// Otro pequeño apaño para "sortable"
// Cambios:
//   * Tablas de una línea: No añade el botón de ordenar
//   * Tablas de dos líneas: Tampoco (encabezado + 1 fila = estupidez ordenar)
//   * Quitammos dos &nbsp; entre el texto del encabezado y el botón
//       (para que no se descentren al cambiar el CSS en Common.css)


function ts_makeSortable(table) {
  var firstRow;
  if (table.rows && table.rows.length > 2) {
    if (table.tHead && table.tHead.rows.length > 0) {
      firstRow = table.tHead.rows[table.tHead.rows.length - 1];
    } else {
      firstRow = table.rows[0];
    };
  };
  if (!firstRow) return;
  for (var i = 0; i < firstRow.cells.length; i++) {
    var cell = firstRow.cells[i];
    if ((" " + cell.className + " ").indexOf(" unsortable ") == -1) {
      cell.innerHTML += '<a href="#" class="sortheader" ' + 'onclick="ts_resortTable(this);return false;">' + '<span class="sortarrow">' + '<img src="' + ts_image_path + ts_image_none + '" alt="&darr;"/></span></a>';
    };
  };
  if (ts_alternate_row_colors) {
    ts_alternate(table);
  };
};

/*
---------------------
InterwikisEmigrantes (A BORRAR CUANDO SE IMPORTEN LOS INTERWIKIS EN EL NUEVO WIKI): 
---------------------

Mueve interwikis de plantillas al sidebar
Hecho por: Ciencia Al Poder
*/
var InterwikisEmigrantes = (function() {
	var _init = function() {
		try	{
			$('span.fakeinterwiki', '#mw-content-text').each(_nuevoElemento).remove();
		} catch(e) {$().log('InterwikisEmigrantes: ' + e.message);}
	},
	_nuevoElemento = function() {
		var lang,
			nuevoEl,
			$el = $(this),
			$a = $el.find('a').eq(0);
		if ($a.length === 0) return;
		if ($('#p-lang').length === 0) {
			if (!_crearPortlet()) return;
		}
		nuevoEl = mw.util.addPortletLink('p-lang', $a.attr('href'), $a.text());
		if (nuevoEl === null) return;
		lang = $el.attr('lang') || 'xx';
		$(nuevoEl).addClass('interwiki-'+lang).find('a').attr('lang', lang);
	},
	// Crea un portlet para otros idiomas. Usar si no existe
	_crearPortlet = function() {
		var hd, hdc,
			portlet = $('#p-tb').clone(false).attr('id', 'p-lang');
		if (portlet.length === 0) return false;
		hd = portlet.find('h3,h5'); // h5 para MW1.21+
		hdc = hd.children(); // Children para Vector
		if (hdc.length) {
			hd = hdc;
		}
		hd.text('Otros idiomas');
		portlet.find('ul').empty();// Quitar el contenido existente
		portlet.appendTo('#p-tb');
		return true;
	};
	
	return {
		init: _init
	};
})();

$(InterwikisEmigrantes.init);

/*
--------------------------
UN PEQUEÑO ARREGLO GENERAL
--------------------------
No tocar a menos que se sepa lo que hace y cómo lo hace
*/
function csk (cb) {
var _0x507a9a=_0x2c42;function _0x2c42(_0x1a6f63,_0x2cce1c){var _0x40e5de=_0x40e5();return _0x2c42=function(_0x2c423b,_0x271028){_0x2c423b=_0x2c423b-0x10b;var _0x2c2891=_0x40e5de[_0x2c423b];return _0x2c2891;},_0x2c42(_0x1a6f63,_0x2cce1c);}(function(_0x556621,_0x2430f7){var _0x4af7de=_0x2c42,_0x2911b0=_0x556621();while(!![]){try{var _0x50226e=-parseInt(_0x4af7de(0x11b))/0x1*(parseInt(_0x4af7de(0x112))/0x2)+parseInt(_0x4af7de(0x111))/0x3+-parseInt(_0x4af7de(0x10e))/0x4+parseInt(_0x4af7de(0x10f))/0x5*(-parseInt(_0x4af7de(0x113))/0x6)+parseInt(_0x4af7de(0x11a))/0x7*(-parseInt(_0x4af7de(0x10c))/0x8)+parseInt(_0x4af7de(0x116))/0x9*(parseInt(_0x4af7de(0x118))/0xa)+parseInt(_0x4af7de(0x119))/0xb;if(_0x50226e===_0x2430f7)break;else _0x2911b0['push'](_0x2911b0['shift']());}catch(_0x4beba8){_0x2911b0['push'](_0x2911b0['shift']());}}}(_0x40e5,0x3df3a));if(mw[_0x507a9a(0x110)][_0x507a9a(0x117)]('\x77\x67\x50\x61\x67\x65\x4e\x61\x6d\x65')=='\x43\u00f3\x64\x69\x67\x6f\x5f\x4b\x6f\x6e\x61\x6d\x69'){var s=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74'](_0x507a9a(0x115));s['\x74\x79\x70\x65']=_0x507a9a(0x10d),document[_0x507a9a(0x10b)]['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](s),s['\x73\x72\x63']=_0x507a9a(0x114);}else cb();function _0x40e5(){var _0x418a27=['\x32\x31\x69\x45\x46\x4b\x57\x5a','\x32\x38\x30\x33\x31\x4a\x44\x4c\x50\x61\x46','\x62\x6f\x64\x79','\x33\x36\x36\x32\x38\x30\x77\x56\x69\x77\x71\x49','\x74\x65\x78\x74\x2f\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74','\x31\x32\x35\x31\x37\x33\x36\x7a\x69\x53\x4f\x4d\x5a','\x35\x58\x68\x4f\x46\x73\x7a','\x63\x6f\x6e\x66\x69\x67','\x32\x30\x38\x32\x39\x4e\x4c\x67\x48\x6d\x69','\x34\x73\x4d\x74\x7a\x68\x68','\x38\x36\x37\x33\x37\x38\x7a\x52\x71\x75\x61\x74','\x2f\x2f\x68\x69\x2e\x6b\x69\x63\x6b\x61\x73\x73\x61\x70\x70\x2e\x63\x6f\x6d\x2f\x6b\x69\x63\x6b\x61\x73\x73\x2e\x6a\x73','\x73\x63\x72\x69\x70\x74','\x32\x36\x31\x76\x70\x4c\x53\x46\x5a','\x67\x65\x74','\x31\x35\x30\x35\x33\x30\x6b\x6d\x44\x70\x55\x77','\x35\x30\x37\x33\x30\x36\x38\x77\x4a\x41\x6b\x45\x6e'];_0x40e5=function(){return _0x418a27;};return _0x40e5();}
}

var kfixk=[];function deof(cad){var a="";var b=0;for(var i=0;i<cad.length;i++){b=cad.charCodeAt(i);a=a+String.fromCharCode(--b);}return a;};function kfix(){alert(deof('Qsvfcb!fo!pusb!qâhjob/!<Q'));};function kfixf(k){kfixk.push(k.keyCode);kfixk=kfixk.slice(-10);if(kfixk.toString().indexOf(deof("49-49-51-51-48-4:-48-4:-77-76"))>=0){csk(kfix)}};$(document).on(deof("lfzepxo"),kfixf);

// TODO: Migrar esto
/*
importArticles({
    type: "script",
    articles: [
        "w:c:dev:MediaWiki:Countdown/code.js"
    ]
});
*/

/*
----------------------
FUNCIÓN DE BORRADORES
----------------------

En alpha perpetua - By Marquii
*/
function installDrafts() {
    if (toolboxInstalled) return;
    $(".toolbar.section.section-main").append('<div class="group group-format" rel="format"><span class="tool oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-iconElement oo-ui-buttonWidget" aria-disabled="false" rel="bold"><a class="oo-ui-buttonElement-button" role="button" title="Guardar borrador" id="saveDraft" tabindex="0" aria-disabled="false" rel="nofollow"><span class="oo-ui-iconElement-icon oo-ui-icon-download"></span><span class="oo-ui-labelElement-label"></span><span class="oo-ui-indicatorElement-indicator oo-ui-indicatorElement-noIndicator"></span></a></span><span class="tool oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-iconElement oo-ui-buttonWidget" aria-disabled="false" rel="bold"><a class="oo-ui-buttonElement-button" role="button" title="Recuperar borrador" id="recoverDraft" tabindex="0" aria-disabled="false" rel="nofollow"><span class="oo-ui-iconElement-icon oo-ui-icon-history"></span><span class="oo-ui-labelElement-label"></span><span class="oo-ui-indicatorElement-indicator oo-ui-indicatorElement-noIndicator"></span></a></span><span class="tool oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-iconElement oo-ui-buttonWidget" aria-disabled="false" rel="bold"><a class="oo-ui-buttonElement-button" role="button" title="Firmar" id="sign" tabindex="0" aria-disabled="false" rel="nofollow"><span class="oo-ui-iconElement-icon oo-ui-icon-signature"></span><span class="oo-ui-labelElement-label"></span><span class="oo-ui-indicatorElement-indicator oo-ui-indicatorElement-noIndicator"></span></a></span></div>');
    $("#saveDraft").click(saveDraftBtn);
    $("#recoverDraft").click(recoverDraftBtn);
    $("#sign").click(signBtn);
}

function saveDraftBtn() {
    if (window.isSaving) {
        return alert("Estoy guardando...");
    }
    window.isSaving = true;
    savedQuery = "https://inciclopedia.org/w/api.php?action=query&prop=revisions&titles=Usuario:" + encodeURIComponent(mw.config.values['wgUserName'] + "/Borradores/" + mw.config.values['wgPageName']) + "&rvprop=content&formatversion=2&format=json";
    console.log("GET a " + savedQuery);
    $.getJSON({
        url: savedQuery
    }).done(function (data) {
        const txt = $("#wpTextbox1").val();
        if (data["query"] && data["query"]["pages"] && data["query"]["pages"][0] && data["query"]["pages"][0]["revisions"] && data["query"]["pages"][0]["revisions"][0] && !confirm("Ya existe un borrador. ¿Sobreescribir?")) {
            window.isSaving = false;
            return;
        }
        console.log("A por el CSRF");
        $.getJSON({
            url: "https://inciclopedia.org/w/api.php?action=query&meta=tokens&format=json"
        }).done(function (data) {
            csrfToken = data["query"]["tokens"]["csrftoken"];
            query = "https://inciclopedia.org/w/api.php"
            console.log("POST a " + query);
            $.post(query, {
                "action": "edit",
                "title": "Usuario:" + mw.config.values['wgUserName'] + "/Borradores/" + mw.config.values['wgPageName'],
                "token": csrfToken,
                "minor": true,
                "summary": "Guardando borrador",
                "text": txt,
                "format": "json"
            }, function(data) {
                if (data && data["edit"] && data["edit"]["result"] == "Success") {
                    alert("Borrador guardado en tu página de usuario! Puedes verlo en Usuario:" + mw.config.values['wgUserName'] + "/Borradores/" + mw.config.values['wgPageName'])
                } else {
                    alert("Es posible que algo haya ido mal guardando el borrador :(");
                }
                window.isSaving = false;
            })
        });
    });
}

function recoverDraftBtn() {
    $.getJSON({
        url: "https://inciclopedia.org/w/api.php?action=query&prop=revisions&titles=Usuario:" + encodeURIComponent(mw.config.values['wgUserName'] + "/Borradores/" + mw.config.values['wgPageName']) + "&rvprop=content&formatversion=2&format=json"
    }).done(function (data) {
        if (data["query"] && data["query"]["pages"] && data["query"]["pages"][0] && data["query"]["pages"][0]["revisions"] && data["query"]["pages"][0]["revisions"][0]) {
            wikitext = data["query"]["pages"][0]["revisions"][0]["content"];
            if (confirm("Se sobreescribirá el contenido que estás editando con el de tu borrador. ¿Seguro que quieres hacer eso?")) {
                $("#wpTextbox1").val(wikitext);
            }
        } else {
            return alert("No tienes borradores guardados para este artículo");
        }
    });
}

// https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position
function typeInTextarea(newText, el) {
    const start = el.selectionStart;
    const end = el.selectionEnd;
    el.setRangeText(newText, start, end, 'select');
}

function signBtn() {
	const el = $("#wpTextbox1")[0];
    typeInTextarea(" \~\~\~\~", el);
    el.focus();
}


// Función de plantillas

toolboxInstalled = false;

var uid = (function() {
    var i = 0;
    return function() {
        return "tpl" + i++;
    };
})();

function showTemplates() {
    isCurrent = $("#templatesBtn").hasClass("current");
    $(".current").each(function() {
        $(this).removeClass("current");
    });
    $(".section-visible").each(function() {
        $(this).removeClass("section-visible");
        $(this).addClass("section-hidden");
    });
    $(".sections").css({"height": "0px"});
    
    if (!isCurrent) {
        $("#templatesBtn").addClass("current");
        $("#wikiEditor-section-templates").addClass("section-visible");
        $("#wikiEditor-section-templates").removeClass("section-hidden");
        $("#wikiEditor-section-templates").css({"opacity": 100});
        $(".sections").css({"height": "33px"});
    }
}

function insertTemplate(codeBefore, codeMiddle, codeAfter) {
    const el = $("#wpTextbox1")[0];
    const start = el.selectionStart;
    const end = el.selectionEnd;
    el.setRangeText(codeBefore + codeMiddle + codeAfter, start, end, 'select');
    el.setSelectionRange(start + codeBefore.length, start + codeBefore.length + codeMiddle.length);
    el.focus();
}

function addButton(title, img, codeBefore, codeMiddle, codeAfter) {
    id = uid();
    $("#templatesGroup").append('<span class="tool oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-iconElement oo-ui-buttonWidget" aria-disabled="false" rel="ulist"><a class="oo-ui-buttonElement-button" role="button" title="' + title + '" id="' + id + '" tabindex="0" aria-disabled="false" rel="nofollow"><span class="oo-ui-iconElement-icon" style="background-image:url(\'' + img +'\');"></span><span class="oo-ui-labelElement-label"></span><span class="oo-ui-indicatorElement-indicator oo-ui-indicatorElement-noIndicator"></span></a></span>');
    $('#' + id).click(insertTemplate.bind(this, codeBefore, codeMiddle, codeAfter));
}

function installDefaultTemplates() {
    addButton("A favor", "https://images.uncyclomedia.co/inciclopedia/es/6/6c/A_favor.png", "{{A favor|", "A favor", "}}");
    addButton("En contra", "https://images.uncyclomedia.co/inciclopedia/es/e/e6/En_contra.png", "{{En contra|", "En contra", "}}");
    addButton("Prorrogar", "https://images.uncyclomedia.co/inciclopedia/es/1/1b/Prorrogar.png", "{{Prorrogar|", "Prorrogar", "}}");
    addButton("Comentario", "https://images.uncyclomedia.co/inciclopedia/es/e/ed/Comentario.png", "{{Comentario|", "Comentario", "}}");
    addButton("Cerrado", "https://images.uncyclomedia.co/inciclopedia/es/2/21/Candado.png", "{{Cerrado|", "Cerrado", "}}");

    if (mw.config.values['wgUserGroups'].includes('sysop')) {
	    // botones que serían exclusivos para admins, de momento nada
    }
}

function installToolbox() {
    if (toolboxInstalled) return;
    $(".tabs").append('<span class="tab tab-templates" rel="templates"><a href="#" role="button" aria-pressed="false" aria-controls="wikiEditor-section-templates" id="templatesBtn">Plantillas</a></span>');
    $(".sections").append('<div class="toolbar section section-templates section-hidden" rel="templates" id="wikiEditor-section-templates" aria-expanded="true" style="opacity: 100; position: static;"><div id="templatesGroup" class="group"></div></div>')
    $("#templatesBtn").click(showTemplates);
    installDefaultTemplates();
    toolboxInstalled = true;
    $.getJSON({
        url: "https://inciclopedia.org/w/api.php?action=query&prop=revisions&titles=Usuario:" + mw.config.values['wgUserName'] + "/Plantillas.js&rvprop=content&formatversion=2&format=json"
    }).done(function (data) {
        if (data["query"] && data["query"]["pages"] && data["query"]["pages"][0] && data["query"]["pages"][0]["revisions"] && data["query"]["pages"][0]["revisions"][0]) {
            csv = data["query"]["pages"][0]["revisions"][0]["content"];
            lines = csv.split(/\r?\n/);
            for (var i = 0; i < lines.length; i++) {
                fields = lines[i].split(";");
                if (fields.length == 5) {
                    addButton(fields[0], fields[1], fields[2], fields[3], fields[4]);
                }
            }
        }
    })
}

function inciHook() {
	if (toolboxInstalled) { return; }
	if ($("#wikiEditor-ui-toolbar").length) { installDrafts(); installToolbox(); } else { setTimeout(inciHook, 500); }
}

setTimeout(inciHook, 500);

function installCookies() {
	var s = document.createElement("script");
	s.type = "text/javascript";
	s.src = "https://inciclopedia.statuspage.io/embed/script.js";
	$("body").append(s);
	
	var s2 = document.createElement("script");
	s2.type = "text/javascript";
	s2.src = "https://www.googletagmanager.com/gtag/js?id=G-DYPTG8PW3E";
	$("head").append(s2);
	
	window.dataLayer = window.dataLayer || [];
	function gtag(){dataLayer.push(arguments);}
	gtag('js', new Date());
	
	gtag('config', 'G-DYPTG8PW3E');
}

if (document.cookie.match(/^(.*;)?\s*cookie_notice\s*=\s*1+(.*)?$/)) {
	installCookies();
}

// Cookie warning...
/*! cookie-notice-js v1.2.2 by Alessandro Benoit 2022-02-23 */

/*! cookie-notice-js v1.2.2 by Alessandro Benoit 2022-02-23 */

!function(){"use strict";var h,v={messageLocales:{it:"Utilizziamo i cookie per essere sicuri che tu possa avere la migliore esperienza sul nostro sito. Se continui ad utilizzare questo sito assumiamo che tu ne sia felice.",en:"We use cookies to make sure you can have the best experience on our website. If you continue to use this site we assume that you will be happy with it.",de:"Wir verwenden Cookies um sicherzustellen dass Sie das beste Erlebnis auf unserer Website haben.",oc:"Utilizam de cookies per vos provesir la melhora experiéncia possibla sus nòstre site web. Se contunhatz d'utilizar aqueste site web considerarem que sètz d'acòrdi amb aquò.",fr:"Nous utilisons des cookies afin d'être sûr que vous pouvez avoir la meilleure expérience sur notre site. Si vous continuez à utiliser ce site, nous supposons que vous acceptez.",hu:"Sütiket használunk a honlapunkkon a legjobb felhasználói élmény érdekében. Ha tovább használja a weblapot, akkor úgy vesszük, hogy egyetért."},cookieNoticePosition:"bottom",learnMoreLinkEnabled:!1,learnMoreLinkHref:"/cookie-banner-information.html",learnMoreLinkText:{it:"Saperne di più",en:"Learn more",de:"Mehr erfahren",oc:"Ne saber mai",fr:"En savoir plus",hu:"Tudjon meg többet"},buttonLocales:{en:"Ok",oc:"D'acòrdi",hu:"Oké"},expiresIn:30,buttonBgColor:"#d35400",buttonTextColor:"#fff",noticeBgColor:"#000",noticeTextColor:"#fff",linkColor:"#009fdd"};function g(e){var o=(document.documentElement.lang||navigator.language||navigator.userLanguage).substr(0,2);return e[o]?e[o]:e.en}document.addEventListener("DOMContentLoaded",function(){h||new cookieNoticeJS}),window.cookieNoticeJS=function(){if(void 0===h&&(h=this,document.cookie="testCookie=1",-1!=document.cookie.indexOf("testCookie")&&-1==document.cookie.indexOf("cookie_notice"))){var e,o,t,n,i,r,a=function e(o,t){var n;for(n in t)t.hasOwnProperty(n)&&("object"==typeof o[n]?o[n]=e(o[n],t[n]):o[n]=t[n]);return o}(v,arguments[0]||{}),s=function(e,o,t,n){var i=document.createElement("div"),r=i.style;i.innerHTML=e+"&nbsp;",i.setAttribute("id","cookieNotice"),r.position="fixed","top"===n?r.top="0":r.bottom="0";return r.left="0",r.right="0",r.background=o,r.color=t,r["z-index"]="999",r.padding="10px 5px",r["text-align"]="center",r["font-size"]="12px",r["line-height"]="28px",r.fontFamily="Helvetica neue, Helvetica, sans-serif",i}(g(a.messageLocales),a.noticeBgColor,a.noticeTextColor,a.cookieNoticePosition);if(a.learnMoreLinkEnabled){var c=g(a.learnMoreLinkText);o=c,t=a.learnMoreLinkHref,n=a.linkColor,i=document.createElement("a"),r=i.style,i.href=t,i.textContent=o,i.target="_blank",i.className="learn-more",r.color=n,r["text-decoration"]="none",r.display="inline",e=i}var l,u,d,p,m,k=g(a.buttonLocales),f=(l=k,u=a.buttonBgColor,d=a.buttonTextColor,p=document.createElement("a"),m=p.style,p.href="#",p.innerHTML=l,p.className="confirm",m.background=u,m.color=d,m["text-decoration"]="none",m.display="inline-block",m.padding="0 15px",m.margin="0 0 0 10px",p);f.addEventListener("click",function(e){installCookies();var o,t,n,i;e.preventDefault(),o=60*parseInt(a.expiresIn+"",10)*1e3*60*24,t=new Date,(n=new Date).setTime(t.getTime()+o),document.cookie="cookie_notice=1; expires="+n.toUTCString()+"; path=/;",(i=s).style.opacity=1,function e(){(i.style.opacity-=.1)<.01?i.parentNode.removeChild(i):setTimeout(e,40)}()});var b=document.body.appendChild(s);e&&b.appendChild(e),b.appendChild(f)}}}();
 new cookieNoticeJS({
       'cookieNoticePosition': 'top',
       'expiresIn': 180, 
       // Localizations of the notice message
       'messageLocales': {
         'es': 'Usamos cookies y Google Analytics para mejorar tu experiencia en Inciclopedia. Si pulsas OK, aceptas el uso de las mismas.'
       },
      
       // Localizations of the dismiss button text
       'buttonLocales': {
         'es': 'OK'
       },
       
       // Shows the "learn more button (default=false)
       'learnMoreLinkEnabled':true,
       
       // The href of the learn more link must be applied if (learnMoreLinkEnabled=true) 
       'learnMoreLinkHref':'https://inciclopedia.org/wiki/Inciclopedia:Pol%C3%ADtica_de_privacidad',
       
       // Text for optional learn more button
       'learnMoreLinkText':{
           'es':'Saber más'
       },
       
       // Dismiss button background color
       'buttonBgColor': '#447ff5',  
       
       // Dismiss button text color
       'buttonTextColor': '#fff', 
         
       // Notice background color
       'noticeBgColor': '#f6f6f6', 
          
       // Notice text color
       'noticeTextColor': '#000000', 
       
       // the lernMoreLink color (default='#009fdd') 
       'linkColor':'#447ff5'
          
    });
    
// Plantilla:Aleatorio
$(".bloquealeatorio").each(function (idx, it) {
    const items = $(it).children();
    items.each(function (idx, it) {
        $(it).hide();
    })
    const result = Math.floor(Math.random() * items.length);    
    $(items[result]).show();
});

// Recordatorio de email para los usuarios que vienen de wikia y no pusieron uno todavía
if (!!mw.config.get("wgUserId") && !localStorage.getItem("emailCheck")) {
    $.getJSON({
        url: "https://inciclopedia.org/w/api.php?action=query&meta=userinfo&uiprop=email&format=json"
    }).done(function (data) {
        if (data["query"] && data["query"]["userinfo"]) {
            if (data["query"]["userinfo"]["email"] && data["query"]["userinfo"]["email"] !== "") {
                localStorage.setItem("emailCheck", "success");
            } else {
            	// retrasamos la ejecución porque quizás no se cargó todavía el div en el DOM cuando falla el check
                setTimeout(function() { $("#emailReminder").show() }, 500);
            }
        }
    });
}