Järjestelmäviesti:Gadget-HotCat.js

Jedipediasta, vapaasta Tähtien sota-tietosanakirjasta tänään, 28. huhtikuuta 2024
Siirry navigaatioonSiirry hakuun

Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.

  • Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
  • Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
  • Internet Explorer: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
  • Opera: Valikko → Asetukset (Opera → Asetukset Macilla) ja sitten Tietosuoja ja turvallisuus → Tyhjennä selaustiedot → Välimuistissa olevat kuvat ja tiedostot.
// DEVELOPMENT VERSION, USE AT YOUR OWN RISK
/*--------------------------------------------------------*\
||                  --- HotCat ---                         ||
|| A script for updating interlanguage links on foreign	   ||
|| wikis with one simple edit. Based on a script by C-3PO: ||
|| https://www.jedipedia.net/wiki/Jedipedia:HotCat and its ||
|| French version: [[:fr:MediaWiki:Gadget-HotCat.js]] by   ||
|| [[User:BlondeLegendaire]]. Modified for Wookieepedia by ||
|| [[User:KockaAdmiralac]] and [[User:01miki10]].          ||
|| ------------------------------------------------------- ||
|| Please do not copy this script to your wiki for various ||
|| reasons. Instead of that, import it.                    ||
\*--------------------------------------------------------*/

var hotcat = {};
hotcat.settings = {};
 
hotcat.dataTest = '';
hotcat.settings.category_blacklist = [];
hotcat.settings.qs_templates = [];
hotcat.settings.defaultsort = "DEFAULTSORT"; //translated name for DEFAULTSORT
hotcat.settings.biggest_wikis=['en','de','ru','es','pl','fr','nl','ja','it','pt','ka','fi','cs','tr','hu','uk','ko','el','sr','da','sv','no','zh','bg','hr','ro','la','sl','id']; //Biggest foreign wikis, sorted by number of articles
 
//List of wikis in other languages - code, language and accepted interwiki links
hotcat.settings.wikis=[
{id:'bg', name:'Bulgarian', domain:'starwars.fandom.com', path:'/bg/', interlang:true, installed_iws:['ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'ca', name:'Catalan', domain:'starwars.fandom.com', path:'/ca/', interlang:true, installed_iws:['bg','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'cs', name:'Czech', domain:'starwars.fandom.com', path:'/cs/', interlang:true, installed_iws:['bg','ca','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'da', name:'Danish', domain:'starwars.fandom.com', path:'/da/', interlang:true, installed_iws:['bg','ca','cs','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'de', name:'German', domain:'www.jedipedia.net', path:'/w/', interlang:false,installed_iws:['bg','ca','cs','da','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'el', name:'Greek', domain:'starwars.fandom.com', path:'/el/', interlang:true, installed_iws:['bg','ca','cs','da','de','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'en', name:'English', domain:'starwars.fandom.com', path:'/', interlang:true, installed_iws:['bg','cs','da','de','el','es','fi','fr','hr','hu','id','it','ja','ka','ko','la','nl','no','pl','pt','ro','ru','sl','sr','sv','tr','uk','zh']}, //List of languages accepted by Wookieepedia
{id:'eo', name:'Esperanto', domain:'starwars.fandom.com', path:'/eo/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'es', name:'Spanish', domain:'starwars.fandom.com', path:'/es/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'fa', name:'Persian', domain:'starwars.fandom.com', path:'/fa/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'fi', name:'Finnish', domain:'www.jedipedia.fi', path:'/w/', interlang:false, installed_iws:['bg','ca','cs','da','de','el','en','es','fa','fr','fy','hr','hu','id','it','ja','ko','la','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','tr','uk','zh']},
{id:'fr', name:'French', domain:'starwars.fandom.com', path:'/fr/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'fy', name:'West Frisian', domain:'starwars.fandom.com', path:'/fy/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'ga', name:'Irish', domain:'starwars.fandom.com', path:'/ga/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'gl', name:'Galician', domain:'starwars.fandom.com', path:'/gl/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'hr', name:'Croatian', domain:'starwars.fandom.com', path:'/hr/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'hu', name:'Hungarian', domain:'starwars.fandom.com', path:'/hu/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'id', name:'Indonesian', domain:'starwars.fandom.com', path:'/id/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'is', name:'Icelandic', domain:'starwars.fandom.com', path:'/is/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'it', name:'Italian', domain:'starwars.fandom.com', path:'/it/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'ja', name:'Japanese', domain:'starwars.fandom.com', path:'/ja/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'ka', name:'Georgian', domain:'starwars.fandom.com', path:'/ka/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'ko', name:'Korean', domain:'starwars.fandom.com', path:'/ko/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'la', name:'Latin', domain:'starwars.fandom.com', path:'/la/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'mn', name:'Mongolian', domain:'starwars.fandom.com', path:'/mn/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'nl', name:'Dutch', domain:'starwars.fandom.com', path:'/nl/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'no', name:'Norwegian', domain:'starwars.fandom.com', path:'/no/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'pl', name:'Polish', domain:'www.ossus.pl', path:'/', interlang:false, installed_iws:['cs','de','en','es','fi','fr','hu','it','ja','ka','ko','nl','pt','ru','tr','uk']},
{id:'pt', name:'Portuguese', domain:'starwars.fandom.com', path:'/pt/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','ro','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'ro', name:'Romanian', domain:'starwars.fandom.com', path:'/ro/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ru','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'ru', name:'Russian', domain:'starwars.fandom.com', path:'/ru/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','sk','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'sk', name:'Slovakian', domain:'starwars.fandom.com', path:'/sk/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sl','sr','sv','th','tr','uk','vi','zh']},
{id:'sl', name:'Slovenian', domain:'starwars.fandom.com', path:'/sl/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sr','sv','th','tr','uk','vi','zh']},
{id:'sr', name:'Serbian', domain:'starwars.fandom.com', path:'/sr/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sv','th','tr','uk','vi','zh']},
{id:'sv', name:'Swedish', domain:'starwars.fandom.com', path:'/sv/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','th','tr','uk','vi','zh']},
{id:'th', name:'Thai', domain:'starwars.fandom.com', path:'/th/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','tr','uk','vi','zh']},
{id:'tr', name:'Turkish', domain:'starwars.fandom.com', path:'/tr/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','uk','vi','zh']},
{id:'uk', name:'Ukrainian', domain:'starwars.fandom.com', path:'/uk/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','vi','zh']},
{id:'vi', name:'Vietnamese', domain:'starwars.fandom.com', path:'/vi/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','zh']},
{id:'zh', name:'Chinese', domain:'starwars.fandom.com', path:'/zh/', interlang:true, installed_iws:['bg','ca','cs','da','de','el','en','eo','es','fa','fi','fr','fy','ga','gl','hr','hu','id','is','it','ja','ka','ko','la','mn','nl','no','pl','pt','ro','ru','sk','sl','sr','sv','th','tr','uk','vi',]}
];
hotcat.settings.interwiki_codes = {};
for ( var iloop = 0; iloop < hotcat.settings.wikis.length; iloop++ ) {
	hotcat.settings.interwiki_codes[ hotcat.settings.wikis[iloop].id ] = iloop;
}
hotcat.settings.interwiki_codes_pl = {'cs': 1, 'de': 2, 'en': 3, 'es': 4, 'fr': 5, 'ko': 6, 'it': 7, 'ka': 8, 'hu': 9, 'nl': 10, 'ja': 11, 'pt': 12, 'ru': 13, 'fi': 13, 'tr': 14, 'uk': 15 };
hotcat.getWikiById = function( tmpId ) {
	return hotcat.settings.wikis[ hotcat.settings.interwiki_codes[tmpId] ];
};
 
