MediaWiki:Common.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 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);