Używacz:Adziura/monobook.js

Ze Wikipedia

Pozōr: żeby ôbejzdrzeć zmiany po spamiyntaniu, może być potrzebne wysnŏżynie pamiyńci podryncznyj przeglōndarki.

  • Firefox / Safari: Przitrzim Shift przi klikaniu Ôdświyż terŏźnõ strōnã, abo naciś knefle Ctrl+F5 abo Ctrl+R (⌘-R na kōmputrze Mac)
  • Google Chrome: Naciś Ctrl-Shift-R (⌘-Shift-R na kōmputrze Mac)
  • Internet Explorer: Przitrzim Ctrl przi klikaniu Ôdświyż, abo naciś knefle Ctrl+F5
  • Opera: Przejdź do Myni → Sztelōnki (Opera → Preferyncyje w Mac), a potym Prywatność i bezpieczyństwo → Wysnŏż dane przeglōndaniŏ → Ôprōznij pamiyńć podryncznõ.
/*
; Informacje ogólne: [[WP:SK]]
; Autor: Maciej Jaros [[:pl:User:Nux]] © 2007
; Licencja: [http://opensource.org/licenses/gpl-license.php GNU General Public License v2]
 
<pre>
/* ======================================================================== *\
    Moduł sprzątania kodu
 
    Użycie przez wp_sk.cleanup(input) np.:
    wp_sk.cleanup(document.getElementById('wpTextbox1'))
 
    version:    1.4.1
    copyright:  (C) 2007 Maciej Jaros (pl:User:Nux, en:User:EcceNux)
    modyfikacje: pl:User:BartekChom
\* ======================================================================== */
 
//
// Clean up (WP:SK)
//
if (wp_sk!=undefined)
{
	alert('Błąd krytyczny - konflikt nazw!\n\nJeden ze skryptów używa już nazwy wp_sk jako zmienną globalną.');
}
var wp_sk = new Object();
 
//
// Button
//
wp_sk.button = function ()
{
	var src='http://upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png';
 
	var btns=document.createElement('span');
	btns.innerHTML=
		'<a href="javascript:wp_sk.ryzykowne = false; wp_sk.cleanup(document.getElementById(\'wpTextbox1\'));">'
			+'<img style="cursor:pointer;" title="Czyszczenie kodu bezpieczne" alt="Czyszczenie kodu bezpieczne" src="'+src+'" border="0" height="22" width="23">'
		+'</a>'
	;
 
	var el=document.getElementById('toolbar');
	if (el)
	{
		el.appendChild(btns)
	}
	else
	{
		el=document.getElementById('editform');
		if (el) el.parentNode.insertBefore(btns,el);
	}
}
 
wp_sk.button2 = function ()
{
	var src='http://upload.wikimedia.org/wikipedia/commons/f/f3/Button_broom2.png';
 
	var btns2=document.createElement('span');
	btns2.innerHTML=
		'<a href="javascript:wp_sk.ryzykowne = true; wp_sk.pytaj = false; wp_sk.cleanup(document.getElementById(\'wpTextbox1\'));">'
			+'<img style="cursor:pointer;" title="Czyszczenie kodu ryzykowne" alt="Czyszczenie kodu ryzykowne" src="'+src+'" border="0" height="22" width="23">'
		+'</a>'
	;
 
	var el=document.getElementById('toolbar');
	if (el)
	{
		el.appendChild(btns2)
	}
	else
	{
		el=document.getElementById('editform');
		if (el) el.parentNode.insertBefore(btns2,el);
	}
}
 
wp_sk.button3 = function ()
{
	var src='http://upload.wikimedia.org/wikipedia/commons/9/9f/Button_broom3.png';
 
	var btns3=document.createElement('span');
	btns3.innerHTML=
		'<a href="javascript:wp_sk.ryzykowne = true; wp_sk.pytaj = true; wp_sk.cleanup(document.getElementById(\'wpTextbox1\'));">'
			+'<img style="cursor:pointer;" title="Czyszczenie kodu ryzykowne z pytaniem" alt="Czyszczenie kodu ryzykowne z pytaniem" src="'+src+'" border="0" height="22" width="23">'
		+'</a>'
	;
 
	var el=document.getElementById('toolbar');
	if (el)
	{
		el.appendChild(btns3)
	}
	else
	{
		el=document.getElementById('editform');
		if (el) el.parentNode.insertBefore(btns3,el);
	}
}
 