hotcat.settings.is_sysop = 'false';
hotcat.settings.api_url = '/w/api.php';
hotcat.settings.linkcolor = '#0645AD'; //Blue link color
hotcat.initrequest = null;
 
//Initialize variables
hotcat.curpage = mw.config.get( 'wgPageName' ); //Page name with namespace and underscores
hotcat.exzstatus = false; //Is Wookieepedia article featured
hotcat.lwastatus = false; //Is Wookieepedia article good
hotcat.castatus = false; //Is Wookieepedia article comprehensive
hotcat.wookattr = false; //Wookieepedia attribution parameter in es and pt
hotcat.defaultsort = '';
hotcat.categories = {};
hotcat.categories.array = [];
hotcat.categories.recently_removed = [];
hotcat.categories.suggestions = {};
hotcat.interwikis = {};
hotcat.interwikis.array = [];
hotcat.interwikis.loadstatus = 0;
hotcat.submit_counter = 0;
hotcat.ui = {};
 
hotcat.makeempty = function( elementid ) {
	var ele = document.getElementById( elementid );
	if ( !ele ) return;
	while ( ele.firstChild ) ele.removeChild( ele.firstChild );
};
 
// Add the link for HotCat in the category list
// when the page has loaded
hotcat.addlink = function () {
	var hctmp = {};
 
	// If MediaWiki can't be found
	if ( !mw || !mw.config ) return;
 
	// Check if HotCat can be activated: return if
	// only administrators may edit the page and
	// user is not such
	hctmp.usergrps = mw.config.get( 'wgUserGroups' );
	if ( hctmp.usergrps && hctmp.usergrps.length ) {
		hotcat.settings.is_sysop = false;
		for ( var i = 0; i < hctmp.usergrps.length; i++ ) {
			if ( hctmp.usergrps[i] == 'sysop' ) { hotcat.settings.is_sysop = true; break; }
		}
		if ( hotcat.settings.is_sysop === false ) {
			hctmp.restrictedit = mw.config.get( 'wgRestrictionEdit' );
			if ( hctmp.restrictedit && hctmp.restrictedit.length ) {
				for ( var j = 0; j < hctmp.restrictedit.length; j++ ) { if ( hctmp.restrictedit[j] == 'sysop' ) return; }
			}
		}
	}
	// if editing, previewing etc.
	hctmp.action = mw.config.get( 'wgAction' );
	if ( hctmp.action !== 'view' || mw.config.get( 'wgCanonicalNamespace' ) == 'Special' ) return;
	// if comparing revisions
	hctmp.tableobj = document.getElementsByTagName( 'table' );
	for ( var i = 0; i < hctmp.tableobj.length; i++ ) { if ( hctmp.tableobj[i].className.indexOf( 'diff' ) != -1 ) return; }
	// if watching an old revision
	if ( document.URL.indexOf( 'oldid=' ) != -1 ) return;
	// HotCat is only allowed in namespaces Article, Wookieepedia, File, Help and Category
	hctmp.namespace = mw.config.get( 'wgNamespaceNumber' );
	if ( hctmp.namespace !== 0 && hctmp.namespace !== 4 && hctmp.namespace !== 6 && hctmp.namespace !== 12 && hctmp.namespace !== 14 ) return;
	// if the page doesn't exist
	if ( mw.config.get( 'wgArticleId' ) === 0 ) return;
 
	hctmp.initlink = document.createElement( 'div' );
	hctmp.initlink.id = 'hotcat_initlink';
	hctmp.initlink.addEventListener( 'click', hotcat.startinit );
	hctmp.initlink.appendChild( document.createTextNode( 'HotCat' ) );
	document.getElementById( 'catlinks' ).appendChild( hctmp.initlink );
};
 
