MediaWiki:Common.js

/* Any JavaScript here will be loaded for all users on every page load. */

function fBox { $('#fbox').append(''); }

$(fBox);

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////// // Altering the edit links in section titles to reflect the actual page they're on, and not the template. /////////////////////////////////////////////////////////////////////////////////////////////////////////

function editLinks{ var pageTitle = ""+wgPageName; if (pageTitle.indexOf("User talk:")==-1){ var content = document.getElementById('bodyContent'); var editLinks = content.getElementsByTagName("h2"); changeLinks(editLinks);

editLinks = content.getElementsByTagName("h3"); changeLinks(editLinks, pageTitle); } }

function changeLinks(editLinks,pageTitle){ var pageTitle = ""+wgPageName; for (var i = 0; i < editLinks.length; i++){ var editLink = editLinks[i].childNodes.item(0).childNodes.item(1); if (editLink != null){ var oldLink = editLink.href; var newLink = oldLink.replace("/Appearances_Synopsis", ""); newLink = newLink.replace("Template:Header", pageTitle); newLink = newLink.replace("Template:Comic", pageTitle); newLink = newLink.replace("Template:Header", pageTitle); newLink = newLink.replace("Template:Character", pageTitle); newLink = newLink.replace("&section=T-10", ""); newLink = newLink.replace("&section=T-11", ""); newLink = newLink.replace("&section=T-12", ""); newLink = newLink.replace("&section=T-13", ""); newLink = newLink.replace("&section=T-14", ""); newLink = newLink.replace("&section=T-15", ""); newLink = newLink.replace("&section=T-16", ""); newLink = newLink.replace("&section=T-17", ""); newLink = newLink.replace("&section=T-1", ""); newLink = newLink.replace("&section=T-2", ""); newLink = newLink.replace("&section=T-3", ""); newLink = newLink.replace("&section=T-4", ""); newLink = newLink.replace("&section=T-5", ""); newLink = newLink.replace("&section=T-6", ""); newLink = newLink.replace("&section=T-7", ""); newLink = newLink.replace("&section=T-8", ""); newLink = newLink.replace("&section=T-9", ""); newLink = newLink.replace("_&_", "_%26_"); editLink.href = newLink; editLink.title = pageTitle.replace(/_/g, " "); editLink.title = editLink.title.replace("Comics:", "Edit: "); editLink.title = editLink.title.replace(" Vol 1 ", " #"); //editLink.innerHTML = "Done!"; }	} }

addOnloadHook(editLinks)

/* ////////////////////////////////////////////////////////// // Auto-fill the Blog title with sub page name in the URL //////////////////////////////////////////////////////////

function blogTitle{ if (wgCanonicalSpecialPageName == "CreateBlogPage"){ var sel = document.getElementById('blogPostTitle'); var title = document.getElementById('page_tabs'); var title2 = title.getElementsByTagName('a')[0]; var title3 = title2.href; title3 = title3.toString; var num = title3.indexOf("CreateBlogPage")+15; var title4 = title3.substring(num); if (sel != null & sel.value == ''){ sel.value = title4.replace(/_/g," "); }

var template = "\{\{Review\}\}\<\!--Write Review Below--\>"; var textBlock1 = document.getElementById('wpTextbox1'); if (textBlock1 != null){ textBlock1.value = template; }

} }

addOnloadHook(blogTitle)

function getElementsByClass(searchClass,node,tag) { var classElements = new Array; if ( node == null ) node = document; if ( tag == null ) tag = '*'; var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"); for (i = 0, j = 0; i < elsLen; i++) { if ( pattern.test(els[i].className) ) { classElements[j] = els[i]; j++; }	}	return classElements; }

/* //////////////////////////////////////////////////////////////// // THE BELOW CODE HELPS MAKE THE NAVIGATION TEMPLATE COLLAPSABLE ////////////////////////////////////////////////////////////////

// ============================================================ // BEGIN Dynamic Navigation Bars (experimental) // This script is from Wikipedia. For author attribution, please see http://en.wikipedia.org/w/index.php?title=MediaWiki:Common.js&action=history

/* Test if an element has a certain class ************************************** * * Description: Uses regular expressions and caching for better performance. * Maintainers: User:Mike Dillon, User:R. Koot, User:SG */

var hasClass = (function {    var reCache = {};    return function (element, className) {        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);   }; });

/** Collapsible tables ********************************************************* * *  Description: Allows tables to be collapsed, showing only the header. See *              NavFrame. * Maintainers: User:R. Koot */ var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show"; function collapseTable( tableIndex ) {    var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex ); if ( !Table || !Button ) { return false; }    var Rows = Table.getElementsByTagName( "tr" ); if ( Button.firstChild.data == collapseCaption ) { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = "none"; }        Button.firstChild.data = expandCaption; } else { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; }        Button.firstChild.data = collapseCaption; } } function createCollapseButtons {    var tableIndex = 0; var NavigationBoxes = new Object; var Tables = document.getElementsByTagName( "table" ); for ( var i = 0; i < Tables.length; i++ ) { if ( hasClass( Tables[i], "collapsible" ) ) { NavigationBoxes[ tableIndex ] = Tables[i]; Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); var Button    = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.style.styleFloat = "right"; Button.style.cssFloat = "right"; Button.style.fontWeight = "normal"; Button.style.textAlign = "right"; Button.style.width = "6em"; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0]; /* only add button and increment count if there is a header row to work with */ if (Header) { Header.insertBefore( Button, Header.childNodes[0] ); tableIndex++; }        }     }     for ( var i = 0;  i < tableIndex; i++ ) { if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) { collapseTable( i ); }    } } addOnloadHook( createCollapseButtons );

/** Dynamic Navigation Bars (experimental) ************************************* * *  Description: See NavFrame. * Maintainers: UNMAINTAINED */ // set up the words in your language var NavigationBarHide = '[' + collapseCaption + ']'; var NavigationBarShow = '[' + expandCaption + ']'; // 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 = autoCollapse; // 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 ( hasClass( NavChild, 'NavPic' ) ) { NavChild.style.display = 'none'; }            if ( hasClass( NavChild, '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 (hasClass(NavChild, 'NavPic')) { NavChild.style.display = 'block'; }            if (hasClass(NavChild, 'NavContent')) { NavChild.style.display = 'block'; }        }     NavToggle.firstChild.data = NavigationBarHide; } }  // adds show/hide-button to navigation bars function createNavigationBarToggleButton {    var indexNavigationBar = 0; // iterate over all -elements var divs = document.getElementsByTagName("div"); for(            var i=0;              NavFrame = divs[i];              i++         ) { // if found a navigation bar if (hasClass(NavFrame, "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 (hasClass(NavFrame.childNodes[j], "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); }    }  }   addOnloadHook( createNavigationBarToggleButton );

/* //////////////////////////////////////////////////////////////////// // THE BELOW CODE ADDS CUSTOM BUTTONS TO THE JAVASCRIPT EDIT TOOLBAR ////////////////////////////////////////////////////////////////////

if (mwCustomEditButtons) { mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images.wikia.com/central/images/c/c8/Button_redirect.png", "speedTip": "Redirect", "tagOpen": "#REDIRECT ",    "tagClose": "", "sampleText": "Insert text"}; mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images.wikia.com/marvel_dc/images/3/3e/Small_Button.png", "speedTip": "Small", "tagOpen": " ", "tagClose": " ", "sampleText": "Insert text"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images.wikia.com/central/images/c/c9/Button_strike.png", "speedTip": "Strike", "tagOpen": " ", "tagClose": " ", "sampleText": "Strike-through text"}; mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images.wikia.com/central/images/1/13/Button_enter.png", "speedTip": "Line break", "tagOpen": " ", "tagClose": "", "sampleText": ""};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images.wikia.com/central/images/7/74/Button_comment.png", "speedTip": "Comment visible only for editors", "tagOpen": "", "sampleText": "Insert comment here"}

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images.wikia.com/marveldatabase/images/2/29/Character_Button.png", "speedTip": "Insert character template", "tagOpen": "\{\{Character\r| Image                  = ", "tagClose": "\r| RealName               = \r| CurrentAlias            = \r| Aliases                 = \r| Identity                = \r| Alignment               = \r| Affiliation             = \r| Relatives               = \r| Universe                = \r| BaseOfOperations        = \r\r| Gender                  = \r| Height                  = \r| Weight                  = \r| Eyes                    = \r| Hair                    = \r| UnusualFeatures         = \r\r| Citizenship             = \r| MaritalStatus           = \r| Occupation              = \r| Education               = \r\r| Origin                  = \r| PlaceOfBirth            = \r| Creators                = \r| First                   = \r\r| HistoryText             = \r\r| Powers                  = \r| Abilities               = \r| Strength                = \r| Weaknesses              = \r\r| Equipment               = \r| Transportation          = \r| Weapons                 = \r\r| Notes                   = \r| Trivia                  = \r| Wikipedia               = \r| Links                   = \r\}\}", "sampleText": ""};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images.wikia.com/marveldatabase/images/3/3a/Comic_Button.png", "speedTip": "Insert comic template", "tagOpen": "\{\{Comic\r| Image              = ", "tagClose": "\r| Month              = \r| Year                = \r\r| Editor-in-Chief     = \r| CoverArtist1        = \r\r| Editor1_1           = \r| Writer1_1           = \r| Penciler1_1         = \r| Inker1_1            = \r| Colourist1_1        = \r| Letterer1_1         = \r\r| Quotation           = \r| Speaker             = \r\r| StoryTitle1         = \r| Synopsis1           = \r\r| Appearing1 = \rFeatured Characters:\r* \rSupporting Characters:\r* \rVillains:\r* \rOther Characters:\r* \rLocations:\r* \rItems:\r* \rVehicles:\r* \r\r| Notes               = \r| Trivia              = \r| Recommended         = \r| Links               = \r\}\}", "sampleText": ""} }