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 Common.pageInfo, jego elementy, instrukcja obsługi:
   * Common.pageInfo.namespace          numer przestrzeni nazw (równe wgNamespaceNumber)
   * Common.pageInfo.name               pełna nazwa strony
   * Common.pageInfo.title              tytuł strony, czyli ostatnia część po '/' albo jest równe pageInfo.name, gdy nigdzie nie występuje slash
   * Common.pageInfo.book               tytuł książki
   * Common.pageInfo.action             akcja taka jaka jest w adresie URL pod "action=", w przypadku normalnego czytania strony, action jest równe "get"
   * Common.pageInfo.diff               null w przypadku, gdy nie porównujemy wersji, w przeciwnym wypadku wartość występującą w adresie URL
*/
/*Uzyskanie dostępu do tablicy - przestrzeni: Common, z innej strony .js*/
var Common_zmienna_z_MediaWiki_Wikibooks=this['Common'];

/*Przestrzeń nazw: Common, zdefiniowanym za pomocą tablicy*/
var Common=new Array();

/*Funkcja, by nie było przecieków pamięci*/
(function(Common_zmienna_z_MediaWiki_Wikibooks,Common){
	
	/*Funkcja zwraca zmienną Common ze strony MediaWiki:Common.js, gdy użytkownik ma właną zmienną Common w swoim common.js, w przeciwnym wypadku zwraca undefined.*/
	Common.MediaWikiCommon=function(){return Common_zmienna_z_MediaWiki_Wikibooks;}
	
	/*Funkcja zwraca zmienną Common ze strony User:<Użytkownik>/common.js, jeżeli użytkownik ma własną zmienną Common we własnym common.js, w przeciwnym wypadku zwraca Common, ze strony MediaWiki:Common.js.*/
	Common.UserCommon=function(){return Common;}
	
	/*Sprawdza, czy użytkownik ma własną zmienną Common.*/
	Common.IsUserCommon=function(){return ((Common_zmienna_z_MediaWiki_Wikibooks)?true:false);};
	
	// Frame Busting
	Common.LokowanieTopSelf=function(){
			if (top != self) top.location.href = self.location.href;
	};
	$(Common.LokowanieTopSelf);

	/*Funkcja zdarzeń odrejestrowania i rejestrowania*/
	Common.ZdarzeniaJavaScript=function(css,zdarzenie,funkcja_zdarzen,tylko_odrejestruj){
		/*
		css - adres html obiektu,
		zdarzenie - zdarzenie jak click,
		funkcja_zdarzen - nazwa funkcji zdarzeń w starej przestrzeni Common lub nowej, jak StickyXY,
		tylko_odrejestruj - czy tylko zdarzenie ma odrejestrować w starej przestrzeni Common.
		*/
		if((css)&&(zdarzenie)&&(funkcja_zdarzen)){
			/*Odrejestrowanie zdarzeń o nazwie: funkcja_zdarzen, ale z innej strony .js jak: Common.StickyXY*/
    		if((Common_zmienna_z_MediaWiki_Wikibooks)&&(Common_zmienna_z_MediaWiki_Wikibooks[funkcja_zdarzen])){
   				$(css).off(zdarzenie,Common_zmienna_z_MediaWiki_Wikibooks[funkcja_zdarzen]);
    		}
    		if((!tylko_odrejestruj)&&(Common)&&(Common[funkcja_zdarzen])){
   				/*Rejestrowanie zdarzeń, ale z tej strony .js*/
   				$(css).on(zdarzenie, Common[funkcja_zdarzen]);
    		}
    	}
	}

	/*Funkcje w przestrzeni nazw Common*/
	Common.Naglowek=function(){
	/* Skrypt odpowiedzialny za wyświetlanie szablonu Nagłówek [[Szablon:Nagłówek]] */
		var hideAll = document.getElementById('mójNagłówekUkryj');
		var noFooter = false;
		var footers = 0;

		var tags = document.getElementsByTagName('div');
		for (var i = 0; i < tags.length; i++) {
			var el=tags[i].getAttribute("id");
			if (el=='mojaStopka')
				footers++;
			else if (hideAll && (el=='mójNagłówek')) {
				tags[i].innerHTML="";
				noFooter=true;
			}
		}
		if (noFooter) return;

		var footer = document.getElementById('mojaStopka');
		if ((footer !== null) && (footers==1)) {
			var bodyContent = document.getElementById('bodyContent');
			if (bodyContent !== null) {
				var s0=document.getElementById('mojaStopka0');
				var s1=document.getElementById('mojaStopka1');
				if ((s1 !== null) ||
			    	((s0 === null) && (bodyContent.innerHTML.length>8000))){
			        	 var strona=document.getElementById('strona');
			        	if(strona!==null){
			            	 strona.appendChild(footer);
			        	}else{
			         		 var catlinks=document.getElementById('catlinks');
			         		if(catlinks !== null){
								bodyContent.insertBefore(footer,catlinks);
							}else{
								bodyContent.appendChild(footer);
							}
			        	}
			    	}
			}
		}
	/* Koniec skryptu odpowiedzialnego za wyświetlanie szablonu Nagłówek [[Szablon:Nagłówek]] */
	};
	$(Common.Naglowek);

	/*Informacje o danej stronie*/
	Common.PageInfoInit=function(){
		var _g = /_/g;
		this.name = mw.config.get('wgPageName').replace(/_/g, ' ');
		this.namespace = mw.config.get('wgNamespaceNumber');

		var i = this.name.search(/\/[^\/]*$/g);
		this.title = this.name.slice(i + 1);

		this.book = this.name.replace(/\/.*/g, "");

		if ( document.URL.search("//pl.wikibooks.org/w/index.php") != -1 ) {
    		re = /\&diff=/g;
    		this.diff = re.test(document.URL);
    		re = /\&action=[^\&]*/g;
    		this.action = document.URL.match(re);
    		if ( this.action === null ) {
        		this.action = 'get';
        	} else {
            	this.action = this.action[0].slice(8, this.action[0].length);
        	}
		} else {
    		this.diff = null;
    		this.action = 'get';
		}
	}

	Common.pageInfo = new Common.PageInfoInit();

	/** Collapsible tables *********************************************************
	*
	*  Description: Allows tables to be collapsed, showing only the header. See
	*               [[en:Wikipedia:NavFrame]].
	*  Maintainers: [[User:R. Koot]]
	*/
  
	Common.autoCollapse = 2;
	Common.collapseCaption = "ukryj";
	Common.expandCaption = "pokaż";

	Common.collapseTable=function( tableIndex )
	{
    	var Button = document.getElementById( "collapseButton" + tableIndex );
    	var Table = document.getElementById( "collapsibleTable" + tableIndex );

    	if ( !Table || !Button ) {
        	return false;
    	}

    	var Rows = Table.rows;

    	if ( Button.firstChild.data == Common.collapseCaption ) {
        	for ( var i = 1; i < Rows.length; i++ ) {
            	Rows[i].style.display = "none";
        	}
        	Button.firstChild.data = Common.expandCaption;
    	} else {
        	for ( var i = 1; i < Rows.length; i++ ) {
            	Rows[i].style.display = Rows[0].style.display;
        	}
        	Button.firstChild.data = Common.collapseCaption;
    	}
	}

	Common.createCollapseButtons=function()
	{
    	var tableIndex = 0;
    	var NavigationBoxes = new Object();
    	var Tables = document.getElementsByTagName( "table" );

    	for ( var i = 0; i < Tables.length; i++ ) {
        	if ( $(Tables[i]).hasClass( "collapsible" ) ) {

            	/* only add button and increment count if there is a header row to work with */
            	var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
            	if (!HeaderRow) continue;
            	var Header = HeaderRow.getElementsByTagName( "th" )[0];
            	if (!Header) continue;

            	NavigationBoxes[ tableIndex ] = Tables[i];
            	Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );

            	var Button     = document.createElement( "span" );
            	var ButtonLink = document.createElement( "a" );
            	var ButtonText = document.createTextNode( Common.collapseCaption );

            	Button.style.styleFloat = "right";
            	Button.style.cssFloat = "right";
            	Button.style.fontWeight = "normal";
            	Button.style.textAlign = "right";
            	Button.style.width = "6em";

            	ButtonLink.style.color = Header.style.color;
            	ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
            	ButtonLink.setAttribute( "href", "javascript:Common.collapseTable(" + tableIndex + ");" );
            	ButtonLink.appendChild( ButtonText );

            	Button.appendChild( document.createTextNode( "[" ) );
            	Button.appendChild( ButtonLink );
            	Button.appendChild( document.createTextNode( "]" ) );
           
            	$(Header.childNodes[0]).has('a#collapseButton' + tableIndex).each(function(i,element){
            		$(element).remove();
            	});
           
            	Header.insertBefore( Button, Header.childNodes[0]);
            
            	tableIndex++;
        	}
    	}

    	for ( var i = 0;  i < tableIndex; i++ ) {
        	if ( $(NavigationBoxes[i]).hasClass( "collapsed" ) || ( tableIndex >= Common.autoCollapse && $(NavigationBoxes[i]).hasClass( "autocollapse" ) ) ) {
            	Common.collapseTable( i );
        	} 
        	else if ( $(NavigationBoxes[i]).hasClass( "innercollapse" ) ) {
            	var element = NavigationBoxes[i];
            	while (element = element.parentNode) {
                	if ( $(element).hasClass( "outercollapse" ) ) {
                    	Common.collapseTable ( i );
                    	break;
                	}
            	}
        	}
    	}
	}

	$(Common.createCollapseButtons );


	/** Dynamic Navigation Bars (experimental) *************************************
	*
	*  Description: See [[Wikipedia:NavFrame]].
	*  Maintainers: UNMAINTAINED
	*/

	// set up the words in your language
	Common.NavigationBarHide = '[' + Common.collapseCaption + ']';
	Common.NavigationBarShow = '[' + Common.expandCaption + ']';

	// shows and hides content and picture (if available) of navigation bars
	// Parameters:
	//     indexNavigationBar: the index of navigation bar to be toggled
	Common.toggleNavigationBar=function(indexNavigationBar)
	{
    	var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
	    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

    	if (!NavFrame || !NavToggle) {
        	return false;
	    }

	    // if shown now
    	if (NavToggle.firstChild.data == Common.NavigationBarHide) {
        	for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            	if ( $(NavChild).hasClass( 'NavPic' ) ) {
                	NavChild.style.display = 'none';
            	}
            	if ( $(NavChild).hasClass( 'NavContent') ) {
                	NavChild.style.display = 'none';
            	}
        	}
    	NavToggle.firstChild.data = Common.NavigationBarShow;

    	// if hidden now
    	} else if (NavToggle.firstChild.data == Common.NavigationBarShow) {
        	for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            	if ($(NavChild).hasClass( 'NavPic')) {
                	NavChild.style.display = 'block';
            	}
            	if ($(NavChild).hasClass( 'NavContent')) {
                	NavChild.style.display = 'block';
            	}
        	}
        	NavToggle.firstChild.data = Common.NavigationBarHide;
    	}
	}

	// adds show/hide-button to navigation bars
	Common.createNavigationBarToggleButton=function()
	{
	    var indexNavigationBar = 0;
    	// iterate over all < div >-elements 
    	var divs = document.getElementsByTagName("div");
    	for (var i = 0; NavFrame = divs[i]; i++) {
        	// if found a navigation bar
        	if ($(NavFrame).hasClass( "NavFrame")) {

            	indexNavigationBar++;
	            var NavToggle = document.createElement("a");
    	        NavToggle.className = 'NavToggle';
        	    NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            	NavToggle.setAttribute('href', 'javascript:Common.toggleNavigationBar(' + indexNavigationBar + ');');

	            var isCollapsed = $(NavFrame).hasClass( "collapsed" );
    	        /*
        	     * Check if any children are already hidden.  This loop is here for backwards compatibility:
            	 * the old way of making NavFrames start out collapsed was to manually add style="display:none"
	             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
    	         * the content visible without JavaScript support), the new recommended way is to add the class
        	     * "collapsed" to the NavFrame itself, just like with collapsible tables.
            	 */
	            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
    	            if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
        	            if ( NavChild.style.display == 'none' ) {
            	            isCollapsed = true;
                	    }
	                }
    	        }
        	    if (isCollapsed) {
            	    for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                	    if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
                    	    NavChild.style.display = 'none';
	                    }
    	            }
        	    }
	            var NavToggleText = document.createTextNode(isCollapsed ? Common.NavigationBarShow : Common.NavigationBarHide);
            
    	        NavToggle.appendChild(NavToggleText);

        	    // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            	for(var j=0; j < NavFrame.childNodes.length; j++) {
                	if ($(NavFrame.childNodes[j]).hasClass( "NavHead")) {
            		
                		$(NavFrame.childNodes[j]).children('a.NavToggle#NavToggle' + indexNavigationBar).each(function(i,element){
            				$(element).remove();
            			});
            
                    	NavFrame.childNodes[j].appendChild(NavToggle);
                	}
            	}
            	NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        	}
    	}
	}

	$(Common.createNavigationBarToggleButton );

	// Wyszukiwanie Google na stronach podręczników

	Common.googleSearchInitialized = false;

	Common.insertGoogleSearch=function() {
		if ( mw.config.get('wgNamespaceNumber') != 0 || Common.googleSearchInitialized ) {
			return;
		}
		Common.googleSearchInitialized = true;

		var google = "http://www.google.com/custom?sa=Google+Search&domains=pl.wikibooks.org/wiki/PAGE&sitesearch=pl.wikibooks.org/wiki/PAGE";
		var ul = jQuery('#p-tb ul')[0];

		if (!ul) {
			return;
		}

		var link = document.createElement('a');

		var book = Common.pageInfo.book;
		if ( book.length == 1 || book.indexOf('++') != -1 || encodeURIComponent(book) != book ) {
			google = "http://www.google.com/custom?sa=Google+Search&domains=pl.wikibooks.org/wiki/&sitesearch=pl.wikibooks.org/wiki/&q=%22PAGE%22"
		}

		link.href = google.replace(/PAGE/g, encodeURIComponent(book));
		link.appendChild(document.createTextNode("Szukaj w podręczniku"));

		var li = document.createElement('li');
		li.id = "google-trick-search";

		li.appendChild(link);
	
		$(ul).children('li#google-trick-search').each(function(i,element){
    		$(element).remove();
    	});

		ul.insertBefore(li, ul.firstChild);
	}

	$(Common.insertGoogleSearch);

	/*Funkcja do liczenia szerokościm mapska przewijania w pionowego, wtedy x_box_right=="y", lub poziomego, wtedy inny parametr inny niż dla paska pionowego*/
	Common.PobierzSzerokoscPaskaPrzewijania=function(x_box_right){
    	var div = $('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div></div>'); 
    	$('body').append(div); 
    	var w1 = $('div', div)["inner"+((x_box_right=="y")?"Width":"Height")](); 
    	div.css('overflow-'+(x_box_right||"y"), 'scroll'); 
    	var w2 = $('div', div)["inner"+((x_box_right=="y")?"Width":"Height")](); 
    	$(div).remove(); 
    	return (w1 - w2); 
	}

	/*Funkcje do obsługi pasków przewijania*/
	Common.ScrollBarOverflow=function(){
		$('*.mw-overflow-x, *.mw-overflow-y').each(function(i,element_g){
			/*start overflow*/
		
			var comp=window.getComputedStyle(element_g, null);
		
			var display=comp.getPropertyValue("display");
			if(display=="none"){return;}
		
			var overflow=comp.getPropertyValue("overflow");
			var overflow_x=$(element_g).hasClass('mw-overflow-x');
			if(overflow_x){
				var overflowX=(((overflow)&&(overflow!=""))?overflow:comp.getPropertyValue("overflow-x"));
				if((overflowX)&&(overflowX=="auto")){
					element_g.classList.remove("mw-scrollbar-overflow-x");
					const hasHorizontalScrollbar = element_g.scrollWidth > element_g.clientWidth; // true lub false
					if(hasHorizontalScrollbar){
						element_g.classList.add("mw-scrollbar-overflow-x");
					}
				}
			}
			var overflow_y=$(element_g).hasClass('mw-overflow-y');
			if(overflow_y){
				var overflowY=(((overflow)&&(overflow!=""))?overflow:comp.getPropertyValue("overflow-y"));
				if((overflowY)&&(overflowY=="auto")){
					element_g.classList.remove("mw-scrollbar-overflow-y");
					const hasVerticalScrollbar = element_g.scrollHeight > element_g.clientHeight; // true lub false
					if(hasVerticalScrollbar){
						element_g.classList.add("mw-scrollbar-overflow-y");
					}
				}
			}
			/*koniec overflow*/
		});
	}

	$(Common.ScrollBarOverflow);
	$(function(){
		/*Zdarzenia*/
		Common.ZdarzeniaJavaScript(window,'scroll', 'ScrollBarOverflow');
		Common.ZdarzeniaJavaScript(window,'resize', 'ScrollBarOverflow');
	});

	/*Funkcja symulująca właściwości position:sticky, wszędzie tam, gdzie nie można go użyć.*/
	Common.StickyXY=function(){
		$('*.mw-sticky-x, *.mw-sticky-y').each(function(i,element_g){
			var comp=window.getComputedStyle(element_g, null);
		
			function FunStickyXY(height,top,bottom,width_box,left_box,right_box,x_box,x_box_right){
			
		    	var pozycje_paskow=new Array();
			
				$(element_g).find('*').each(function(i,element){
						var comp=window.getComputedStyle(element, null);
						var overflow=comp.getPropertyValue("overflow");
						var overflow_x=(((overflow)&&(overflow!=""))?overflow:comp.getPropertyValue("overflow-x"));
						var overflow_y=(((overflow)&&(overflow!=""))?overflow:comp.getPropertyValue("overflow-y"));
						if((overflow_x=="auto")||(overflow_x=="scroll")||(overflow_y=="auto")||(overflow_y=="scroll")){
				  			pozycje_paskow.push(new Array(element,element.scrollTop,element.scrollLeft));
						}
				});
		
				
				var height_sticky=0;
				$('html.client-js.vector-sticky-header-enabled body.skin-vector-search-vue.vector-sticky-header-visible header.vector-sticky-header, html.client-js body.skin-timeless #mw-header-container ~ #mw-header-hack').each(function(i,el){
					var rect_sticky=el.getBoundingClientRect();
					height_sticky=parseInt(rect_sticky[height]+rect_sticky[top]);
				});
				var StickyXYTopOld=$(element_g).data('stickyXYOld-'+top);var StickyXYBottomOld=$(element_g).data('stickyXYOld-'+bottom);
			
				if(StickyXYTopOld===undefined){
					var topold_war=parseFloat(element_g.style[top]);
					$(element_g).data('stickyXYOld-'+top,((!isNaN(topold_war))?topold_war:0));
				}
				if(StickyXYBottomOld===undefined){
					var bottomold_war=parseFloat(element_g.style[bottom]);
					$(element_g).data('stickyXYOld-'+bottom,((!isNaN(bottomold_war))?bottomold_war:0));
				}
				var topold=$(element_g).data('stickyXYOld-'+top)+height_sticky+5;
			
				var margintop=parseFloat(comp.getPropertyValue("margin-"+top));
				margintop=((!isNaN(margintop))?margintop:0);
			
				var marginbottom=parseFloat(comp.getPropertyValue("margin-"+bottom));
				marginbottom=((!isNaN(marginbottom))?marginbottom:0);
			
				var przodek_height=undefined;
			
				element_g.style[height]="auto";
				element_g.style["max"+(height.replace(/^(.)/g,function(s){return s.toUpperCase();}))]="none";
				element_g.style[top]="auto";
				element_g.style[bottom]="auto";
				
				if(width_box!=null){
					element_g.style[width_box]="auto";
					element_g.style["max"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]="none";
					element_g.style[left_box]="auto";
					element_g.style[right_box]="0";
					$(element_g).find('.mw-not-overflow-'+x_box+'.mw-overflow-'+x_box).each(function(i,element){
						element.style[width_box]="auto";
						element.classList.remove('mw-scrollbar-overflow-x');
						element.classList.remove('mw-scrollbar-overflow-y');
					});
				}
				/**/
			
				var parents_node_fun=$(element_g).parents('.mw-parent-node').first();
				if((parents_node_fun==null)||(parents_node_fun.length==0)){return;}
			
				var width_rodzic=null;
				var rodzic_element=undefined;
				var comp_rodz;
			
				parents_node_fun.each(function(i,element){
					comp_rodz=window.getComputedStyle(element,null);
					przodek_height=parseFloat(comp_rodz.getPropertyValue([height]));
					width_rodzic=width_box?parseFloat(comp_rodz.getPropertyValue([width_box])):null;
					rodzic_element=element;
				});
			
				var height_box_real=parseFloat(comp.getPropertyValue(height));
				var rect_dziecko=element_g.getBoundingClientRect();	
			
				var wys=document.documentElement["client"+(height.replace(/^(.)/g,function(s){return s.toUpperCase();}))];
			
				var rect_rodzic;
				parents_node_fun.each(function(i,element){
					rect_rodzic=element.getBoundingClientRect();
				});
			
				var top_ab=rect_rodzic[top];
				var bottom_ab=(wys-rect_rodzic[bottom]);
			
			
				var maxheight=Math.min(przodek_height,wys-((rect_rodzic[top]>=0)?(rect_rodzic[top]):(0))-((bottom_ab>=0)?(bottom_ab):(0)))-(((top_ab<=0)?(topold):(Math.max(0,topold-top_ab)))+((bottom_ab<=0)?($(element_g).data('stickyXYOld-'+bottom)+5):(Math.max(0,$(element_g).data('stickyXYOld-'+bottom)+5-bottom_ab)))+marginbottom+margintop);
			
				element_g.style["max"+(height.replace(/^(.)/g,function(s){return s.toUpperCase();}))]=(((maxheight>=0)?maxheight:0)*(height_box_real/rect_dziecko[height]))+"px";
			
				element_g.style[height]="100%";
			
				var top_obj=(((top_ab>=0)?0:(-top_ab)))+((top_ab<=0)?(topold):(Math.max(0,topold-top_ab)));
			
				element_g.style[top]=top_obj+"px";
				element_g.style[bottom]="auto";
			
				if(width_box!=null){
					element_g.style["max"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]="none";
				
					rodzic_element.style.position="static";
					rodzic_element.style.overflow="hidden";
					var width_box_real=parseFloat(comp.getPropertyValue(width_box));
					var rect_dziecko=element_g.getBoundingClientRect();
					if(parseInt(width_box_real)>parseInt(rect_dziecko[width_box])){
						if(width_box=="width"){
								element_g.classList.remove('mw-scrollbar-overflow-x');
						}else{
								element_g.classList.remove('mw-scrollbar-overflow-y');
						}
						if(rect_dziecko[width_box]>width_rodzic){
							if(width_box=="width"){
								element_g.classList.add('mw-scrollbar-overflow-x');
							}else{
								element_g.classList.add('mw-scrollbar-overflow-y');
							}
						}
						var width_box_real=parseFloat(comp.getPropertyValue(width_box));
					
						var margin_all=parseFloat(comp.getPropertyValue("margin-"+left_box))+parseFloat(comp.getPropertyValue("margin-"+right_box));
						margin_all+=parseFloat(comp_rodz.getPropertyValue("padding-"+left_box))+parseFloat(comp_rodz.getPropertyValue("padding-"+right_box));
						var dlugosc=(width_rodzic-margin_all);
						dlugosc=((dlugosc>=0)?dlugosc:0);
					
					
						element_g.style.whiteSpace="nowrap";
						element_g.style["max"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]=(dlugosc*(width_box_real/rect_dziecko[width_box]))+"px";
						element_g.style[width_box]=width_box_real+"px";
					
						Common.ScrollBarOverflow();
						$(element_g).find('.mw-overflow-'+x_box+'.mw-not-overflow-'+x_box+'.mw-scrollbar-overflow-'+x_box).each(function(i,element){
							var comp_element=window.getComputedStyle(element, null)
							element.style[width_box]=(element["scroll"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]+Common.PobierzSzerokoscPaskaPrzewijania(x_box_right)+parseFloat	(comp_element.getPropertyValue('padding-'+left_box))+parseFloat(comp_element.getPropertyValue('padding-'+right_box)))+"px";
							element.classList.remove('mw-scrollbar-overflow-'+x_box);
						});
					
						element_g.style.whiteSpace="normal";
						element_g.style["max"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]="none";
						element_g.style[width_box]="auto";
					
						var rect_dziecko=element_g.getBoundingClientRect();
						var width_box_real=parseFloat(comp.getPropertyValue(width_box));
						element_g.style["max"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]=(dlugosc*(width_box_real/rect_dziecko[width_box]))+"px";
						element_g.style[width_box]=width_box_real+"px";
					
						element_g.style[left_box]="0";
						element_g.style[right_box]="auto";
						rodzic_element.style.position="relative";
					}else{
						element_g.style.whiteSpace="nowrap";
						var szerokosc_box=rect_dziecko[width_box];
						element_g.style["max"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]=(szerokosc_box)+"px";
						element_g.style[width_box]=(szerokosc_box)+"px";
				
						Common.ScrollBarOverflow();
						$(element_g).find('.mw-overflow-'+x_box+'.mw-not-overflow-'+x_box+'.mw-scrollbar-overflow-'+x_box).each(function(i,element){
							var comp_element=window.getComputedStyle(element, null);
							element.style[width_box]=(element["scroll"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]+Common.PobierzSzerokoscPaskaPrzewijania(x_box_right)+parseFloat	(comp_element.getPropertyValue('padding-'+left_box))+parseFloat(comp_element.getPropertyValue('padding-'+right_box)))+"px";
							element.classList.remove('mw-scrollbar-overflow-'+x_box);
						});
					
						element_g.style.whiteSpace="normal";
						element_g.style["max"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]="none";
						element_g.style[width_box]="auto";
						var rect_dziecko=element_g.getBoundingClientRect();	
						var szerokosc_box=rect_dziecko[width_box];
						element_g.style["max"+(width_box.replace(/^(.)/g,function(s){return s.toUpperCase();}))]=(szerokosc_box)+"px";
						element_g.style[width_box]=(szerokosc_box)+"px";
					
						var szerokosc=rect_dziecko[width_box]+parseFloat(comp.getPropertyValue("margin-"+left_box))+parseFloat(comp.getPropertyValue("margin-"+right_box));
						if(parseInt(szerokosc)>parseInt(width_rodzic)){
							element_g.style[right_box]="0";
							element_g.style[left_box]="auto";
							rodzic_element.style.overflow="visible";
						}else{
							element_g.style[left_box]="0";
							element_g.style[right_box]="auto";
							rodzic_element.style.position="relative";
						}
					}
				}
				element_g.style[height]="auto";
				element_g.style[height]=(element_g["offset"+(height.replace(/^(.)/g,function(s){return s.toUpperCase();}))])+"px";
				Common.ScrollBarOverflow();
				for(var i in pozycje_paskow){
					pozycje_paskow[i][0].scrollTop=pozycje_paskow[i][1];
			  		pozycje_paskow[i][0].scrollLeft=pozycje_paskow[i][2];
				}

			}	
		
			element_g.classList.add('mw-sticky-js');
		
			var display=comp.getPropertyValue("display");
			if(display=="none"){return;}
		
			var visibility=comp.getPropertyValue("visibility");
			if(visibility=="hidden"){return;}
		
			var position=comp.getPropertyValue("position");
			if(position!="absolute"){return;}
		
			var sticky_x=$(element_g).hasClass('mw-sticky-x');
			var sticky_y=$(element_g).hasClass('mw-sticky-y');
			if((sticky_x)&&(!sticky_y)){
				var str=$(element_g).parents('.strona_górna, .strona_dolna').first();
				if(str.hasClass('strona_dolna')){
					FunStickyXY("width","left","right","height","top","bottom","y","x");
				}else if(str.hasClass('strona_górna')){
					FunStickyXY("width","left","right","height","bottom","top","y","x");
				}
			}else if((!sticky_x)&&(sticky_y)){
				var str=$(element_g).parents('.strona_prawa, .strona_lewa').first();
				if(str.hasClass('strona_prawa')){
					FunStickyXY("height","top","bottom","width","left","right","x","y");
				}else if(str.hasClass('strona_lewa')){
					FunStickyXY("height","top","bottom","width","right","left","x","y");
				}
			}else if((sticky_x)&&(sticky_y)){
				FunStickyXY("width","left","right",null);
				FunStickyXY("height","top","bottom",null);
			}
		});
	}

	$(Common.StickyXY);
	$(function(){
		/*Zdarzenia*/
		Common.ZdarzeniaJavaScript(window,'scroll', 'StickyXY');
		Common.ZdarzeniaJavaScript(window,'resize', 'StickyXY');
	});

	/*Funkcja do ustawiania maksymalnego rozmiaru dziecka, względem rodzica, przy position:absolute*/
	Common.OptimalXY=function(){
		$('*.mw-optimal-x, *.mw-optimal-y').each(function(i,element_g){
				
	    	var comp=window.getComputedStyle(element_g, null);		
	    
			function FunOptimalXY(width,left,right){
			
				var pozycje_paskow=new Array();
			
				$(element_g).find('*').each(function(i,element){
						var comp=window.getComputedStyle(element, null);
						var overflow=comp.getPropertyValue("overflow");
						var overflow_x=(((overflow)&&(overflow!=""))?overflow:comp.getPropertyValue("overflow-x"));
						var overflow_y=(((overflow)&&(overflow!=""))?overflow:comp.getPropertyValue("overflow-y"));
						if((overflow_x=="auto")||(overflow_x=="scroll")||(overflow_y=="auto")||(overflow_y=="scroll")){
			  				pozycje_paskow.push(new Array(element,element.scrollTop,element.scrollLeft));
						}
				});

			
				var width_rodzic=null;
				var rodzic_node;
				var comp_rodz;
			
				$(element_g).parents('.mw-parent-node').first().each(function(i,element){
					comp_rodz=window.getComputedStyle(element,null);
					width_rodzic=parseFloat(comp_rodz.getPropertyValue([width]));
					rodzic_node=element;
				});
			
				if((width_rodzic!=null)&&(!isNaN(width_rodzic))){
					element_g.style["max"+(width.replace(/^(.)/g,function(s){return s.toUpperCase();}))]="none";
								
					var width_box_real=parseFloat(comp.getPropertyValue(width));
					var rect_dziecko=element_g.getBoundingClientRect();
				
					if(width=="width"){
						element_g.classList.remove('mw-scrollbar-overflow-x');
					}else{
						element_g.classList.remove('mw-scrollbar-overflow-y');
					}
					if(parseInt(width_box_real)>parseInt(rect_dziecko[width])){
						var rect_dziecko=element_g.getBoundingClientRect();
						if(rect_dziecko[width]>width_rodzic){
							if(width=="width"){
								element_g.classList.add('mw-scrollbar-overflow-x');
							}else{
								element_g.classList.add('mw-scrollbar-overflow-y');
							}
						}
			    		var width_box_real=parseFloat(comp.getPropertyValue(width));
			    
						var margin_all=parseFloat(comp.getPropertyValue("margin-"+left))+parseFloat(comp.getPropertyValue("margin-"+right));
						margin_all+=parseFloat(comp_rodz.getPropertyValue("padding-"+left))+parseFloat(comp_rodz.getPropertyValue("padding-"+right));
						var dlugosc=(width_rodzic-margin_all);
						dlugosc=((dlugosc>=0)?dlugosc:0);
						element_g.style["max"+(width.replace(/^(.)/g,function(s){return s.toUpperCase();}))]=(dlugosc*(width_box_real/rect_dziecko[width]))+"px";
					}else{
						element_g.style["max"+(width.replace(/^(.)/g,function(s){return s.toUpperCase();}))]=(rect_dziecko[width])+"px";
					}
					var str=$(element_g).parents('.strona_prawa, .strona_lewa, .strona_górna, .strona_dolna').first();
					if(!str.hasClass('strona_start-nawigacja_boksy')){
						var rect_dziecko=element_g.getBoundingClientRect();
						var szerokosc=rect_dziecko[width]+parseFloat(comp.getPropertyValue("margin-"+left))+parseFloat(comp.getPropertyValue("margin-"+right));
						if(parseInt(szerokosc)>parseInt(width_rodzic)){
							str.css('position','static');
						}else{
							str.css('position','relative');
						}
					}
				}
				for(var i in pozycje_paskow){
			  		pozycje_paskow[i][0].scrollTop=pozycje_paskow[i][1];
			  		pozycje_paskow[i][0].scrollLeft=pozycje_paskow[i][2];
				}

			};
		
			element_g.classList.add('mw-optimal-js');
		

			var display=comp.getPropertyValue("display");
			if(display=="none"){return;}
		
			var visibility=comp.getPropertyValue("visibility");
			if(visibility=="hidden"){return;}
		
			var position=comp.getPropertyValue("position");
			if(position!="absolute"){return;}
		
			var optimal_x=$(element_g).hasClass('mw-optimal-x');
			var optimal_y=$(element_g).hasClass('mw-optimal-y');
		
			if(optimal_x){
				FunOptimalXY("width","left","right");
			}
			if(optimal_y){
				FunOptimalXY("height","top","bottom");
			}
		});
	}

	$(Common.OptimalXY);
	$(function(){
		/*Zdarzenia*/
		Common.ZdarzeniaJavaScript(window,"scroll",'OptimalXY');
		Common.ZdarzeniaJavaScript(window,"resize",'OptimalXY');
	});

	/*Uruchamianie dodatkowych funkcji, niż standardowe, w href w linkach rozwijanej tabeli TABLE lub ramki DIV, jeśli ona generuje zwiększenie rozmiarów, aby w rodzicu pojawił się pasek przewijania, z dodatkowymi opcjami generowanej przez arkusz kalkulacyjny CSS*/
	Common.RamkiTableIDiv=function(obiekt,id_tabeli_lub_ramki,id_nazwa_a,fun_obiektu){
		$(obiekt).each(function(i,element_f){
			return new Promise(function(resolve,reject){
				var czas=0;
				function Czekaj(){
					if(czas>30000){
						reject();
					}
					var collapsebutton=$(element_f).find('a#'+id_nazwa_a+i);
					if((collapsebutton!==null)&&(collapsebutton.length>0)){
				
						var tabele_lub_ramki=collapsebutton.parents('#'+id_tabeli_lub_ramki+i);
						if((tabele_lub_ramki===null)||(tabele_lub_ramki.length==0)){reject();}
				
						resolve(i);
					}else{
						czas+=100;
						setTimeout(Czekaj,100);
					}
				}
				Czekaj();
			}).then(function(i){
				$('*.mw-overflow-x a#'+id_nazwa_a+i+', *.mw-overflow-y a#'+id_nazwa_a+i).each(function(j,element_g){
				
					var href=element_g.getAttribute('href');
					if((href!=null)&&(href!="")){
				
						var col="[\\s;\\(\\,]*javascript:"+fun_obiektu.replace(/\./g,"\\.")+"\\s*\\(\\s*"+i+"\\s*\\)[\\s;\\)\\,]*";
						var re_frame = new RegExp(col,'g');
				
						var re_javascript=new RegExp("^[\\s;]*javascript:");
				
						if((re_javascript.test(href))&&(re_frame.test(href))){
							var href=element_g.getAttribute('href');
							if((href!==null)&&(href!="")){
								function DodajSkryptJavaScript(fun){
									var re=new RegExp("javascript:"+fun.replace(/\./g,"\\.")+"\\s*\\(\\s*\\)",'g');
									var href_nowe=element_g.getAttribute('href');
									if(!re.test(href_nowe)){
										element_g.setAttribute('href',href_nowe.replace(/[;\s]*$/g,"")+';javascript:'+fun+"()");
									}
								}
								DodajSkryptJavaScript('Common.ScrollBarOverflow');
								DodajSkryptJavaScript('Common.StickyXY');
								DodajSkryptJavaScript('Common.OptimalXY');
							}
						}
					}
				});
			}).catch(function(){});
		});
	};

	$(function(){
    	/*Dla menu rozwijanego tabeli TABLE zdefiniowanej na stronie MediaWiki:Common.js*/
		Common.RamkiTableIDiv("table.collapsible",'collapsibleTable','collapseButton','Common.collapseTable');

    	/*Dla menu rozwijanej ramki DIV zdefiniowanej na stronie MediaWiki:Common.js*/
		Common.RamkiTableIDiv("div.NavFrame",'NavFrame','NavToggle','Common.toggleNavigationBar');
    	/*Koniec dodatkowych funkcji*/
	});

	/*Uruchamianie dodatkowych zdarzeń do Common.StickyXY i Common.OptimalXY*/
	Common.ZdarzeniaJavaScriptDodatkoweFunkcyjneXY=function(css,fun_zdarz,z_mouse){
		/*Zdarzenia dodatkowe - odrejestrowanie wcześniejszych zdarzeń i rejestrowanie następnych*/
		var tab_transition={'start':true,'run':true,'cancel':true,'end':true};
		var tab_przegladarki={'':true,'webkit':true,'moz':true,'o':true};
		for(var a in tab_transition){
   			for(var b in tab_przegladarki){
   				var zdarzenie=b+'transition'+a;
   				Common.ZdarzeniaJavaScript(css,zdarzenie,fun_zdarz);
   			}
		}
		if(z_mouse){
			Common.ZdarzeniaJavaScript(css,"mouseenter",fun_zdarz);
			Common.ZdarzeniaJavaScript(css,"mouseleave",fun_zdarz);
		}
	};

	$(function(){
		/*Funkcje zdarzeń*/
		Common.ZdarzeniaJavaScriptDodatkoweFunkcyjneXY("*.mw-sticky-x, *.mw-sticky-y",'StickyXY',true);
		Common.ZdarzeniaJavaScriptDodatkoweFunkcyjneXY('*.mw-optimal-x, *.mw-optimal-y','OptimalXY',true);
		Common.ZdarzeniaJavaScriptDodatkoweFunkcyjneXY("body.skin-vector-search-vue .vector-sticky-header",'StickyXY',false);
	});

	/*Koniec dodatkowych zdarzeń*/

	/*Program do obsługi szablonu StronaStart i jego pokrewnych książkowych*/
	Common.StronaStart=function(){
		var elements=$('.strona_start .strona .ciało_zawartości > .menu > .menu_boks');
		elements.parent().show();
		$('.strona_start').find('.strona_lewa .nawigacja_boksy, .strona_prawa .nawigacja_boksy').each(function(i,element){
			$(element).css('visibility',"hidden");
			$(element).attr('mw-menu-boks',"false");
		});
		$('.strona_start').find('.strona_lewa .nawigacja_spis, .strona_prawa .nawigacja_spis').each(function(i,element){
			var czy_visible=$(element).css('visibility');
			$(element).css('visibility',"visible");
			$(element).attr('mw-menu-boks',"true");
			var str=$(element).parents('.strona_prawa, .strona_lewa').first();
			str.css('position','relative');
			str.addClass('strona_start-nawigacja_spis');
			str.removeClass('strona_start-nawigacja_boksy');
			if(czy_visible=="hidden"){
				$(Common.ScrollBarOverflow);
				$(Common.StickyXY);
			}
		});
		var str=$('.strona_start').find('.strona .ciało_zawartości > .menu > .menu_boks').children('.spis_treści, .boksy');
	
		if(str.length!=2){return;}
		$(str[0]).attr('mw-menu-boks',"true");
		$(str[1]).attr('mw-menu-boks',"false");
	
		Common.StronaStartZdarzeniePrzycisku=function(){
			var id=this;
			$(id).parents('.strona_start').first().find('.strona .ciało_zawartości > .menu > .menu_boks').children().each(function(i,element){
				var menu_boks_zmienna=$(element).attr('mw-menu-boks');
				menu_boks_zmienna=(((menu_boks_zmienna)&&(menu_boks_zmienna!=""))?menu_boks_zmienna:"false");
				if(menu_boks_zmienna=="false"){
					$(element).css('display',"block");
					$(element).attr('mw-menu-boks','true');
				}else if(menu_boks_zmienna=="true"){
					$(element).css('display',"none");
					$(element).attr('mw-menu-boks','false');
				}
			});
			$(id).parents('.strona_start').first().find('.strona_lewa, .strona_prawa').children('.nawigacja_boksy, .nawigacja_spis').each(function(i,element){
				var menu_boks_zmienna=$(element).attr('mw-menu-boks');
				menu_boks_zmienna=(((menu_boks_zmienna)&&(menu_boks_zmienna!=""))?menu_boks_zmienna:"false");
				if(menu_boks_zmienna=="false"){
					$(element).css('visibility',"visible");
					$(element).attr('mw-menu-boks',"true");
					var str=$(element).parents('.strona_prawa, .strona_lewa').first();
					if($(element).hasClass('nawigacja_boksy')){
						str.css('position','static');
						str.addClass('strona_start-nawigacja_boksy');
						str.removeClass('strona_start-nawigacja_spis');
						$(Common.ScrollBarOverflow);
						$(Common.OptimalXY);
					}else if($(element).hasClass('nawigacja_spis')){
						str.css('position','relative');
						str.addClass('strona_start-nawigacja_spis');
						str.removeClass('strona_start-nawigacja_boksy');
						$(Common.ScrollBarOverflow);
						$(Common.StickyXY);
					}
				}else if(menu_boks_zmienna=="true"){
					$(element).css('visibility',"hidden");
					$(element).attr('mw-menu-boks',"false");
				}
			});
		}
		if(Common.StronaStartZdarzeniePrzycisku)Common.ZdarzeniaJavaScript(elements,'click','StronaStartZdarzeniePrzycisku');
	}
	$(Common.StronaStart);
})(Common_zmienna_z_MediaWiki_Wikibooks,Common);