// Si le lien init a été cliqué: Lancer une demande pour les catégories et les liens InterWiki
hotcat.startinit = function() {
	//hotcat.initrequest 
 
	$.ajax({
		url: mw.util.wikiScript( 'api' ),
		data: {
			action: 'parse',
			prop: 'wikitext',
			page: hotcat.curpage,
			format: 'json'
		},
		dataType: 'json',
		success: function( d ) {
			if ( d.error ) {
				data = 'error' + d.error.code;
			} else {
				if ( d.parse.wikitext !== undefined ) {
					data = hotcat.extractInterWikiData( d.parse.wikitext['*'], hotcat.curpage, mw.config.get( 'wgContentLanguage' ) ).replace( /,/gm, '\n' );
					//console.log('data: ' + data);
					hotcat.initrequest = data;
				}
			}
		}, 
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert( 'Status: ' + textStatus ); 
			alert( 'Error: ' + errorThrown );
		}
	} ).done( hotcat.init );
};
 
 
hotcat.init = function() {
 
	var hctmp = {};
	hctmp.e = {}; //Elemente
 
	document.getElementById( 'catlinks' ).removeChild( document.getElementById( 'hotcat_initlink' ) );
 
	hctmp.response_lines = hotcat.initrequest.replace( /\r/g, '' ).split( '\n' );
 
	//---- AJAX-AUSWERTUNG ---- //
	for ( var i = 0; i < hctmp.response_lines.length; i++ ) {
		//substring () au lieu de split () dans le cas où une ligne contient plus d'un = caractères
		hctmp.response1 = hctmp.response_lines[i].substring( 0, hctmp.response_lines[i].indexOf( '=' ) );
		hctmp.response2 = hctmp.response_lines[i].substring( hctmp.response_lines[i].indexOf( '=' ) + 1 );
		if ( hctmp.response1 == 'defaultsort' ) {
			hotcat.defaultsort = hctmp.response2;
		} else if ( hctmp.response1 == 'categories' ) {
			hotcat.categories.array = hctmp.response2.split( '[' );
		} else if ( hctmp.response1 == 'isFA' ) {
			hotcat.exzstatus = true;
		} else if ( hctmp.response1 == 'isGA' ) {
			hotcat.lwastatus = true;
		} else if ( hctmp.response1 == 'isCA' ) {
			hotcat.castatus = true;
		} else if ( hctmp.response1 == 'sin' || hctmp.response1 == 'icp' ) {
			hotcat.wookattr = true; // Wook attribution param in es and pt
		} else if ( hctmp.response1 === '' ) {
 
		} else if ( hotcat.settings.interwiki_codes[hctmp.response1] ) {//Sil sagit dun code langue
			hotcat.interwikis.array.push( { id:hctmp.response1, title:hctmp.response2, isFA:'false', canedit:false, type:'any', newlinks:[] } );
		}
	}
 
	//---- INTERFACE ---- //
	hctmp.e.main = document.createElement( 'div' );
	hctmp.e.main.id = 'hotcat';
	hctmp.e.main.className = "hotcat";
 
	hctmp.e.headline = document.createElement( 'h2' );
	hctmp.e.headline.style.paddingTop = '0';
	hctmp.e.onoff = document.createElement( 'span' );
	hctmp.e.onoff.className = 'mw-hotcat';
	hctmp.e.helplink = document.createElement( 'a' );
	hctmp.e.helplink.href = 'https://starwars.fandom.com/wiki/Wookieepedia_Help:HotCat';
	hctmp.e.helplink.target = '_blank';
	hctmp.e.helplink.appendChild( document.createTextNode( 'Ohje' ) );
	hctmp.e.closelink = document.createElement("a");
	hctmp.e.closelink.addEventListener('click', hotcat.close);
	hctmp.e.closelink.appendChild( document.createTextNode( 'Sulje' ) );
	hctmp.e.onoff.appendChild( hctmp.e.helplink );
	hctmp.e.onoff.appendChild( document.createTextNode( ' | ' ) );
	hctmp.e.onoff.appendChild( hctmp.e.closelink );
	hctmp.e.headimage = document.createElement( 'img' );
	hctmp.e.headimage.src = 'https://vignette.wikia.nocookie.net/fr.starwars/images/e/ee/HOTCAT_Logo.png/revision/latest?cb=20181110120640';
	hctmp.e.headimage.alt = 'HotCat';
	hctmp.e.headimage.title = 'HotCat';
	hctmp.e.headline.appendChild( hctmp.e.onoff );
	hctmp.e.headline.appendChild( hctmp.e.headimage );
 
	//------------- Interwiki-Links -----------------
	hctmp.e.interblock = document.createElement( 'div' );
	hctmp.e.interblock.id = 'hc_interwikiblock';
 
	//--- Create an URL for Google search ---
	var hctmp_interwiki_search_query = 'https://www.google.com/search?q=';
	//Some words that shouldn't be searched with Google as they are specific for one language
	var hctmp_googlebadwords = [/^auf$/,/^[Dd]as$/,/^[Dd]en$/,/^[Dd]er$/,/^[Dd]es$/,/^[Dd]ie$/,/^[Ee]in/,/^für$/,/^groß/,/^im$/,/^in$/,/^nach$/,/^um$/,/^und$/,/^von$/,/^[Dd]roid/,/^Familie$/,/^Imperial/,/^Klasse$/,/^Scharmützel$/,/^Schlacht$/,/^[Ss]ystem$/,/^VSY$/,/^NSY$/,/^Battle$/,/^[Ss]tar$/,/^Wars?$/,/^Way$/,/^First$/,/^Second$/,/^Third$/,/^a$/,/^and$/,/^of$/,/^from$/,/^by$/,/^[Tt]he/,/^BBY$/,/^ABY$/];
	var hctmp_googlewoerter = mw.config.get( 'wgTitle' ).replace( / (-|–)/g, '' ).replace( /(\-|\: ?)/g, ' ' ).replace( /^(.+ )?(Mission|Scharmützel|Schlacht)( (von|nach|um))? /, '').replace( / ?\(.+\)$/, '' ).split( ' ' );
	for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) { if ( hotcat.interwikis.array[i].id == mw.config.get( 'wgContentLanguage' ) && hotcat.interwikis.array[i].title != mw.config.get( 'wgTitle' ) ) {
		hctmp_googlewoerter = hctmp_googlewoerter.concat( hotcat.interwikis.array[i].title.replace( /\-/, ' ' ).replace( / ?\(.+\)$/, '' ).split( ' ' ) );
		break;
	} }
	var hctmp_google1 = [];
	var hctmp_google2 = [];
	// Remove duplicate entries
	for ( var i = 0; i < hctmp_googlewoerter.length; i++ ) {
		if ( typeof( hctmp_google1[hctmp_googlewoerter[i]] ) == 'undefined' ) {
			hctmp_google1[hctmp_googlewoerter[i]] = true;
			hctmp_google2[hctmp_google2.length] = hctmp_googlewoerter[i];
		}
	}
	hctmp_googlewoerter = hctmp_google2.slice(0);
	// Remove bad words
	for ( var i = 0; i < hctmp_googlewoerter.length; i++ ) {
		for (var j = 0; j < hctmp_googlebadwords.length; j++ ) {
			if ( hctmp_googlewoerter[i].match( hctmp_googlebadwords[j] ) ) {
				hctmp_googlewoerter.splice( i, 1 );
				if ( i > 0) i--;
				break;
			}
		}
	}
	hctmp_interwiki_search_query += hctmp_googlewoerter.join( '+OR+' ) + '+';
	hctmp_interwiki_search_query += '!!+site:starwars.fandom.com+OR+site:ossus.pl+OR+site:jedipedia.fi+OR+site:jedipedia.net';
	hctmp_interwiki_search_query += '&num=100&filter=0&complete=0'; // 100 results, without SafeSearch filters, with duplicate results
	if (hotcat.interwikis.array.length>0) hctmp_interwiki_search_query += '&as_occt=title'; //Avec suffisamment de termes de recherche exacts (= avec lien InterWiki en anglais), restreignez les résultats et recherchez uniquement dans le titre
 
 
	hctmp.e.interheadline = document.createElement( 'h3' );
	hctmp.e.interheadline.className = 'hotcat-interwikis';
	//hctmp.e.interheadline.style.width = '714px';
 
	hctmp.e.intergooglelink = document.createElement( 'a' );
	hctmp.e.intergooglelink.className = 'mw-hotcat';
	hctmp.e.intergooglelink.href = hctmp_interwiki_search_query;
	hctmp.e.intergooglelink.target = '_blank';
	hctmp.e.intergooglelink.appendChild( document.createTextNode( 'Etsi linkkejä' ) );
 
	hctmp.e.interheadline.appendChild(hctmp.e.intergooglelink);
	hctmp.e.interheadline.appendChild( document.createTextNode( 'Kieltenväliset linkit' ) );
 
	hctmp.e.inter_label = document.createElement( 'label' );
	hctmp.e.inter_label.appendChild( document.createTextNode( 'Lisää linkki: ' ) );
 
	hctmp.e.interselect = document.createElement( 'select' );
	hctmp.e.interselect.id = 'addinterwikikuerzel';
 
	hctmp.e.interoption = null;
 
	var cnt = 0;
	var hctmp_preseliw = '';
	while ( cnt < hotcat.settings.biggest_wikis.length ) {// Sélectionne les wikis à préfixer dans la sélection
		var nolink = true;
		if ( mw.config.get( 'wgContentLanguage' ) == hotcat.settings.biggest_wikis[cnt] ) {
			nolink = false;
		}
		for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) {
				if ( hotcat.interwikis.array[i].id == hotcat.settings.biggest_wikis[cnt] ) {
					nolink = false;
					break;
				}
		}
		if ( nolink===true ) {// Si le lien InterWiki dans cette langue n'existe pas encore
			hctmp_preseliw = hotcat.settings.biggest_wikis[cnt];// sauve le plus grand wiki
			break;
		} else {// S'il y a un lien InterWiki
			cnt++;// vérifie la prochaine langue
		}
	}
	for ( var i = 0; i < hotcat.settings.wikis.length; i++ ) {// Create a wiki selection
		hctmp.e.interoption = document.createElement( 'option' );
		hctmp.e.interoption.title = hotcat.settings.wikis[i].name;
		if ( hotcat.settings.wikis[i].id == mw.config.get( 'wgContentLanguage' ) || hotcat.getWikiById( mw.config.get( 'wgContentLanguage' ) ).installed_iws.indexOf( hotcat.settings.wikis[i].id ) == -1) hctmp.e.interoption.disabled = true; // deactivate unaccepted interwiki links
		if ( hotcat.settings.wikis[i].id==hctmp_preseliw ) hctmp.e.interoption.selected = true; // select largest wiki by default
		hctmp.e.interoption.appendChild( document.createTextNode( hotcat.settings.wikis[i].id ) );
		hctmp.e.interselect.appendChild( hctmp.e.interoption );
	}
 
	hctmp.e.interinput = document.createElement( 'input' );
	hctmp.e.interinput.value = mw.config.get( 'wgTitle' );
	hctmp.e.interinput.id = 'addinterwiki';
	hctmp.e.interinput.type = 'text';
 
	hctmp.e.interspan = document.createElement( 'span' );
	hctmp.e.interspan.appendChild( document.createTextNode( ' ' ) );
 
 
	hctmp.e.interbutton = document.createElement( 'input' );
	hctmp.e.interbutton.type = 'button';
	hctmp.e.interbutton.value = 'Lisää';
	hctmp.e.interbutton.addEventListener( 'click',
		function add_interwiki() {
			hotcat.interwikis.add( hotcat.settings.wikis[document.getElementById( 'addinterwikikuerzel' ).selectedIndex].id, document.getElementById( 'addinterwiki' ).value );
			document.getElementById( 'addinterwiki' ).value = mw.config.get( 'wgTitle' );
		} );
 
	hctmp.e.interhint = document.createElement( 'div' );
	hctmp.e.interhint.className = 'center_column';
	hctmp.e.interhint.style.fontSize = 'x-small';
	hctmp.e.interhint.style.color = '#555';
	hctmp.e.interhint.style.clear = 'both';
	hctmp.e.interhint.appendChild( document.createTextNode( 'Lisätäksesi kieltenvälisen linkin kirjoita sivun nimi kyseisellä kielellä.' ) );
 
	hctmp.e.inter2label = document.createElement( 'label' );
	hctmp.e.inter2label.appendChild( document.createTextNode( 'Muokkaa nykyisiä kieltenvälisiä linkkejä:' ) );
	hctmp.e.inter2label.style.fontWeight = 'bold';
 
	hctmp.e.inter2list = document.createElement( 'ul' );
	if ( hctmp.e.inter2list.classList ) {
		hctmp.e.inter2list.classList.add( 'hc_editlist' );
	} else {
		hctmp.e.inter2list.className += " hc_editlist";
	}
	hctmp.e.inter2list.id = 'interwikilist'

	hctmp.e.interblock.appendChild( hctmp.e.interheadline );
 
	hctmp.e.interblock_p1 = document.createElement( 'p' );
	hctmp.e.interblock_p1.appendChild( hctmp.e.inter_label );
	//hctmp.e.interblock_p1.appendChild( hctmp.e.inter_label2 );
	hctmp.e.interblock_p1.appendChild( hctmp.e.interselect );
	hctmp.e.interblock_p1.appendChild( hctmp.e.interinput );
	hctmp.e.interblock_p1.appendChild( hctmp.e.interspan );
	hctmp.e.interblock_p1.appendChild( hctmp.e.interbutton );
	hctmp.e.interblock.appendChild( hctmp.e.interblock_p1 );
 
	hctmp.e.interblock.appendChild( hctmp.e.interhint );
	hctmp.e.interblock.appendChild( hctmp.e.inter2label );
	hctmp.e.interblock.appendChild( hctmp.e.inter2list );
 
 
	// Submit block
	hctmp.e.commentblock = document.createElement( 'div' );
	hctmp.e.commentblock.id = 'hc_submitblock';
	hctmp.e.commentblock.style.clear = 'both';
	hctmp.e.commentblock.style.backgroundColor = '#aaa';
	hctmp.e.commentblock.style.padding = '10px';

	hctmp.e.submitbutton = document.createElement( 'input' );
	hctmp.e.submitbutton.type = 'button';
	hctmp.e.submitbutton.value = 'Tallenna';
	hctmp.e.submitbutton.addEventListener( 'click', function f() { hotcat.submit(); } );
 
	hctmp.e.cancelbutton = document.createElement( 'input' );
	hctmp.e.cancelbutton.type = 'button';
	hctmp.e.cancelbutton.value = 'Peruuta';
	hctmp.e.cancelbutton.addEventListener( 'click', hotcat.close );
 
	hctmp.e.endclear = document.createElement( 'br' );
	hctmp.e.endclear.style.clear = 'both';
 
 
	//hctmp.e.commentblock.appendChild( hctmp.e.commentlabel );
	//hctmp.e.commentblock.appendChild( hctmp.e.commentinput );
	hctmp.e.commentblock.appendChild( document.createTextNode( ' ' ) );
	hctmp.e.commentblock.appendChild( hctmp.e.submitbutton );
	hctmp.e.commentblock.appendChild( document.createTextNode( ' ' ) );
	hctmp.e.commentblock.appendChild( hctmp.e.cancelbutton );
	hctmp.e.commentblock.appendChild( hctmp.e.endclear );
 
 
	hctmp.e.main.appendChild( hctmp.e.headline );
	hctmp.e.main.appendChild( hctmp.e.interblock );
	hctmp.e.main.appendChild( hctmp.e.commentblock );
	document.getElementById( 'catlinks' ).appendChild( hctmp.e.main );
 
 
	hotcat.interwikis.redraw();
	while ( hotcat.interwikis.loadstatus < hotcat.interwikis.array.length) {
			hotcat.interwikis.load( hotcat.interwikis.array[hotcat.interwikis.loadstatus].id, hotcat.interwikis.array[hotcat.interwikis.loadstatus].title );
	}
};
 
