Difference between revisions of "MediaWiki:Monobook.js"
MyWikiBiz, Author Your Legacy — Friday November 29, 2024
Jump to navigationJump to searchLine 1: | Line 1: | ||
+ | /* | ||
+ | <pre> | ||
+ | */ | ||
/* tooltips and access keys */ | /* tooltips and access keys */ | ||
ta = new Object(); | ta = new Object(); | ||
− | ta['pt-userpage'] = new Array('.','My user page'); | + | ta['pt-userpage'] = new Array('.','My user page'); |
− | ta['pt-anonuserpage'] = new Array('.','The user page for the ip you\'re editing as'); | + | ta['pt-anonuserpage'] = new Array('.','The user page for the ip you\'re editing as'); |
− | ta['pt-mytalk'] = new Array('n','My talk page'); | + | ta['pt-mytalk'] = new Array('n','My talk page'); |
− | ta['pt-anontalk'] = new Array('n','Discussion about edits from this ip address'); | + | ta['pt-anontalk'] = new Array('n','Discussion about edits from this ip address'); |
− | ta['pt-preferences'] = new Array('','My preferences'); | + | ta['pt-preferences'] = new Array('','My preferences'); |
− | ta['pt-watchlist'] = new Array('l','The list of pages you\'re monitoring for changes.'); | + | ta['pt-watchlist'] = new Array('l','The list of pages you\'re monitoring for changes.'); |
− | ta['pt-mycontris'] = new Array('y','List of my contributions'); | + | ta['pt-mycontris'] = new Array('y','List of my contributions'); |
− | ta['pt-login'] = new Array('o',' | + | ta['pt-login'] = new Array('o','You are encouraged to log in, it is not mandatory however.'); |
− | ta['pt-anonlogin'] = new Array('o',' | + | ta['pt-anonlogin'] = new Array('o','You are encouraged to log in, it is not mandatory however.'); |
− | ta['pt-logout'] = new Array('o','Log out'); | + | ta['pt-logout'] = new Array('o','Log out'); |
− | ta['ca-talk'] = new Array('t','Discussion about the content page'); | + | ta['ca-talk'] = new Array('t','Discussion about the content page'); |
− | ta['ca-edit'] = new Array('e','You can edit this page. Please use the preview button before saving.'); | + | ta['ca-edit'] = new Array('e','You can edit this page. Please use the preview button before saving.'); |
− | ta['ca-addsection'] = new Array('+',' | + | ta['ca-addsection'] = new Array('+','Add a comment to this discussion.'); |
− | ta['ca-viewsource'] = new Array('e','This page is protected. You can view its source.'); | + | ta['ca-viewsource'] = new Array('e','This page is protected. You can view its source.'); |
− | ta['ca-history'] = new Array('h','Past versions of this page.'); | + | ta['ca-history'] = new Array('h','Past versions of this page.'); |
− | ta['ca-protect'] = new Array('=','Protect | + | ta['ca-protect'] = new Array('=','Protect this page'); |
− | + | ta['ca-delete'] = new Array('d','Delete this page'); | |
− | ta['ca-delete'] = new Array('d','Delete this page'); | + | ta['ca-undelete'] = new Array('d','Restore the edits done to this page before it was deleted'); |
− | ta['ca-undelete'] = new Array('d','Restore the edits done to this page before it was deleted'); | + | ta['ca-move'] = new Array('m','Move this page'); |
− | ta['ca-move'] = new Array('m','Move | + | ta['ca-watch'] = new Array('w','Add this page to your watchlist'); |
− | + | ta['ca-unwatch'] = new Array('w','Remove this page from your watchlist'); | |
− | ta['ca-watch'] = new Array('w','Add this page to your watchlist'); | + | ta['search'] = new Array('f','Search this wiki'); |
− | ta['ca-unwatch'] = new Array('w','Remove this page from your watchlist'); | + | ta['p-logo'] = new Array('','Main Page'); |
− | ta['search'] = new Array('f','Search | + | ta['n-mainpage'] = new Array('z','Visit the Main Page'); |
− | ta['p-logo'] = new Array('','Main Page'); | ||
− | ta['n-mainpage'] = new Array('z','Visit the Main Page'); | ||
ta['n-portal'] = new Array('','About the project, what you can do, where to find things'); | ta['n-portal'] = new Array('','About the project, what you can do, where to find things'); | ||
− | + | ta['n-currentevents'] = new Array('','Find background information on current events'); | |
− | ta['n-currentevents'] = new Array('','Find background information on current events'); | + | ta['n-recentchanges'] = new Array('r','The list of recent changes in the wiki.'); |
− | ta['n-recentchanges'] = new Array('r',' | + | ta['n-randompage'] = new Array('x','Load a random page'); |
− | ta['n-randompage'] = new Array('x','Load a random page'); | + | ta['n-help'] = new Array('','The place to find out.'); |
− | ta['n-help'] = new Array('','The place to find out | + | ta['n-sitesupport'] = new Array('','Support us'); |
− | + | ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here'); | |
− | ta['n-sitesupport'] = new Array('','Support us'); | + | ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page'); |
− | ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here'); | + | ta['feed-rss'] = new Array('','RSS feed for this page'); |
− | ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page'); | + | ta['feed-atom'] = new Array('','Atom feed for this page'); |
− | ta['feed-rss'] = new Array('','RSS feed for this page'); | + | ta['t-contributions'] = new Array('','View the list of contributions of this user'); |
− | ta['feed-atom'] = new Array('','Atom feed for this page'); | + | ta['t-emailuser'] = new Array('','Send a mail to this user'); |
− | ta['t-contributions'] = new Array('','View the list of contributions of this user'); | + | ta['t-upload'] = new Array('u','Upload images or media files'); |
− | ta['t-emailuser'] = new Array('','Send a mail to this user'); | ||
− | ta['t-upload'] = new Array('u','Upload images or media files'); | ||
ta['t-specialpages'] = new Array('q','List of all special pages'); | ta['t-specialpages'] = new Array('q','List of all special pages'); | ||
− | + | ta['ca-nstab-main'] = new Array('c','View the content page'); | |
− | + | ta['ca-nstab-user'] = new Array('c','View the user page'); | |
− | + | ta['ca-nstab-media'] = new Array('c','View the media page'); | |
− | ta['ca-nstab-main'] = new Array('c','View the content page'); | + | ta['ca-nstab-special'] = new Array('','This is a special page, you can\'t edit the page itself.'); |
− | ta['ca-nstab-user'] = new Array('c','View the user page'); | + | ta['ca-nstab-wp'] = new Array('a','View the project page'); |
− | ta['ca-nstab-media'] = new Array('c','View the media page'); | + | ta['ca-nstab-image'] = new Array('c','View the image page'); |
− | ta['ca- | + | ta['ca-nstab-mediawiki'] = new Array('c','View the system message'); |
− | ta['ca-nstab- | + | ta['ca-nstab-template'] = new Array('c','View the template'); |
− | ta['ca-nstab-image'] = new Array('c','View the image page'); | + | ta['ca-nstab-help'] = new Array('c','View the help page'); |
− | ta['ca-nstab-mediawiki'] = new Array('c','View the system message'); | ||
− | ta['ca-nstab-template'] = new Array('c','View the template'); | ||
− | ta['ca-nstab-help'] = new Array('c','View the help page'); | ||
ta['ca-nstab-category'] = new Array('c','View the category page'); | ta['ca-nstab-category'] = new Array('c','View the category page'); | ||
− | + | if (window.showModalDialog && document.compatMode && document.compatMode == "CSS1Compat") | |
{ | { | ||
− | + | var oldWidth; | |
− | + | var docEl = document.documentElement; | |
− | + | ||
− | + | function fixIEScroll() | |
− | for (i = | + | { |
− | + | if (!oldWidth || docEl.clientWidth > oldWidth) | |
− | + | doFixIEScroll(); | |
− | + | else | |
− | + | setTimeout(doFixIEScroll, 1); | |
− | + | ||
− | { | + | oldWidth = docEl.clientWidth; |
− | + | } | |
− | + | ||
− | + | function doFixIEScroll() { | |
+ | docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : ""; | ||
+ | } | ||
+ | |||
+ | document.attachEvent("onreadystatechange", fixIEScroll); | ||
+ | attachEvent("onresize", fixIEScroll); | ||
+ | } | ||
+ | |||
+ | function addLoadEvent(func) | ||
+ | { | ||
+ | if (window.addEventListener) | ||
+ | window.addEventListener("load", func, false); | ||
+ | else if (window.attachEvent) | ||
+ | window.attachEvent("onload", func); | ||
+ | } | ||
+ | |||
+ | function LinkFA() | ||
+ | { | ||
+ | // iterate over all <span>-elements | ||
+ | for(var i=0; a = document.getElementsByTagName("span")[i]; i++) { | ||
+ | // if found a FA span | ||
+ | if(a.className == "FA") { | ||
+ | // iterate over all <li>-elements | ||
+ | for(var j=0; b = document.getElementsByTagName("li")[j]; j++) { | ||
+ | // if found a FA link | ||
+ | if(b.className == "interwiki-" + a.id) { | ||
+ | b.style.padding = "0 0 0 16px"; | ||
+ | b.style.backgroundImage = "url('http://upload.wikimedia.org/wikipedia/en/6/60/LinkFA-star.png')"; | ||
+ | b.style.backgroundRepeat = "no-repeat"; | ||
+ | b.title = "This article has gained featured status"; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | addLoadEvent(LinkFA); | ||
+ | |||
+ | // ============================================================ | ||
+ | // BEGIN Dynamic Navigation Bars (experimantal) | ||
+ | |||
+ | // set up the words in your language | ||
+ | var NavigationBarHide = '[ Hide ]'; | ||
+ | var NavigationBarShow = '[ Show ]'; | ||
+ | |||
+ | // set up max count of Navigation Bars on page, | ||
+ | // if there are more, all will be hidden | ||
+ | // NavigationBarShowDefault = 0; // all bars will be hidden | ||
+ | // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden | ||
+ | var NavigationBarShowDefault = 1; | ||
+ | |||
+ | |||
+ | // shows and hides content and picture (if available) of navigation bars | ||
+ | // Parameters: | ||
+ | // indexNavigationBar: the index of navigation bar to be toggled | ||
+ | function toggleNavigationBar(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 == NavigationBarHide) { | ||
+ | for ( | ||
+ | var NavChild = NavFrame.firstChild; | ||
+ | NavChild != null; | ||
+ | NavChild = NavChild.nextSibling | ||
+ | ) { | ||
+ | if (NavChild.className == 'NavPic') { | ||
+ | NavChild.style.display = 'none'; | ||
+ | } | ||
+ | if (NavChild.className == 'NavContent') { | ||
+ | NavChild.style.display = 'none'; | ||
+ | } | ||
+ | } | ||
+ | NavToggle.firstChild.data = NavigationBarShow; | ||
+ | |||
+ | // if hidden now | ||
+ | } else if (NavToggle.firstChild.data == NavigationBarShow) { | ||
+ | for ( | ||
+ | var NavChild = NavFrame.firstChild; | ||
+ | NavChild != null; | ||
+ | NavChild = NavChild.nextSibling | ||
+ | ) { | ||
+ | if (NavChild.className == 'NavPic') { | ||
+ | NavChild.style.display = 'block'; | ||
+ | } | ||
+ | if (NavChild.className == 'NavContent') { | ||
+ | NavChild.style.display = 'block'; | ||
} | } | ||
} | } | ||
+ | NavToggle.firstChild.data = NavigationBarHide; | ||
} | } | ||
+ | } | ||
+ | |||
+ | // adds show/hide-button to navigation bars | ||
+ | function createNavigationBarToggleButton() | ||
+ | { | ||
+ | var indexNavigationBar = 0; | ||
+ | // iterate over all < div >-elements | ||
+ | for( | ||
+ | var i=0; | ||
+ | NavFrame = document.getElementsByTagName("div")[i]; | ||
+ | i++ | ||
+ | ) { | ||
+ | // if found a navigation bar | ||
+ | if (NavFrame.className == "NavFrame") { | ||
+ | |||
+ | indexNavigationBar++; | ||
+ | var NavToggle = document.createElement("a"); | ||
+ | NavToggle.className = 'NavToggle'; | ||
+ | NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar); | ||
+ | NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');'); | ||
+ | |||
+ | var NavToggleText = document.createTextNode(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].className == "NavHead") { | ||
+ | NavFrame.childNodes[j].appendChild(NavToggle); | ||
+ | } | ||
+ | } | ||
+ | NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); | ||
+ | } | ||
+ | } | ||
+ | // if more Navigation Bars found than Default: hide all | ||
+ | if (NavigationBarShowDefault < indexNavigationBar) { | ||
+ | for( | ||
+ | var i=1; | ||
+ | i<=indexNavigationBar; | ||
+ | i++ | ||
+ | ) { | ||
+ | toggleNavigationBar(i); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | addLoadEvent(createNavigationBarToggleButton); | ||
+ | |||
+ | // END Dynamic Navigation Bars | ||
+ | // ============================================================ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | var mpTitle = "Main Page"; | ||
+ | var isMainPage = (document.title.substr(0, document.title.lastIndexOf(" - ")) == mpTitle); | ||
+ | var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1)); | ||
+ | |||
+ | if (isMainPage && !isDiff) | ||
+ | { | ||
+ | document.write('<style type="text/css">/*<![CDATA[*/ #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>'); | ||
+ | |||
+ | var mpSmallEnabled; | ||
+ | var mpMinWidth = 700; | ||
+ | |||
+ | function mainPageTransform() | ||
+ | { | ||
+ | var mpContentEl = document.getElementById("bodyContent"); | ||
+ | var mpBrowseEl = document.getElementById("EnWpMpBrowse"); | ||
+ | var mpContainEl = document.getElementById("EnWpMpBrowseContainer"); | ||
+ | var mpMarginEl = document.getElementById("EnWpMpMargin"); | ||
+ | var mpEl = document.getElementById("EnWpMainPage"); | ||
+ | |||
+ | if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl) | ||
+ | return; | ||
+ | |||
+ | if (!mpSmallEnabled && mpContentEl.offsetWidth < mpMinWidth) | ||
+ | { | ||
+ | mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild); | ||
+ | mpBrowseEl.className = "EnWpMpBrowseBottom"; | ||
+ | mpMarginEl.style.marginRight = 0; | ||
+ | mpSmallEnabled = true; | ||
+ | } | ||
+ | else if (mpSmallEnabled && mpContentEl.offsetWidth > mpMinWidth) | ||
+ | { | ||
+ | mpEl.insertBefore(mpBrowseEl, mpEl.firstChild); | ||
+ | mpBrowseEl.className = "EnWpMpBrowseRight"; | ||
+ | mpMarginEl.style.marginRight = "13.8em"; | ||
+ | mpSmallEnabled = false; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | var onloadFuncts = [ mainPageTransform ]; | ||
+ | |||
+ | if (window.addEventListener) | ||
+ | window.addEventListener("resize", mainPageTransform, false); | ||
+ | else if (window.attachEvent) | ||
+ | window.attachEvent("onresize", mainPageTransform); | ||
+ | |||
} | } | ||
− | + | ||
+ | //Main page tab no longer says article | ||
+ | addOnloadHook(mainpg); | ||
+ | function mainpg() | ||
+ | { | ||
+ | var site = location.href; | ||
+ | if (site == 'http://en.wikibooks.org/wiki/Main_Page') | ||
+ | { | ||
+ | if(document.getElementById('ca-nstab-main')) | ||
+ | { | ||
+ | document.getElementById('ca-nstab-main').firstChild.innerHTML = 'main page'; | ||
+ | } | ||
+ | } | ||
+ | else if(document.title.indexOf("Main Page") != -1) | ||
+ | { | ||
+ | if(document.getElementById('ca-nstab-main')) | ||
+ | { | ||
+ | document.getElementById('ca-nstab-main').firstChild.innerHTML = 'main page'; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /* add a redirect button to the edit page toolbar */ | ||
+ | if (mwCustomEditButtons) { | ||
+ | mwCustomEditButtons[mwCustomEditButtons.length] = { | ||
+ | "imageFile": "http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png", | ||
+ | "speedTip": "Redirect", | ||
+ | "tagOpen": "#REDIRECT [[", | ||
+ | "tagClose": "]]", | ||
+ | "sampleText": "Insert text"}; | ||
+ | }; | ||
+ | |||
+ | // ================================================== | ||
+ | // Book-wide search using Google | ||
+ | // from pl.wikibooks, maintainer [[b:pl:User:Piotr]] | ||
+ | // ================================================== | ||
+ | |||
+ | function getBookName() { | ||
+ | var start = 0; | ||
+ | var PSEUDONAMESPACE = "Programming:"; | ||
+ | if ( wgPageName.slice(0, PSEUDONAMESPACE.length) == PSEUDONAMESPACE ) start = PSEUDONAMESPACE.length; | ||
+ | var i = wgPageName.indexOf(':', start); | ||
+ | var k = wgPageName.indexOf('/', start); | ||
+ | if ( (i != -1 && k < i) || i == -1 ) { | ||
+ | if ( k != -1 ) i = k; | ||
+ | } | ||
+ | |||
+ | var book = wgPageName; | ||
+ | if ( i != -1 ) { | ||
+ | book = wgPageName.slice(0, i); | ||
+ | } | ||
+ | return book; | ||
+ | } | ||
+ | |||
+ | function insertGoogleSearch() { | ||
+ | if ( wgNamespaceNumber != 0 && wgNamespaceNumber != 102) { // 102 - Cookbook namespace | ||
+ | return; | ||
+ | } | ||
+ | var google = "http://www.google.com/custom?sa=Google+Search&domains=en.wikibooks.org/wiki/PAGE&sitesearch=en.wikibooks.org/wiki/PAGE"; | ||
+ | var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; | ||
+ | var link = document.createElement('a'); | ||
+ | |||
+ | var book = getBookName(); | ||
+ | |||
+ | link.href = google.replace(/PAGE/g, book); | ||
+ | link.appendChild(document.createTextNode("Search this book")); | ||
+ | |||
+ | var li = document.createElement('li'); | ||
+ | li.id = "google-trick-search"; | ||
+ | |||
+ | li.appendChild(link); | ||
+ | tb.insertBefore(li, tb.firstChild); | ||
+ | } | ||
+ | |||
+ | addOnloadHook(insertGoogleSearch); | ||
+ | |||
+ | /* | ||
+ | </pre> | ||
+ | */ |
Revision as of 23:35, 30 October 2006
/* <pre> */ /* tooltips and access keys */ ta = new Object(); ta['pt-userpage'] = new Array('.','My user page'); ta['pt-anonuserpage'] = new Array('.','The user page for the ip you\'re editing as'); ta['pt-mytalk'] = new Array('n','My talk page'); ta['pt-anontalk'] = new Array('n','Discussion about edits from this ip address'); ta['pt-preferences'] = new Array('','My preferences'); ta['pt-watchlist'] = new Array('l','The list of pages you\'re monitoring for changes.'); ta['pt-mycontris'] = new Array('y','List of my contributions'); ta['pt-login'] = new Array('o','You are encouraged to log in, it is not mandatory however.'); ta['pt-anonlogin'] = new Array('o','You are encouraged to log in, it is not mandatory however.'); ta['pt-logout'] = new Array('o','Log out'); ta['ca-talk'] = new Array('t','Discussion about the content page'); ta['ca-edit'] = new Array('e','You can edit this page. Please use the preview button before saving.'); ta['ca-addsection'] = new Array('+','Add a comment to this discussion.'); ta['ca-viewsource'] = new Array('e','This page is protected. You can view its source.'); ta['ca-history'] = new Array('h','Past versions of this page.'); ta['ca-protect'] = new Array('=','Protect this page'); ta['ca-delete'] = new Array('d','Delete this page'); ta['ca-undelete'] = new Array('d','Restore the edits done to this page before it was deleted'); ta['ca-move'] = new Array('m','Move this page'); ta['ca-watch'] = new Array('w','Add this page to your watchlist'); ta['ca-unwatch'] = new Array('w','Remove this page from your watchlist'); ta['search'] = new Array('f','Search this wiki'); ta['p-logo'] = new Array('','Main Page'); ta['n-mainpage'] = new Array('z','Visit the Main Page'); ta['n-portal'] = new Array('','About the project, what you can do, where to find things'); ta['n-currentevents'] = new Array('','Find background information on current events'); ta['n-recentchanges'] = new Array('r','The list of recent changes in the wiki.'); ta['n-randompage'] = new Array('x','Load a random page'); ta['n-help'] = new Array('','The place to find out.'); ta['n-sitesupport'] = new Array('','Support us'); ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here'); ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page'); ta['feed-rss'] = new Array('','RSS feed for this page'); ta['feed-atom'] = new Array('','Atom feed for this page'); ta['t-contributions'] = new Array('','View the list of contributions of this user'); ta['t-emailuser'] = new Array('','Send a mail to this user'); ta['t-upload'] = new Array('u','Upload images or media files'); ta['t-specialpages'] = new Array('q','List of all special pages'); ta['ca-nstab-main'] = new Array('c','View the content page'); ta['ca-nstab-user'] = new Array('c','View the user page'); ta['ca-nstab-media'] = new Array('c','View the media page'); ta['ca-nstab-special'] = new Array('','This is a special page, you can\'t edit the page itself.'); ta['ca-nstab-wp'] = new Array('a','View the project page'); ta['ca-nstab-image'] = new Array('c','View the image page'); ta['ca-nstab-mediawiki'] = new Array('c','View the system message'); ta['ca-nstab-template'] = new Array('c','View the template'); ta['ca-nstab-help'] = new Array('c','View the help page'); ta['ca-nstab-category'] = new Array('c','View the category page'); if (window.showModalDialog && document.compatMode && document.compatMode == "CSS1Compat") { var oldWidth; var docEl = document.documentElement; function fixIEScroll() { if (!oldWidth || docEl.clientWidth > oldWidth) doFixIEScroll(); else setTimeout(doFixIEScroll, 1); oldWidth = docEl.clientWidth; } function doFixIEScroll() { docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : ""; } document.attachEvent("onreadystatechange", fixIEScroll); attachEvent("onresize", fixIEScroll); } function addLoadEvent(func) { if (window.addEventListener) window.addEventListener("load", func, false); else if (window.attachEvent) window.attachEvent("onload", func); } function LinkFA() { // iterate over all <span>-elements for(var i=0; a = document.getElementsByTagName("span")[i]; i++) { // if found a FA span if(a.className == "FA") { // iterate over all <li>-elements for(var j=0; b = document.getElementsByTagName("li")[j]; j++) { // if found a FA link if(b.className == "interwiki-" + a.id) { b.style.padding = "0 0 0 16px"; b.style.backgroundImage = "url('http://upload.wikimedia.org/wikipedia/en/6/60/LinkFA-star.png')"; b.style.backgroundRepeat = "no-repeat"; b.title = "This article has gained featured status"; } } } } } addLoadEvent(LinkFA); // ============================================================ // BEGIN Dynamic Navigation Bars (experimantal) // set up the words in your language var NavigationBarHide = '[ Hide ]'; var NavigationBarShow = '[ Show ]'; // set up max count of Navigation Bars on page, // if there are more, all will be hidden // NavigationBarShowDefault = 0; // all bars will be hidden // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden var NavigationBarShowDefault = 1; // shows and hides content and picture (if available) of navigation bars // Parameters: // indexNavigationBar: the index of navigation bar to be toggled function toggleNavigationBar(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 == NavigationBarHide) { for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if (NavChild.className == 'NavPic') { NavChild.style.display = 'none'; } if (NavChild.className == 'NavContent') { NavChild.style.display = 'none'; } } NavToggle.firstChild.data = NavigationBarShow; // if hidden now } else if (NavToggle.firstChild.data == NavigationBarShow) { for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if (NavChild.className == 'NavPic') { NavChild.style.display = 'block'; } if (NavChild.className == 'NavContent') { NavChild.style.display = 'block'; } } NavToggle.firstChild.data = NavigationBarHide; } } // adds show/hide-button to navigation bars function createNavigationBarToggleButton() { var indexNavigationBar = 0; // iterate over all < div >-elements for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) { // if found a navigation bar if (NavFrame.className == "NavFrame") { indexNavigationBar++; var NavToggle = document.createElement("a"); NavToggle.className = 'NavToggle'; NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar); NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');'); var NavToggleText = document.createTextNode(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].className == "NavHead") { NavFrame.childNodes[j].appendChild(NavToggle); } } NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); } } // if more Navigation Bars found than Default: hide all if (NavigationBarShowDefault < indexNavigationBar) { for( var i=1; i<=indexNavigationBar; i++ ) { toggleNavigationBar(i); } } } addLoadEvent(createNavigationBarToggleButton); // END Dynamic Navigation Bars // ============================================================ var mpTitle = "Main Page"; var isMainPage = (document.title.substr(0, document.title.lastIndexOf(" - ")) == mpTitle); var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1)); if (isMainPage && !isDiff) { document.write('<style type="text/css">/*<![CDATA[*/ #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>'); var mpSmallEnabled; var mpMinWidth = 700; function mainPageTransform() { var mpContentEl = document.getElementById("bodyContent"); var mpBrowseEl = document.getElementById("EnWpMpBrowse"); var mpContainEl = document.getElementById("EnWpMpBrowseContainer"); var mpMarginEl = document.getElementById("EnWpMpMargin"); var mpEl = document.getElementById("EnWpMainPage"); if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl) return; if (!mpSmallEnabled && mpContentEl.offsetWidth < mpMinWidth) { mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild); mpBrowseEl.className = "EnWpMpBrowseBottom"; mpMarginEl.style.marginRight = 0; mpSmallEnabled = true; } else if (mpSmallEnabled && mpContentEl.offsetWidth > mpMinWidth) { mpEl.insertBefore(mpBrowseEl, mpEl.firstChild); mpBrowseEl.className = "EnWpMpBrowseRight"; mpMarginEl.style.marginRight = "13.8em"; mpSmallEnabled = false; } } var onloadFuncts = [ mainPageTransform ]; if (window.addEventListener) window.addEventListener("resize", mainPageTransform, false); else if (window.attachEvent) window.attachEvent("onresize", mainPageTransform); } //Main page tab no longer says article addOnloadHook(mainpg); function mainpg() { var site = location.href; if (site == 'http://en.wikibooks.org/wiki/Main_Page') { if(document.getElementById('ca-nstab-main')) { document.getElementById('ca-nstab-main').firstChild.innerHTML = 'main page'; } } else if(document.title.indexOf("Main Page") != -1) { if(document.getElementById('ca-nstab-main')) { document.getElementById('ca-nstab-main').firstChild.innerHTML = 'main page'; } } } /* add a redirect button to the edit page toolbar */ if (mwCustomEditButtons) { mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png", "speedTip": "Redirect", "tagOpen": "#REDIRECT [[", "tagClose": "]]", "sampleText": "Insert text"}; }; // ================================================== // Book-wide search using Google // from pl.wikibooks, maintainer [[b:pl:User:Piotr]] // ================================================== function getBookName() { var start = 0; var PSEUDONAMESPACE = "Programming:"; if ( wgPageName.slice(0, PSEUDONAMESPACE.length) == PSEUDONAMESPACE ) start = PSEUDONAMESPACE.length; var i = wgPageName.indexOf(':', start); var k = wgPageName.indexOf('/', start); if ( (i != -1 && k < i) || i == -1 ) { if ( k != -1 ) i = k; } var book = wgPageName; if ( i != -1 ) { book = wgPageName.slice(0, i); } return book; } function insertGoogleSearch() { if ( wgNamespaceNumber != 0 && wgNamespaceNumber != 102) { // 102 - Cookbook namespace return; } var google = "http://www.google.com/custom?sa=Google+Search&domains=en.wikibooks.org/wiki/PAGE&sitesearch=en.wikibooks.org/wiki/PAGE"; var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; var link = document.createElement('a'); var book = getBookName(); link.href = google.replace(/PAGE/g, book); link.appendChild(document.createTextNode("Search this book")); var li = document.createElement('li'); li.id = "google-trick-search"; li.appendChild(link); tb.insertBefore(li, tb.firstChild); } addOnloadHook(insertGoogleSearch); /* </pre> */