MediaWiki:Common.js: Difference between revisions

From SCA Lochac
Jump to navigation Jump to search
No edit summary
No edit summary
(106 intermediate revisions by 2 users not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on every page load. */


let ruleBooks = [
var ruleBooks = [
    {
        namespace: "Armoured_Combat",
        label: "Armoured Combat - Fighters' Handbook",
        banner: "https://seneschal.lochac.sca.org/files/2017/12/warfield1.jpg",
        logo: "https://sca.org.nz/wiki/images/f/f4/Fightershandbookcover-al.svg",
        webVersion:
            "/wiki/index.php?title=Armoured_Combat:Handbook",
        pdfVersion:
            "/wiki/index.php?title=Armoured_combat:pdf",
        chapters: [
            ["Classes of Participant and combat",
                "/wiki/index.php?title=Armoured_Combat:Classes_of_Participant_and_Combat"],
            ["Combat Authorisation Requirements",
                "/wiki/index.php?title=Armoured_Combat:Combat_Authorisation_Requirements"],
            ["Rules of the Lists",
                "/wiki/index.php?title=Armoured_Combat:Rules_of_the_Lists"],
            ["Conventions of Combat",
                "/wiki/index.php?title=Armoured_Combat:Conventions_of_Combat"],
            ["The Use of Weapons and Shields",
                "/wiki/index.php?title=Armoured_Combat:The_Use_of_Weapons_and_Shields"],
            ["Target Areas and Acknowledgement of Blows",
                "/wiki/index.php?title=Armoured_Combat:Target_Areas_and_Acknowledgement_of_Blows"],
            ["Armour Requirements",
                "/wiki/index.php?title=Armoured_Combat:Armour_Requirements"],
            ["Melee Weapon Standards",
                "/wiki/index.php?title=Armoured_Combat:Melee_Weapon_Standards"],
            ["Throwing Weapon Standards",
                "/wiki/index.php?title=Armoured_Combat:Throwing_Weapon_Standards"],
            ["Missile Weapon Standards",
                "/wiki/index.php?title=Armoured_Combat:Missile_Weapon_Standards"],
            ["Grievances and Sanctions",
                "/wiki/index.php?title=Armoured_Combat:Grievances_and_Sanctions"],
            ["Procedures for Changes to These Rules",
                "/wiki/index.php?title=Armoured_Combat:Procedures_for_Changes_to_These_Rules"],
            ["Glossary",
                "/wiki/index.php?title=Armoured_Combat:Glossary"],
            ["Change log",
                "/wiki/index.php?title=Armoured_Combat:Change_Log"]
        ]
    },
    {
        namespace: "Armoured_Combat",
        label: "Armoured Combat - Marshals' Handbook",
        banner: "http://seneschal.sca.org.au/files/2017/12/warfield1.jpg",
        logo: "https://sca.org.nz/wiki/images/f/f4/Fightershandbookcover-al.svg",
        webVersion:
            "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Handbook",
        pdfVersion:
            "/wiki/index.php?title=Armoured_combat:Marshals_pdf",
        chapters: [
            ["Introduction",
                "/wiki/index.php?title=Armoured_Combat:Introduction"],
            ["Structure of the Marshallate",
                "/wiki/index.php?title=Armoured_Combat:Structure"],
            ["Authorisation of Marshals",
                "/wiki/index.php?title=Armoured_Combat:Authorisation_Of_Marshals"],
            ["Inspecting Equipment",
                "/wiki/index.php?title=Armoured_Combat:Inspecting_Equipment"],
            ["Marshalling Combat",
                "/wiki/index.php?title=Armoured_Combat:Marshalling_Combat"],
            ["Combat Injury Procedures",
                "/wiki/index.php?title=Armoured_Combat:Combat_Injury_Procedures"],
            ["Experimental Weapons and Materials Procedures",
                "/wiki/index.php?title=Armoured_Combat:Experimental"],
            ["Chain of Command and Procedures for Reporting",
                "/wiki/index.php?title=Armoured_Combat:Chain_Of_Command"],
            ["Sanctions and Appeals",
                "/wiki/index.php?title=Armoured_Combat:Sanctions"],
            ["Changing These Rules",
                "/wiki/index.php?title=Armoured_Combat:Procedures_for_Changes_to_These_Rules"],
            ["Marshals' Handbook Change Log",
                "/wiki/index.php?title=Armoured_Combat:Marshals_Handbook_Change_Log"],
        ]
    },
{
        namespace: "Fencing",
        logo: "https://sca.org.nz/wiki/images/3/34/Rapierhandbook.svg",
        banner: "https://sca.org.nz/wiki/images/b/b9/Rapier_banner.jpg",
        label: "Fencing Combat Handbook",
        webVersion: "https://sca.org.nz/wiki/index.php?title=Fencing:Fencing_Combat_Handbook",
        pdfVersion:
            "/wiki/index.php?title=Fencing:pdf",
        chapters: [
            ["Introduction",
                "/wiki/index.php?title=Fencing:Introduction"], 
            ["Types of fencing",
                "/wiki/index.php?title=Fencing:Types_Of_Fencing"],
            ["Single combat, melee and gunners",
                "/wiki/index.php?title=Fencing:Single_Combat_Melee_and_Gunners"],
            ["When you are allowed to fence",
                "/wiki/index.php?title=Fencing:When_You_Are_Allowed_To_Fence"],
            ["Behaviour on the field",
                "/wiki/index.php?title=Fencing:Behaviour_On_The_Field"],
            ["Using weapons and defensive objects",
                "/wiki/index.php?title=Fencing:Using_Weapons_And_Defensive_Objects"],
            ["Taking blows",
                "/wiki/index.php?title=Fencing:Taking_Blows"],
            ["Protective equipment",
                "/wiki/index.php?title=Fencing:Protective_Equipment"],
            ["Weapons and defensive equipment",
                "/wiki/index.php?title=Fencing:Weapons_And_Defensive_Equipment"],
            ["Types of marshalling",
                "/wiki/index.php?title=Types_Of_Marshalling"],
            ["Supervising combat",
                "/wiki/index.php?title=Fencing:Supervising_Combat"],
            ["Inspections",
                "/wiki/index.php?title=Fencing:Inspections"],
            ["Rules for managing incidents",
                "/wiki/index.php?title=Fencing:Rules_For_Managing_Incidents"],
            ["Authorisation procedures",
                "/wiki/index.php?title=Fencing:Authorisation_Procedures"],
            ["Safety tests",
                "/wiki/index.php?title=Fencing:Safety_Tests"],
            ["Marshals as officers",
                "/wiki/index.php?title=Fencing:Marshals_As_Officers"],
            ["Changing the rules",
                "/wiki/index.php?title=Fencing:Changing_The_Rules"],
            ["Glossary",
                "/wiki/index.php?title=Fencing:Glossary"],
            ["Concussion Recognition Tool",
                "/wiki/index.php?title=Concussion_Recognition_Tool"],
            ["Change log and Notes",
                "/wiki/index.php?title=Fencing:Change_Log_and_Notes"]
            ]
    },
{
        namespace: "Archery",
        logo: "https://sca.org.nz/wiki/images/0/05/ArcheryHandbookCover.svg",
        banner: "https://sca.org.nz/wiki/images/2/21/St-Sebs-Ian-Piddington-3.jpg",
        label: "Target Archery / Thrown Weapons",
        webVersion: "/wiki/index.php?title=Archery:Handbook",
        pdfVersion:
            "/wiki/index.php?title=Archery:pdf",
        chapters: [
            ["Basic Rules",
                "/wiki/index.php?title=Archery:Basic_Rules"],
            ["Equipment standards",
                "/wiki/index.php?title=Archery:Equipment_standards"],
            ["Range safety",
                "/wiki/index.php?title=Archery:Range_safety"],
            ["Officers",
                "/wiki/index.php?title=Archery:Officers"],
            ["Authorising as a Target Archery Marshal",
                "/wiki/index.php?title=Archery:Authorising"]
        ]
    }
];
 
function showToolBox() {
    var toolBox = document.getElementById("p-tb");
    toolBox.style.visibility = "visible";
}
 
var defaultBanner = "https://sca.org.nz/wiki/images/f/f2/Lochac_marshal_banner.svg";
var defaultLogo = "https://sca.org.nz/wiki/images/8/8f/Lochaclarge_320x320.png";
 
function setBannerImage(nameSpace) {
    var namespaceObj = ruleBooks.find(function (obj) { return 'namespace' in obj && obj.namespace === nameSpace });


];
    var banner;
    var logo;
 
    if (namespaceObj === undefined) {
        banner = defaultBanner;
        logo = defaultLogo;
    } else {
        banner = namespaceObj.banner ? namespaceObj.banner : defaultBanner;
        logo = namespaceObj.logo ? namespaceObj.logo : defaultLogo;
    }
    document.getElementById("mw-head-base").style.backgroundImage = "url(\"" + banner + "\")";
    document.getElementById("mw-head-base").style.backgroundRepeat = "no-repeat";
    document.getElementsByClassName("mw-wiki-logo")[0].style.backgroundImage = "url(\"" + logo + "\")";
  // document.getElementsByClassName("mw-wiki-logo")[0].style.backgroundRepeat = "no-repeat";
}


function ModifySidebar( action, section, name, link ) {
function buildSideMenu() {
try {
    currentNamespace = mw.config.get("wgCanonicalNamespace");
switch ( section ) {
    var navigationMenu = document.getElementById("mw-panel");
case 'languages':
var target = 'p-lang';
break;
case 'toolbox':
var target = 'p-tb';
break;
case 'navigation':
var target = 'p-navigation';
break;
default:
var target = 'p-' + section;
break;
}


if ( action == 'add' ) {
    for (var ruleBook in ruleBooks) {
var node = document.getElementById( target )
        var bookObj = ruleBooks[ruleBook];
  .getElementsByTagName( 'div' )[0]
  .getElementsByTagName( 'ul' )[0];


var aNode = document.createElement( 'a' );
        var bookDiv = document.createElement("div");
var liNode = document.createElement( 'li' );
        bookDiv.setAttribute("class", "portal");
        navigationMenu.insertBefore(bookDiv, document.getElementById("p-tb"));


aNode.appendChild( document.createTextNode( name ) );
        var title = document.createElement("h3");
aNode.setAttribute( 'href', link );
liNode.appendChild( aNode );
liNode.className = 'plainlinks';
node.appendChild( liNode );
}


if ( action == 'remove' ) {
        if ("webVersion" in bookObj) {
var list = document.getElementById( target )
            var titleLink = document.createElement("a");
  .getElementsByTagName( 'div' )[0]
            titleLink.setAttribute("href", bookObj.webVersion);
  .getElementsByTagName( 'ul' )[0];
            titleLink.appendChild(document.createTextNode(bookObj.label));
            title.appendChild(titleLink);
        } else {
            title.appendChild(document.createTextNode(bookObj.label));
        }
        bookDiv.appendChild(title);


var listelements = list.getElementsByTagName( 'li' );
        var navBody = document.createElement("div");
        navBody.setAttribute("class", "body");
        bookDiv.appendChild(navBody);


for ( var i = 0; i < listelements.length; i++ ) {
        var entries = document.createElement("ul");
if (
        navBody.appendChild(entries);
listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
listelements[i].getElementsByTagName( 'a' )[0].href == link
)
{
list.removeChild( listelements[i] );
}
}
}


        if (
            bookObj.namespace === mw.config.get("wgCanonicalNamespace") &&
            "chapters" in bookObj
        ) {
            var chapterCount = bookObj.chapters.length;
            for (var i = 0; i < chapterCount; i++) {
                chapter = bookObj.chapters[i];
                var chapterLink = document.createElement("a");
                var chapterNumber = i + 1;
                var chapterTitle = chapterNumber + ". " + chapter[0];
                chapterLink.appendChild(document.createTextNode(chapterTitle));
                chapterLink.setAttribute("href", chapter[1]);
                var li = document.createElement("li");
                li.appendChild(chapterLink);
                entries.appendChild(li);
            }
        }


} catch( e ) {
        if ("pdfVersion" in bookObj) {
// let's just ignore what's happened
            var pdfLink = document.createElement("a");
return;
            pdfLink.appendChild(document.createTextNode("PDF version"));
}
            pdfLink.setAttribute("href", bookObj.pdfVersion);
            var h3 = document.createElement("h3");
            h3.appendChild(pdfLink);
            bookDiv.appendChild(h3);
        }
    }
}
}
function deleteToolBox(){
function markAsDraft() {
     var toolBox = document.getElementById('p-tb');
     var topDiv = document.getElementById("top");
     toolBox.parentNode.removeChild(toolBox);
    var h1 = document.createElement("h1");
}
    h1.style.fontsize = "xx-large";
function showToolBox(){
    h1.style.color = "red";
     var toolBox = document.getElementById('p-tb');
 
     toolBox.style.visibility = "visible";
    h1.appendChild(document.createTextNode("This page is a draft only"));
     topDiv.appendChild(h1);
 
    watermark = document.createElement("div");
    document.getElementById("content").prepend(watermark)
 
    watermark.append("Draft");
 
    watermark.style.zIndex = 0;
    watermark.style.position = "fixed";
    watermark.style.display = "block";
    watermark.style.color = "#eeeeee";
     watermark.style.fontSize = "250px";
    watermark.style.transform = "rotate(310deg)";
    watermark.style.left = "40%";
     watermark.style.fontWeight = "bolder";
 
    document.title = "Draft " + document.title;
 
 
}
}


function CustomizeModificationsOfSidebar() {
function ModifyPage() {
   
     var isLoggedIn;
     var isLoggedIn;


     try {
     try {
         isLoggedIn = wgUserId;
         isLoggedIn = mw.config.get("wgUserId");
         isLoggedIn = true;
         if (isLoggedIn === null) {
     } catch( ReferenceError ){
            isLoggedIn = false;
        } else {
            isLoggedIn = true;
        }
     } catch (ReferenceError) {
         isLoggedIn = false;
         isLoggedIn = false;
     }  
     }
 
    var isDraft;
    var nameSpace = mw.config.get("wgCanonicalNamespace");


    try {
        if (nameSpace.toLowerCase().search("draft") === -1) {
            isDraft = false;
        } else {
            isDraft = true;
        }
    } catch (Exception) {
        isDraft = false;
    }


     if( !isLoggedIn ){
     if (isLoggedIn) {
        deleteToolBox();
    } else {
         showToolBox();
         showToolBox();
     }
     }
    buildSideMenu();
    if (isDraft) {
        markAsDraft();
    }
    setBannerImage(nameSpace);
}
}


jQuery( CustomizeModificationsOfSidebar );
jQuery(ModifyPage);

Revision as of 08:58, 11 May 2024

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

var ruleBooks = [
    {
        namespace: "Armoured_Combat",
        label: "Armoured Combat - Fighters' Handbook",
        banner: "https://seneschal.lochac.sca.org/files/2017/12/warfield1.jpg",
        logo: "https://sca.org.nz/wiki/images/f/f4/Fightershandbookcover-al.svg",
        webVersion:
            "/wiki/index.php?title=Armoured_Combat:Handbook",
        pdfVersion:
            "/wiki/index.php?title=Armoured_combat:pdf",
        chapters: [
            ["Classes of Participant and combat",
                "/wiki/index.php?title=Armoured_Combat:Classes_of_Participant_and_Combat"],
            ["Combat Authorisation Requirements",
                "/wiki/index.php?title=Armoured_Combat:Combat_Authorisation_Requirements"],
            ["Rules of the Lists",
                "/wiki/index.php?title=Armoured_Combat:Rules_of_the_Lists"],
            ["Conventions of Combat",
                "/wiki/index.php?title=Armoured_Combat:Conventions_of_Combat"],
            ["The Use of Weapons and Shields",
                "/wiki/index.php?title=Armoured_Combat:The_Use_of_Weapons_and_Shields"],
            ["Target Areas and Acknowledgement of Blows",
                "/wiki/index.php?title=Armoured_Combat:Target_Areas_and_Acknowledgement_of_Blows"],
            ["Armour Requirements",
                "/wiki/index.php?title=Armoured_Combat:Armour_Requirements"],
            ["Melee Weapon Standards",
                "/wiki/index.php?title=Armoured_Combat:Melee_Weapon_Standards"],
            ["Throwing Weapon Standards",
                "/wiki/index.php?title=Armoured_Combat:Throwing_Weapon_Standards"],
            ["Missile Weapon Standards",
                "/wiki/index.php?title=Armoured_Combat:Missile_Weapon_Standards"],
            ["Grievances and Sanctions",
                "/wiki/index.php?title=Armoured_Combat:Grievances_and_Sanctions"],
            ["Procedures for Changes to These Rules",
                "/wiki/index.php?title=Armoured_Combat:Procedures_for_Changes_to_These_Rules"],
            ["Glossary",
                "/wiki/index.php?title=Armoured_Combat:Glossary"],
            ["Change log",
                "/wiki/index.php?title=Armoured_Combat:Change_Log"]
        ]
    },
    {
        namespace: "Armoured_Combat",
        label: "Armoured Combat - Marshals' Handbook",
        banner: "http://seneschal.sca.org.au/files/2017/12/warfield1.jpg",
        logo: "https://sca.org.nz/wiki/images/f/f4/Fightershandbookcover-al.svg",
        webVersion:
            "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Handbook",
        pdfVersion:
            "/wiki/index.php?title=Armoured_combat:Marshals_pdf",
        chapters: [
            ["Introduction",
                "/wiki/index.php?title=Armoured_Combat:Introduction"],
            ["Structure of the Marshallate",
                "/wiki/index.php?title=Armoured_Combat:Structure"],
            ["Authorisation of Marshals",
                "/wiki/index.php?title=Armoured_Combat:Authorisation_Of_Marshals"],
            ["Inspecting Equipment",
                "/wiki/index.php?title=Armoured_Combat:Inspecting_Equipment"],
            ["Marshalling Combat",
                "/wiki/index.php?title=Armoured_Combat:Marshalling_Combat"],
            ["Combat Injury Procedures",
                "/wiki/index.php?title=Armoured_Combat:Combat_Injury_Procedures"],
            ["Experimental Weapons and Materials Procedures",
                "/wiki/index.php?title=Armoured_Combat:Experimental"],
            ["Chain of Command and Procedures for Reporting",
                "/wiki/index.php?title=Armoured_Combat:Chain_Of_Command"],
            ["Sanctions and Appeals",
                "/wiki/index.php?title=Armoured_Combat:Sanctions"],
            ["Changing These Rules",
                "/wiki/index.php?title=Armoured_Combat:Procedures_for_Changes_to_These_Rules"],
            ["Marshals' Handbook Change Log",
                "/wiki/index.php?title=Armoured_Combat:Marshals_Handbook_Change_Log"],
        ]
    },
 {
        namespace: "Fencing",
        logo: "https://sca.org.nz/wiki/images/3/34/Rapierhandbook.svg",
        banner: "https://sca.org.nz/wiki/images/b/b9/Rapier_banner.jpg",
        label: "Fencing Combat Handbook",
        webVersion: "https://sca.org.nz/wiki/index.php?title=Fencing:Fencing_Combat_Handbook",
        pdfVersion:
            "/wiki/index.php?title=Fencing:pdf",
        chapters: [
            ["Introduction",
                "/wiki/index.php?title=Fencing:Introduction"],   
            ["Types of fencing",
                "/wiki/index.php?title=Fencing:Types_Of_Fencing"],
            ["Single combat, melee and gunners",
                "/wiki/index.php?title=Fencing:Single_Combat_Melee_and_Gunners"],
            ["When you are allowed to fence",
                "/wiki/index.php?title=Fencing:When_You_Are_Allowed_To_Fence"],
            ["Behaviour on the field",
                "/wiki/index.php?title=Fencing:Behaviour_On_The_Field"],
            ["Using weapons and defensive objects",
                "/wiki/index.php?title=Fencing:Using_Weapons_And_Defensive_Objects"],
            ["Taking blows",
                "/wiki/index.php?title=Fencing:Taking_Blows"],
            ["Protective equipment",
                "/wiki/index.php?title=Fencing:Protective_Equipment"],
            ["Weapons and defensive equipment",
                "/wiki/index.php?title=Fencing:Weapons_And_Defensive_Equipment"],
            ["Types of marshalling",
                "/wiki/index.php?title=Types_Of_Marshalling"],
            ["Supervising combat",
                "/wiki/index.php?title=Fencing:Supervising_Combat"],
            ["Inspections",
                "/wiki/index.php?title=Fencing:Inspections"],
            ["Rules for managing incidents",
                "/wiki/index.php?title=Fencing:Rules_For_Managing_Incidents"],
            ["Authorisation procedures",
                "/wiki/index.php?title=Fencing:Authorisation_Procedures"],
            ["Safety tests",
                "/wiki/index.php?title=Fencing:Safety_Tests"],
            ["Marshals as officers",
                "/wiki/index.php?title=Fencing:Marshals_As_Officers"],
            ["Changing the rules",
                "/wiki/index.php?title=Fencing:Changing_The_Rules"],
            ["Glossary",
                "/wiki/index.php?title=Fencing:Glossary"],
            ["Concussion Recognition Tool",
                "/wiki/index.php?title=Concussion_Recognition_Tool"],
            ["Change log and Notes",
                "/wiki/index.php?title=Fencing:Change_Log_and_Notes"]
            ]
    },
{
        namespace: "Archery",
        logo: "https://sca.org.nz/wiki/images/0/05/ArcheryHandbookCover.svg",
        banner: "https://sca.org.nz/wiki/images/2/21/St-Sebs-Ian-Piddington-3.jpg",
        label: "Target Archery / Thrown Weapons",
        webVersion: "/wiki/index.php?title=Archery:Handbook",
        pdfVersion:
            "/wiki/index.php?title=Archery:pdf",
        chapters: [
            ["Basic Rules",
                "/wiki/index.php?title=Archery:Basic_Rules"],
            ["Equipment standards",
                "/wiki/index.php?title=Archery:Equipment_standards"],
            ["Range safety",
                "/wiki/index.php?title=Archery:Range_safety"],
            ["Officers",
                "/wiki/index.php?title=Archery:Officers"],
            ["Authorising as a Target Archery Marshal",
                "/wiki/index.php?title=Archery:Authorising"]
        ]
    }
];

function showToolBox() {
    var toolBox = document.getElementById("p-tb");
    toolBox.style.visibility = "visible";
}

var defaultBanner = "https://sca.org.nz/wiki/images/f/f2/Lochac_marshal_banner.svg";
var defaultLogo = "https://sca.org.nz/wiki/images/8/8f/Lochaclarge_320x320.png";

function setBannerImage(nameSpace) {
    var namespaceObj = ruleBooks.find(function (obj) { return 'namespace' in obj && obj.namespace === nameSpace });

    var banner;
    var logo;

    if (namespaceObj === undefined) {
        banner = defaultBanner;
        logo = defaultLogo;
    } else {
        banner = namespaceObj.banner ? namespaceObj.banner : defaultBanner;
        logo = namespaceObj.logo ? namespaceObj.logo : defaultLogo;
    }
    document.getElementById("mw-head-base").style.backgroundImage = "url(\"" + banner + "\")";
    document.getElementById("mw-head-base").style.backgroundRepeat = "no-repeat";
    document.getElementsByClassName("mw-wiki-logo")[0].style.backgroundImage = "url(\"" + logo + "\")";
   // document.getElementsByClassName("mw-wiki-logo")[0].style.backgroundRepeat = "no-repeat";
}

function buildSideMenu() {
    currentNamespace = mw.config.get("wgCanonicalNamespace");
    var navigationMenu = document.getElementById("mw-panel");

    for (var ruleBook in ruleBooks) {
        var bookObj = ruleBooks[ruleBook];

        var bookDiv = document.createElement("div");
        bookDiv.setAttribute("class", "portal");
        navigationMenu.insertBefore(bookDiv, document.getElementById("p-tb"));

        var title = document.createElement("h3");

        if ("webVersion" in bookObj) {
            var titleLink = document.createElement("a");
            titleLink.setAttribute("href", bookObj.webVersion);
            titleLink.appendChild(document.createTextNode(bookObj.label));
            title.appendChild(titleLink);
        } else {
            title.appendChild(document.createTextNode(bookObj.label));
        }
        bookDiv.appendChild(title);

        var navBody = document.createElement("div");
        navBody.setAttribute("class", "body");
        bookDiv.appendChild(navBody);

        var entries = document.createElement("ul");
        navBody.appendChild(entries);

        if (
            bookObj.namespace === mw.config.get("wgCanonicalNamespace") &&
            "chapters" in bookObj
        ) {
            var chapterCount = bookObj.chapters.length;
            for (var i = 0; i < chapterCount; i++) {
                chapter = bookObj.chapters[i];
                var chapterLink = document.createElement("a");
                var chapterNumber = i + 1;
                var chapterTitle = chapterNumber + ". " + chapter[0];
                chapterLink.appendChild(document.createTextNode(chapterTitle));
                chapterLink.setAttribute("href", chapter[1]);
                var li = document.createElement("li");
                li.appendChild(chapterLink);
                entries.appendChild(li);
            }
        }

        if ("pdfVersion" in bookObj) {
            var pdfLink = document.createElement("a");
            pdfLink.appendChild(document.createTextNode("PDF version"));
            pdfLink.setAttribute("href", bookObj.pdfVersion);
            var h3 = document.createElement("h3");
            h3.appendChild(pdfLink);
            bookDiv.appendChild(h3);
        }
    }
}
function markAsDraft() {
    var topDiv = document.getElementById("top");
    var h1 = document.createElement("h1");
    h1.style.fontsize = "xx-large";
    h1.style.color = "red";

    h1.appendChild(document.createTextNode("This page is a draft only"));
    topDiv.appendChild(h1);

    watermark = document.createElement("div");
    document.getElementById("content").prepend(watermark)

    watermark.append("Draft");

    watermark.style.zIndex = 0;
    watermark.style.position = "fixed";
    watermark.style.display = "block";
    watermark.style.color = "#eeeeee";
    watermark.style.fontSize = "250px";
    watermark.style.transform = "rotate(310deg)";
    watermark.style.left = "40%";
    watermark.style.fontWeight = "bolder";

    document.title = "Draft " + document.title;


}

function ModifyPage() {
    var isLoggedIn;

    try {
        isLoggedIn = mw.config.get("wgUserId");
        if (isLoggedIn === null) {
            isLoggedIn = false;
        } else {
            isLoggedIn = true;
        }
    } catch (ReferenceError) {
        isLoggedIn = false;
    }

    var isDraft;
    var nameSpace = mw.config.get("wgCanonicalNamespace");

    try {
        if (nameSpace.toLowerCase().search("draft") === -1) {
            isDraft = false;
        } else {
            isDraft = true;
        }
    } catch (Exception) {
        isDraft = false;
    }

    if (isLoggedIn) {
        showToolBox();
    }
    buildSideMenu();

    if (isDraft) {
        markAsDraft();
    }
    setBannerImage(nameSpace);
}

jQuery(ModifyPage);