//Close the HotCat window and reset all variables to default
hotcat.close = function() {
	document.getElementById( 'catlinks' ).removeChild( document.getElementById( 'hotcat' ) );
	hotcat.exzstatus = false;
	hotcat.lwastatus = false;
	hotcat.castatus = false;
	hotcat.wookattr = false;
	hotcat.defaultsort = '';
	hotcat.categories.array = [];
	hotcat.categories.suggestions = {};
	hotcat.interwikis.array = [];
	hotcat.interwikis.loadstatus = 0;
	hotcat.ui = {};
	hotcat.addlink();
};
 
hotcat.interwikis.add = function( newid, newtitle ) {
	//Language code, title, FA/GA/CA, edits possible, virtual interwiki links in that wiki
	hotcat.interwikis.array.push( { id:newid, title:newtitle, isFA:"false", canedit:false, type:"any", newlinks:[] } );
	hotcat.interwikis.redraw();
	hotcat.interwikis.load( newid, newtitle );
};
 
hotcat.interwikis.add2wiki = function( wikiid, newid, newtitle ) {//hotcat.interwikis.add2wiki("en", "de", "Jerba");
	var tmp_wiki = hotcat.interwikis.getById( wikiid );
	tmp_wiki.newlinks.push( { id:newid, title:newtitle } );
	tmp_wiki.newlinks.sort( ( wikiid === 'pl') ? hotcat.sortInterwikisPl : hotcat.sortInterwikis );
};
 
