Wikisłownikarz:Sp5uhe/skrypt10.js

Z Wikisłownika – wolnego słownika wielojęzycznego

Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
/*<pre><nowiki>*/
function trim(str) {
   str = str.replace(/ $/gm, "");
   return str.replace(/^\s*|\s*$/g, "");
}

function TurnFirstToLower(input) {
  if (input != "")
  {
    var input = trim(input);
    var temp = input.substr(0, 1);
    return temp.toLowerCase() + input.substr(1, input.length);
  }
  else
    return "";
}

// Dodaje opis w opisie zmian, o ile takiego nie bylo
function dodajOpis(opis)
{
	var wpS = document.forms.editform.wpSummary;
	wpS.value=trim(wpS.value);
	if (wpS.value.indexOf(opis)<0) 
		if (wpS.value.substring(wpS.value.length,wpS.value.length-2)=="*\/")
			wpS.value = wpS.value +" "+ opis;
		else
			if (wpS.value.length>0)
				wpS.value = wpS.value +", "+ opis;
			else
				wpS.value = opis;
}

function rozne(str)
{
	str = str.replace(/\t/g, " "); // Zamienia tabulatory na spacje

// Standaryzujemy końce wiersza
	str = str.replace(/(\r)(\n)/gm, "$2"); // Konwersja uszkodzonych końców wiersza UNIX-DOS
	str = str.replace(/\r/gm, "\n");
	str = str.replace(/(\r)(\n)/gm, "$2");

	str = str.replace(/^ ? ? (\n)/gm, "$1"); // Usuwanie spacji w wierszy z samymi spacjami
	str = str.replace(/(\n\n)\n+/gm, "$1");  // Usuwanie drugiej pustej linii - może być tylko jedna

//Spacje na końcach i początkach wierszy
	str = str.replace(/ ? ?<br \/> ? ?/gi, "<br />"); // Usuwamy spacje sprzed i zza znaku łamania wiersza
	str = str.replace(/^ /gm, ""); // Usuwamy spacje z początku wiersza
	str = str.replace(/ $/g, ""); // Usuwamy spacje z końca wiersza
// Naprawa kategorii
	str = str.replace(/\[\[ ?[Cc]ategory ?: ?/g, "[[Kategoria:");
	str = str.replace(/\[\[ ?[Kk]ategoria ?: ?/g, "[[Kategoria:");
// Jednostki
	str = str.replace(/&#150;|&#8211;|&#x2013;/g, "&ndash;");
	str = str.replace(/&#151;|&#8212;|&#x2014;/g, "&mdash;");
	str = str.replace(/(cm| m|km|mi)<sup>2<\/sup>/g, "$1²");
	str = str.replace(/&sup2;/g, "²");
	str = str.replace(/&deg;/g, "°");
	//replace html with wiki syntax
	if( !str.match(/'<\/?[ib]>|<\/?[ib]>'/gi) )
	{
		str = str.replace(/<i>(.*)<\/i>/gi, "''$1''");
		str = str.replace(/<b>(.*)<\/b>/gi, "'''$1'''");
	}
	str = str.replace(/<br\/>/gi, "<br />");
	str = str.replace(/<br>/gi, "<br />");
	str = str.replace(/ ? ?<br \/> ? ?/gi, "<br />");

// Naprawa odwołań do grafiki
	str = str.replace(/\[\[Image\: */gmi, "[[Grafika:");
	str = str.replace(/\[\[Grafika\: */gmi, "[[Grafika:");
	str = str.replace(/\[\[Grafika\: *Grafika\: */gmi, "[[Grafika:");
	str = str.replace(/\[\[Grafika\: *Image\: */gmi, "[[Grafika:");
	str = str.replace(/\[\[Image\: *Image\: */gmi, "[[Grafika:");
	str = str.replace(/\[\[Image\: *Grafika\: */gmi, "[[Grafika:");
// Inne
// Wymieniamy w linkach [[w:pl: na [[w:
	str = str.replace(/\[\[w\:pl\:/gi, "[[w:");

	return trim(str);
}

//formats links in standard fashion
function linkfixer(str, checkImages)
{ 
//	str = str.replace(/\]\[/g, "] [");
	var m = str.match(/\[?\[[^\]]*\]\]?/g);
	if (m)
	{
		for (var i = 0; i < m.length; i++)
		{
			var x = m[i].toString();
			var y = x;

	//internal links only
			if ( !y.match(/^\[?\[http:\/\//mi) && !y.match(/^\[?\[image:/mi) )
			{
				if (y.indexOf(":") == -1 && y.substr(0,3) != "[[_" && y.indexOf("|_") == -1)
				{
					if (y.indexOf("|") == -1)
						y = y.replace(/_/g, " ");
					else
						y = y.replace( y.substr(0, y.indexOf("|")), y.substr(0, y.indexOf("|")).replace(/_/g, " "));
				}  
	
				y = y.replace(/ ?\| ?/, "|").replace("|]]", "| ]]");
	
			}

			str = str.replace(x, y);
		}
	}

	//repair bad internal links
	str = str.replace(/\[\[ ?([^\]]*) ?\]\]/g, "[[$1]]");
	str = str.replace(/\[\[([^\]]*)( |_)#([^\]]*)\]\]/g, "[[$1#$3]]");

	//repair bad external links
	str = str.replace(/\[?\[http:\/\/([^\]]*)\]\]?/gi, "[http://$1]");
	str = str.replace(/\[http:\/\/([^\]]*)\|([^\]]*)\]/gi, "[http://$1 $2]");

	return trim(str);
}

//fixes images
function imagefixer(str)
{

	//remove external images
	str = str.replace(/\[?\[image:http:\/\/([^\]]*)\]\]?/gi, "[http://$1]");
	str = str.replace(/\[?\[grafika:http:\/\/([^\]]*)\]\]?/gi, "[http://$1]");
	//fix links within internal images
	var m = str.match(/\[\[grafika:[^\[\]\n]*(\[?\[[^\]\n]*\]*[^\[\]\n]*)*\]+/gi);
	if (m)
	{
		for (var i = 0; i < m.length; i++)
		{
			var x = m[i].toString();
			var y = x;

			y = y.replace(/^\[\[g/mi, "G").replace(/\]\]$/, "");
			y = y.replace(/(\[[^\]]*)$/, "$1]");
			y = linkfixer(y, true);
			y = "[[" + y + "]]";

			str = str.replace(x, y);
		}
	}
return trim(str);
	var m = str.match(/\[?\[grafika:[^\[\]]*(\[?\[[^\]]*\]*[^\[\]]*)*\]+/gi);
	if (m)
	{
		for (var i = 0; i < m.length; i++)
		{
			var x = m[i].toString();
			var y = x;

			y = y.replace(/^\[\[g/mi, "G").replace(/\]\]$/, "");
			y = y.replace(/(\[[^\]]*)$/, "$1]");
			y = linkfixer(y, true);
			y = "[[" + y + "]]";

			str = str.replace(x, y);
		}
	}

	return trim(str);
}

//simplifies some links e.g. [[Dog|dog]] to [[dog]] and [[Dog|dogs]] to [[dog]]s
function linksimplifyer(str)
{
	var m = str.match(/\[\[([^\[]*)\|([^\[]*)\]\]/g);
	if (m)
	{
		for (var i = 0; i < m.length; i++)
		{
			var n_arr = m[i].toString().match(/\[\[([^\[]*)\|([^\[]*)\]\]/);
			var n = n_arr[0];
			var a = n_arr[1];
			var b = n_arr[2];

			if (b.indexOf(a) == 0 || b.indexOf(TurnFirstToLower(a)) == 0)
			{
				var k = n.replace(/\[\[([^\]\|]*)\|(\1)([a-zA-Ząśżźćęń󳥌ŻŹĆĘŃÓŁ]*)\]\]/i, "[[$2]]$3");
				str = str.replace(n, k);
			}
		}
	}

	str = str.replace(/\[\[([^\]\|]+)\|([^\]\|]+)\]\]([A-Za-z\'][A-Za-z]*)([\.\,\;\:\"\!\?\s\n])/gm, "[[$1|$2$3]]$4");

	return str;
}

function wiktionary(str)
{
	str = str.replace(/\'\'\[\[mianownik\|M\]\]\'\'/gi, "{{M}}");
	str = str.replace(/\'\'\[\[dopełniacz\|D\]\]\'\'/gi, "{{D}}");
	str = str.replace(/\'\'\[\[celownik\|C\]\]\'\'/gi, "{{C}}");
	str = str.replace(/\'\'\[\[biernik\|B\]\]\'\'/gi, "{{B}}");
	str = str.replace(/\'\'\[\[narzędnik\|N\]\]\'\'/gi, "{{N}}");
	str = str.replace(/\'\'\[\[miejscownik\|Ms\]\]\'\'/gi, "{{Ms}}");
	str = str.replace(/\'\'\[\[wołacz\|W\]\]\'\'/gi, "{{W}}");

	str = str.replace(/\'\'\[\[liczba pojedyncza\|lp\]\]\'\'/gi, "{{lp}}");
	str = str.replace(/\'\'\[\[liczba mnoga\|lm\]\]\'\'/gi, "{{lm}}");

	str = str.replace(/\'\'\[\[rzeczownik\|rzecz.\]\]\'\'/gi, "{{rzecz}}");
	str = str.replace(/\'\'\[\[przymiotnik\|przym.\]\]\'\'/gi, "{{przym}}");

	str = str.replace(/\'\'\[\[przestarzale\|przest.\]\]\'\'/gi, "{{przest}}");

	str = str.replace(/^(\*+\:*)([^ \n\*\:])/gmi, "$1 $2"); // *ala -> * ala
	str = str.replace(/^(\:+)([^ \n\*\:])/gmi, "$1 $2"); // :ala -> : ala

	str = str.replace(/\[\[Do\]\]/g, "[[do|Do]]");
	str = str.replace(/^(\=+) *([^\n]*[^\=\n ]+) *\=+$/gm, "$1 $2 $1"); // naprawa tytułów
	str = str.replace(/\n*(\n)\=/gm, "$1$1="); // naprawa tytułów
// Usuwamy końce wiersza sprzed pierwszego języka
	if (str.search(/\n+\n\=/gm) != -1)
	{
		var p=str.search(/\n+\n\=/gm);
		var f=str.match(/\n+\n\=/gm)[0];
		var g=f;
		g=g.replace(/[\r\n]/gm, "");
		str=str.substring(0,p)+"\n"+g+str.substring(p+f.length,str.length);
	}
	str = str.replace(/[\r\n][\r\n][\r\n]+/gm, "\n\n");
	str = str.replace(/(\r)(\n)/gm, "$2"); // Konwersja uszkodzonych końców wiersza UNIX-DOS

	str = str.replace(/(?:zobacz|zob\.) (?:też|także|również)\:? ?\[\[w\: *([^\|\]]+)\|([^\|\]]+)\]\] w Wikipedii\.?/gi, "{{wikipedia|$1|$2}}");
	var re=new RegExp("\\{\\{wikipedia\\|"+wgTitle+"\\|"+wgTitle+"\\}\\}","gmi");
	str = str.replace(re, "{{wikipedia}}");
	str = str.replace(/[\,\.\;\:]? ?\{\{wikipedia/g, "; {{wikipedia");

	str = str.replace(/\n+(?:zobacz|zob\.) (?:też|także|również)\:? ?/gmi, "\nzobacz też: ");
	str = str.replace(/^((?:\{\{uwagi\}\})? )(?:zobacz|zob\.) (?:też|także|również)\:? ?/gmi, "$1zobacz też: ");
	str = str.replace(/^zobacz też\:?(?: ?\[\[([^\n\]\|]*)\]\] ?\,?)/gmi, "{{zobteż|$1}}");
	str = str.replace(/^zobacz też\:?(?: ?\[\[([^\n\]\|]*)\|([^\n\]\|]*)\]\] ?\,?)/gmi, "{{zobteż2|$1|$2}}");
	str = str.replace(/(\{\{zobteż2\|[^\n\}\|]*(?:\|[^\n\}\|]*\|[^\n\}\|]*)*)(\}\})/gmi, "$1|$2");
	var old;
	do {
		old=str;
		str = str.replace(/(\{\{zobteż\|[^\n\}]+)\}\}(?: ?\[\[([^\n\]\|]*)\]\] ?\,?)/gmi, "$1|$2}}");
		if (str.match(/(\{\{zobteż\|[^\n\}]+)\}\}(?: ?\[\[([^\n\]\|]*)\|([^\n\]\|]*)\]\] ?\,?)/gmi))
		{
			var old2;
			do {
				old2=str;
				str = str.replace(/(\{\{zobteż\|[^\n\}\|]*)\|([^\n\}]*\}\} ?\[\[[^\n\]\|]*\|[^\n\]\|]*\]\])/gmi, "$1\t$2");
			} while (str!=old2);
			do {
				old2=str;
				str = str.replace(/(\{\{zobteż\|[^\n\}\|]*)\t([^\n\}]*\}\} ?\[\[[^\n\]\|]*\|[^\n\]\|]*\]\])/gmi, "$1||$2");
			} while (str!=old2);
			str = str.replace(/(\{\{)zobteż(\|[^\n\}]*)(\}\} ?\[\[[^\n\]\|]*\|[^\n\]\|]*\]\])/gmi, "$1zobteż2$2|$3");
		}
		str = str.replace(/(\{\{zobteż2\|[^\n\}]+)\}\}(?: ?\[\[([^\n\]\|]*)\]\] ?\,?)/gmi, "$1|$2|}}");
		str = str.replace(/(\{\{zobteż2\|[^\n\}]+)\}\}(?: ?\[\[([^\n\]\|]*)\|([^\n\]\|]*)\]\] ?\,?)/gmi, "$1|$2|$3}}");
	} while (str!=old);
	str = str.replace(/\n+(\n\{\{zobteż)/gmi, "$1");
	str = str.replace(/([^\'])\'\'(abl|adm|alb|amer|anat|ang|arab|aram|arch|astr|astrol|austr|austral|B|bezosob|białor|biol|blm|blp|Bm|bot|braz|bret|bryt|bud|bułg|C|chem|chin|chorw|cuk|czesk|D|dawn|dk|dłuż|dolnoniem|dosł|druk|du|duń|ekon|el|elektr|elektron|ent|etc|etw|eufem|ezot|f|far|farm|filoz|fin|fiz|fizj|folk|fr|geogr|geol|geom|głuż|goc|góralska|górnol|gram|grec|gwara|hand|hebr|hist|hiszp|hydrol|im|inform|irl|iron|isl|itd|jęz|jid|jmd|jmdm|jmdn|karc|kolej|komp|książk|kulin|lekcew|licz|lingw|lit|liter|litew|lm|lm m|lm nm|log|lotn|lp|lud|łac|łot|M|m|mac|mar|masz|mat|mech|med|meteorol|mil|miner|mit|mosob|mot|Ms|muz|n|N|ndk|ng|ngt|niem|nieodm|nieos|nl|nmosob|Nn|norw|nprzech|obraź|odczas|odprzym|odrzecz|ofic|ornit|pejor|pers|PIE|podn|poet|pogard|pol|poligr|polit|porów|porównaj|port|pot|pragerm|pranord|praw|przech|przecz|przedr|przen|przest|przesz|przyim|przym|przysł|przysz|psych|qu|reg|rel|roln|ros|rozk|rum|rzecz|sanskr|sb|scs|serb|slang|słc|słń|sport|staroang|starofr|starofryz|starogr|staroirl|staronord|starop|starosłow|staroszw|sth|stomat|stopn|strbr|strcz|swh|swn|syst|szw|szwajc|środ|śwn|także|techn|ter|tłum|turk|UK|ukr|US|w|W|wędk|węg|wł|włók|wojsk|wulg|zdrobn|zgrub|zobacz|zool|zwł|żart|żegl)\.?\'\'([^\'])/g, "$1{{$2}}$3");
	str = str.replace(/([^\'])\'\'(abl|adm|alb|amer|anat|ang|arab|aram|arch|astr|astrol|austr|austral|B|bezosob|białor|biol|blm|blp|Bm|bot|braz|bret|bryt|bud|bułg|C|chem|chin|chorw|cuk|czesk|D|dawn|dk|dłuż|dolnoniem|dosł|druk|du|duń|ekon|el|elektr|elektron|ent|etc|etw|eufem|ezot|f|far|farm|filoz|fin|fiz|fizj|folk|fr|geogr|geol|geom|głuż|goc|góralska|górnol|gram|grec|gwara|hand|hebr|hist|hiszp|hydrol|im|inform|irl|iron|isl|itd|jęz|jid|jmd|jmdm|jmdn|karc|kolej|komp|książk|kulin|lekcew|licz|lingw|lit|liter|litew|lm|lm m|lm nm|log|lotn|lp|lud|łac|łot|M|m|mac|mar|masz|mat|mech|med|meteorol|mil|miner|mit|mosob|mot|Ms|muz|n|N|ndk|ng|ngt|niem|nieodm|nieos|nl|nmosob|Nn|norw|nprzech|obraź|odczas|odprzym|odrzecz|ofic|ornit|pejor|pers|PIE|podn|poet|pogard|pol|poligr|polit|porów|porównaj|port|pot|pragerm|pranord|praw|przech|przecz|przedr|przen|przest|przesz|przyim|przym|przysł|przysz|psych|qu|reg|rel|roln|ros|rozk|rum|rzecz|sanskr|sb|scs|serb|slang|słc|słń|sport|staroang|starofr|starofryz|starogr|staroirl|staronord|starop|starosłow|staroszw|sth|stomat|stopn|strbr|strcz|swh|swn|syst|szw|szwajc|środ|śwn|także|techn|ter|tłum|turk|UK|ukr|US|w|W|wędk|węg|wł|włók|wojsk|wulg|zdrobn|zgrub|zobacz|zool|zwł|żart|żegl)\.?\'\'$/g, "$1{{$2}}");

	str = str.replace(/([^\'])\'\'(?:(?:wyraz(?:\'\' \'\')| )nieodmienny|nieodmienne)\'\'([^\'])/g,"$1{{nieodm}}$2");
	str = str.replace(/([^\'])\'\'(?:astron\.?|astronomia)\'\'([^\'])/g,"$1{{astr}}$2");
	str = str.replace(/([^\'])\'\'(?:astrol\.?|astrologia)\'\'([^\'])/g,"$1{{astrol}}$2");
	str = str.replace(/([^\'])\'\'biologia\'\'([^\'])/g,"$1{{biol}}$2");
	str = str.replace(/([^\'])\'\'mitologia\'\'([^\'])/g,"$1{{mit}}$2");
	str = str.replace(/([^\'])\'\'(?:bez liczby mnogiej|bez lm|bez \{\{lm\}\})\'\'([^\'])/g,"$1{{blm}}$2");
	str = str.replace(/([^\'])\'\'bez\'\' \{\{lm\}\}([^\'])/g,"$1{{blm}}$2");
	str = str.replace(/([^\'])\'\'(?:bez liczby pojedynczej|bez lp|bez \{\{lp\}\})\'\'([^\'])/g,"$1{{blp}}$2");
	str = str.replace(/([^\'])\'\'bez\'\' \{\{lp\}\}([^\'])/g,"$1{{blp}}$2");
	str = str.replace(/([^\'])\'\'bzosob.?\'\'([^\'])/g,"$1{{bezosob}}$2");
	str = str.replace(/([^\'])\'\'dawna nazwa\'\'([^\'])/g,"$1{{dawn}}$2");
	str = str.replace(/([^\'])\'\'dokonany\'\'([^\'])/g,"$1{{dk}}$2");
	str = str.replace(/([^\'])\'\'dosłownie\'\'([^\'])/g,"$1{{dosł}}$2");
	str = str.replace(/([^\'])\'\'drukarstwo\'\'([^\'])/g,"$1{{druk}}$2");
	str = str.replace(/([^\'])\'\'liczba podwójna\'\'([^\'])/g,"$1{{du}}$2");
	str = str.replace(/([^\'])\'\'(?:ekonomia|ekonom\.?)\'\'([^\'])/g,"$1{{eko}}$2");
	str = str.replace(/([^\'])\'\'elektronika\'\'([^\'])/g,"$1{{elektron}}$2");
	str = str.replace(/([^\'])\'\'(?:eufemistyczni?e|eufemizm)\'\'([^\'])/g,"$1{{eufem}}$2");
	str = str.replace(/([^\'])\'\'farmac\.?\'\'([^\'])/g,"$1{{farm}}$2");
	str = str.replace(/([^\'])\'\'filozo?f?\.?\'\'([^\'])/g,"$1{{filo}}$2");
	str = str.replace(/([^\'])\'\'finanse\'\'([^\'])/g,"$1{{fin}}$2");
	str = str.replace(/([^\'])\'\'informatyka\'\'([^\'])/g,"$1{{inform}}$2");
	str = str.replace(/([^\'])\'\'i tak dalej\'\'([^\'])/g,"$1{{itd}}$2");

	str = str.replace(/([^\'])\'\'liczba mnoga\'\'([^\'])/g,"$1{{lm}}$2");
	str = str.replace(/([^\'])\'\'liczba pojedyncza\'\'([^\'])/g,"$1{{lp}}$2");
	str = str.replace(/([^\'])\'\'niedokonany\'\'([^\'])/g,"$1{{ndk}}$2");
	str = str.replace(/([^\'])\'\'potocznie\'\'([^\'])/g,"$1{{pot}}$2");
	str = str.replace(/([^\'])\'\'prawo\'\'([^\'])/g,"$1{{praw}}$2");
	str = str.replace(/([^\'])\'\'rodzaj żeński\'\'([^\'])/g,"$1{{f}}$2");
	str = str.replace(/([^\'])\'\'rodzaj męski\'\'([^\'])/g,"$1{{m}}$2");
	str = str.replace(/([^\'])\'\'rodzaj nijaki\'\'([^\'])/g,"$1{{m}}$2");

	str = str.replace(/([^\'])\'\'bezokol.?\'\'([^\'])/g,"$1''bezokolicznik''$2");

	str = str.replace(/([^\'])\'\'(czas)\.\'\'([^\'])/g, "$1{{$2}}$3");
	str = str.replace(/([^\'])\'\'(czas)\.\'\'$/g, "$1{{$2}}");
	str = str.replace(/ *\<\!\-\- *(?:\[\[Aneks\:IPA\|[^\]\n]*\]\]|\{\{IPA[^\}\n]*\}\})[^\n]*\-\-\> */g, " ");
	str = str.replace(/ *\{\{IPA\|?\}\} */g, " ");
	str = str.replace(/  +/g, " ");
	str = str.replace(/ $/g, "");
	str = str.replace(/\[\[Aneks\:Język polski \- koniugacja ([IVX]+[abc]?)\|koniugacja [IVX]+[abc]?\]\]/g, "{{KoniugacjaPL|$1}}");
	str = str.replace(/\<div style=\"float\:right\; text\-align\:center\; ?\"\>\n\{\|\-\n\|\- style\=\"font\-size\:72px\; color\: black\; height\: 72px\;\"\n\|(.+)\n\|\-\n\|([^\n]+)\n\|\}\n\<\/div\>/g,"{{litera|$1|$2}}");


/*cudzysłowy[\"\u00AB\u00BB\u2018\u2019\u201A\u201C\u201D\u201E\u2039\u203A\u300C\u300D\u300E\u300F\uFE30\uFE41\uFE42\uFE43\uFE44]*/

	var old;
	do {
		old = str;
		str = str.replace(/^(\=\=[^\=\n\{]+\{\{język polski\}\}[^\n]+(?:\n[^\*\=\n][^\n]*)*)[\u00AB\u00BB\u2018\u2019\u201A\u201C\u201D\u201E\u2039\u203A\u300C\u300D\u300E\u300F\uFE30\uFE41\uFE42\uFE43\uFE44]/gm, "$1\"");
		str = str.replace(/^(\* polski\:[^\n]*)[\u00AB\u00BB\u2018\u2019\u201A\u201C\u201D\u201E\u2039\u203A\u300C\u300D\u300E\u300F\uFE30\uFE41\uFE42\uFE43\uFE44]/gm, "$1\"");
	} while (old!=str);
// otwarcie 201E 00AB 201A zamknięcie 201D 00BB 2019
	if (str[0]=="\"") str[0]="\u201E";
	if (str[str.length]=="\"") str[str.length]="\u201D";
	do {
		old = str;
		str = str.replace(/([\s\u201E\(\'\*])\"/gm, "$1\u201E");
		str = str.replace(/\"([\s\u201D\:\.\!\?\)\;\'\,]|$)/gm, "\u201D$1");
	} while (old!=str);
	do {
		old = str;
		str = str.replace(/(\u201E[^\u201D\u201E]*\u201E[^\u201D\u201E]*)\u201E/gm, "$1\"");
		str = str.replace(/\u201D([^\u201D\u201E]*\u201D[^\u201D\u201E]*\u201D)/gm, "\"$1");
	} while (old!=str);
	do {
		old = str;
		str = str.replace(/(\u201E[^\u201D]*)\u201E/gm, "$1\u00AB");
		str = str.replace(/(\u00AB[^\u201E\u201D\u00AB\u00BB]*)\u201D/gm, "$1\u00BB");
	} while (old!=str);
	str = str.replace(/\<strike\>([^\n\<]+)\<\/strike\>/gm, "<s>$1</s>");
/*
	str = str.replace(//g, "");
*/
	return trim(str);
}

// "Nazwa używana w linku", // Nazwa do sortowania
// Ta tablica musi już być posortowana
// Kolejność sortowania za pywikipedia/family.py zgodnie z self.alphabetic
// Ponieważ pywikipedia/families/wikipedia_family.py zgodnie z self.interwiki_putfirst jest 'pl': self.alphabetic
// Dane za http://meta.wikimedia.org/wiki/Interwiki_sorting_order

var Jezyki=[
	'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','bi','bar','bo','bs','br','bg','bxr','ca','cv','ceb','cs','ch',
	'ny','sn',
	'tum','cho','co','za','cy','da','pdc','de','dv','nv','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','lij','lt',
	'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','ty','ksh','ro','rmy','rm',
	'qu','ru','se','sm','sa','sg','sc','sco','st','tn','sq','ru-sib','scn',
	'si','simple','sd','ss','sk','sl','cu','so','sr','sh','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',
	'zh-tw','zh-cn'];

function sortujInterwiki(str)
{
	var ilink="";
	var i;
	for (i=0; i<Jezyki.length; i++ )
	{
		var b=true;
		var sr="\\[\\["+Jezyki[i]+"\\:[\^\\n\[\\]]*\\]\\]";
		while (str.search(sr,"gmi") != -1)
		{
			var p=str.search(sr,"gmi");
			var f=str.match(sr,"gmi")[0];
			if (b && (f=="[["+Jezyki[i]+":"+wgTitle+"]]"))
			{
				ilink=ilink+" "+f;
				b=false;
			}
			str=str.substring(0,p)+" "+str.substring(p+f.length,str.length);
		}
	}
	str=trim(ilink)+"\n"+trim(str);
	str = str.replace(/\n\n\n/gm, "\n\n");
	str = str.replace(/ +$/gm, ""); // Usuwanie spacji z końców wierszy
	return trim(str);
}

function format()
{
	var txt = document.editform.wpTextbox1;
	var old = txt.value;
	txt.value = linkfixer(txt.value, false);
	txt.value = imagefixer(txt.value);
	txt.value = rozne(txt.value);
	txt.value = linksimplifyer(txt.value);
	txt.value = wiktionary(txt.value);
	txt.value = sortujInterwiki(txt.value);
	txt.value = trim(txt.value);
	if (txt.value != trim(old))
		dodajOpis("formatowanie automatyczne");
}

function addFormatButton() {
	editingTools = document.getElementById('toolbar');
	if (editingTools != null)
	{
		FormatTextButton = "<a href=\"javascript:format();\"><img src=\"http://upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png\" alt=\"Formatuj\" title=\"Formatuj tekst\"></a>";
		editingTools.innerHTML = editingTools.innerHTML + FormatTextButton;
	}
}

$(function (){
	var isadmin=false;
	for (var i=0;i<wgUserGroups.length;i++)
		if (wgUserGroups[i]=="sysop")
		{
			isadmin=true;
		}
	if(isadmin && document.forms.editform) {
// Dodaje przycisk do toolbara
		addFormatButton();
	}
});
/*</nowiki></pre>*/