//
// Warning
//
wp_sk.warning = function (input)
{
	var el=document.getElementById('wpSummary');
	if (el.value!='')
		el.value+=', ';
	el.value+='po czyszczeniu kodu przejrzyj wykonane zmiany!'
	el.className = 'warning';
 
	el=document.getElementById('wpDiff');
	el.className = 'warning';
	el.onclick=function()
	{
		var el=document.getElementById('wpSummary');
		el.value=el.value.replace('po czyszczeniu kodu przejrzyj wykonane zmiany!', '[[WP:SK]]');
	}
}
 
wp_sk.cleanup = function (input)
{
	var isPartSelected = false;
	if (input.selectionStart != undefined)
	{
		var sel_s = input.selectionStart;
		var sel_e = input.selectionEnd;
		if (sel_s!=sel_e)
		{
			var str = input.value.substring(sel_s, sel_e);
			isPartSelected = true;
		}
	}
	// IE...
	else if (document.selection)
	{
		var range = document.selection.createRange();
		if (range.parentElement()==input && range.text!='')
		{
			var str = range.text;
			isPartSelected = true;
		}
	}
 
	if (!isPartSelected)
	{
		var str = input.value;
	}
 
	// OMG - IE & Opera fix
	str = str.replace(/\r\n/g, '\n');
 
	//
	// linkowato-szablonowate
	// łącza zewnętrzne do innych Wikipedii w międzywiki
	if(wp_sk.ryzykowne)
	{
		str = str.replace(/\[http:\/\/([^\.\]]*)\.wikipedia\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[:$1:$2|$3]]');
		str = str.replace(/\[http:\/\/pl\.wiktionary\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[wikt:$1|$2]]');
		str = str.replace(/\[http:\/\/([^\.\]]*)\.wiktionary\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[wikt:$1:$2|$3]]');
		str = str.replace(/\[http:\/\/pl\.wikiquote\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[q:$1|$2]]');
		str = str.replace(/\[http:\/\/([^\.\]]*)\.wikiquote\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[q:$1:$2|$3]]');
		str = str.replace(/\[http:\/\/pl\.wikinews\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[n:$1|$2]]');
		str = str.replace(/\[http:\/\/([^\.\]]*)\.wikinews\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[n:$1:$2|$3]]');
		str = str.replace(/\[http:\/\/pl\.wikisource\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[s:$1|$2]]');
		str = str.replace(/\[http:\/\/([^\.\]]*)\.wikisource\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[s:$1:$2|$3]]');
		str = str.replace(/\[http:\/\/pl\.wikibooks\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[b:$1|$2]]');
		str = str.replace(/\[http:\/\/([^\.\]]*)\.wikibooks\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[b:$1:$2|$3]]');
		str = str.replace(/\[http:\/\/pl\.wikiversity\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[v:$1|$2]]');
		str = str.replace(/\[http:\/\/([^\.\]]*)\.wikiversity\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[:$1:v:$2|$3]]');
		str = str.replace(/\[http:\/\/wikispacies\.wikimedia\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[wikispacies:$1|$2]]');
		str = str.replace(/\[http:\/\/commons\.wikimedia\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[commons:$1|$2]]');
		str = str.replace(/\[http:\/\/meta\.wikimedia\.org\/wiki\/([^ \]]*) +([^\]]*)\]/g, '[[m:$1|$2]]');
		str = str.replace(/\[\[meta:([^\|\]]*)\|([^\]]*)\]\]/g, '[[m:$1|$2]]');
	}
 
	// [[Jaki%C5%9B_lnk#co.C5.9B|...]]→[[Jakiś lnk#coś|...]]
	str = str.replace(/\[\[([^|#\]]*)([^|\]]*)(\||\]\])/g, wp_sk.rLinkdecode);
 
	str = str.replace(/\[\[[ ]*([^\]\|]*[^\]\| ])[ ]*\|/g, '[[$1|');
	str = str.replace(/([^ \n])\[\[ +([^\]]+\]\])/g, '$1 [[$2');
	str = str.replace(/\[\[[ ]+([^\]]+\]\])/g, '[[$1');
	str = str.replace(/([^ \n])\[\[([^\]\|]+\|)[ ]+([^\]\|]+\]\])/g, '$1 [[$2$3');
	str = str.replace(/\[\[([^\]\|]+\|)[ ]+([^\]\|]+\]\])/g, '[[$1$2');
	str = str.replace(/([^ \|])[ ]+\]\]([^ \na-zA-ZżółęśąźńŻÓŁĘŚĄŹŃ])/g, '$1]] $2');
	str = str.replace(/([^ \|])[ ]+\]\]([^a-zA-ZżółęśąźńŻÓŁĘŚĄŹŃ])/g, '$1]]$2');
 
	str = str.replace(/\[\[(:?)[ ]*([Ii]mage|[Gg]rafika)[ ]*:[ ]*([^ ])/g, function (a,dw,co,l1) {return '[['+dw+'Grafika:'+l1.toUpperCase();} );
	str = str.replace(/\[\[(:?)[ ]*([Cc]ategory|[Kk]ategoria)[ ]*:[ ]*([^ ])/g, function (a,dw,co,l1) {return '[['+dw+'Kategoria:'+l1.toUpperCase();} );
 
	str = str.replace(/\[\[[ ]*(:?)[ ]*([Tt]emplate|[Ss]zablon)[ ]*:[ ]*([^ ])/g, function (a,dw,co,l1) {return '[[Szablon:'+l1.toUpperCase();} );
	str = str.replace(/\[\[[ ]*(:?)[ ]*([Ss]pecial|[Ss]pecjalna)[ ]*:[ ]*([^ ])/g, function (a,dw,co,l1) {return '[[Specjalna:'+l1.toUpperCase();} );
 
	str = str.replace(/\[\[[ ]*:?[ ]*[Dd]yskusja([ _][a-z]*)[ ]*:[ ]*/g, '[[Dyskusja$1:');
	// stare przestrzenie
	str = str.replace(/Dyskusja([ _])Wikipedysty/g, 'Dyskusja$1wikipedysty');
 
	str = str.replace(/\{\{[ ]*([Tt]emplate|[Ss]zablon|msg)[ ]*:[ ]*/g, '{{');
 
	// str = str.replace(/\[\[[ ]*:[ ]*pl[ ]*:[ ]*/g, '[[');
	// str = str.replace(/\[\[[ ]*pl[ ]*:[ ]*[^\]]*\]\][ \n\t]*/g, '');
	str = str.replace(/\[\[[ ]*:?[ ]*pl[ ]*:[ ]*/g, '[[');
 
	str = str.replace(/(\[\[Grafika:[^\|]+\|[^\|]+)\.\]\]/, '$1]]');
 
	str = str.replace(/\[\[([^|\]]*)\|\1([a-zA-ZżółęśąźńŻÓŁĘŚĄŹŃ]*)\]\]/g, '[[$1]]$2');
 
	str = str.replace(/\[\[([^|\]])([^|\]]*)\|([^\]])([^\]]*)\]\]/g, wp_sk.rLinksame);
 
	//^(.*?)([a-zA-Z\x80-\xff]+)$/sD - z komunikatów (nie działa)
	str = str.replace(/\[\[([^|\]]+)\|([^|\]]+)\]\]([a-zA-ZżółęśąźńŻÓŁĘŚĄŹŃ]+)/g, '[[$1|$2$3]]');
 
	// uczłowieczanie szablonów
	if(wp_sk.ryzykowne)
	{
		str = str.replace(/\{\{([^|\n\t{}]+)([^{}]+)\}\}/g, wp_sk.rFriendlyIbox); //podobno niezdebugowane
	}
 
	//
	// rozwijanie typowych linków
	str = str.replace(/\[\[ang\.\]\]/g, '[[język angielski|ang.]]');
	str = str.replace(/\[\[cz\.\]\]/g, '[[język czeski|cz.]]');
	str = str.replace(/\[\[fr\.\]\]/g, '[[język francuski|fr.]]');
	str = str.replace(/\[\[łac\.\]\]/g, '[[łacina|łac.]]');
	str = str.replace(/\[\[niem\.\]\]/g, '[[język niemiecki|niem.]]');
	str = str.replace(/\[\[pol\.\]\]/g, '[[język polski|pol.]]');
	str = str.replace(/\[\[pl\.\]\]/g, '[[język polski|pol.]]');
	str = str.replace(/\[\[ros\.\]\]/g, '[[język rosyjski|ros.]]');
	str = str.replace(/\[\[(((G|g)iga|(M|m)ega|(K|k)ilo)herc|[GMk]Hz)\|/g, '[[herc|');
	str = str.replace(/\[\[IPA\]\]/g, '[[Międzynarodowy alfabet fonetyczny|IPA]]');
 
	//
	// ujednolicanie szablonów z [[Wikiprojekt:Sprzątanie szablonów/redirecty]] 22 XII 2007
	str = str.replace(/\{\{([sS]\||)[cC]opyvio(\||\}\})/g, '{{$1NPA$2');
	str = str.replace(/\{\{([sS]\||)[dD]oCommons(\||\}\})/g, '{{$1Do Commons$2');
	str = str.replace(/\{\{([sS]\||)[dD]oPoszerzenia(\||\}\})/g, '{{$1Do poszerzenia$2');
	str = str.replace(/\{\{([sS]\||)[dD]oPracowania(\||\}\})/g, '{{$1Dopracować$2');
	str = str.replace(/\{\{([sS]\||)[dD]oWikibooks(\||\}\})/g, '{{$1Do Wikibooks$2');
	str = str.replace(/\{\{([sS]\||)[dD]oWikicytatów(\||\}\})/g, '{{$1Do Wikicytatów$2');
	str = str.replace(/\{\{([sS]\||)[dD]oWikinews(\||\}\})/g, '{{$1Do Wikinews$2');
	str = str.replace(/\{\{([sS]\||)[dD]oWikisłownika(\||\}\})/g, '{{$1Do Wikisłownika$2');
	str = str.replace(/\{\{([sS]\||)[dD]oWikiźródeł(\||\}\})/g, '{{$1Do Wikiźródeł$2');
	str = str.replace(/\{\{([sS]\||)[dD]z. U.(\||\}\})/g, '{{$1Dziennik Ustaw$2');
	str = str.replace(/\{\{([sS]\||)[kK]oordynaty nr(\||\}\})/g, '{{$1Koordynaty$2');
	str = str.replace(/\{\{([sS]\||)[mM].P.(\||\}\})/g, '{{$1Monitor Polski$2');
	str = str.replace(/\{\{([sS]\||)[mM]erge(\||\}\})/g, '{{$1Integruj$2');
	str = str.replace(/\{\{([sS]\||)[nN]CT(\||\}\})/g, '{{$1NowCommons$2');
	str = str.replace(/\{\{([sS]\||)[oO]d[nN]owa(\||\}\})/g, '{{$1Od nowa$2');
	str = str.replace(/\{\{([sS]\||)[cC]ategoryTOC(\||\}\})/g, '{{$1Spis treści kategoria$2');
	str = str.replace(/\{\{([sS]\||)[dD]W(\||\}\})/g, '{{$1Do weryfikacji$2');
	str = str.replace(/\{\{([sS]\||)[dD]eklinacja(\||\}\})/g, '{{$1DEC$2');
	str = str.replace(/\{\{([sS]\||)[dD]elete(\||\}\})/g, '{{$1Ek$2');
	str = str.replace(/\{\{([sS]\||)[dD]oWeryfikacji(\||\}\})/g, '{{$1Do weryfikacji$2');
	str = str.replace(/\{\{([sS]\||)[eE]K(\||\}\})/g, '{{$1Ek$2');
	str = str.replace(/\{\{([sS]\||)[eE]kspresowe kasowanko(\||\}\})/g, '{{$1Ek$2');
	str = str.replace(/\{\{([sS]\||)[lL]Q(\||\}\})/g, '{{$1Słaba jakość$2');
	str = str.replace(/\{\{([sS]\||)[nN]PAgraf(\||\}\})/g, '{{$1NPA$2');
	str = str.replace(/\{\{([sS]\||)[oO]G(\||\}\})/g, '{{$1OpisujGrafiki$2');
	str = str.replace(/\{\{([sS]\||)[pP]oczSDU(\||\}\})/g, '{{$1PoczSdU$2');
	str = str.replace(/\{\{([sS]\||)[pP]oczekalnia(\||\}\})/g, '{{$1PoczSdU$2');
	str = str.replace(/\{\{([sS]\||)[pP]ektascensja(\||\}\})/g, '{{$1RA$2');
	str = str.replace(/\{\{([sS]\||)[sS]DUinfo(\||\}\})/g, '{{$1SDUinformacja$2');
	str = str.replace(/\{\{([sS]\||)[sS]DUplus(\||\}\})/g, '{{$1SdUplus$2');
	str = str.replace(/\{\{([sS]\||)[sS]d[uU](\||\}\})/g, '{{$1SDU$2');
	str = str.replace(/\{\{([sS]\||)[tT]OCmpl(\||\}\})/g, '{{$1Spis treści planetoid$2');
	str = str.replace(/\{\{([sS]\||)[tT]estAd(\||\}\})/g, '{{$1Spam$2');
	str = str.replace(/\{\{([sS]\||)[tT]estKI(\||\}\})/g, '{{$1TestK$2');
	str = str.replace(/\{\{([sS]\||)[tT]estN(\||\}\})/g, '{{$1Test3$2');
	str = str.replace(/\{\{([sS]\||)[tT]estNie(\||\}\})/g, '{{$1TestG$2');
	str = str.replace(/\{\{([sS]\||)[tT]estSpam(\||\}\})/g, '{{$1Spam$2');
	str = str.replace(/\{\{([sS]\||)[tT]estŻ(\||\}\})/g, '{{$1TestG$2');
	str = str.replace(/\{\{([sS]\||)[zZ]zW(\||\}\})/g, '{{$1Zgodnie z Wikietykietą$2');
 
	str = str.replace(/\{\{([sS]|[uU]nis)tub2?\}\}/g, '{{Stub}}');
 
	//
	// unifikacja
	str = str.replace(/[ \n\t]*\n'''?[ ]*(Zobacz|Patrz) (też|także):*[ ]*'''?[ \n\t]*/gi, '\n\n== Zobacz też ==\n');
	str = str.replace(/[ \n\t]*\n(=+)[ ]*(Zobacz|Patrz) (też|także):*[ ]*=+[ \n\t]*/gi, '\n\n$1 Zobacz też $1\n');
	str = str.replace(/[ \n\t]*\n'''?[ ]*((Zewnętrzn[ey] )?(Linki?|Łącza)( zewnętrzn[ey])?):*[ ]*'''?[ \n\t]*/gi, '\n\n== Linki zewnętrzne ==\n');
	str = str.replace(/[ \n\t]*\n(=+)[ ]*((Zewnętrzn[ey] )?(Linki?|Łącza)( zewnętrzn[ey])?):*[ ]*=+[ \n\t]*/gi, '\n\n$1 Linki zewnętrzne $1\n');
 
	//
	// poprawkowate różne (kolejność jest istotna!)
 
	str = str.replace(/<sup>1<\/sup>/g, '¹');
	str = str.replace(/<sup>2<\/sup>/g, '²');
	str = str.replace(/<sup>3<\/sup>/g, '³');
	str = str.replace(/<sup>o<\/sup>/g, '°');
	str = str.replace(/([0-9]) (%|‰|°)/g, '$1$2');
 
	str = str.replace(/(\[\[[0-9]+ (stycznia|lutego|marca|kwietnia|maja|czerwca|lipca|sierpnia|września|października|grudnia)\]\]), (\[\[[0-9]{4}\]\])/g, '$1 $3');
 
	str = str.replace(/(^|\n)(=+)[ ]*([^=]*[^ =])[ ]*=/g, '$1$2 $3 ='); // =a= > = a =
	str = str.replace(/(^|\n)(=+[^=]+=+)[\n]{2,}/g, '$1$2\n');
 
	str = str.replace(/(\n[#\*:]+)([^ \t\n*#:])/g, '$1 $2'); // listy
 
	if(wp_sk.ryzykowne)
	{
		str = str.replace(/ *<[bB][rR] *[\\/]? *>/g, '<br />');
		//str = str.replace(/(\,\,)([^"”]*)(["”])/g, '„$2”'); //cudzysłowy ,,coś" i "coś" na „coś”
 
		if(!wp_sk.pytaj || confirm('Czy chcesz usunąć nadmiarowe spacje? Może psuć tekst preformatowany.'))
		{
			str = str.replace(/  +/g, ' '); // wielokrotne spacje - uwaga na <pre>
			str = str.replace(/ +\n/g, '\n');
		}
 
		str = str.replace(/\{\{IPA\|\[([^\]\}]+)\]\}\}/g, '[{{IPA|$1}}]'); //{{IPA}}
		str = str.replace(/\{\{IPA\|\/([^\]\}]+)\/\}\}/g, '/{{IPA|$1}}/');
		str = str.replace(/\{\{IPA\|g\}\}/g, '{{IPA|ɡ}}');
 
		if(!wp_sk.pytaj || confirm('Czy chcesz zastąpić dywizy półpauzami? Może psuć łącza i obrazki.'))
		{
			str = str.replace(/ - ([^0-9])/g, ' – $1'); //myślnik oznaczamy półpauzą, ale nie między liczbami
			str = str.replace(/([^0-9]) - /g, '$1 – ');
		}
 
		//str = str.replace(/ /g, '&nbsp;'); //ujawnić twarde spacje
		str = str.replace(/&bull;/g, '•'); //a resztę odkodować
		str = str.replace(/&dagger;/g, '†');
		str = str.replace(/&infin;/g, '∞');
		str = str.replace(/&ndash;/g, '–');
		str = str.replace(/&plusmn;/g, '±');
		str = str.replace(/&rarr;/g, '→');
		str = str.replace(/&sum;/g, '∑');
 
	}
 
	str = str.replace(/\{\{[lL]ang\|cz\}\}/g, '{{lang|cs}}');
	str = str.replace(/\{\{[lL]ang\|dk\}\}/g, '{{lang|da}}');
	str = str.replace(/(?:\{\{lang\|(\w+)\}\})\s*(?:\{\{lang\|(\w+)\}\})\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\n/g, '{{multilang|$1|$2|$3|$4|$5|$6|$7|$8|$9}}\n');
	str = str.replace(/(?:\{\{lang\|(\w+)\}\})\s*(?:\{\{lang\|(\w+)\}\})\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?\s*(?:\{\{lang\|(\w+)\}\})?/g, '{{multilang|$1|$2|$3|$4|$5|$6|$7|$8|$9}}');
	str = str.replace(/\{\{multilang\|([^\}]+?)(\|+)\}\}/g, '{{multilang|$1}}');
 
	//
	// porządkowanie międzywiki, medali i kategorii
	//
 
	/* // tworzenie {{DEFAULTSORT:}}
	z = new Array();
	y = new Array();
	z = str.match(/\[\[Kategoria:[^\]\|]*\|[^\]\|]*\]\]/g);
	y = str.match(/\[\[Kategoria:[^\]\|]*\]\]/g);
	var x = z.length>0 && y.length==0;
	if(x)
	{
 
		for(var i=0;i<z.length;i++)
		{
			z[i] = z[i].replace(/\[\[Kategoria:[^\]\|]*\|([^\]\|]*)\]\]/g, '$1');
		}
 
		for(var i=0;i<z.length-1;i++)
		{
			x = z[i]==z[i+1]&&x;
		}
 
		if(x)
		{
			str = str.replace(/\[\[Kategoria:([^\]\|]*)\|[^\]\|]*\]\]/g,'[[Kategoria:$1]]');
			str = '{{DEFAULTSORT:'+z[0]+'}}'+'\n'+str;
		}
	}*/
 
/* z=str.match(/\[\[Kategoria:.*?\|.*?\]\]/g)
 
for(i=0;i<z.length;i++)
{
z[i]=z[i].replace(/\[\[Kategoria:.*?\|(.*?)\]\]/,'$1')
}
 
x=true
for(i=0;i<z.length-1;i++)
{
if(z[i]==z[i+1]&&x) x=true
else x=false
}
 
 
if(x)
{
str=str.replace(/\[\[Kategoria:(.*)\|.*\]\]/g,'[[Kategoria:$1]]')
 
str='{{DEFAULTSORT:'+z[0]+'}}'+'\n'+str
 
 
 
} */
 
	//
	// zbiórka i kasowanie
	wp_sk.defsort = new Array();
	wp_sk.defsort.i = 0;
	str = str.replace(/\{\{DEFAULTSORT:([^\}]+)\}\}/g, function(a, sort){wp_sk.defsort[wp_sk.defsort.i++]=sort; return ''});
 
	wp_sk.cats = new Array();
	wp_sk.cats.i = 0;
	str = str.replace(/\[\[Kategoria:([^\]\[]+)\]\]/g, function(a, cat){wp_sk.cats[wp_sk.cats.i++]=cat; return ''});
 
	wp_sk.iwiki = new Array();
	wp_sk.iwiki.i = 0;
	// wg: http://meta.wikimedia.org/wiki/List_of_Wikipedias
	str = str.replace(/\[\[([a-z\-]{2,3}|simple|ru-sib|be-x-old|zh-yue|map-bms|zh-min-nan|nds-nl|bat-smg|zh-classical|fiu-vro|roa-rup|tokipona|cbk-zam|roa-tara):([^\]\|\[]+)\]\]/g, wp_sk.rGatherIWiki);
 
	wp_sk.iwikifa = new Array();
	wp_sk.iwikifa.i = 0;
	// wg: http://meta.wikimedia.org/wiki/List_of_Wikipedias
	str = str.replace(/\{\{[Ll]ink FA\|([a-z\-]{2,3}|simple|ru-sib|be-x-old|zh-yue|map-bms|zh-min-nan|nds-nl|bat-smg|zh-classical|fiu-vro|roa-rup|tokipona|cbk-zam|roa-tara)\}\}/g, wp_sk.rGatherIWikifa);
 
	//
	// usuwanie pozostawionych i przy okazji innych wielokrotnych, pustych linii
	str = str.replace(/[\n]{3,}/g, '\n\n');
 
	//
	// wstawienie na koniec
	str = str.replace(/\s*$/, wp_sk.rOutputCats);
	str = str.replace(/\s*$/, wp_sk.rOutputIwikifa);
	str = str.replace(/\s*$/, wp_sk.rOutputIwiki);
 
	//
	// zapisanie zmian
	//
	if (!isPartSelected)
	{
		input.value = str;
	}
	else if (input.selectionStart!=undefined)
	{
		input.value = input.value.substring(0, sel_s) + str + input.value.substring(sel_e)
	}
	// IE...
	else if (document.selection)
	{
		range.text = str;
		range.scrollIntoView(false);// at bottom
	}
 
	input.focus();
 
	wp_sk.warning();
}
 
//
// Pomocnicze funkcje do porządkowania
//
wp_sk.rLinkdecode = function(a,name,anchor,end)
{
	try
	{
		name=decodeURIComponent(name)
		anchor=decodeURIComponent(anchor.replace(/\.([0-9A-F]{2})\.([0-9A-F]{2})/g,'%$1%$2'))
		a='[['+name+anchor+end;
	}
	catch(err){}
 
	return a.replace(/_/g,' ');
}
 
wp_sk.rLinksame = function (a, w1_1,w1_2n, w2_1,w2_2n)
{
	var w1_1_tmp = w1_1.toUpperCase();
	var w2_1_tmp = w2_1.toUpperCase();
 
	if (w1_1_tmp==w2_1_tmp && w1_2n==w2_2n)
	{
		return '[['+w2_1+w2_2n+']]';
	}
	else
	{
		return a;
	}
}
 
wp_sk.rFriendlyIbox = function (a,nazwa,zaw)
{
	if (zaw.indexOf('\n')==-1)
	{
		return a;
	}
	else
	{
		return '{{'+nazwa+'\n'+zaw.replace(/\n(.{3,})\|\s*(?=\n)/g, '\n |$1').replace(/\|(\s*)\|(\s*)/, function(a,sp1,sp2) {return (sp1.length+sp2.length>0)?' |':'||'}).replace(/^\n+/, '')+'}}';
	}
}
 
wp_sk.rOutputCats = function (a)
{
	var str = '\n';
 
	for (var i=0; i<wp_sk.defsort.i; i++)
	{
		str += '\n{{DEFAULTSORT:'+wp_sk.defsort[i]+'}}';
	}
 
	for (var i=0; i<wp_sk.cats.i; i++)
	{
		str += '\n[[Kategoria:'+wp_sk.cats[i]+']]';
	}
 
	return str;
}
 
wp_sk.rGatherIWiki = function (a, lang, art)
{
	// wg: http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/maintenance/interwiki.sql
	if (lang!='wp' && lang!='mw' && lang!='gej' && lang!='ppr' && lang!='rfc' && lang!='uea' && lang!='why')
	{
		wp_sk.iwiki[wp_sk.iwiki.i] = new Array(lang,art);
		wp_sk.iwiki.i++;
		return '';
	}
	else
	{
		return a;
	}	
}
 
wp_sk.rOutputIwiki = function (a)
{
	var str = '\n';
 
	wp_sk.iwiki.sort(wp_sk.iwikiComp); // alfabetycznie wg kodu literowego	
	for (var i=0; i<wp_sk.iwiki.i; i++)
	{
		str += '\n[['+wp_sk.iwiki[i][0]+':'+wp_sk.iwiki[i][1]+']]';
	}
 
	return str;
}
 
wp_sk.rGatherIWikifa = function (a, lang)
{
	// wg: http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/maintenance/interwiki.sql
	if (lang!='wp' && lang!='mw' && lang!='gej' && lang!='ppr' && lang!='rfc' && lang!='uea' && lang!='why')
	{
		wp_sk.iwikifa[wp_sk.iwikifa.i] = lang;
		wp_sk.iwikifa.i++;
		return '';
	}
	else
	{
		return a;
	}	
}
 
wp_sk.rOutputIwikifa = function (a)
{
	var str = '\n';
 
	wp_sk.iwikifa.sort(wp_sk.iwikiComp); // alfabetycznie wg kodu literowego // tutaj wspólna funkcja wp_sk.iwikiComp
	for (var i=0; i<wp_sk.iwikifa.i; i++)
	{
		str += '\n{{link FA|'+wp_sk.iwikifa[i]+'}}';
	}
 
	return str;
}
 
wp_sk.iwikiComp = function (a, b)
{
	if (wp_sk.iwiki_order.indexOf(a[0]) < wp_sk.iwiki_order.indexOf(b[0]))
	{
		return -1;
	}
	else if (wp_sk.iwiki_order.indexOf(a[0]) > wp_sk.iwiki_order.indexOf(b[0]))
	{
		return 1;
	}
	// else
	return 0;
}
 
wp_sk.iwiki_order = [
	'aa', 'af', 'ak', 'als', 'am', 'ang', 'ab', 'ar', 'an', 'arc',
	'roa-rup', 'frp', 'as', 'ast', 'gn', 'av', 'ay', 'az', 'bm', 'bn',
	'zh-min-nan', 'map-bms', 'ba', 'be', 'be-x-old', 'bh', 'bcl', 'bi', 'bar', 'bo',
	'bs', 'br', 'bg', 'bxr', 'ca', 'cv', 'ceb', 'cs', 'ch', 'ny',
	'sn', 'tum', 'cho', 'co', 'za', 'cy', 'da', 'pdc', 'de', 'dv',
	'nv', 'dsb', 'dz', 'mh', 'et', 'el', 'eml', 'en', 'es', 'eo',
	'eu', 'ee', 'fa', 'fo', 'fr', 'fy', 'ff', 'fur', 'ga', 'gv',
	'gd', 'gl', 'ki', 'glk', 'gu', 'got', 'zh-classical', 'hak', 'xal', 'ko',
	'ha', 'haw', 'hy', 'hi', 'ho', 'hsb', 'hr', 'io', 'ig', 'ilo',
	'bpy', 'id', 'ia', 'ie', 'iu', 'ik', 'os', 'xh', 'zu', 'is',
	'it', 'he', 'jv', 'kl', 'pam', 'kn', 'kr', 'ka', 'ks', 'csb',
	'kk', 'kw', 'rw', 'ky', 'rn', 'sw', 'kv', 'kg', 'ht', 'kj',
	'ku', 'lad', 'lbe', 'lo', 'la', 'lv', 'lb', 'lt', 'lij', 'li',
	'ln', 'jbo', 'lg', 'lmo', 'hu', 'mk', 'mg', 'ml', 'mt', 'mi',
	'mr', 'mzn', 'ms', 'cdo', 'mo', 'mn', 'mus', 'my', 'nah', 'na',
	'fj', 'nl', 'nds-nl', 'cr', 'ne', 'new', 'ja', 'nap', 'ce', 'pih',
	'no', 'nn', 'nrm', 'nov', 'oc', 'or', 'om', 'ng', 'hz', 'ug',
	'uz', 'pa', 'pi', 'pag', 'pap', 'ps', 'km', 'pms', 'nds', 'pl',
	'pt', 'crh', 'ty', 'ksh', 'ro', 'rmy', 'rm', 'qu', 'ru', 'se',
	'sm', 'sa', 'sg', 'sc', 'sco', 'st', 'tn', 'sq', 'scn', 'si',
	'simple', 'sd', 'ss', 'sk', 'cu', 'sl', 'so', 'sr', 'sh', 'stq',
	'su', 'fi', 'sv', 'tl', 'ta', 'kab', 'roa-tara', 'tt', 'te', 'tet',
	'th', 'vi', 'ti', 'tg', 'tpi', 'to', 'chr', 'chy', 've', 'tr',
	'tk', 'tw', 'udm', 'bug', 'uk', 'ur', 'vec', 'vo', 'fiu-vro', 'wa',
	'vls', 'war', 'wo', 'wuu', 'ts', 'ii', 'yi', 'yo', 'zh-yue', 'cbk-zam',
	'diq', 'zea', 'bat-smg', 'zh'
]
 
if (!Array.prototype.indexOf)
{
	Array.prototype.indexOf = function(elt /*, from*/)
	{
		var len = this.length;
 
		var from = Number(arguments[1]) || 0;
		from = (from < 0) ? Math.ceil(from) : Math.floor(from);
		if (from < 0)
			from += len;
 
		for (; from < len; from++)
		{
			if (from in this && this[from] === elt)
				return from;
		}
		return -1;
	};
}
 
 
if(wgAction=='submit' || wgAction=='edit')
{
	addOnloadHook(wp_sk.button);
	addOnloadHook(wp_sk.button2);
	addOnloadHook(wp_sk.button3);
}
/*</pre>*/