hotcat.interwikis.editwiki = function( wiki2edit, editid)  {
	//Changes link virtually in another wiki (et reprendre le lien interwiki de SWW)
	for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) { // Find the ID of the wiki edited
		if ( hotcat.interwikis[i].id == wiki2edit ) {
			for ( var j = 0; j < hotcat.interwikis[i].newlinks.length; j++ ) { // Trouver l'identifiant du lien InterWiki à modifier
				if ( hotcat.interwikis.array[i].newlinks[j].id == editid ) {
					if ( editid == mw.config.get( 'wgContentLanguage' ) ) { // Prefill title of current article
						hotcat.interwikis.array[i].newlinks[j].title = hotcat.curpage.replace( /_/g, ' ' );
					} else { // Accepter le lien InterWiki correct sur SWW
						hotcat.interwikis.array[i].newlinks[j].title = hotcat.interwikis.getById( editid ).title;
					}
					return;
				}
			}
		}
	}
};
 
//Delete an interwiki link of the article in the specified language, deletetitle is ignored
hotcat.interwikis.delfromwiki = function( wikiid, deleteid, deletetitle ) {
	if ( wikiid == mw.config.get( 'wgContentLanguage' ) ) {
		for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) {
			if ( hotcat.interwikis.array[i].id == deleteid ) {
				hotcat.interwikis.array.splice( i, 1 );
				hotcat.interwikis.redraw();
				return true;
			}
		}
	} else {
		for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) {
			if ( hotcat.interwikis.array[i].id == wikiid ) {
				for ( var j = 0; j < hotcat.interwikis.array[i].newlinks.length; j++ ) {
					if ( hotcat.interwikis.array[i].newlinks[j].id == deleteid ) {
						hotcat.interwikis.array[i].newlinks.splice( j, 1 );
						return true;
					}
				}
			}
		}
	}
	return false;
};
 
hotcat.interwikis.getById = function( wikiid ) {
	if ( wikiid == mw.config.get( 'wgContentLanguage' ) ) {
		var hctmp_fa = 'false';
		if ( hotcat.castatus ) hctmp_fa ='CA';
		if ( hotcat.lwastatus ) hctmp_fa = 'GA';
		if ( hotcat.exzstatus ) hctmp_fa = 'FA';
		return { id:mw.config.get( 'wgContentLanguage' ), title:hotcat.curpage.replace( /_/g, ' ' ), isFA:hctmp_fa, canedit:false, type:"any", newlinks:hotcat.interwikis.array };
	}
	for ( var i = 0; i<hotcat.interwikis.array.length; i++ ) {
		if ( hotcat.interwikis.array[i].id == wikiid ) return hotcat.interwikis.array[i];
	}
	return null;
};
 
hotcat.interwikis.load = function( id, title ) {
 
	var urlWiki = null;
	var formatData = null;
		for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) {
			if ( hotcat.interwikis.array[i].id == id && hotcat.interwikis.array[i].title == title ) {
				hotcat.interwikis.array[i].canedit = true;
			}
		}
		hotcat.interwikis.redraw();
		hotcat.interwikis.loadstatus++;
		return;
};
 
