MediaWiki:Gadget-StronaSubst.js

Z Wikibooks, biblioteki wolnych podręczników.

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.
var self_gadget_strona_subst=this;

var stronasubst_latex=undefined;
var stronasubst_mathml=undefined;
var stronasubst_opakuj_kategorie_ze_sortowaniem=undefined;
var stronasubst_ukrywaj_toc=undefined;
if((self_gadget_strona_subst.gConfig!==undefined)&&(self_gadget_strona_subst.gConfig.register!==undefined)&&(self_gadget_strona_subst.gConfig.get!==undefined)){
  	mw.messages.set({
		'StronaSubst-name': 'StronaSubst',
		'StronaSubst-description-page': 'Wikibooks:StronaSubst',
		'StronaSubst-latex': 'Zamiast wzorów, wstaw tekst latexowy, w przeciwnym przypadku jest w formie LaTeX.',
		'StronaSubst-mathml': 'Zamiast wzorów latexowych, wstaw je w formie znaczników MathML.',
		'StronaSubst-opakuj_kategorie_ze_sortowaniem' : 'W stronach zbiorczych opakowuje kategorie, w postaci ramki, dla każdego artykułu z osobna.',
		'StronaSubst-ukrywaj_toc' : "Ukrywa, począwszy od jakiegoś poziomu wszystkich tam spisów treści, na stronach zbiorczych.",
	});
	gConfig.register('StronaSubst', {name: mw.msg('StronaSubst-name'), descriptionPage: mw.msg('StronaSubst-description-page')}, [
		{
			name: 'latex',
			desc: mw.msg('StronaSubst-latex'),
			type: 'boolean',
			deflt: false,
		    legacy: [window, 'wb_StronaSubst_latex']
		},
		{
			name: 'mathml',
			desc: mw.msg('StronaSubst-mathml'),
			type: 'boolean',
			deflt: true,
			legacy: [window, 'wb_StronaSubst_mathml']
		},
		{
			name: 'opakuj_kategorie_ze_sortowaniem',
			desc: mw.msg('StronaSubst-opakuj_kategorie_ze_sortowaniem'),
			type: 'boolean',
			deflt: false,
			legacy: [window, 'wb_stronasubst_opakuj_kategorie_ze_sortowaniem']
		},
		{
			name: 'ukrywaj_toc',
			desc: mw.msg('StronaSubst-ukrywaj_toc'),
			type: 'integer',
			deflt: 0,
			validation: function(n){ if((n<0)||(n==1)){ throw 'Wartość dotycząca poziomu ukrywania spisów treści jest nieprawidłowa!' }; return n; },
			legacy: [window, 'wb_stronasubst_ukrywaj_toc']
		},
	]);
	stronasubst_latex = (gConfig.get('StronaSubst', 'latex')==true);
	stronasubst_mathml = (((gConfig.get('StronaSubst', 'mathml'))&&(!stronasubst_latex))==true);
	stronasubst_opakuj_kategorie_ze_sortowaniem = (gConfig.get('StronaSubst', 'opakuj_kategorie_ze_sortowaniem')==true);
	stronasubst_ukrywaj_toc = gConfig.get('StronaSubst', 'ukrywaj_toc');
}
function WyswietlStronyKsiazki(){
	if(self_gadget_strona_subst.GadgetStronaSubst){
	   return;	
	}else{
		self_gadget_strona_subst.GadgetStronaSubst=true;
	}
	var tablica_tych_samych=new Array();
	var tablica_rozdzialow=new Array();
	function HrefDecode(href){
		if(href===null){
			return null;
		}
		return decodeURI(href);
	}
	function HrefEncode(href){
		if(href===null){
			return null;
		}
		return encodeURI(href);
	}
	function LiczonyHNumer(){
		var ulozenie=null;
		var ostanie=0;
	    return	function(h_numer){
	    	if((ulozenie==null)||(ulozenie>=h_numer)){
				ulozenie=h_numer-1;
        	}else{
        		if(ostatnie+1<h_numer-ulozenie){
                	ulozenie=h_numer-ostatnie-1;
        		}
        	}
    		ostatnie=h_numer-ulozenie;
    		h_numer=h_numer-ulozenie;
    		return h_numer;
	    }
	}
	function WikikodTitle(data,tabs,titles,tabstrona,stronasubst_latex,stronasubst_mathml){
		var title=data.parse.title;
		var wikikod=data.parse.text['*'];
        var selflink=document.createElement('div');
        selflink.innerHTML=wikikod;
        var czy_selflink=selflink.getElementsByClassName('selflink');
        if((czy_selflink!==null)&&(czy_selflink.length==1)){
        	var elements=tabstrona[title];
        	var a=document.createElement('a');/*Tworzenie linku*/
        	a.setAttribute('href',HrefEncode(title));
        	a.innerHTML=title;
        	if((self_gadget_strona_subst.WyswietlKomunikatInfo!== undefined)&&(self_gadget_strona_subst.UsunKomunikatInfo!== undefined)){
        		a.setAttribute("onMouseOver","WyswietlKomunikatInfo(this,event,'brak_artykułu_do_skonstruowania_strony_zbiorczej');");
        		a.setAttribute("onMouseOut","UsunKomunikatInfo();");
        	}
        	var span=document.createElement('span');
        	span.appendChild(a);
        	span.setAttribute("class","nie_istnieje_na_tej_wiki link");/*Dodawanie klasy, by inny skrip JS to przeanalizował jako link*/
        	for(var q in elements){
        		var element=elements[q];
        		element.innerHTML="";
        		element.appendChild(span);
        		element.innerHTML="<strong>{{:"+element.innerHTML+"}}</strong>";
        	}
        	return;
        }
		
		var elements=tabstrona[title];
		for(var q in elements){
			var element=elements[q];
			element.innerHTML=wikikod;
			var a=element.getElementsByTagName('a');
	        if((a!==null)&&(a.length>0)){
	        	var lena=a.length;
	        	for(var i=0;i<lena;++i){
	        		var element_a=a[i];
		    		var href=HrefDecode(element_a.getAttribute('href'));
		    		if(href!==null){
		    			var re=/^[^\?]+\?[^&]+=[^&]*&?/g;
		    			if(!re.test(href)){
							var re2=/#/g;
							var s=href.search(re2);
							if(s!=-1){
								var re=/^\/wiki\//g;
								if(re.test(href)){
									var href2=href.substring(6,s);
									href2=href2.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
									for(var s=0;s<titles.length;s++){
										var strona=titles[s].replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
										if(href2==strona){
											var href3=href.replace(/^[^#]*/g,"");
											element_a.setAttribute('href',HrefEncode(href3));
											element_a.setAttribute("title","");
										}
									}
								}
							}else{
								var re=/^\/wiki\//g;
								if(re.test(href)){
						    		var hrefs=href.replace(re,"");
						    		hrefs=hrefs.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
									for(var s=0;s<titles.length;s++){
										var strona=titles[s].replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
						    			if(hrefs==strona){
						    				var hrefs2=hrefs.replace(/^[^\/]*\//g,"");
						    				element_a.setAttribute('href',HrefEncode('#'+hrefs2));
						    				element_a.setAttribute("title","");
						    			}
						    		}
								}
							}
						}
		    		}
				}
	        }
		}
		var tab_toc=new Array("toc","toc_spis");
		for(var d=0;d<tab_toc.length;++d){
	    	var toc=document.getElementsByClassName(tab_toc[d]);
			if((toc!==null)&&(toc.length>0)){
				for(var q in elements){
					var element=elements[q];
					var powtorka;
					var vv=0;
					for(var e=0;e<tabs.length;++e){
						if(tabs[e]==title){
							if(q==vv){
								var numer_artykulu=e;
								powtorka=1;
								var subtitle=title.match(/[^\/]+$/g).toString();
								for(var ee=0;ee<e;++ee){
									var subtabe=tabs[ee].match(/[^\/]+$/g).toString();
									if(subtabe==subtitle){
										++powtorka;
									}
								}
								break;
							}
							++vv;
						}
					}

					var num=new Array("numer");
					var headline=element.getElementsByClassName("mw-headline");
					if((headline!==null)&&(headline.length>0)){
						var HNumer=LiczonyHNumer();
						var len=headline.length;
						var naglowek="";
						var liczba_ulozenia_w_menu_spisu_tresci=1;
						
						for (var k=0;k<len;++k){
							var element2=headline[k];
							var hparent=element2.parentNode;
							if(hparent!==null){
								var h=hparent.tagName.toUpperCase();
								if(h.match(/^H\d+$/g)){
									var nag2=element2.getAttribute('id');
									if(nag2!==null){
										var nag_poczatkowe=element2.innerHTML;
										var nag=nag_poczatkowe.replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ");
										if(stronasubst_latex){
											nag_poczatkowe=nag_poczatkowe.replace(/<[^<>]+>/g,"").replace(/^\s*/g,"").replace(/\s*$/g,"").replace(/\s+/g," ");
										}else{
											nag_poczatkowe=nag_poczatkowe.replace(/<a\s+[^<>]+>/g,"").replace(/<a\s*>/g,"").replace(/<\/a\s*>/g,"").replace(/^\s*/g,"").replace(/\s*$/g,"").replace(/\s+/g," ");
										}
										if(tablica_tych_samych[numer_artykulu]==null){
											tablica_tych_samych[numer_artykulu]=new Array();
											tablica_tych_samych[numer_artykulu][nag]=1;
										}else{
											if(tablica_tych_samych[numer_artykulu][nag]!=null){
												tablica_tych_samych[numer_artykulu][nag]+=1;
											}else{
												tablica_tych_samych[numer_artykulu][nag]=1;
											}
										}
										var h_numer=undefined;
										var h_klasa=hparent.classList;
										for(var xx=0;xx<h_klasa.length;++xx){
											var klasa_pojedynca=h_klasa[xx];
											var czy_pasuje_klasa=klasa_pojedynca.match(/^mw\-hnumber\-\d+$/g);//Szablon HNumer
											if(czy_pasuje_klasa){
												var h_numer2=parseInt(czy_pasuje_klasa.toString().replace(/^mw\-hnumber\-/g,""));
												if(!isNaN(h_numer2)){
													if(h_numer2>6){
														h_numer=h_numer2;
													}
												}
												break;
											}
										}
                                    	if(h_numer===undefined){
											h_numer=h.replace(/^[^\d]+/g,"");
								    		h_numer=parseInt(h_numer);
								    		h_numer=((!isNaN(h_numer))?h_numer:1);
										}
									
										h_numer=HNumer(h_numer);
                    					if(k==0){
                    						num.push(1);
                    						var w_a="<span class=\"tocnumber\">"+num.join('.')+"</span><span class=\"toctext"+((stronasubst_mathml)?" mathml":"")+"\">"+nag_poczatkowe+"</span>";
                    						naglowek+="<ul><li><a href=\""+HrefEncode("#"+nag2)+"\">"+w_a+"</a>";
                    					}else{
                    						if(h_numer==liczba_ulozenia_w_menu_spisu_tresci){
                    							num[num.length-1]+=1;
                    							var w_a="<span class=\"tocnumber\">"+num.join('.')+"</span><span class=\"toctext"+((stronasubst_mathml)?" mathml":"")+"\">"+nag_poczatkowe+"</span>";
                    							naglowek+="</li><li><a href=\""+HrefEncode("#"+nag2)+"\">"+w_a+"</a>";
                							}else{
                								if(h_numer>liczba_ulozenia_w_menu_spisu_tresci){
                									num.push(1);
                									var w_a="<span class=\"tocnumber\">"+num.join('.')+"</span><span class=\"toctext"+((stronasubst_mathml)?" mathml":"")+"\">"+nag_poczatkowe+"</span>";
                    								naglowek+="<ul><li><a href=\""+HrefEncode("#"+nag2)+"\">"+w_a+"</a>";
                    								liczba_ulozenia_w_menu_spisu_tresci=h_numer;
                								}else{
                									if(h_numer<liczba_ulozenia_w_menu_spisu_tresci){
                										num.splice(num.length-liczba_ulozenia_w_menu_spisu_tresci+h_numer,liczba_ulozenia_w_menu_spisu_tresci-h_numer);
                										num[num.length-1]+=1;
                										var w_a="<span class=\"tocnumber\">"+num.join('.')+"</span><span class=\"toctext"+((stronasubst_mathml)?" mathml":"")+"\">"+nag_poczatkowe+"</span>";
                    									naglowek+=('</li></ul>'.repeat(liczba_ulozenia_w_menu_spisu_tresci-h_numer))+"</li><li><a href=\""+HrefEncode("#"+nag2)+"\">"+w_a+"</a>";
                    									liczba_ulozenia_w_menu_spisu_tresci=h_numer;
                									}
                								}
                							}
                						}
                					}
                    			}
							}
						}
						if((naglowek!=null)&&(naglowek!="")){
	                    	naglowek+=('</li></ul>'.repeat(liczba_ulozenia_w_menu_spisu_tresci));
	                    	for(var b=0;b<toc.length;++b){
	                    		var a2=toc[b].getElementsByTagName('a');
	                    		if((a2!==null)&&(a2.length>0)){
	                    			var tab_a2=new Array();
	                    			for(var x=0;x<a2.length;++x){tab_a2[x]=a2[x];}
	                    	    	for(var y=0;y<tab_a2.length;++y){
	                    	        	var parent=tab_a2[y].parentNode;
	                    	        	if((parent!==null)&&(parent.tagName.toUpperCase()=="LI")){
	                    	        		var href=HrefDecode(tab_a2[y].getAttribute('href'));
	                    	        		if(href!==null){
	                    	        			href=href.replace(/^#/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
	                    	        			var title_2=title.match(/[^\/]+$/g).toString().replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"");
	                    	        			var title2=title_2.replace(/[_\s]+/g," ");
	                    	        			var title2_href=title_2.replace(/[_\s]+/g,"_");
	                    	        	
	                    	        			var ile_tablica_tych_samych=0;
	                    	        			for(var gg=0;gg<numer_artykulu;++gg){
	                    	        				var element_tablica_tych_samych=tablica_tych_samych[gg];
	                    	        				if(element_tablica_tych_samych!=null){
	                    	        					var element_tablica_tych_samych_title=element_tablica_tych_samych[title2];
	                    	        					ile_tablica_tych_samych+=((element_tablica_tych_samych_title!=null)?element_tablica_tych_samych_title:0);
	                    	        				}
	                    	        			}
	                    	        			var ile=powtorka+ile_tablica_tych_samych;
	                    	        			var dodatek=0;
	                    	        			var czy_naglowki=false;
	                    	        			for(var ff in tablica_rozdzialow){czy_naglowki=true;break;}
	                    	        			if(czy_naglowki){
	                    	        				for(var ss=0;ss<tab_a2.length;++ss){
	                    	        					var element_tab_a2=tab_a2[ss];
	                    	        		   			var href2=HrefDecode(element_tab_a2.getAttribute('href'));
	                    	        		   			if(href2!==null){
	                    	        		   				href2=href2.replace(/^#/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
	                    	        		   				var tocnumber=element_tab_a2.getElementsByClassName('tocnumber');
	                    	        		   				var toctext=element_tab_a2.getElementsByClassName('toctext');
	                    	        		   				if((tocnumber!==null)&&(tocnumber.length>0)&&(toctext!==null)&&(toctext.length>0)){
	                    	        		   					var element_toctext=toctext[0].innerHTML.replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ");
	                    	        		   					var element_tocnumber=tocnumber[0];//.innerHTML.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"");
	                    	        		   			    	var tab=tablica_rozdzialow[element_toctext];
	                    	        		   		    		if((tab!=null)&&(tab.length>0)){
	                    	        		   						for(var m in tab){
	                    	        		   							if(tab[m]==element_tocnumber){
	                    	        		   								var ile2=ile+dodatek;
	                    	        		   								if(href2==(title2_href+((ile2>1)?("_"+ile2):""))){
	                    	        		   									dodatek+=1;
	                    	        		   								}
	                    	        		   							}else{
	                    	        		   								break;
	                    	        		   							}
	                    	        		   						}
	                    	        		   		    		}
	                    	        		   				}
	                    	        		   			}
	                    	        				}
	                    	        			}
	                    	        			ile+=dodatek;
	                    	        			if(href==(title2_href+((ile>1)?("_"+ile):""))){
	                    	        				var div=document.createElement('div');
	                    	        				div.innerHTML=naglowek;
	                    	        				var ul=parent.getElementsByTagName('ul');
	                    	        				if((ul!==null)&&(ul.length>0)){
	                    	        				       var element_li=ul[0].getElementsByTagName('li');
	                    	        				       function WsadzDoSpisuTresciTOC(){
	                    	        				       	    var ul_jeden=div.getElementsByTagName('ul')[0];
	                    	        							var lis=ul_jeden.getElementsByTagName('li');
	                    	        							var element_li_przed=element_li[0];
	                    	        							for(var ff=lis.length-1;ff>=0;--ff){
	                    	        								var element_lis=lis[ff];
	                    	        								if(element_lis.parentNode==ul_jeden){
	                    	        				       				ul[0].insertBefore(element_lis,element_li_przed);
	                    	        				       				element_li_przed=element_lis;
	                    	        								}
	                    	        							}
	                    	        				    	}
	                    	        				    	if((element_li!==null)&&(element_li.length>0)){
	                    	        				       	    var li_tocnumber=element_li[0].getElementsByTagName('tocnumber');
	                    	        				       	    if((li_tocnumber!==null)&&(li_tocnumber.length>0)){
	                    	        				       	    	var element_li_tocnumber=li_tocnumber[0];
	                    	        				       	    	WsadzDoSpisuTresciTOC();
	                    	        								var tocnumber=div.getElementsByClassName('tocnumber');
	                    	        								if((tocnumber!==null)&&(tocnumber.length>0)){
	                    	        									var ul2=div.getElementsByTagName('ul')[0];
	                    	        									var licznik=0;
	                    	        									for(var ss=0;ss<tocnumber.length;++ss){
	                    	        										var number=tocnumer[ss];
	                    	        										if((number.parentNode!==null)&&(number.parentNode.tagName.toUpperCase()=="A")
	                    	        											&&(number.parentNode.parentNode!==null)&&(number.parentNode.parentNode.tagName.toUpperCase()=="LI")
	                    	        											&&(number.parentNode.parentNode.parentNode!==null)&&(number.parentNode.parentNode.parentNode.tagName.toUpperCase()=="UL")
	                    	        											&&(number.parentNode.parentNode.parentNode==ul2)
	                    	        										){
	                    	        									 		++licznik;
	                    	        										}
	                    	        									}
	                    	        								
	                    	        									var tab_element_li_tocnumber=element_li_tocnumber.innerHTML.split('.');
	                    	        									var ile2=tab_element_li_tocnumber.length;
	                    	        									var tocnumber2=ul[0].getElementsByTagName('tocnumber');
	                    	        								
	                    	        						    		for(var ss=tocnumber.length;ss<tocnumber2.length;++ss){
	                    	        						    	    	var tocnumber2_ss=tocnumber2[ss].innerHTML.split('.');
	                    	        						    	    	var ile_ss=tocnumber2_ss.length;
	                    	        						    	    	if(ile_ss==ile2){
	                    	        						    	    		++licznik;
	                    	        						    	    		tocnumber2_ss[ile2-1]=licznik;
	                    	        						    	    		text_number=tocnumber2_ss.join('.');
	                    	        						    	    		tocnumber2[ss].innerHTML=text_number;
	                    	        						    	    	}else{
	                    	        						    	    		if(ile_ss>ile2){
	                    	        						    	    			tocnumber2_ss[ile2-1]=licznik;
	                    	        						    	    			text_number=tocnumber2_ss.join('.');
	                    	        						    	    			tocnumber2[ss].innerHTML=text_number;
	                    	        						    	    		}
	                    	        						    	    	}
	                    	        						    	    }
	                    	        						    	}
	                    	        							}else{
	                    	        								WsadzDoSpisuTresciTOC();
	                    	        							}
	                    	        				       }else{
	                    	        				       	    parent.removeChild(ul[0]);
	                    	        				       	    parent.appendChild(div.getElementsByTagName('ul')[0]);
	                    	        				       }
	                    	        				}else{
	                    	        					parent.appendChild(div.getElementsByTagName('ul')[0]);
	                    	        				}
	                    	        			}
	                	    	        	}
	                    	        	}
	                    		    }
	                    		}
	                		}
						}
					}
				}
			}
		}
		for(var d=0;d<tab_toc.length;++d){
			var toc_pos=document.getElementsByClassName(tab_toc[d]);
			if((toc_pos!==null)&&(toc_pos.length>0)){
				for(var w=0;w<toc_pos.length;++w){
					var li=toc_pos[w].getElementsByTagName('li');
					var poziom;
            		var section=1;
            		if((li!==null)&&(li.length>0)){
            			for(var z=0;z<li.length;++z){
            				var element_li=li[z];
            				if((element_li.tagName.toUpperCase()=="LI")
            					&&(element_li.parentNode!==null)
            				    &&(element_li.parentNode.tagName.toUpperCase()=="UL")
            				    &&(element_li.parentNode.parentNode!==null)
            				    &&(element_li.parentNode.parentNode.tagName.toUpperCase()=="LI")
            				 ){
            					var parent=element_li.parentNode.parentNode;
            					var klasa=parent.getAttribute('class');
            					if(klasa!==null){
            						var poziom=klasa.match(/toclevel-\d+/g);
            						if(poziom!==null){
            							poziom=parseInt(poziom.toString().match(/\d+$/).toString())+1;
            							poziom=((!isNaN(poziom))?poziom:1);
            						}else{
            							poziom=1;
            						}
            					}else{poziom=1;}
            				}else{poziom=1;}
            				var klasa=element_li.getAttribute('class');
            				if(klasa!==null){
            					var czy_section=klasa.match(/tocsection-\d+/);
            					if(czy_section!==null){
            						klasa=klasa.replace(/tocsection-\d+/g,"tocsection-"+section);
            						element_li.setAttribute('class',klasa);
            					}else{
            						element_li.classList.add("tocsection-"+section);
            					}
            					var czy_level=klasa.match(/toclevel-\d+/);
            					if(czy_level!==null){
            						klasa=element_li.getAttribute('class');
            						if(klasa!==null){
            							klasa=klasa.replace(/toclevel-\d+/g,"toclevel-"+poziom);
            							element_li.setAttribute('class',klasa);
            						}
            					}else{
            						element_li.classList.add("toclevel-"+poziom);
            					}
            				}else{
            					element_li.setAttribute('class',"toclevel-"+poziom+" tocsection-"+section)
            				}
            				section=section+1;
            			}
					}
            	}
            	//Poczatek ustalania num
            	for(var w=0;w<toc_pos.length;++w){
            	    var tocnumber=toc_pos[w].getElementsByClassName('tocnumber');
            		if((tocnumber!==null)&&(tocnumber.length>0)){
            			var ostatnie;
            			for(var hh=0;hh<tocnumber.length;++hh){
            				var element_tocnumber=tocnumber[hh];
            				var zawartosc=element_tocnumber.innerHTML;
            				if(zawartosc.match(/^numer\./g)){
            					if(ostatnie!==null){
            						element_tocnumber.innerHTML=zawartosc.replace(/^numer\./g,ostatnie+".");
            					}
            				}else{
            					ostatnie=zawartosc;
            				}
            			}	
            		}
            	}
            	//Koniec ustalania num
			}
		}

		var headline=document.getElementsByClassName('mw-headline');
		if((headline!==null)&&(headline.length>0)){
			for(var i=0;i<headline.length;++i){
				var c=1;
				var el=headline[i];
				var id0=el.innerHTML.replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
				for(var j=0;j<i;++j){
					var el1=headline[j];
					var id1=el1.innerHTML.replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
					if(id0==id1){
						++c;
					}
				}
				var span=null;
				if((el.parentNode!==null)&&(el.parentNode.tagName.toUpperCase().match(/^H\d+$/g))){
					span=el.parentNode.getElementsByTagName('span');
				}
				var span_number=null;
				if((el.parentNode!==null)&&(el.parentNode.tagName.toUpperCase().match(/^H\d+$/g))){
					span_number=el.parentNode.getElementsByClassName('mw-number');
				}
				
				function IdNazwa(id0){
					el.setAttribute('id',id0);
					if((span!==null)&&(span.length>0)){
						if(((span_number===null)||(span_number.length==0))&&(span[0]!=el)){
							span[0].setAttribute('id',encodeURIComponent(id0).replace(/%/g,"."));
						}else{
							if((span_number!==null)&&(span_number.length>0)&&(span[1]!=null)&&(span_number[0]!=span[1])&&(span_number[0]!=el)&&(span[1]!=el)){
								span[1].setAttribute('id',encodeURIComponent(id0).replace(/%/g,"."));
							}
						}
					}
				}
				if(c==1){IdNazwa(id0);}else{IdNazwa(id0+"_"+c);}
			}
		}
		for(var d=0;d<tab_toc.length;++d){
			var toc_pos=document.getElementsByClassName(tab_toc[d]);
			if((toc_pos!==null)&&(toc_pos.length>0)){
				for(var w=0;w<toc_pos.length;++w){
					var toc=toc_pos[w];
					var a=toc.getElementsByTagName('a');
					if((a!==null)&&(a.length>0)){
						for(var p=0;p<a.length;++p){
							var element_a=a[p];
							var element_toctext=element_a.getElementsByClassName('toctext');
							if((element_toctext!==null)&&(element_toctext.length>0)){
								var strona=element_toctext[0].innerHTML.replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
								var c=1;
								for(var v=0;v<p;++v){
									var element_a2=a[v];
									var element_toctext2=element_a2.getElementsByClassName('toctext');
									if((element_toctext2!==null)&&(element_toctext2.length>0)){
										var strona2=element_toctext2[0].innerHTML.replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
										if(strona==strona2){
											++c;	
										}
									}else{
										c=undefined;
										break;
									}
								}
						    	if(c!==undefined){
									if(c==1){
										element_a.setAttribute('href',HrefEncode("#"+strona));
									}else{
										element_a.setAttribute('href',HrefEncode("#"+strona)+"_"+c);
									}
						    	}
							}
						}
					}
				}
			}
		}
		for(var q in elements){
			var element=elements[q];
			if(self_gadget_strona_subst.NumerujRozdzialyPoSciagnieciuArtykulu!==undefined){
				NumerujRozdzialyPoSciagnieciuArtykulu(element);//Funkcja jako gadżet do numerowania rozdziałów.
			}
			element.style.display="block";
			var parent=element.parentNode;
			if((parent!==null)&&(parent.tagName.toUpperCase()=="DIV")){
				parent.style.display="block";
			}
		}
		var toclimit=document.getElementsByClassName('toclimit');
		if((toclimit!==null)&&(toclimit.length>0)){
			stronasubst_ukrywaj_toc=parseInt(((stronasubst_ukrywaj_toc!==undefined)?stronasubst_ukrywaj_toc:0));
			stronasubst_ukrywaj_toc=((!isNaN(stronasubst_ukrywaj_toc))?stronasubst_ukrywaj_toc:0);
			for(var cc=0;cc<toclimit.length;++cc){
				var toclimit_element=toclimit[cc];
				function TOC_ukrywaj(numer){
					if(numer>1){
						var czy=false;
						var toc=$("div."+((stronasubst_ukrywaj_toc==0)?("toclimit.toclimit-"+numer):"toclimit")+" div.toc li.toclevel-"+(parseInt(numer)-1)+" > ul");
						if((toc!==null)&&(toc.length>0)){
							for(var aa=0;aa<toc.length;++aa){
								var element_toc=toc[aa];
								if($(toclimit_element).find(element_toc)){
									element_toc.classList.add("toc_ukrywaj_poziom");
									if(!czy){czy=true;};
								}
							}
						}
						if(!czy){
							var toc_spis=$("div."+((stronasubst_ukrywaj_toc==0)?("toclimit.toclimit-"+numer):"toclimit")+" div.toc_spis li.toclevel-"+(parseInt(numer)-1)+" > ul");
							if((toc_spis!==null)&&(toc_spis.length>0)){
								for(var aa=0;aa<toc_spis.length;++aa){
									var element_toc_spis=toc_spis[aa];
									if($(toclimit_element).find(element_toc_spis)){
										element_toc_spis.classList.add("toc_ukrywaj_poziom");
									}
								}
							}
						}
					}
				}
				if(stronasubst_ukrywaj_toc==0){
					var klasy=toclimit_element.classList;
					for(var ss=0;ss<klasy.length;++ss){
						var czy_toclimit_numer=klasy[ss].match(/^toclimit\-\d+/g);
						if(czy_toclimit_numer){
							var numer=parseInt(czy_toclimit_numer.toString().replace(/^toclimit\-/g,""));
							numer=((!isNaN(numer))?numer:0);
							TOC_ukrywaj(numer);
						}
					}
				}else{
					TOC_ukrywaj(stronasubst_ukrywaj_toc);
				}
			}
		}
	}
	function StronaSubst(data){
		var wikikod=data.parse.text['*'];
		var elem=document.createElement('div');
		elem.innerHTML=wikikod;
		var klasa_mw_parser_out=elem.getElementsByClassName('mw-parser-output');
		var wikikod_wyodrebniony=(((klasa_mw_parser_out!==null)&&(klasa_mw_parser_out.length==1))?(klasa_mw_parser_out[0].innerHTML):wikikod);
		var czy_wikikod=wikikod_wyodrebniony.match(/^[_\s]*$/g);
		if(czy_wikikod){return;}
		var rozdzial_ksiazki="rozdział_książki";
		var tagclass=document.getElementsByClassName(rozdzial_ksiazki);
		if(tagclass===null){return null;}
		var liczba_elementow=tagclass.length;
		if(liczba_elementow==0){return null;}
		var titles=new Array();
		var tabstrona=new Array();
		var tabs=new Array();
		
		if(self_gadget_strona_subst.NumerujRozdzialyPrzedSciaganiemArtykulow!==undefined){
			NumerujRozdzialyPrzedSciaganiemArtykulow();//Funkcja jako gadżet do numerowania rozdziałów.
		}
		
		for (var i=0;i<liczba_elementow;++i){
			var tagclassname=tagclass[i];
			if(tagclassname.tagName.toUpperCase()!="DIV"){
				return;
			}
			var class_element=tagclassname.getElementsByClassName('strona_subst');
			var element;
			if((class_element!==null)&&(class_element.length==1)){
				element=class_element[0];
				if(element.tagName.toUpperCase()!="DIV"){
					return;
				}
			}else{
				return;
			}
			var czy_link_w_naglowku;
			var strona_headline=tagclassname.getElementsByClassName('mw-headline');
			var strona;
			if((strona_headline!==null)&&(strona_headline.length==1)){
				strona_a=strona_headline[0].getElementsByTagName('a');
				if((strona_a!==null)&&(strona_a.length==1)){
					strona=HrefDecode(strona_a[0].getAttribute('href'));
					if(strona!==null){
						var s=strona.search(/#/g);
						if(s!=-1){
				     		if(!element.innerHTML.match(/^[_\s]*$/g)){
					    		return;
				        	}
							var re=/\wiki\//g;
							if(re.test(strona)){
								strona=strona.substring(6,s);
								czy_link_w_naglowku=false;
							}else{
								return;
							}
						}else{
				     		if(!element.innerHTML.match(/^[_\s]*$/g)){
					    		return;
				        	}
							strona=strona.replace(/^\/wiki\//g,"");
							czy_link_w_naglowku=false;
						}
					}
				}else{
					strona=element.innerHTML;
					czy_link_w_naglowku=true;
				}
			}else{
				return;
			}
			var re = /^[_\s]*$/g;
    		var dopasowanie = re.test(strona);
    		if(dopasowanie){return;};
    		strona=strona.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ");
    	    /**/
    	    var hn=strona_headline[0].parentNode;
    	    if((hn===null)||(!hn.tagName.toUpperCase().match(/^H\d+$/g))){return;}
    	    
			var linkstrony_editsection=hn.getElementsByClassName('mw-editsection');
			if((linkstrony_editsection!==null)&&(linkstrony_editsection.length>0)){
				var mw_editsection_bracket=linkstrony_editsection[0].getElementsByTagName('a');
				if((mw_editsection_bracket!==null)&&(mw_editsection_bracket.length>0)){
					for(var m=0;m<mw_editsection_bracket.length;++m){
	                    var edycja=mw_editsection_bracket[m];
    	                var href=HrefDecode(edycja.getAttribute('href'));
        	            if(href!==null){
            	        	if(!href.match(/^%s*javascript:/g)){
                	        	var czesc_href=href.match(/[\?&]title=[^&]*/g);
                    	    	if(czesc_href){
                        	    	if(czesc_href.toString().match(/^\?/g)){
                            			href=href.replace(/\?title=[^&]+/g,"?title="+strona.replace(/[_\s]+/g,"_"));
	                            	}else{
    	                            	href=href.replace(/&title=[^&]+/g,"&title="+strona);
        	                    	}
            	                	href=href.replace(/[\?&]section=[^&]+/g,"");
                	            	edycja.setAttribute('href',HrefEncode(href));
                    	    	}else{
                        			href=href.replace(/\/wiki\/[^\?]*\?/g,"/w/index.php?title="+strona.replace(/[_\s]+/g,"_")+"&");
                        			href=href.replace(/[\?&]section=[^&]+/g,"");
                        			edycja.setAttribute('href',HrefEncode(href));
                        		}
                    		}
                		}
					}
                	if(czy_link_w_naglowku){
						var a=document.createElement('a');
				    	a.innerHTML="artykuł";
				    	a.setAttribute("href",HrefEncode("/wiki/"+strona.replace(/[_\s]+/g,"_")));
				    	a.setAttribute("title","Zobacz artykuł:")
				    	var span=document.createElement('span');
						span.innerHTML="| ";
						span.setAttribute('class',"mw-editsection-bracket")
						var element_linkstrony_editsection=linkstrony_editsection[0];
						element_linkstrony_editsection.insertBefore(span, mw_editsection_bracket[0]);
						element_linkstrony_editsection.insertBefore(a, span);
					}
				}
			}
			/**/
    		tabs[i]=strona;
    		var czy=false;
    		for(var d in titles){
       			if(titles[d]==strona){
       	    		czy=true;
       	    		break;
       			}
    		}
    		if(!czy){
       			titles[titles.length]=strona;
    		}
    		if(tabstrona[strona]==null){
       			tabstrona[strona]=new Array();
    		}
    		var tab=tabstrona[strona];
    		var tablen=tab.length;
    		tabstrona[strona][tablen]=element;
		}
		function RozwazajNaglowki(){
  			var tab_toc=new Array("toc","toc_spis");
			for(var d=0;d<tab_toc.length;++d){
				var toc_pos=document.getElementsByClassName(tab_toc[d]);
				if((toc_pos!==null)&&(toc_pos.length>0)){
					for(var w=0;w<toc_pos.length;++w){
						var ile_jest=0;
						var li=toc_pos[w].getElementsByTagName('li');
						if((li!==null)&&(li.length>0)){
							for(var dd=0;dd<li.length;++dd){
								var element_li=li[dd];
								var tocnumber=element_li.getElementsByClassName('tocnumber');
								var toctext=element_li.getElementsByClassName('toctext');
								if((tocnumber!==null)&&(tocnumber.length>0)&&(toctext!==null)&&(toctext.length>0)){
									var czy_jest=undefined;
									var nie_iteruj=undefined;
									var klasa_naglowka=document.getElementsByClassName('klasa_naglowka');
									if((klasa_naglowka!==null)&&(klasa_naglowka.length>0)&&(klasa_naglowka[ile_jest]!=null)){
										var element_klasa_naglowka=klasa_naglowka[ile_jest];
										var headline=element_klasa_naglowka.getElementsByClassName('mw-headline');
										if((headline!==null)
											&&(headline.length>0)
											&&(headline[0].parentNode!==null)
											&&(headline[0].parentNode.tagName.toUpperCase().match(/^H\d+$/))
											&&(headline[0].parentNode.parentNode!==null)
											&&(headline[0].parentNode.parentNode.tagName.toUpperCase()=="DIV")
											&&(headline[0].parentNode.parentNode===element_klasa_naglowka)
										){
											var element_a=tocnumber[0].parentNode || toctext[0].parentNode;
											if((tocnumber[0].parentNode!==null)&&(toctext[0].parentNode!==null)&&(tocnumber[0].parentNode==toctext[0].parentNode)&&(element_a.tagName.toUpperCase()=="A")){
													var href=HrefDecode(element_a.getAttribute('href'));
													if(href!==null){
														 href=href.replace(/^#/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
														 var id_headline=headline[0].getAttribute('id');
														  if(id_headline!==null){
														   		id_headline=id_headline.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g,"_");
														   	    if(href!=id_headline){czy_jest=true;nie_iteruj=true;}
														   }else{czy_jest=true;nie_iteruj=true;}
													}else{czy_jest=true;nie_iteruj=true;}
									        }else{czy_jest=true;nie_iteruj=true;}
										}else{czy_jest=true;nie_iteruj=true;}
									}else{czy_jest=true;nie_iteruj=true;}
									
									if(nie_iteruj===undefined){ile_jest+=1;}
									if((czy_jest===undefined)||(!czy_jest)){
										var element_toctext=toctext[0].innerHTML.replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ");
										var element_tocnumber=tocnumber[0];//.innerHTML.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"");
										if(tablica_rozdzialow[element_toctext]==null){
											tablica_rozdzialow[element_toctext]=new Array(element_tocnumber);
										}else{
									   	    tablica_rozdzialow[element_toctext].push(element_tocnumber);
										}
									}
								}
							}
						}
					}
				}
			}
		}
  	    RozwazajNaglowki();
  	   
  	    stronasubst_latex=((stronasubst_latex!==undefined)?stronasubst_latex:false);
		stronasubst_mathml=((stronasubst_mathml!==undefined)?stronasubst_mathml:true);
		stronasubst_opakuj_kategorie_ze_sortowaniem=((stronasubst_opakuj_kategorie_ze_sortowaniem!==undefined)?stronasubst_opakuj_kategorie_ze_sortowaniem:false);
  	    
  	    if(stronasubst_mathml){
			$("div.toc ul > li > a > span.toctext").toggleClass("mathml");
			$("div.toc_spis ul > li > a > span.toctext").toggleClass("mathml");
		}
  	    
		for ( var p in titles ) {
			var strona=titles[p];
			var szablon_artykulu;
			if(stronasubst_opakuj_kategorie_ze_sortowaniem){
				szablon_artykulu="{{OpakujKategorieZeSortowaniem|{{:"+strona+"}}}}"
			}else{
				szablon_artykulu="{{:"+strona+"}}";
			}
			var api=new mw.Api;
			api.get({
				action: 'parse',
				format: 'json',
				prop: 'text',
				title: strona,
				text: szablon_artykulu,
				disabletoc: true,
				disablelimitreport: true,
				contentmodel: 'wikitext'
    		}).done(function(data){
    			WikikodTitle(data,tabs,titles,tabstrona,stronasubst_latex,stronasubst_mathml);
    		});
		}
  }
  var strona =  mw.config.get('wgPageName');
  var api=new mw.Api;
  api.get({
		action: 'parse',
		format: 'json',
		prop: 'text',
		title: strona,
		text: '{{#invoke:StronicowyParser|CzyStronaSubst}}',
		disabletoc: true,
		disablelimitreport: true,
		contentmodel: 'wikitext'
  }).done(function(data){
	    StronaSubst(data)
  });
}
$(WyswietlStronyKsiazki);