Wikipedysta:Persino/Gadget-DodatkiSkrypt3.js

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.
/**/
/* Umieszczony tutaj kod JavaScript zostanie załadowany przez każdego użytkownika, podczas każdego ładowania strony.*?
/* Zmienna: DodatkiSkrypt.Info.page, ma następujące składowe:
   * namespace          nazwa przestrzeni nazw
   * namespacenumber    numer przestrzeni nazw (równe wgNamespaceNumber)
   * fullname           pełna nazwa strony
   * pagename           nazwa strony
   * bookname           nazwa książki
   * fullbookname       pełna nazwa książki
   * book               tytuł książki
   * articlename        nazwa artykułu książki
   * subpagename        nazwa substrony strony
   * action             akcja taka jaka jest w adresie URL pod "action="
   * diff               różnice pomiędzy wersjami, jeżeli występuje w adresie URL, w przeciwnym wypadku przyjmuje wartość null
   * oldid              numer wersji, jeżeli występuje w adresie URL, w przeciwnym wypadku przyjmuje wartość null
*/
(function(mw,$){
	try{
		/*Uzyskanie dostępu do tablicy - przestrzeni: DodatkiSkrypt, z innej strony .js*/
		var DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks=window['Common'];

		/*Przestrzeń nazw: DodatkiSkrypt, zdefiniowanym za pomocą tablicy*/
		var DodatkiSkrypt=new Array();
		var UruchamiaczSkryptowyApi=new Array();
		window["UruchamiaczSkryptowyApi"]=UruchamiaczSkryptowyApi;
		UruchamiaczSkryptowyApi.DodatkiSkrypt=function(){return DodatkiSkrypt;};

		/*Funkcja, by nie było przecieków pamięci*/
		(function(UruchamiaczSkryptowyApi,DodatkiSkrypt,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks){
		
			/*Sprawdza, czy użytkownik ma własną zmienną DodatkiSkrypt*/
			DodatkiSkrypt.IsMediaWikiDodatkiSkrypt=function(){return ((DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks)?true:false);};
	
			/*Funkcja zwraca zmienną DodatkiSkrypt ze strony MediaWiki:DodatkiSkrypt.js*/
			DodatkiSkrypt.MediaWikiDodatkiSkrypt=function(){return (DodatkiSkrypt.IsMediaWikiDodatkiSkrypt()?DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks:DodatkiSkrypt);}
	
			/*Funkcja zwraca tablicę DodatkiSkrypt użytkownika, jeżeli taką posiada, w przeciwnym wypadku zwraca undefined*/
			DodatkiSkrypt.UserDodatkiSkrypt=function(){return (DodatkiSkrypt.IsMediaWikiDodatkiSkrypt()?DodatkiSkrypt:undefined);}
	
			/*Funkcja zwraca DodatkiSkrypt z tej strony*/
			DodatkiSkrypt.NoweDodatkiSkrypt=function(){return DodatkiSkrypt;}
	
			/*Funkcja zwraca DodatkiSkrypt ze strony MediaWiki:DodatkiSkrypt.js, jeżeli użytkownik posiada własne DodatkiSkrypt w jego pliku DodatkiSkrypt, w przeciwnym wypadku zwraca undefined*/
			DodatkiSkrypt.StareDodatkiSkrypt=function(){return DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks;}
	
	    	if(document.querySelector('#mw-content-text .mw-parser-output .mw-wyłącz-ładowanie-skryptu-mediawiki-DodatkiSkrypt-js')){return;}
	    
			/*Uzyskanie wskaźnika podtabeli w tabeli DodatkiSkrypt według strony MediaWiki:DodatkiSkrypt.js lub User:<użytkownik>/DodatkiSkrypt.js.
				Zmienne:
				mediawiki_ewentualnie_user = [true|false] - gdy chcemy uzyskać podtablicę według nowej wartości lub starej,
						nazwa = jakaś podtablica tablicy DodatkiSkrypt.
						Co robi: funkcja uzykuje podtablicę DodatkiSkrypt, a gdy ona nie istnieje, to ją samą.*/
			DodatkiSkrypt.PodTablicaDodatkiSkrypt=function(mediawiki_ewentualnie_user,nazwa){
				if(mediawiki_ewentualnie_user){
					var DodatkiSkrypt_nowe=DodatkiSkrypt.NoweDodatkiSkrypt();
					return (DodatkiSkrypt_nowe?DodatkiSkrypt_nowe[nazwa]:undefined)||DodatkiSkrypt_nowe;
				}else{
					var DodatkiSkrypt_stare=DodatkiSkrypt.StareDodatkiSkrypt();
					return (DodatkiSkrypt_stare?DodatkiSkrypt_stare[nazwa]:undefined)||DodatkiSkrypt_stare;
				}
			};
			/*Inicjacja tabeli załadowanych modułów na podstawie starej tabeli według skryptu MediaWiki:Commom.js w User:<użytkownik>/commom.js, lub gdy skrypt MediaWiki:DodatkiSkrypt.js, to zaicjonowanie pustą tablicą*/
			DodatkiSkrypt.TabelaFunkcjiSkryptowych=(function(){
				var DodatkiSkrypt_stare=DodatkiSkrypt.StareDodatkiSkrypt();
				return (((DodatkiSkrypt_stare)&&(DodatkiSkrypt_stare.TabelaFunkcjiSkryptowych)&&(typeof(DodatkiSkrypt_stare.TabelaFunkcjiSkryptowych)=="table"))?(DodatkiSkrypt_stare.TabelaFunkcjiSkryptowych):undefined)||new Array();
			})();
			DodatkiSkrypt.TabelaObietnicGadget=(function(){
				var DodatkiSkrypt_stare=DodatkiSkrypt.StareDodatkiSkrypt();
				return (((DodatkiSkrypt_stare)&&(DodatkiSkrypt_stare.TabelaObietnicGadget)&&(typeof(DodatkiSkrypt_stare.TabelaObietnicGadget)=="table"))?(DodatkiSkrypt_stare.TabelaObietnicGadget):undefined)||new Array();
			})();
			/**/
			/*Liczba wątków do zliczenia*/
			var muteks_generowane_liczby=undefined;
			DodatkiSkrypt.LicznikGenerowanychKorutyn=function(liczba_watkow,muteks_bez_generatora){
				this._length=((liczba_watkow!==undefined)?liczba_watkow:0);
				this.lengthPlus=((liczba_watkow!==undefined)?liczba_watkow:0);
				this.lengthMinus=0;
				var muteks_generowane_liczby=undefined;
				this._pobierzMuteks=function(){
					if(!muteks_generowane_liczby){muteks_generowane_liczby=new DodatkiSkrypt.Muteks();};
					return muteks_generowane_liczby;
				}
				/**/
				this._wygeneruj=function(liczba_watkow){
					this._length+=liczba_watkow;
					this.lengthPlus+=liczba_watkow;
				}
				this._zwolnij=function(){
					this._length-=1;
					this.lengthMinus+=1;	
				}
				this.wygeneruj=function(liczba){
					var zmienna_this=this;
					return zmienna_this._pobierzMuteks()[muteks_bez_generatora?"_zablokuj":"zablokuj"]().then(function(){
						zmienna_this._wygeneruj(liczba);
						muteks_generowane_liczby.odblokuj();
						return Promise.resolve();
					});
				}
				this.zwolnij=function(liczba){
					var zmienna_this=this;
					return zmienna_this._pobierzMuteks()[muteks_bez_generatora?"_zablokuj":"zablokuj"]().then(function(){
						zmienna_this._zwolnij();
						muteks_generowane_liczby.odblokuj();
						return Promise.resolve();
					});
				}
				this.length=function(liczba){
					var zmienna_this=this;
					return zmienna_this._pobierzMuteks()[muteks_bez_generatora?"_zablokuj":"zablokuj"]().then(function(){
						var length=zmienna_this._length;
						muteks_generowane_liczby.odblokuj();
						return Promise.resolve(length);
					});
				}
			}
			/**/
			var generowane_muteksy=new DodatkiSkrypt.LicznikGenerowanychKorutyn(0,true);
			DodatkiSkrypt.Muteks=function(){
    			var poprzednie_promise=Promise.resolve();
    			var stop=false;
    			this._zablokuj = function(czy_generator) {
    				this.odblokuj=function(){
    					stop=false;
    				};
    				if(czy_generator){var generator=generowane_muteksy.wygeneruj(1);}
    				var promise=Promise.all([poprzednie_promise,generator]).then(function(){
    					return new Promise(function(resolve,reject){
    						function Czekaj(){
    							if(!stop){
    								if(czy_generator){var generator=generowane_muteksy.zwolnij();};
    								Promise.all([generator]).then(function(){
	    								stop=true;
    									resolve();
    								});
    							}else{
    								setTimeout(Czekaj,0);
    							}
    						};
    						Czekaj();
    					});
    				});
    				poprzednie_promise=promise;
    				return promise;
    			};
			}
			DodatkiSkrypt.Muteks.prototype.zablokuj=function(ktory){
				return this._zablokuj(true);
			}
			/**/
			DodatkiSkrypt.muteks=new DodatkiSkrypt.Muteks();
			/**/
			var generowane_korutyny=new DodatkiSkrypt.LicznikGenerowanychKorutyn();
			/**/
			var FunDodatek=function(obj,__FUNKCJA_PROMISE,a,b,c,d,e,f,g,h,i,j,k){
				//return $(document).DodatkiSkryptSetTimeOut(function(){return Promise.resolve();},args[1]).then(function(){
				var promise=generowane_korutyny.wygeneruj(1);
				var wynik=obj[__FUNKCJA_PROMISE](a,b,c,d,e,f,g,h,i,j,k);
				return Promise.allSettled([promise,wynik]).then(function(){
					var generator=generowane_korutyny.zwolnij();
					return Promise.all([generator]).then(function(){return wynik;});
				});
			}
			var tab_promise_fun=["then","catch","finally"];
			for(var p in tab_promise_fun){
				var __FUNKCJA_PROMISE=tab_promise_fun[p];
				(function(__FUNKCJA_PROMISE){
					var __DODATKI_FUNKCJA_PROMISE=__FUNKCJA_PROMISE.charAt(0).toUpperCase() + __FUNKCJA_PROMISE.slice(1);
					Promise.prototype["DodatkiSkrypt"+__DODATKI_FUNKCJA_PROMISE]=Promise.prototype["DodatkiSkrypt"+__DODATKI_FUNKCJA_PROMISE]=function(a,b,c,d,e,f,g,h,i,j,k){
						return FunDodatek(this,__FUNKCJA_PROMISE,a,b,c,d,e,f,g,h,i,j,k);
					}
				})(__FUNKCJA_PROMISE);
			}
			var FunPromiseAll=function(tabela_promise,jaka){
				var promise_gen=generowane_korutyny.wygeneruj(1);
				return Promise.all(promise_gen).then(function(){
					return Promise[jaka](tabela_promise).then(function(data){
						var promise_zw=generowane_korutyny.zwolnij();
						return Promise.all([promise_zw]).then(function(){
							return Promise.resolve(data);
						});
					}).catch(function(data){
						var promise_zw=generowane_korutyny.zwolnij();
						return Promise.all([promise_zw]).then(function(){
							return Promise.reject(data);
						});
					});
				});
			}
			var tab_promise_all=["all","allSettled"];
			for(var p in tab_promise_all){
				var __FUNKCJA_PROMISE_ALL=tab_promise_all[p];
				(function(__FUNKCJA_PROMISE_ALL){
					var __FUNKCJA_PROMISE_ALLFUN=__FUNKCJA_PROMISE_ALL.charAt(0).toUpperCase() + __FUNKCJA_PROMISE_ALL.slice(1);
					Promise["DodatkiSkrypt"+__FUNKCJA_PROMISE_ALLFUN]=function(tabela_promise){
						return FunPromiseAll(tabela_promise,__FUNKCJA_PROMISE_ALL);
					}
				})(__FUNKCJA_PROMISE_ALL);
			}
			var func=function(obj){
				var tab_func=["then","catch","done"];
				for(var p in tab_func){
					var __FUNC=tab_func[p];
					(function(__FUNC){
						var __DODATKI_FUNC=__FUNC.charAt(0).toUpperCase() + __FUNC.slice(1);
						obj["DodatkiSkrypt"+__DODATKI_FUNC]=function(a,b,c,d,e,f,g,h,i,j,k){
							return FunDodatek(obj,__FUNC,a,b,c,d,e,f,g,h,i,j,k);
						}
					})(__FUNC);
				}
            	return obj;
			}
			jQuery.fn._promise=jQuery.fn.promise;
			jQuery.fn.__promise=function(type,target){
				var tab_promise=jQuery.fn._promise(type,target);
				var obj=new Object();
				for(var p in tab_promise){
					(function(tab_promise,p){
						obj[p]=function(a,b,c,d,e,f,g,h,i,j,k){
							var obj2=tab_promise[p](a,b,c,d,e,f,g,h,i,j,k);
							return func(obj2);
						};
					})(tab_promise,p);
				}
				return func(obj);
			}
			jQuery.fn.promise=jQuery.fn.__promise;jQuery.fn.__promise=undefined;
			/**/
			jQuery._Deferred=jQuery.Deferred;
			jQuery.__Deferred=function(beforeStart){
				var tab_promise=jQuery._Deferred(beforeStart);
				var obj=new Object();
				for(var p in tab_promise){
					(function(tab_promise,p){
						obj[p]=function(a,b,c,d,e,f,g,h,i,j,k){
							var obj2=tab_promise[p](a,b,c,d,e,f,g,h,i,j,k);
							return func(obj2);
						};
					})(tab_promise,p);
				}
				return func(obj);
			}
			jQuery.Deferred=jQuery.__Deferred;jQuery.__Deferred=undefined;
			/**/
			/**/
			var muteks_user_option=new DodatkiSkrypt.Muteks();
			/**/
			var MediaWikiGadgetPrefix='User:Persino/';
			
			//importScript(MediaWikiGadgetPrefix+"SHA1.js");
			/**/
			DodatkiSkrypt.UruchomPobraneSkrypty=function(strona,projekt,jezyk){
				var params = {
					origin:"*",
    				action: "query",
    				prop: "revisions",
    				titles: strona,
    				rvprop: "content",
	    			rvslots: "main",
    				formatversion: "2",
    				format: "json"
				};
				var url=window.location.protocol+"//"+((jezyk||mw.config.get('wgContentLanguage')).toLowerCase())+"."+((projekt||mw.config.get('wgSiteName')).toLowerCase())+".org/w/api.php";
				var promise_sha1=$.ajax({
					url:url,
					data:params,
					dataType:'json',
				});
				return promise_sha1.DodatkiSkryptThen(function(response){
   					var pages = response.query.pages;
   					var tekst="";
        			for (var p in pages) {
        				var revisions=pages[p].revisions;
        				var title=pages[p].title;
        				var js=/\.[Jj][Ss]$/g.test(title);
        				var css=/\.[Cc][Ss][Ss]$/g.test(title);
        				if(js || css){
        					for(var s in revisions){
        						var tekst_strona=revisions[s].slots.main.content
            					tekst=tekst+((tekst!="")?";":"")+((js)?(tekst_strona):("mw.util.addCSS(\""+(tekst_strona.replace(/\n/g," ").replace(/"/g,"\\\""))+"\")"));
        					}
        				}
        			}
        			var wynik=new Function(tekst);
            		return Promise.resolve(wynik());
				}).DodatkiSkryptCatch(function(response){return Promise.reject(response)});
			};
			var promise_sha1=(((window.CryptoJS)&&(window.CryptoJS.SHA1))?(Promise.resolve()):(DodatkiSkrypt.UruchomPobraneSkrypty(MediaWikiGadgetPrefix+"SHA1.js")));
			var CryptoJSSHA1=function(klucz){
				return promise_sha1.DodatkiSkryptThen(function(data){
					var klucz_sha1=CryptoJS.SHA1(klucz).toString();
					return Promise.resolve(klucz_sha1);
				}).DodatkiSkryptCatch(function(data){return Promise.reject(data)});
			}
			DodatkiSkrypt.DodatkiSkryptUserOption=new Array();
			DodatkiSkrypt.DodatkiSkryptUserOption.get=function(klucz,prefix,czy_nie_escape){
				return $(document).DodatkiSkryptReady(function(){
					return CryptoJSSHA1(((prefix)?(prefix+"-"):"")+klucz).DodatkiSkryptThen(function(data){
						var klucz="userjs-dodatkiskrypt-"+data;
						if(mw.user.options.exists(klucz)){
							var wynik=mw.user.options.get(klucz);
							wynik=(wynik!==null)?((!czy_nie_escape)?unescape(wynik):wynik):null;
							return Promise.resolve(wynik);
						}else{
							return Promise.resolve(null);
						}
					}).DodatkiSkryptCatch(function(data){return Promise.reject(data)});
				},null,muteks_user_option);
			}
			DodatkiSkrypt.DodatkiSkryptUserOption.set=function(klucz,wartosc,prefix,czy_nie_escape,tab_save_option){
				return $(document).DodatkiSkryptReady(function(){
					return CryptoJSSHA1(((prefix)?(prefix+"-"):"")+klucz).DodatkiSkryptThen(function(data){
						var klucz_cookie="dodatkiskrypt-"+data;
						var klucz="userjs-"+klucz_cookie;
						mw.cookie.set(klucz_cookie,null,{secure:true,path:"/",});
						wartosc=(wartosc!==null)?((!czy_nie_escape)?escape(wartosc):wartosc):null;
						var promise_set=mw.user.options.set(klucz,wartosc);
						if(!tab_save_option){
							var api=new mw.Api();
							return api.saveOption(klucz,wartosc).then(function(data){
								return Promise.resolve(promise_set);
							});
						}else{
							tab_save_option[klucz]=wartosc;
							return Promise.resolve(promise_set);
						}
					}).DodatkiSkryptCatch(function(data){return Promise.reject(data)});
				},null,muteks_user_option);
			}
			var muteks_user_option_all=new DodatkiSkrypt.Muteks()
			DodatkiSkrypt.DodatkiSkryptUserOption.getAll=function(klucz,prefix){
				return $(document).DodatkiSkryptReady(function(){
					var ile_cookie=DodatkiSkrypt.DodatkiSkryptUserOption.get(klucz+"-ile",prefix);
					return ile_cookie.then(function(ile_cookie){
						var ile=((ile_cookie)?(parseInt(ile_cookie)||0):0);
						if(ile==0){
							return DodatkiSkrypt.DodatkiSkryptUserOption.get(klucz,prefix,true).then(function(cookie){
								return (cookie!==null)?unescape(cookie):null;
							});
						}else{
							var cookie="";
							var tab_promise_cookie=new Array();
							for(i=0;i<ile;++i){
								tab_promise_cookie.push(DodatkiSkrypt.DodatkiSkryptUserOption.get(klucz+"-numer-"+i,prefix,true));
							}
							if(tab_promise_cookie.length==0){return null;};
							return Promise.all(tab_promise_cookie).then(function(data){
								var cookie="";
								for(var i=0;i<data.length;++i){
									cookie_numer=data[i];
									if(cookie_numer==null){return Promise.resolve(null);};
									cookie+=((cookie_numer)?cookie_numer:"");
								}
								return unescape(cookie);
							});
						}
					});
				},null,muteks_user_option_all);
			}
			DodatkiSkrypt.DodatkiSkryptUserOption.setAllNull=function(klucz,prefix){
				return $(document).DodatkiSkryptReady(function(){
					var ile_cookie=DodatkiSkrypt.DodatkiSkryptUserOption.get(klucz+"-ile",prefix);
					return ile_cookie.then(function(ile_cookie){
						var tab_save_option=new Array();
						var tab_promise_cookie=new Array();
						tab_promise_cookie.push(DodatkiSkrypt.DodatkiSkryptUserOption.set(klucz+"-ile",null,prefix,true,tab_save_option));
						var ile=((ile_cookie)?(parseInt(ile_cookie)||0):0);
						if(ile==0){
							tab_promise_cookie.push(DodatkiSkrypt.DodatkiSkryptUserOption.set(klucz,null,prefix,true,tab_save_option));
						}else{
							for(i=0;i<ile;++i){
								tab_promise_cookie.push(DodatkiSkrypt.DodatkiSkryptUserOption.set(klucz+"-numer-"+i,null,prefix,true,tab_save_option));
							}
						}
						return Promise.all(tab_promise_cookie).DodatkiSkryptThen(function(){
							var api=new mw.Api();
							return api.saveOptions(tab_save_option).DodatkiSkryptThen(function(data){
								return Promise.resolve();
							});
						});
					});
				},null,muteks_user_option_all);
			}
			var tab_save_all_option=undefined;
			var tak_tab_save_all_option=true;
			var muteks_user_options_muteks=new DodatkiSkrypt.Muteks();
			var ZapiszUstawienia=function(tab_save_option){
				$(document).DodatkiSkryptReady(function(){
					if(!tab_save_all_option){tab_save_all_option=new Array();};
					for(var p in tab_save_option){
						tab_save_all_option[p]=tab_save_option[p];
					}
				},null,muteks_user_options_muteks);
				/**/
				if(tak_tab_save_all_option){
					tak_tab_save_all_option=false;
					$(document).DodatkiSkryptSetInterval(function(){
						return $(document).DodatkiSkryptReady(function(){
							try{
								var czy_jest_jakis_element=false;
								for(var p in tab_save_all_option){
									czy_jest_jakis_element=true;
									break;
								}
								if(!czy_jest_jakis_element){return;}
								var api=new mw.Api();
								return api.saveOptions(tab_save_all_option).then(function(data){
									tab_save_all_option=new Array();
									console.log(data);
									return Promise.resolve("Załadowano ustawienia!");
								});
							}catch(error){
								return Promise.reject(null);
							}
						},null,muteks_user_options_muteks);
					},30000,false);
				}
			}
			DodatkiSkrypt.DodatkiSkryptUserOption.setAll=function(klucz,wartosc,opcje){
				return $(document).DodatkiSkryptReady(function(){
					/**/
					var nowe_cookie=escape(wartosc);
					var ile_max=65530;
					if(nowe_cookie.length<=ile_max){return DodatkiSkrypt.DodatkiSkryptUserOption.set(klucz,nowe_cookie,opcje,true);}
					/**/
					var re=new RegExp("^(.{1,"+ile_max+"})","g");
					var tab_promise_cookie=new Array();
					var tab_save_option=new Array();
					for(var ile=0;;++ile){
						var cookie=nowe_cookie.match(re);
						cookie=((cookie)?(cookie.toString()):"");
						if((ile==0)&&(cookie=="")){
							tab_promise_cookie.push(DodatkiSkrypt.DodatkiSkryptUserOption.set(klucz,"",opcje,true,tab_save_option));
							break;
						}
						nowe_cookie=nowe_cookie.replace(re,"");
						tab_promise_cookie.push(DodatkiSkrypt.DodatkiSkryptUserOption.set(klucz+"-numer-"+ile,cookie,opcje,true,tab_save_option));
						if(nowe_cookie==""){
							tab_promise_cookie.push(DodatkiSkrypt.DodatkiSkryptUserOption.set(klucz+"-ile",ile+1,opcje,true,tab_save_option));
							break;
						}
					}
					return Promise.all(tab_promise_cookie).DodatkiSkryptThen(function(){
						ZapiszUstawienia(tab_save_option);
					});
				},null,muteks_user_option_all);
			}
			var wersja="wersja-0.5";
			var czas_integer=(new Date()).getTime();
			DodatkiSkrypt.CzyPrzekroczonoAktualnyCzasBazy=function(){
				var promise_time=DodatkiSkrypt.DodatkiSkryptUserOption.get("Czas","PobierzStrona");
				return promise_time.DodatkiSkryptThen(function(data){
					if(data===null){
						return DodatkiSkrypt.DodatkiSkryptUserOption.set("Czas",Object(czas_integer).toString(),"PobierzStrona").DodatkiSkryptThen(function(){
							return false;
						});
					}else{
						if(parseInt(data)+(7*24*60*60*1000)<=czas_integer){
							return DodatkiSkrypt.DodatkiSkryptUserOption.set("Czas",Object(czas_integer).toString(),"PobierzStrona").DodatkiSkryptThen(function(){
								return true;
							});
						}
						return Promise.resolve(false);
					}
				});
			};
			var promise_time_dane=undefined;
			DodatkiSkrypt.DodatkiSkryptUserOption.PobierzDaneStron=function(url,params,__FUNKCJA){
				var klucz="";
				Object.keys(params).forEach(function(key){klucz += ((klucz!="")?"&":"") + key + "=" + params[key];});
				klucz=wersja+"-Serwer:"+url+"?"+klucz;
				if(!promise_time_dane){
					promise_time_dane=DodatkiSkrypt.CzyPrzekroczonoAktualnyCzasBazy();
				}
				return promise_time_dane.DodatkiSkryptThen(function(czy_czas){
					var promise_dane=Promise.resolve();
					if(czy_czas){
						promise_dane=DodatkiSkrypt.DodatkiSkryptUserOption.setAllNull(klucz,"PobierzStrona");
					}
					return promise_dane.DodatkiSkryptThen(function(){
						var mw_menu_boksy=DodatkiSkrypt.DodatkiSkryptUserOption.getAll(klucz,"PobierzStrona");
						return mw_menu_boksy.DodatkiSkryptThen(function(data){
							if(data===null){
								var wynik_fun=(__FUNKCJA)?(__FUNKCJA):(function(url,params){
									try{
										return $.post({
											url:url,
											data:params,
											dataType:'json',
										});
									}catch(error){
										return Promise.reject(null);
									}
								});
								var wynik=wynik_fun(url,params);
								if(wynik!==null){
									setTimeout(function(){
										Promise.all([wynik]).DodatkiSkryptThen(function(wynik_data){
											const jsonText = JSON.stringify(wynik_data[0]);
											DodatkiSkrypt.DodatkiSkryptUserOption.setAll(klucz,jsonText,"PobierzStrona");
										}).DodatkiSkryptCatch(function(wynik_data){});
									},30000);
									console.log("Zapisuję ściągnęty plik JSON strony: "+(params.titles||params.title||"")+".");
								}
								return wynik;
							}else{
								var wynik=JSON.parse(data);
								console.log("Odczytuję zapisywany plik JSON strony: "+(params.titles||params.title||"")+".")
								return wynik;
							}
						});
					});
				});
			}
			var muteks_ready=new DodatkiSkrypt.Muteks();
			jQuery.fn.DodatkiSkryptReady=function(__FUNKCJA,generowane_korutyny_2,muteks_ready_2){
				var __generowane_korutyny=(generowane_korutyny_2)?generowane_korutyny_2:generowane_korutyny;
				var __muteks_ready=(muteks_ready_2)?muteks_ready_2:muteks_ready;
			
				var promise1=__muteks_ready.zablokuj();
				var promise2=__generowane_korutyny.wygeneruj(1);
				
				return Promise.allSettled([promise1,promise2]).then(function(data){
					var promise;
					try{
						promise=__FUNKCJA();
					}catch(error){
						console.log(error);
						var generator=__generowane_korutyny.zwolnij();
						__muteks_ready.odblokuj();
						return Promise.resolve();
					}
					return Promise.allSettled([promise]).then(function(data){
						var generator=__generowane_korutyny.zwolnij();
						__muteks_ready.odblokuj();
						return Promise.all([generator]).then(function(){return promise;});
					});
				});
			}
			var muteks_gadget=new DodatkiSkrypt.Muteks();
			jQuery.fn.DodatkiSkryptGadgetsReady=function(__FUNKCJA){
				return jQuery.fn.DodatkiSkryptReady(__FUNKCJA,null,muteks_gadget);
			}
			var muteks_gadget_gconfig=new DodatkiSkrypt.Muteks();
			jQuery.fn.DodatkiSkryptGadgetsgConfigReady=function(__FUNKCJA){
				return jQuery.fn.DodatkiSkryptReady(__FUNKCJA,null,muteks_gadget_gconfig);
			}
			jQuery.fn.DodatkiSkryptPromise=function(__FUNCTION){
				return generowane_korutyny.wygeneruj(1).then(function(){
					return new Promise(function(resolve,reject){
						__FUNCTION(resolve,reject);
					}).then(function(data){
						generowane_korutyny.zwolnij();
						return Promise.resolve(data);
					}).catch(function(data){
						generowane_korutyny.zwolnij();
						return Promise.reject(data);
					});
				});
			}
			jQuery.fn.DodatkiSkryptSettledPromise=function(__FUNCTION){
				return $(document).DodatkiSkryptPromise(function(resolve,reject){
					var wynik=__FUNCTION();
					Promise.allSettled([wynik]).then(function(data){
						resolve(data);
					});
				})
			}
			jQuery.fn.DodatkiSkryptSetTimeOut=function(__FUNCTION,czas,args1,args2,args3,args4,args5,args6,args7,args8,args9,args10){
				return $(document).DodatkiSkryptPromise(function(resolve,reject){
					setTimeout(function(){
						var wynik=__FUNCTION(args1,args2,args3,args4,args5,args6,args7,args8,args9,args10);
						Promise.all([wynik]).then(function(data){
							resolve(data[0]);
						}).catch(function(data){
							reject(data[0]);
						});
					},(czas||0));
				});
			}
			jQuery.fn.DodatkiSkryptSetInterval=function(funkcja,delay,jak,args1,args2,args3,args4,args5,args6,args7,args8,args9,args10){
				var __funkcja=function(){
					return $(document).DodatkiSkryptSettledPromise(function(){
						return funkcja(args1,args2,args3,args4,args5,args6,args7,args8,args9,args10);
					});
				}
				if(jak){
					__funkcja();
				}
				setInterval(__funkcja,delay);
			}
			DodatkiSkrypt.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnic=function(tab_promise){
				return $(document).DodatkiSkryptPromise(function(resolve,reject){
	 				function Czekaj(){
	 					if(tab_promise.length==0){
	 						resolve();
	 					}else{
	 						Promise.allSettled([tab_promise[0]]).then(function(){
	 							tab_promise.shift();
	 							setTimeout(Czekaj,0);
	 						});
	 					}
	 				}
	 				Czekaj();
				});
			}
			DodatkiSkrypt.CzekanieFinalizacjiMateriiWszystkichFunkcji=function(czy_korutyny, czy_muteksy,__FUNKCJA_START,__FUNKCJA_KONTINUUM,__FUNKCJA_KONIEC){
				return new Promise(function(resolve,reject){
					if(__FUNKCJA_START){__FUNKCJA_START();};
					function Czekaj(){
						var tab=undefined;
						if(__FUNKCJA_KONTINUUM){tab=__FUNKCJA_KONTINUUM();};
						return generowane_korutyny.length().then(function(generowane_korutyny_length){
							return generowane_muteksy.length().then(function(generowane_muteksy_length){
								if(tab){
									console.log("Liczba procent ukończonych wątków: "+((parseInt(tab[0]*1000))/1000)+"%. Liczba procent zwolnionych muteksów: "+((parseInt(tab[1]*1000))/1000)+"%. Liczba nieukończonych wątków: "+generowane_korutyny_length+". Liczba niezwolnionych muteksów: "+generowane_muteksy_length+".")
								}
								if((((!czy_korutyny)||(generowane_korutyny_length==0))&&((!czy_muteksy)||(generowane_muteksy_length==0)))&&(tab)&&(tab[0]==100)&&(tab[1]==100)){
									if(__FUNKCJA_KONIEC){__FUNKCJA_KONIEC();}
									resolve();
									return;
								}else{
									setTimeout(function(){Czekaj();},300);
								}
							});
						});
					}
					Czekaj();
				});
			};
			DodatkiSkrypt.CzekanieFinalizacjiWszystkichKorutyn=function(generowane_korutyny_parametr,muteks){
				return new Promise(function(resolve,reject){
					function Czekaj(){
						return Promise.all([generowane_korutyny_parametr.length()]).then(function(data){
							var generowane_korutyny_parametr_length=data[0];
							if(generowane_korutyny_parametr_length==0){
								resolve();
							}else{
								setTimeout(Czekaj,300);
							}
						});
					}
					Czekaj();
				});
			}
			DodatkiSkrypt.Progress=function(){
				var c=document.createElement('div');
				c.setAttribute("id","pasek_postępu")
				c.setAttribute('style','line-height:1.2em;margin-top:-2px;margin-left:-2px;position:fixed;width:374px;height:14px;border:1px solid #eaecf0;box-sizing:border-box;padding:0 5px;background-color:white;display:flex;flex-direction:row;box-sizing:border-box;');
				var label=document.createElement('div');
				label.innerHTML="<span style=\"color:blue;\">Wątki: </span>";
				label.setAttribute('style','position:relative;font-size:11px;line-height:1.0em;padding-right:5px;padding-left:0px;height:100%;box-sizing:border-box;white-space:nowrap;width:79px;flex:1 0 79px;');
	
				var span=document.createElement('span');
				span.innerHTML="0%";
				var span_0=label.appendChild(span);
	
				c.appendChild(label);
				var progress=document.createElement('progress');
				progress.innerHTML="0%";
				progress.style.display="block";
				progress.setAttribute('id','file1')
				progress.setAttribute('style','width:93px;height:100%;box-sizing:border-box;flex:1 0 93px;');
				progress.setAttribute("max","100");
				progress.setAttribute('value',"0");
				var element_body_progress_1=c.appendChild(progress);
	
				var label=document.createElement('div');
				label.innerHTML="<span style=\"color:blue;\">Blokady: </span>";
				label.setAttribute('style','position:relative;font-size:11px;line-height:1.0em;padding-right:5px;padding-left:5px;height:100%;box-sizing:border-box;white-space:nowrap;width:96px;flex:1 0 96px;');
	
				var span=document.createElement('span');
				span.innerHTML="0%";
				var span_1=label.appendChild(span);
	
				c.appendChild(label);
				var progress=document.createElement('progress');
				progress.innerHTML="0%";
				progress.setAttribute('id','file2')
				progress.setAttribute('style','width:93px;height:100%;box-sizing:border-box;flex:1 0 93px;')
				progress.setAttribute("max","100");
				progress.setAttribute('value',"0");
				var element_body_progress_2=c.appendChild(progress);
	
				function PozycjaXY(){
					c.style.top=(/*window.scrollY+*/document.documentElement.clientHeight-parseFloat(c.style.height))+"px";
					c.style.left=(/*window.scrollX+*/document.documentElement.clientWidth-parseFloat(c.style.width))+"px";
				}
				c.style.zIndex="2000";
				document.querySelector('body').appendChild(c);
				PozycjaXY();
				$(window).on('scroll',PozycjaXY);
				$(window).on('resize',PozycjaXY);
				return new Array(element_body_progress_1,element_body_progress_2,span_0,span_1);
			}
			DodatkiSkrypt.DaneProgress=function(arr){
  				arr[0].setAttribute("value","0");
    			arr[1].setAttribute("value","0");
                                  
    			var dodatnie_0=generowane_korutyny.lengthPlus;
    			var ujemne_0=generowane_korutyny.lengthMinus;
                                       
        		var dodatnie_1=generowane_muteksy.lengthPlus;
    			var ujemne_1=generowane_muteksy.lengthMinus;
                                            	
        		var postep_0=((dodatnie_0>0)?((ujemne_0/dodatnie_0)*100):0);
        		var postep_1=((dodatnie_1>0)?((ujemne_1/dodatnie_1)*100):0);
        
        		arr[0].setAttribute("value",postep_0);
        		arr[1].setAttribute("value",postep_1);
        		arr[2].innerHTML=(parseInt(postep_0*1000)/1000)+"%";
        		arr[3].innerHTML=(parseInt(postep_1*1000)/1000)+"%";
        		return [postep_0,postep_1];
			}
			var arr;
			DodatkiSkrypt.CzekanieFinalizacjiMateriiWszystkichFunkcji(true,true,function(){
					arr=DodatkiSkrypt.Progress();
					DodatkiSkrypt.DaneProgress(arr);
				},function(){
					return DodatkiSkrypt.DaneProgress(arr);
				},function(){
					DodatkiSkrypt.DaneProgress(arr);
					setTimeout(function(){
						var node_postep=document.getElementById('pasek_postępu');
						$(node_postep).remove();
					},2000);
				});
				/*Funkcja do ładowania pokolei asynchronicznie skryptów JS, CSS i funkcji, a także do ładowania modułów, z własną definicją funkcji require*/
				DodatkiSkrypt.ZbioryZmiennych=function(){
					var tab_zmienne_gadgetu=new Array();
					var muteks=new DodatkiSkrypt.Muteks();
					this.DodawanieDoZbioruZmiennychTabliceGadgetu=function(zmienna,wartosc){
						//return $(document).DodatkiSkryptReady(function(){
							tab_zmienne_gadgetu[zmienna]=wartosc;
						//},null,muteks);
					}
					this.PobierzZmienneGadgetuZeZbioruZmiennych=function(zmienna){
						//return $(document).DodatkiSkryptReady(function(){
							return tab_zmienne_gadgetu[zmienna];
						//},null,muteks);
					}
					this.PobierzMuteks=function(){
						return muteks;
					}
				};
				var ZmienneProjektowe=function(){
					var tab_zmienne_gadgetu=new Array();
					var muteks=new DodatkiSkrypt.Muteks();
					this.DodawanieDoZbioruZmiennychTabliceGadgetu=function(zmienna,wartosc){
						//return $(document).DodatkiSkryptReady(function(){
							tab_zmienne_gadgetu[zmienna]=wartosc;
						//},null,muteks);
					}
					this.PobierzZmienneGadgetuZeZbioruZmiennych=function(){
						//return $(document).DodatkiSkryptReady(function(){
							return tab_zmienne_gadgetu;
						//},null,muteks);
					}
					this.PobierzMuteks=function(){
						return muteks;
					}
				};
				DodatkiSkrypt.ZmienneSkryptowe=new DodatkiSkrypt.ZbioryZmiennych();
				var tab_zmienne_projektowe=new ZmienneProjektowe();
				/**/
				var zmienne_globalne=new Array();
    			DodatkiSkrypt.ZbieraczSkryptowy=function(args,nazwa_gadgetu){
    				if(nazwa_gadgetu){
    					tab_zmienne_projektowe.DodawanieDoZbioruZmiennychTabliceGadgetu(nazwa_gadgetu,args);
    				}
					var tablica_projekt=new Array();
					var tablica_modulow=new Array();
					var fun_promise=new Array();
					var tab_promise=new Array();
					var wszystkie_zaladowano_wczesniej=true;
					var wszystkie_informacje_o_skryptach=false;
					var argumenty="";var argumenty_zmienne="";
					if(args){
						var licznik=0;
						for(var p in args){
							argumenty=argumenty+","+p;
							argumenty_zmienne=argumenty_zmienne+", data["+licznik+"]";//", DodatkiSkrypt.ZmienneSkryptowe.PobierzZmienneGadgetuZeZbioruZmiennych(\""+p+"\")";
							licznik=licznik+1;
						}
					};
					function Obietnice(tabela_promise,i){
						if((tabela_promise.length>0)&&(tabela_promise.length>i)){
							tab_promise.push(tabela_promise[i]());
							Obietnice(tabela_promise,i+1);
							return true;
						}else{
							return false;
						}
					}
					this.CzyUruchomionePrzedWszystkieSkrypty=function(){
						return (wszystkie_informacje_o_skryptach && wszystkie_zaladowano_wczesniej);
					}
					this.CzyUruchomionoSkrypty=function(){
						return wszystkie_informacje_o_skryptach;
					}
					this.ZerowanieTablicSkryptowych=function(){
						tablica_projekt=new Array();
						fun_promise=new Array();
						tab_promise=new Array();
					}
					this.UruchomZebraneSkrypty=function(){
						var __this=this;
						return $(document).DodatkiSkryptGadgetsReady(function(){
							return Promise.resolve();
						}).DodatkiSkryptThen(function(){
							var tab_promise_zmienne=new Array();
							var promise_all=jQuery(document).DodatkiSkryptPromise(function(resolve,reject){
								/**/
								var czy_elementy_obietnic=Obietnice(fun_promise,0);
								if(!czy_elementy_obietnic){
									if(__this.CzyUruchomionePrzedWszystkieSkrypty()){
										resolve();
										//return;
									}else{
										console.log("Liczba skryptów w gadżecie: "+(nazwa_gadgetu||"(główna)")+" jest pusta.")
										reject();
									}
								}else{
								/**/
									Promise.all(tab_promise).DodatkiSkryptThen(function(skrypt){
										if((skrypt)&&(typeof(skrypt)=="object")&&(skrypt.length>0)){
											var tekst="";var zmienne=new Array();
											var licznik_jednego_modulu=0;
											var tab_file=new Array();
											for(var i=0;i<skrypt.length;++i){
												if(skrypt[i]){
													if((typeof(skrypt[i])=="object")&&(typeof(skrypt[i][0])=="boolean")&&(skrypt[i][0]==true)){
														var czy_js=skrypt[i][1];
														var nazwa=skrypt[i][2];
														var kod=skrypt[i][3];
														if((kod && nazwa)&&(typeof(czy_js)=="boolean")&&((typeof kod)=="string")&&((typeof nazwa)=="string")){
															if(czy_js){
																tekst+="tab_promise.push((function(DodatkiSkrypt,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks,zmienne,zmienne_globalne"+argumenty+"){"+kod+";})(DodatkiSkrypt,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks,zmienne,zmienne_globalne"+argumenty_zmienne+"));"
															}else{
																tekst+="tab_promise.push((function(DodatkiSkrypt,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks,zmienne,zmienne_globalne"+argumenty+"){mw.util.addCSS(\""+kod.replace(/\n/g," ").replace(/"/g,"\\\"")+"\");})(DodatkiSkrypt,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks,zmienne,zmienne_globalne"+argumenty_zmienne+"));"
															}
														}
													}else if(typeof(skrypt[i])=="function"){
														var tekst_function=Object(skrypt[i]).toString();
														tekst+="tab_promise.push((function(DodatkiSkrypt,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks,zmienne,zmienne_globalne"+argumenty+"){("+tekst_function+")();})(DodatkiSkrypt,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks,zmienne,zmienne_globalne"+argumenty_zmienne+"));";
													}
												}
											}
											if(!/^\s*$/g.test(tekst)){
												/**/
												tablica_modulow.push('mediawiki.util');
												tekst="return $(document).DodatkiSkryptGadgetsReady(function(){var tab_promise=new Array();"+tekst+";return Promise.all(tab_promise);});";
											
												console.log("Zakończono łączenie skryptów w gadżecie: "+(nazwa_gadgetu||"(główna)")+". Uruchamiam załadowane skrypty...");
												if(args){
												
													for(var p in args){
														(function(p){
															var promise=$(document).DodatkiSkryptPromise(function(resolve,reject){
																function Czekaj(){
																	if(DodatkiSkrypt.obietnica!==undefined){
																		DodatkiSkrypt.obietnica.DodatkiSkryptThen(function(){
																			var data=DodatkiSkrypt.ZmienneSkryptowe.PobierzZmienneGadgetuZeZbioruZmiennych(p);
																			//$(document).DodatkiSkryptReady(function(){
																				//var promise_data=DodatkiSkrypt.ZmienneSkryptowe.PobierzZmienneGadgetuZeZbioruZmiennych(p);
																				//promise_data.DodatkiSkryptThen(function(data){
																					if(data){
																						var tab_zmienne_projektowe_value=tab_zmienne_projektowe.PobierzZmienneGadgetuZeZbioruZmiennych();
																						//$(document).DodatkiSkryptReady(function(){
																							//var tab_zmienne_projektowe_value=tab_zmienne_projektowe.PobierzZmienneGadgetuZeZbioruZmiennych();
																								//promise_tab_zmienne_projektowe_value.DodatkiSkryptThen(function	(tab_zmienne_projektowe_value){
																								var zapetlenie=false;
																								var tab_zapetlenie=new Array();
																								for(var m in tab_zmienne_projektowe_value){
																									if(m!=nazwa_gadgetu){
																										var s1=tab_zmienne_projektowe_value[m]&&tab_zmienne_projektowe_value[m][nazwa_gadgetu];
																										var s2=tab_zmienne_projektowe_value[nazwa_gadgetu]&&tab_zmienne_projektowe_value[nazwa_gadgetu][m];
																										if((s1)&&(s2)){
																											zapetlenie=true;
																											tab_zapetlenie[m]=true;
																										}
																									}
																								}
																								if((!nazwa_gadgetu)||(tab_zapetlenie[p])||(p==nazwa_gadgetu)||(data.zaktywowana==true)){
																									resolve(data);
																								}else if(data.zaktywowana==false){
																									console.log("Nie można uruchomić gadżetu: "+(nazwa_gadgetu||"(główna)")+" z powodu błędów w aktywowaniu modułów zależności.");
																									reject();
																								}else{
																									setTimeout(Czekaj,0);
																								}
																							//});
																						//},null,tab_zmienne_projektowe.PobierzMuteks());
																					}else{
																						setTimeout(Czekaj,0);
																					}
																				//});
																			//},null,DodatkiSkrypt.ZmienneSkryptowe.PobierzMuteks());
																		}).DodatkiSkryptCatch(function(){resolve();});
																	}else{
																		setTimeout(Czekaj,0);
																	}
																}
																Czekaj();
															});
															tab_promise_zmienne.push(promise);
														})(p);
													}
												}
												return Promise.all(tab_promise_zmienne).DodatkiSkryptThen(function(data){
													    var funkcja=new Function("DodatkiSkrypt","zmienne","zmienne_globalne","data","tablica_modulow","DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks",tekst);
														try{
															var wynik=funkcja(DodatkiSkrypt,zmienne,zmienne_globalne,data,tablica_modulow,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks);
															wynik.DodatkiSkryptThen(function(){
																console.log("Zakończono ładowanie skryptów gadgetu: "+(nazwa_gadgetu||"(główna)")+". Trwa uruchamianie...");
																if(nazwa_gadgetu){
																	var data=DodatkiSkrypt.ZmienneSkryptowe.PobierzZmienneGadgetuZeZbioruZmiennych(nazwa_gadgetu);
																	//$(document).DodatkiSkryptReady(function(){
																		//var promise_data=DodatkiSkrypt.ZmienneSkryptowe.PobierzZmienneGadgetuZeZbioruZmiennych(nazwa_gadgetu);
																		//return promise_data.DodatkiSkryptThen(function(data){
																			var promise=$(document).DodatkiSkryptPromise(function(resolve,reject){
																				function Czekaj(){
																					if(data.gadget_obietnica!==undefined){
																						data.gadget_obietnica.DodatkiSkryptThen(function(){
																						data.zaktywowana=true;
																							resolve();
																						}).DodatkiSkryptCatch(function(){
																							data.zaktywowana=false;
																							console.log("Uzykano błąd w zaktywowaniu skryptu: "+(nazwa_gadgetu||"(główna)")+".");
																							reject();
																						})
																					}else{
																						setTimeout(Czekaj,0);
																					}
																				};
																				Czekaj();
																			});
																	//});
																//},null,DodatkiSkrypt.ZmienneSkryptowe.PobierzMuteks());
																}
																resolve();
															})
														}catch(error){
															console.log("Nastąpił wyjątek w gadżecie: "+(nazwa_gadgetu||"(główna)")+", a oto jego informacja: "+error+".");
															reject();
														};
												}).DodatkiSkryptCatch(function(){
													console.log("Nastąpił wyjątek w gadżecie: "+(nazwa_gadgetu||"(główna)")+" przy określaniu zależności.");
													reject();
												});
											}else{
												if(__this.CzyUruchomionePrzedWszystkieSkrypty()){
													resolve();
												}else{
													console.log("Uzyskano ostatecznie skrypt pusty w gadżecie: "+(nazwa_gadgetu||"(główna)")+".");
													reject();
												}
											}
										}else{
											if(__this.CzyUruchomionePrzedWszystkieSkrypty()){
												resolve();
											}else{
												console.log("Brak skryptów do uruchomienia w gadżecie: "+(nazwa_gadgetu||"(główna)")+".");
												reject();
											}
										}
									}).DodatkiSkryptCatch(function(){
										console.log("Uzyskano wyjątek w gadżecie: "+(nazwa_gadgetu||"(główna)")+".");
										reject();
									});
								}
							});	
							return promise_all.DodatkiSkryptThen(function(){
								return Promise.all(tab_promise_zmienne).then(function(tab_parametry){
									var tab=new Array();
									tab.DodatkiSkrypt=DodatkiSkrypt;
									//tab.Parametry=tab_parametry;
									/**/
									tab.GadgetName=nazwa_gadgetu;
									tab.GadgetSpace=new Array();
									if(args){
										var licznik=0;
										for(var p in args){
											if((nazwa_gadgetu)&&(nazwa_gadgetu==p)){
												tab.Parametry=tab_parametry[licznik];
											}
											tab.GadgetSpace[p]=new Array();
											tab.GadgetSpace[p].GadgetName=p;
											tab.GadgetSpace[p].Parametry=tab_parametry[licznik];
											licznik=licznik+1;
										}
									}
									return Promise.resolve(tab);
								});
							}).DodatkiSkryptCatch(function(){
								console.log("Nastąpił błąd w ładowaniu skryptów w gadżecie: "+(nazwa_gadgetu||"(główna)")+".");
								return Promise.reject();
							});
						});
					}
					var tab_projektow_jezykowych={"wikipedia":true,"wikibooks":true,"wiktionary":true,"wikiquote":true,"wikisource":true,"wikivoyage":true,"wikinews":true,"wikiversity":true,};
					this.PobierzSkrypt=function(){
						var args=arguments;
						wszystkie_informacje_o_skryptach=true;
						return $(document).DodatkiSkryptGadgetsReady(function(){
							function PobierzSkrypt(skrypt,projekt,jezyk){
								var promise=function(){
									if(typeof(skrypt)=="function"){
										console.log("Ładuję anonimową funkcję: "+Object(skrypt).toString()+".");
										var fun_promise_js=function(){
    										return Promise.resolve(skrypt);
    									}
										fun_promise.push(fun_promise_js);
										return Promise.resolve()
									}
    								if(jezyk==null){jezyk=mw.config.get('wgContentLanguage');};
	    							if(projekt==null){projekt=mw.config.get('wgSiteName');};
    								var nazwa_projektu=projekt.replace(/^(.)/g,function(s){return s.toUpperCase();});	
    								jezyk=jezyk.toLowerCase();
    								projekt=projekt.toLowerCase();
    	
	    							var skrypty=skrypt.split("|");
    								var modules=new Array();
    								function ApiRevision(element_skrypt,jezyk,projekt,czy_js,strona){
    									return jQuery(document).DodatkiSkryptPromise(function(resolve,reject){
    										var url = window.location.protocol+"//"+((!/^\s*$/g.test(jezyk))?(tab_projektow_jezykowych[projekt]?(jezyk+"."):""):"")+projekt+".org/w/api.php";
											var params = {
												origin:"*",
    											action: "query",
    											prop: "revisions",
    											titles: element_skrypt,
    											rvprop: "content",
	    										rvslots: "main",
    											formatversion: "2",
    											format: "json"
											};
											//url = url + "?origin=*";
											//Object.keys(params).forEach(function(key){url += "&" + key + "=" + params[key];});
											DodatkiSkrypt.DodatkiSkryptUserOption.PobierzDaneStron(url,params)/*$.ajax({
													url:url,
											    	data:params,
											    	dataType:'json',
											})*/.DodatkiSkryptThen(function(response){
    												var pages = response.query.pages;
        											for (var p in pages) {
        												var revisions=pages[p].revisions;
        												for(var s in revisions){
            												resolve([true,czy_js,element_skrypt,revisions[s].slots.main.content,strona]);
            												return;
        												}
        											}
        											reject();
	    									}).DodatkiSkryptCatch(function(error){reject();});
    									});
    								}
    								for(var p in skrypty){
    									function PojedyncySkrypt(pojedyncy_skrypt){
    										var element_skrypt=pojedyncy_skrypt.trim();
	    									if(/^[\s_]*$/g.test(element_skrypt)){return;}
		    								var jaki_js=element_skrypt.match(/\.js[\s_]*$/g);
    										var jaki_css=element_skrypt.match(/\.css[\s_]*/g);
    		
    										var skrypt_nowe;
    										if((jaki_js)||(jaki_css)){
    											skrypt_nowe=element_skrypt.replace(/^[_\s]+/g,"").replace(/[_\s]+$/g,"").replace(/[\s_]+/g,"_").replace(/^([^:]*\S+)[\s_]*:[\s_]*/g,"$1:").replace(/^([^:]+):(.)/g,function(s){return s.toLowerCase();});
		    									if((!((/^[Mm][Ee][Dd][Ii][Aa][Ww][Ii][Kk][Ii]:/g.test(skrypt_nowe))&&((jaki_js)||(jaki_css))))
    													&&(!((/^[Uu][Ss][Ee][Rr]:/g.test(skrypt_nowe))&&((jaki_js)||(jaki_css))))
    			    										&&(!((/^[Mm][Oo][Dd][Uu][Ll][Ee]:/g.test(skrypt_nowe))&&(jaki_css)))
    	    													&&(!((/^[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee]:/g.test(skrypt_nowe))&&(jaki_css)))){
    	    														console.log("Nie załadowałem skryptu: "+skrypt+", z projektu: "+nazwa_projektu+(tab_projektow_jezykowych[projekt]?(", o wersji językowej: "+jezyk):"")+".");
	    	    											return;
    											}
    										}else{
    											skrypt_nowe=element_skrypt.replace(/^[_\s]+/g,"").replace(/[_\s]+$/g,"").replace(/[\s_]+/g,"_");
    										}
    										if((tablica_projekt[jezyk])&&(tablica_projekt[jezyk][projekt])&&(tablica_projekt[jezyk][projekt][skrypt_nowe])){
    											console.log("Już wcześniej załadowałem "+((jaki_js)?"skrypt":((jaki_css)?"arkusz stylów":"moduł"))+": "+skrypt+", z projektu: "+nazwa_projektu+(tab_projektow_jezykowych[projekt]?(", o wersji językowej: "+jezyk):"")+", w ramach jednej zmiennej skrypt.")
	  	    									return;
    										}
    										if((DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk])&&(DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk][projekt])&&(DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk][projekt][skrypt_nowe])){
    												console.log("Już wcześniej załadowałem "+((jaki_js)?"skrypt":((jaki_css)?"arkusz stylów":"moduł"))+": "+skrypt+", z projektu: "+nazwa_projektu+(tab_projektow_jezykowych[projekt]?(", o wersji językowej: "+jezyk):"")+", między modułami.")
	  	    										return;
    										}else{
    											wszystkie_zaladowano_wczesniej=false;
    										}
    										/**/
	    									if(!tablica_projekt[jezyk]){tablica_projekt[jezyk]=new Array();}
    										if(!tablica_projekt[jezyk][projekt]){tablica_projekt[jezyk][projekt]=new Array();}
    										if(!tablica_projekt[jezyk][projekt][skrypt_nowe]){tablica_projekt[jezyk][projekt][skrypt_nowe]=true;}
    										/**/
    										if(!DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk]){DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk]=new Array();}
    										if(!DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk][projekt]){DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk][projekt]=new Array();}
    										if(!DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk][projekt][skrypt_nowe]){DodatkiSkrypt.TabelaFunkcjiSkryptowych[jezyk][projekt][skrypt_nowe]=true;}
    										/**/
    										if(jaki_js!==null){
    											console.log("Ładuję skrypt JavaScript: "+element_skrypt+", z projektu: "+nazwa_projektu+(tab_projektow_jezykowych[projekt]?(", o wersji językowej: "+jezyk):"")+".");
    											var fun_promise_js=function(){
    												return ApiRevision(element_skrypt,jezyk,projekt,true,element_skrypt);
    											}
												fun_promise.push(fun_promise_js);
    										}else if(jaki_css!==null){
    											console.log("Ładuję arkusz stylów CSS: "+element_skrypt+", z projektu: "+nazwa_projektu+(tab_projektow_jezykowych[projekt]?(", o wersji językowej: "+jezyk):"")+".");
    											var fun_promise_css=function(){
	   												return ApiRevision(element_skrypt,jezyk,projekt,false,element_skrypt);
    											}
    											fun_promise.push(fun_promise_css);
	    									}else{
    											if(!modules){modules=new Array();}
    											modules.push(element_skrypt);
    										}
    									}
    									PojedyncySkrypt(skrypty[p]);
	    							}
									if((modules)&&(modules.length>0)){
    									function LoadModule(element_skrypty,czy_nie_dodac_do_tablicy){
    										console.log("Ładuję moduły JavaScript: "+element_skrypty.join(",")+", z projektu: "+nazwa_projektu+(tab_projektow_jezykowych[projekt]?(", o wersji językowej: "+jezyk):"")+".");
    										var fun_promise_js=function(){
    											return mw.loader.getScript("//"+((!/^\s*$/g.test(jezyk))?(tab_projektow_jezykowych[projekt]?(jezyk+"."):""):"")+projekt+".org/w/load.php?lang=pl&modules="+encodeURIComponent(element_skrypty.join("|")));
    										}
    										if(!czy_nie_dodac_do_tablicy){
    											fun_promise.push(fun_promise_js);
    										}else{
    											return fun_promise_js;
    										}
	    								}
	    								if((jezyk!=mw.config.get('wgContentLanguage').toLowerCase())||(projekt!=mw.config.get('wgSiteName').toLowerCase())){
    										LoadModule(modules,false);
    									}else{
		    								function WszystkieModuly(modules){
    											var module_inne=undefined;
    											var watek_promise=new Array();
    											for(var p in modules){
    												function PojedyncyModul(element_modul){
    													console.log("Ładuję moduł: ", element_modul);
    													var status=mw.loader.getState(element_modul);
    													console.log("Status: "+status);
    													try{
    														if(status!="ready"){
    		    												watek_promise.push(mw.loader.using([element_modul],function(require){return Promise.resolve();}).DodatkiSkryptThen(function(){
    		    													console.log("Ładuję moduł: "+element_modul+", z projektu bieżącego.");
    		    													tablica_modulow.push(element_modul);
    		    													return Promise.resolve();
		    		    										}).DodatkiSkryptCatch(function(){
    				    											if(!module_inne){module_inne=new Array();}
    				    											module_inne.push(element_modul);
    				    											tablica_modulow.push(element_modul);
    				    											return Promise.reject();
    		    												}));
    														}
    													}catch(error){};
    												};
    												PojedyncyModul(modules[p]);
		    									}
    											if(watek_promise.length!=0){
    												var promise=Promise.allSettled(watek_promise).then(function(){
    				    								if((module_inne)&&(module_inne.length>0)){
    			    										return LoadModule(module_inne,true);
    			    									};
    			    									return Promise.resolve();
    			    								});
    			    								return promise;
    											}
    											return Promise.resolve();
    										}
	    									var fun_promise_modules=function(){
    			    							return WszystkieModuly(modules);
    										}
    										fun_promise.push(fun_promise_modules);
    									};
    								}
    								return Promise.resolve();
								};
								fun_promise.push(promise);
								return promise;
							}
							//var args=arguments;
							var pierwszy_arg=args[0];
							if(typeof(pierwszy_arg)!="object"){
								return PobierzSkrypt(args[0],args[1],args[2]);
							}else{
								var tab_promise_all=new Array();
								for(var i=0;i<args.length;++i){
									if(typeof(args[i])=="object"){
										tab_promise_all.push(PobierzSkrypt(args[i][0],args[i][1],args[i][2]));
									}else{
										tab_promise_all.push(PobierzSkrypt(args[i]));
									}
								}
								return tab_promise_all;
							}
						});
					};
	    			var this_zmienne=this;
    				this.requireFile=function(script){
    					var scripts=mw.loader.moduleRegistry[script].script;
    					if(!scripts){return;}
						var main=scripts.main;
    					if(/^[^\/]*$/g.test(main)){
    						main="";
    					}else{
    						main=main.replace(/[\/][^\/]*$/g,"");
	    				}
    					function requireFun(file){
    						if(main!=""){
    							file=main+"/"+file;
    							file=file.replace(/\/\.\//g,"/");
	    					}else{
    							file=file.replace(/^\.\//g,"");
    						}
							while(true){
								var tab_s=file.match(/\/[^\/]*\/\.\.\//g);
								if(tab_s==null){break;}
								if(tab_s.length>0){
									file=file.replace(tab_s[0].toString(),"/");
								}else{break;}
							}
    						console.log("Ładuję plik modułu: "+file);
	    					return mw.loader.moduleRegistry[script].script.files[file];
    					}
    					function plikMain(file){
    	    				if(file==null){
    							var main=mw.loader.moduleRegistry[script].script.main;
    		    				if(/^[^\/]*$/g.test(main)){
    		    					file="./"+main;
    		    				}else{
    		    					file="."+(main.match(/\/[^\/]*$/g).toString());
    		    				}
    						}
    						return file;
    					}
    					function require(file){
    						file=plikMain(file);
    						if((/^\.\//g.test(file))||(/^\.\.\//g.test(file))){
    							var ob=requireFun(file);
	    						if(typeof(ob) == "function"){
    								console.log("Typ danych: function");
    								var module=new Array();var exports=new Array();
    								var c=ob(require,module,exports);
    								return module.exports;
    							}
	    						console.log("Typ danych: "+typeof(ob));
    							return ob;
    						}
    						var element_modul=file;
	    					console.log("Inny moduł: "+file);
    						var script=mw.loader.moduleRegistry[element_modul].script;
    						if(script){
    			    			var main=mw.loader.moduleRegistry[element_modul].script.main;
    		    				if(main){
    		    					var plik;
    		    					if(/^[^\/]*$/g.test(main)){
    		    						plik="./"+main;
	    		    				}else{
    			    					plik="."+(main.match(/\/[^\/]*$/g).toString());
    			    				}
    								return this_zmienne.requireFile(element_modul)(plik);
    		    				}
	    					}else{
    							mw.loader.load(element_modul);
    						}
    					}
    					return require;
	    			}
    			};
	    		if(DodatkiSkrypt.IsMediaWikiDodatkiSkrypt()){
					console.log("Ładuję stronę: User:<użytkownik>/DodatkiSkrypt.js, użytkownika...")	
				}else{
					console.log("Ładowanie skryptu MediaWiki:DodatkiSkrypt.js. Uruchamianie...");
				}
    			DodatkiSkrypt.skrypt=new DodatkiSkrypt.ZbieraczSkryptowy();
   	
   				DodatkiSkrypt.skrypt.PobierzSkrypt('mediawiki.util');
   				DodatkiSkrypt.skrypt.PobierzSkrypt('mediawiki.api');
   				DodatkiSkrypt.skrypt.PobierzSkrypt('mediawiki.user');
   				//DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'SHA1.js');
   				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Zdarzenia.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Libre.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Api.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/LibreLua.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Info.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Ciemny.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Kategorie.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Aktualizacja.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Nawigacja.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Google.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Boksy.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Strona.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/StronaStart.js');
				DodatkiSkrypt.skrypt.PobierzSkrypt(MediaWikiGadgetPrefix+'Gadget-DodatkiSkrypt.js/Program.js');
				/**/
				DodatkiSkrypt.obietnica=DodatkiSkrypt.skrypt.UruchomZebraneSkrypty().DodatkiSkryptThen(function(data){
					console.log("Załadowano wszystkie skrypty.");
						return Promise.resolve(data);
				}).DodatkiSkryptCatch(function(data){
					console.log("Niezaładowano żadnych skryptów...");
					return Promise.reject(data);
				});
				DodatkiSkrypt.obietnica.DodatkiSkryptThen(function(data){}).DodatkiSkryptCatch(function(data){});
				/**/
		})(UruchamiaczSkryptowyApi,DodatkiSkrypt,DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks);
	}catch(error){
		console.log("Wykryłem błąd Javaskrypt...",error);
	}
})(mediaWiki,jQuery);
/**/