//Update the list of interwiki links in interwikis []
hotcat.interwikis.redraw = function() {
	var hctmp = {};
	hotcat.interwikis.array.sort( hotcat.sortInterwikis );
	hotcat.makeempty( 'interwikilist' );
 
	for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) {
		hctmp.interwiki_line = document.createElement( 'li' );
		hctmp.interwiki_line.id = 'interwiki_' + i;
 
		hctmp.interwiki_buttondel = document.createElement( 'span' );		
		hctmp.interwiki_buttondel.appendChild( document.createTextNode( '–' ) );
		hctmp.interwiki_buttondel.title = 'Poista';
		if ( hotcat.interwikis.array[i].canedit ) {
			hctmp.interwiki_buttondel.style.cursor = 'Delete';
			hctmp.interwiki_buttondel.style.color = hotcat.settings.linkcolor;
			hctmp.interwiki_buttondel.addEventListener( 'click', function hciw_del() {
				hotcat.interwikis.array.splice( Number( this.parentNode.id.match( /^interwiki_(\d+)$/ )[1] ),1 );
				hotcat.interwikis.redraw();
			} );
		} else {
			hctmp.interwiki_buttondel.style.color = '#bbb';
		}
 
		hctmp.interwiki_buttonedit = document.createElement( 'span' );
		hctmp.interwiki_buttonedit.appendChild( document.createTextNode( '±' ) );
		hctmp.interwiki_buttonedit.title = 'Muokkaa';
		if ( hotcat.interwikis.array[i].canedit ) {
			hctmp.interwiki_buttonedit.style.cursor = 'pointer';
			hctmp.interwiki_buttonedit.style.color = hotcat.settings.linkcolor;
			hctmp.interwiki_buttonedit.addEventListener( 'click', function hciw_openedit() {
				var id = Number( this.parentNode.id.match( /interwiki_(\d+)/ )[1] );
				var hc_interedit_select = document.createElement( 'select' );
				hc_interedit_select.id = 'editinterwikikuerzel' + id;
 
				var hc_interedit_option = null;
				for (var i = 0; i < hotcat.settings.wikis.length; i++ ) {
					hc_interedit_option = document.createElement( 'option' );
					hc_interedit_option.title = hotcat.settings.wikis[i].name;
					if ( hotcat.settings.wikis[i].id == mw.config.get( 'wgContentLanguage' ) || hotcat.getWikiById( mw.config.get( 'wgContentLanguage' ) ).installed_iws.indexOf( hotcat.settings.wikis[i].id ) == -1 ) hc_interedit_option.disabled = true;
					if ( hotcat.settings.wikis[i].id == hotcat.interwikis.array[id].id ) hc_interedit_option.selected = true;
					hc_interedit_option.appendChild( document.createTextNode( hotcat.settings.wikis[i].id ) );
					hc_interedit_select.appendChild( hc_interedit_option );
				}
				var hc_interedit_input = document.createElement( 'input' );
				hc_interedit_input.value = hotcat.interwikis.array[id].title;
				hc_interedit_input.style.width = '250px';
				hc_interedit_input.id = 'interwikiedit' + id;
 
				var hc_interedit_savebutton = document.createElement( 'input' );
				hc_interedit_savebutton.title = id; // cache d'ID
				hc_interedit_savebutton.addEventListener( 'click', function hciw_editsubmit() {
					var id = this.title;
					var newid = hotcat.settings.wikis[document.getElementById( 'editinterwikikuerzel' + id).selectedIndex].id;
					var newtitle = document.getElementById( 'interwikiedit'+ id).value;
					if ( hotcat.interwikis.array[id].id != newid || hotcat.interwikis.array[id].title != newtitle ) {
						hotcat.interwikis.array[id].id = newid;
						hotcat.interwikis.array[id].title = newtitle;
						hotcat.interwikis.array[id].canedit = false;
						hotcat.interwikis.array[id].newlinks = [];
						hotcat.interwikis.load( newid, newtitle );
					}
					hotcat.interwikis.redraw();
				});
				hc_interedit_savebutton.type = 'button';
				hc_interedit_savebutton.value = 'Hyväksy';
 
				var hc_interedit_cancelbutton = document.createElement( 'input' );
				hc_interedit_cancelbutton.addEventListener( 'click', hotcat.interwikis.redraw );
				hc_interedit_cancelbutton.type = 'button';
				hc_interedit_cancelbutton.value = 'Peruuta';
 
				document.getElementById( 'interwiki_' + id).removeChild( document.getElementById( 'interwiki_' + id).getElementsByTagName( 'a' )[document.getElementById( 'interwiki_' + id ).getElementsByTagName( 'a' ).length - 1] );
 
				document.getElementById( 'interwiki_' + id ).appendChild( document.createTextNode( '[[' ) );
				document.getElementById( 'interwiki_' + id ).appendChild( hc_interedit_select);
				document.getElementById( 'interwiki_' + id ).appendChild( document.createTextNode( ':' ) );
				document.getElementById( 'interwiki_' + id ).appendChild( hc_interedit_input);
				document.getElementById( 'interwiki_' + id ).appendChild( document.createTextNode( ']] ' ) );
				document.getElementById( 'interwiki_' + id ).appendChild( hc_interedit_savebutton);
				document.getElementById( 'interwiki_' + id ).appendChild( document.createTextNode( ' ' ) );
				document.getElementById( 'interwiki_' + id ).appendChild( hc_interedit_cancelbutton );
			} );
		} else {
			hctmp.interwiki_buttonedit.style.color = '#bbb';
		}
 
		hctmp.interwiki_icon = document.createElement( 'img' );
		if ( hotcat.interwikis.array[i].isFA == 'false' ) {
			hctmp.interwiki_icon.src = 'https://jedipedia.net/w/skins/MonoBook/bullet.gif';
			hctmp.interwiki_icon.style.display = 'none';
		} else if ( hotcat.interwikis.array[i].isFA == 'CA' ) {
			hctmp.interwiki_icon.src = 'https://static.wikia.nocookie.net/starwars/images/d/dc/InterwikiCA.png/revision/latest?cb=20111001202338';
		} else if ( hotcat.interwikis.array[i].isFA == 'GA' ) {
			hctmp.interwiki_icon.src = 'https://static.wikia.nocookie.net/starwars/images/d/df/InterwikiGA.png/revision/latest?cb=20110929201133';
		} else if ( hotcat.interwikis.array[i].isFA == 'FA' ) {
			hctmp.interwiki_icon.src = 'https://static.wikia.nocookie.net/starwars/images/1/10/InterwikiFA.png/revision/latest?cb=20090419010056';
		}
 
		hctmp.interwiki_link = document.createElement( 'a' );
		//hctmp.interwiki_link.href = '/wiki/' + hotcat.interwikis.array[i].id + ':' + encodeURIComponent( hotcat.interwikis.array[i].title.replace( / /g, '_' ) );
		hctmp.interwiki_link.href = 'https://' + hotcat.getWikiById( hotcat.interwikis.array[i].id ).domain + hotcat.getWikiById( hotcat.interwikis.array[i].id ).path + 'index.php?title=' + hotcat.interwikis.array[i].title.replace( / /g, '_' );
		hctmp.interwiki_link.setAttribute( 'target', '_blank' );
		hctmp.interwiki_link.appendChild( document.createTextNode( hotcat.interwikis.array[i].id + ':' + hotcat.interwikis.array[i].title ) );
 
		hctmp.interwiki_line.appendChild( hctmp.interwiki_buttondel );
		hctmp.interwiki_line.appendChild( document.createTextNode( ' ' ) );
		hctmp.interwiki_line.appendChild( hctmp.interwiki_buttonedit);
		hctmp.interwiki_line.appendChild( document.createTextNode( ' ' ) );
		hctmp.interwiki_line.appendChild( hctmp.interwiki_icon );
		hctmp.interwiki_line.appendChild( document.createTextNode( ' ' ) );
		hctmp.interwiki_line.appendChild( hctmp.interwiki_link );
		switch ( hotcat.interwikis.array[i].type ) {
			case 'kanon':
				hctmp.interwiki_line.appendChild( document.createTextNode( ' (CANON)' ) );
				break;
			case 'legends':
				hctmp.interwiki_line.appendChild( document.createTextNode( ' (LEGENDS)' ) );
				break;
		}
 
		document.getElementById( 'interwikilist' ).appendChild( hctmp.interwiki_line );
	}
 
	var cnt = 0; hctmp.preseliw = '';
	while ( cnt < hotcat.settings.biggest_wikis.length ) { // Sélectionne les wikis à préfixer dans la sélection
		var nolink = true;
		if ( mw.config.get( 'wgContentLanguage' ) == hotcat.settings.biggest_wikis[cnt] ) {
			nolink = false;
		}
		for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) {
			if ( hotcat.interwikis.array[i].id == hotcat.settings.biggest_wikis[cnt] ) { nolink=false; break; }
		}
		if ( nolink==true ) { // Si le lien InterWiki dans cette langue n'existe pas encore
			hctmp.preseliw = hotcat.settings.biggest_wikis[cnt]; //sauver le plus grand wiki
			break;
		} else { // S'il y a un lien InterWiki
			cnt++; // vérifie la prochaine langue
		}
	}
	document.getElementById( 'addinterwikikuerzel' ).selectedIndex = hotcat.settings.interwiki_codes[hctmp.preseliw];
};

//Sort the interwiki links array by codes
hotcat.sortInterwikis = function( a, b ) {
	var a2=hotcat.settings.interwiki_codes[a.id];
	var b2=hotcat.settings.interwiki_codes[b.id];
	if ( a2 > b2 ) return 1;
	if ( a2 < b2 ) return -1;
	if ( a.type != b.type ) return ( a.type > b.type ) ? 1 : -1;
	return ( a.title == b.title ) ? 0 : ( a.title > b.title ) ? 1 : -1;
}
hotcat.sortInterwikisPl = function( a, b ) {
	var a2=hotcat.settings.interwiki_codes_pl[a.id];
	var b2=hotcat.settings.interwiki_codes_pl[b.id];
	if (a2 > b2) return 1;
	if (a2 < b2) return -1;
	if (a.type != b.type) return (a.type > b.type) ? 1 : -1;
	return (a.title == b.title) ? 0 : ( a.title > b.title ) ? 1 : -1;
}
 
