User:John254/Addtabs/monobook.js

////////////////////////////////////////////////////////////////

// =-=-=- HELPER FUNCTIONS -=-=-=-

function addlilink(tabs, url, name, id, title, key)

{

//check for duplicates

if (document.getElementById(id)){return;}

//cologne blue bypass

if (document.getElementById('quickbar'))

{

if (document.getElementById('quickbar') && document.getElementById('quickbar').getElementsByTagName('h6')[0])

{

addquickbarlink(url, name, id, title, 'Edit');

}

if (document.getElementById('footer') && !document.getElementById('bodyContent'))

{

addfooterlink(url, name, id, title);

}

return;

}

//monobook

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

na.href = url;

na.appendChild(document.createTextNode(name));

var li = document.createElement('li');

if(id) li.id = id;

li.appendChild(na);

tabs.appendChild(li);

if(id)

{

if(key && title)

{

ta[id] = [key, title];

}

else if(key)

{

ta[id] = [key, ''];

}

else if(title)

{

ta[id] = ['', title];

}

}

// re-render the title and accesskeys from existing code in wikibits.js

akeytt();

return li;

}

function insertAfter(parent, node, referenceNode) {

parent.insertBefore(node, referenceNode.nextSibling);

}

function prependChild(parent, node) {

parent.insertBefore(node, parent.firstChild);

}

function addToolboxLink(url, name, id, key)

{

if (document.getElementById('p-tb'))

{var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0];}

addlilink(tb, url, name, id, key);

}

function addTab(url, name, id, title, key)

{

//monobook

if (document.getElementById('p-cactions'))

{var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];}

//cologneblue

else {

if (document.getElementById('quickbar'))

{var tabs = document.getElementById('quickbar').getElementsByTagName('h6')[2];}

if (document.getElementById('footer'))

{var tabs = document.getElementById('footer').getElementsByTagName('td')[0];}

return addquickbarlink(url, name, id, 'Edit');

}

return addlilink(tabs, url, name, id, title, key);

}

///////////////

//cologneblue tab/link adder

function addquickbarlink(url, name, id, title, header)

{

var header = '

' + header + '
';

var tabs = document.getElementById('quickbar');

if (tabs.innerHTML.indexOf(header) ==-1)

{return;}

var add_html = '' + name + '
';

var section_html = tabs.innerHTML.split(header)[1].split('

')[0];

var next_section = '

' + tabs.innerHTML.split(header)[1].split('
')[1].split('
')[0] + '';

tabs.innerHTML = tabs.innerHTML.split(header)[0] + header + section_html + add_html + next_section + tabs.innerHTML.split(next_section)[1];

}

function addfooterlink(url, name, id, title)

{

var tabs = document.getElementById('footer').getElementsByTagName('td')[1];

var add_html = '' + name + '';

tabs.innerHTML = add_html + ' | ' + tabs.innerHTML;

}

///////////////

function addLink(where, url, name, id, title, key, after){

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

na.href = url;

na.appendChild(document.createTextNode(name));

var li = document.createElement('li');

if(id) li.id = id;

li.appendChild(na);

var tabs = document.getElementById(where).getElementsByTagName('ul')[0];

if(after) {

tabs.insertBefore(li,document.getElementById(after));

} else {

tabs.appendChild(li);

}

if(id) {

if(key && title) { ta[id] = [key, title]; }

else if(key) { ta[id] = [key, '']; }

else if(title) { ta[id] = ['', title];}

}

// re-render the title and accesskeys from existing code in wikibits.js

akeytt();

return li;

}

/////////////////////////////////////////////

/**** Add generic tab ****/

function addlilink_simple(tabs, url, name, id){

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

na.href = url;

na.appendChild(document.createTextNode(name));

var li = document.createElement('li');

li.id = id;

li.appendChild(na);

tabs.appendChild(li);

return li;

}

function addlimenu(tabs, name, id)

{

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

na.href = '#';

var mn = document.createElement('ul');

na.appendChild(document.createTextNode(name));

var li = document.createElement('li');

li.id = id;

li.className = 'tabmenu';

li.appendChild(na);

li.appendChild(mn);

tabs.appendChild(li);

return li;

}

/////////

//These are simplier versions of the above, except they add the links on top, not on botton

function addnavbox_link(URL,Name,ID)

{

//cologne blue bypass

if (document.getElementById('quickbar') && document.getElementById('quickbar').getElementsByTagName('h6')[0])

{

var tabs = document.getElementById('quickbar');

addquickbarlink(URL, Name, ID, Name, 'Browse');

return;

}

//monobook

var portlet = document.getElementById('p-navigation');

var links = portlet.getElementsByTagName('ul')[0];

links.innerHTML += '

  • ' + Name + '
  • ';

    }

    //////////

    function URLEncoding(input)

    {

    var encodedInputString=escape(input);

    encodedInputString=encodedInputString.replace(/\+/g, "%2B");

    encodedInputString=encodedInputString.replace(/\//g,"%2F");

    encodedInputString=encodedInputString.replace(/&/g,"%26");

    var outputurl=encodedInputString;

    return outputurl;

    }

    function toRegExp(what)

    {

    what = what.replace(/\\/g,"\\\\");

    what = what.replace(/\(/g,"\\(").replace(/\)/g,"\\)");

    what = what.replace(/\{/g,"\\{").replace(/\}/g,"\\}");

    what = what.replace(/\[/g,"\\[").replace(/\]/g,"\\]");

    what = what.replace(/\|/g,"\\|");

    what = what.replace(/\./g,"\\.");

    what = what.replace(/\$/g,"\\$");

    what = what.replace(/\+/g,"\\+");

    what = what.replace(/\^/g,"\\^");

    what = what.replace(/\?/g,"\\?");

    what = what.replace(/\*/g,"\\*");

    what = what.replace(/\//g,"\\/");

    return what;

    }