//Submit edits
hotcat.submit = function() {
	var hctmp = {};
	//VARIABLEN
 
	hctmp.interwikis = [];
	for (var i = 0; i < hotcat.interwikis.array.length; i++ ) {
		var tmpiwtext = hotcat.interwikis.array[i].id + ':' + hotcat.interwikis.array[i].title;
		hctmp.interwikis.push(tmpiwtext);
	}
 
	//GUI
	hctmp.e = {};
	hctmp.e.submitstatusheadline = document.createElement( 'h3' );
 
	hctmp.e.submitstatuslogo = document.createElement( 'img' );
	hctmp.e.submitstatuslogo.src = 'https://vignette.wikia.nocookie.net/fr.starwars/images/e/ee/HOTCAT_Logo.png/revision/latest?cb=20181110120640';
	hctmp.e.submitstatuslogo.alt = 'HotCat';
 
	hctmp.e.submitstatusheadline.appendChild( hctmp.e.submitstatuslogo );
	hctmp.e.submitstatusheadlinetext = document.createElement( 'span' );
	hctmp.e.submitstatusheadlinetext.id = 'hc_submit_heading';
	hctmp.e.submitstatusheadlinetext.appendChild( document.createTextNode( ' Päivitetään... ' ) );
	hctmp.e.submitstatusheadline.appendChild( hctmp.e.submitstatusheadlinetext );
 
	hctmp.e.submitstatuswarning = document.createElement( 'h4' );
	hctmp.e.submitstatuswarning.id = 'hc_submit_warning';
	hctmp.e.submitstatuswarning.appendChild( document.createTextNode( 'Pidä ikkuna avoinna, kunnes muutokset ovat valmiita ja vahvistus näytetään!' ) );
 
	hctmp.e.submitstatuslist = document.createElement( 'ul' );
	hctmp.e.submitstatuslist.id = 'submitstatus_table';
 
	hctmp.e.lineinsert_working = document.createElement( 'li' );
	hctmp.e.lineinsert_working_img = document.createElement( 'img' );
	hctmp.e.lineinsert_working_img.id = 'submitstatus_img_' + mw.config.get( 'wgContentLanguage' );
	hctmp.e.lineinsert_working_img.src= 'https://vignette.wikia.nocookie.net/fr.starwars/images/d/de/Ajax-loader.gif/revision/latest?cb=20181110120648';
	hctmp.e.lineinsert_working_status = document.createElement( 'span' );
	hctmp.e.lineinsert_working_status.id = 'submitstatus_status_' + mw.config.get( 'wgContentLanguage' );
	hctmp.e.lineinsert_working_status.appendChild( document.createTextNode( ' ' + mw.config.get( 'wgContentLanguage' ) + ': Sivua muokataan...' ) );
	hctmp.e.lineinsert_working.appendChild( hctmp.e.lineinsert_working_img );
	hctmp.e.lineinsert_working.appendChild( hctmp.e.lineinsert_working_status );
	hctmp.e.submitstatuslist.appendChild( hctmp.e.lineinsert_working );
 
	while ( document.getElementById( 'hotcat' ).firstChild ) { document.getElementById( 'hotcat' ).removeChild( document.getElementById( 'hotcat' ).firstChild ); }
	document.getElementById( 'hotcat' ).appendChild( hctmp.e.submitstatusheadline );
	document.getElementById( 'hotcat' ).appendChild( hctmp.e.submitstatuswarning );
	document.getElementById( 'hotcat' ).appendChild( hctmp.e.submitstatuslist );
 
	//hotcat.submit_counter = hotcat.interwikis.array.length;
 
	//--- Ajax request for Wookieepedia ---
	$.ajax( {
		url: mw.util.wikiScript( 'api' ),
		data: {
			action: 'parse',
			prop: 'wikitext',
			page: hotcat.curpage,
			format: 'json'
		},
		dataType: 'json',
		success: function( d ) {
			if ( d.error ) {
				return; // or handle error
			} else {
				if ( d.parse.wikitext !== undefined ) {
					//var oldwikitext = d.parse.wikitext[*];
				}
			}
		}
	} ).done( function( d ) {
		var oldwikitext = d.parse.wikitext['*'];
		var interlangTemplateRegex = /{{(Template:|Predefinição:)?Interlang[\s\S]+?}}/i
		var regularInterwikiRegex = /\[\[([a-z]{2}:[\s\S\|]+?)\]\]/gm;
		var defaultSortRegex = /\{\{(DEFAULTSORT|ORDENAR)\:.*?\}\}/i;
		var categoryRegex = /\[\[(Luokka|Category|Categoría|Catégorie|Categorie|Kategori|Categoria|Kategorija|分類|Категория|Kategória|Kategorie|Kategory|カテゴリ)\:.+?\]\]/i;
		var insert = '<INSERT_INTERWIKI_HERE>';
 
		if ( interlangTemplateRegex.test( oldwikitext ) ) {
			oldwikitext = oldwikitext.replace( interlangTemplateRegex, insert );
		} else if ( regularInterwikiRegex.test( oldwikitext ) ) {
			oldwikitext = oldwikitext.replace( regularInterwikiRegex, insert );
		} else if ( defaultSortRegex.test( oldwikitext ) ) {// search for DEFAULTSORT
			var defaultsort = oldwikitext.match( defaultSortRegex );
			oldwikitext = oldwikitext.replace( defaultSortRegex, insert + '\n\n' + defaultsort[0] );
		} else if ( categoryRegex.test( oldwikitext ) ){ // search for Category
			var categoryFind = oldwikitext.match( categoryRegex );
			oldwikitext = oldwikitext.replace( categoryRegex, insert + '\n\n' + categoryFind[0] );
		} else { // no template, no defaultsort, no categories
			oldwikitext = oldwikitext + '\n' + insert;
		}
 
		var newwikitext = oldwikitext.replace( insert + '\n', hotcat.formatInterwikis( hotcat.interwikis.array, mw.config.get( 'wgContentLanguage' ) ) ).replace ( /\n<INSERT_INTERWIKI_HERE>/gm, '' );
 
		$.ajax( {
			type: 'POST',
			dataType: 'text',
			url: mw.util.wikiScript( 'api' ),
			method: 'POST',
			data: {
				action: 'edit',
				format: 'json',
				title: hotcat.curpage,
				text: newwikitext,
				minor: true,
				bot: true,
				nocreate: true,
				summary: 'Päivitetään kieltenvälisiä linkkejä (skripti)',
				token: mw.user.tokens.get( 'csrfToken' ),
			},
			xhrFields: {
				withCredentials: true
			},
			crossdomain: true,
			success: function( result ) {
				return JSON.parse( result );
			},
			error: function( xhr,status,error ) {
				alert( status );
			}
		} ).always( function( data ) {
			var submitstatus_img_id = 'submitstatus_img_' + mw.config.get( 'wgContentLanguage' );
			var submitstatus_status_id = 'submitstatus_status_' + mw.config.get( 'wgContentLanguage' );
			var d = JSON.parse( data );
			document.getElementById( submitstatus_img_id ).src = 'https://vignette.wikia.nocookie.net/fr.starwars/images/8/83/10px-Haken.svg.png/revision/latest?cb=20181110120633';
			document.getElementById( submitstatus_status_id ).firstChild.data += ' Valmis! ';
			if ( d.edit.result != null && d.edit.result != 'undefined' ) {
				if ( d.edit.result == 'Success' ) {
					if ( d.edit.nochange != null ) {
						var tmpstatus = document.createElement( 'span' );
						tmpstatus.style.fontStyle = 'italic';	
						tmpstatus.appendChild( document.createTextNode( 'Ei muutoksia' ) );
						document.getElementById( submitstatus_status_id ).appendChild( tmpstatus );
					} else if ( d.edit.newrevid != null ) {
						var tmpstatus = document.createElement( 'a' );
						tmpstatus.href = mw.util.wikiScript() + '?title=' + hotcat.curpage + '&diff=' + d.edit['newrevid'] + 'oldid=' + d.edit['oldrevid'];
						tmpstatus.appendChild( document.createTextNode( 'ero' ) );
						document.getElementById( submitstatus_status_id ).appendChild( tmpstatus );
					}
				} else if ( d.edit.result == 'Failure' ) {
					document.getElementById( submitstatus_img_id ).src = 'https://vignette.wikia.nocookie.net/fr.starwars/images/8/83/10px-Haken.svg.png/revision/latest?cb=20181110120633';
					document.getElementById( submitstatus_status_id ).firstChild.data += ' Virhe! ';
					document.getElementById( submitstatus_status_id ).appendChild( tmpstatus );
				}
			} else if ( d.error != null ) {
				var tmperror = this.responseText.substring(8);
				var tmpstatus = document.createElement( 'span' );
				tmpstatus.style.fontWeight = 'bold';
				switch ( tmperror ) {
					case 'protectedpage': tmpstatus.appendChild( document.createTextNode( 'Virhe: tämä sivu on suojattu.' ) ); break;
					default: tmpstatus.appendChild( document.createTextNode( 'Error: ' + tmperror) );
				}
				document.getElementById( submitstatus_status_id ).appendChild( tmpstatus );
			} else if ( this.responseText.substring( 0, 6 ) === 'ERROR=' ) {
				var tmpstatus = document.createElement( 'span' );
				tmpstatus.style.fontWeight = 'bold';
				tmpstatus.appendChild( document.createTextNode( 'Virhe (ilmoita): ' + this.responseText.substring(6).replace( /</g, '&lt;' ) ) );
				document.getElementById( submitstatus_status_id ).appendChild( tmpstatus );
			} else {
				var tmpstatus = document.createElement( 'span' );
				tmpstatus.style.fontWeight = 'bold';
				tmpstatus.appendChild( document.createTextNode( 'Virhe (ilmoita): ' ) );
				document.getElementById( submitstatus_status_id ).appendChild( tmpstatus) ;
				document.getElementById( submitstatus_status_id ).appendChild( document.createTextNode( this.responseText.replace( /</g, '&lt;' ) ) );
			}
			hotcat.checkifdone();
		} );
	} ); 
};
 
hotcat.checkifdone = function() {
	hotcat.submit_counter--;
	if ( hotcat.submit_counter < 0 ) {
		document.getElementById( 'hc_submit_heading' ).firstChild.data = ' Valmis!';
		document.getElementById( 'hc_submit_warning' ).firstChild.data = 'Ikkunan voi nyt sulkea. Päivitä sivu, jos haluat tehdä lisää muutoksia.';
	}
};

hotcat.extractInterWikiData = function( wikitext, title, wiki ) {
	var extract = '';
	var redirect = /^\#[\s\S]+?\[\[[\s\S]+?\]\]/g
	var interlangTemplate = /{{(Template:|Predefinição:)?Interlang[\s\S]+?}}/i;
	var regularInterwiki = /\[\[([a-z]{2}:[\s\S\|]+?)\]\]/gm;
 
	if ( wikitext !== null ) {
		//check redirection
		if ( wikitext.match( redirect ) !== null ){
			extract = 'error=redirect\n';
 
			var link = wikitext.match( /\[\[[\s\S]+?\]\]/gm )
			extract = extract + 'redirect=' + link.toString().replace( /\[\[|\]\]/gm, '' );
 
		} else {
			var interwiki = wikitext.match( interlangTemplate );
			if ( interwiki !== null ) {
				extract = interwiki.toString().replace( / = /gm, '=' ).replace( /\n/gm, '' ).replace( /\|/gm, '\n|' ).replace( /({{Interlang)|\||}},/gm, '' ).trim();
 
			} else {
				// no interlang template => we search regular interwiki [[fr:Naboo]]
				interwiki = wikitext.match( regularInterwiki );
				if ( interwiki !== null ) {
					extract = interwiki.toString().replace( /\]\]/gm, '' ).replace( /\[\[([a-z]{2}):/gm, '$1=' ).trim();
				}
			}
		}
	}
	return extract;
};
 
/** Format the Interlang template */
hotcat.formatInterlang = function( /*array*/ links, /*string*/ wiki ) {
	var interlang = '{{Interlang\n';
	var falist = '';
	var galist = '';
	var calist = '';
	for ( var i = 0; i < links.length; i++ ) {
		interlang = interlang + '|' + links[i].id + '=' + links[i].title + '\n';
	}
	if ( wiki != mw.config.get( 'wgContentLanguage' ) ) {
		if ( hotcat.exzstatus ) { falist += '|' + mw.config.get( 'wgContentLanguage' ) + 'FA=1\n'; }
		if ( hotcat.lwastatus ) { galist += '|' + mw.config.get( 'wgContentLanguage' ) + 'GA=1\n'; }
		if ( hotcat.castatus ) { calist += '|' + mw.config.get( 'wgContentLanguage' ) + 'CA=1\n'; }
	}
	if ( wiki == mw.config.get( 'wgContentLanguage' ) && hotcat.wookattr == true ) {
		if ( wiki == 'es' ) { interlang = interlang + '|sin=sí\n'; }
		if ( wiki == 'pt' ) { interlang = interlang + '|icp=1\n'; }
	}
	for ( var i = 0; i < hotcat.interwikis.array.length; i++ ) {
		if ( wiki != hotcat.interwikis.array[i].id ) {
			switch ( hotcat.interwikis.array[i].isFA ) {
				case 'FA': falist += '|' + hotcat.interwikis.array[i].id + 'FA=1\n'; break;
				case 'GA': galist += '|' + hotcat.interwikis.array[i].id + 'GA=1\n'; break;
				case 'CA': calist += '|' + hotcat.interwikis.array[i].id + 'CA=1\n'; break;
			}
		}
		if ( wiki == hotcat.interwikis.array[i].id && hotcat.interwikis.array[i].wookAttr == true ) {
			if ( wiki == 'es' ) { interlang = interlang + '|sin=sí\n'; }
			if ( wiki == 'pt' ) { interlang = interlang + '|icp=1\n'; }
		}
	}
	interlang = interlang + falist + galist + calist + '}}';
 
	return interlang;
};
 
/** Format standard interwiki */
hotcat.formatInterwikis = function( /*array*/ links, /*boolean*/canon ) {
	var interwiki = '';
 
	for ( var i = 0; i < links.length; i++ ) {
		interwiki = interwiki + '[[' + links[i].id + ':' + links[i].title + ']]\n';
	}
 
	return interwiki;
};

/** Start HotCat when the page has loaded */
$( document ).ready( mw.loader.using( 'mediawiki.util' ).then( hotcat.addlink ) );