User:Pupster21/monobook.js

/* */

/*

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

// Tabs by Korath (edited by Pupster21)

// returns

  • name
  • /////////////////////////////////////////

    function addlilink(url, name)

    {

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

    na.setAttribute('href', url);

    var txt = document.createTextNode(name);

    na.appendChild(txt);

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

    li.appendChild(na);

    return li;

    }

    // appends msg to the currently-editted page, sets the summary to summ,

    // and marks or unmarks the Watch this page checkbox according to watch.

    function edit_summary_watch(msg, summ, watch)

    {

    var f = document.editform, t = f.wpTextbox1;

    if (t.value.length > 0)

    t.value += '\n';

    t.value += msg;

    f.wpSummary.value = summ;

    f.wpWatchthis.checked = watch;

    }

    if (document.title.indexOf("Editing Wikipedia:Articles for deletion") != -1)

    if(document.title.indexOf("Confirm delete - Delete") != -1)

    if (document.title.indexOf("Editing User talk:") != -1)

    {

    tabs.appendChild(addlilink('javascript:afddelete()', 'AFD', ''));

    }

    if(document.title.indexOf("Editing ") != -1){

    tabs.appendChild(addlilink('javascript:replace()', 'Replace', ''));

    }

    if(document.title.indexOf("Editing Talk:") != -1){

    tabs.appendChild(addlilink('javascript:afdresult()', 'AFDr', ''));

    }

    }

    if (window.addEventListener)

    window.addEventListener("load", add_tabs, false);

    else if (window.attachEvent)

    window.attachEvent("onload", add_tabs);

    • /

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

    // AutoAFD by Korath

    // This needs to change depending on skin used.

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

    function add_link2(url, name)

    {

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

    na.setAttribute('href', url);

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

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

    li.appendChild(na);

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

    tabs.appendChild(li);

    }

    function strip_namespace(target)

    {

    var colon = target.indexOf(':');

    if (colon != -1)

    {

    var spaces = new Array('User', 'Wikipedia', 'Image', 'MediaWiki', 'Template', 'Help', 'Category');

    var ns = target.substring(0, colon);

    if (ns == '' || ns == 'Talk')

    return target.substring(colon + 1);

    else

    for (var i = 0; i < spaces.length; ++i)

    {

    if (ns == spaces[i]

    || ns == spaces[i] + '_talk')

    return target.substring(colon + 1);

    }

    }

    return target;

    }

    function afd()

    {

    document.editform.wpTextbox1.value = '{' + '{' + 'subst:afd}}\n' + document.editform.wpTextbox1.value;

    document.editform.wpSummary.value = 'afd';

    var target = document.editform.action;

    target = target.substring(target.indexOf('title=') + 6,

    target.lastIndexOf('&action=submit'));

    var months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

    var date = new Date();

    date = date.getUTCFullYear() + '_' + months[date.getUTCMonth()] + '_' + date.getUTCDate();

    var pagename = strip_namespace(target);

    window.open('/w/index.php?title=Wikipedia:Articles_for_deletion/' + pagename + '&action=edit&fakeaction=afdsub&faketarget=' + target,

    'Afd ' + unescape(target),

    'status,toolbar,location,menubar,directories,resizeable,scrollbars');

    window.open('/w/index.php?title=Wikipedia:Articles_for_deletion/Log/' + date + '&action=edit&fakeaction=afdlist&faketarget=' + pagename,

    'AfdLog ' + unescape(target),

    'status,toolbar,location,menubar,directories,resizeable,scrollbars');

    }

    function autoafd()

    {

    if (document.title.indexOf('Editing ') == 0)

    {

    var action = '';

    var target = '';

    if (location.search)

    {

    var l = location.search.substring(1).split('&');

    for (var i = 0; i < l.length; ++i)

    {

    var eq = l[i].indexOf('=');

    var name = l[i].substring(0, eq);

    if (name == 'fakeaction')

    action = l[i].substring(eq + 1);

    else if (name == 'faketarget')

    target = unescape(l[i].substring(eq + 1)).replace(/_/g, ' ');

    }

    }

    if (action == 'afdlist')

    {

    document.editform.wpTextbox1.value += '{{' + 'subst:afd3|pg=' + target + '}}\n';

    document.editform.wpSummary.value = 'Wikipedia:Articles for deletion/' + target + '';

    }

    else if (action == 'afdsub')

    {

    if (document.editform.wpTextbox1.value.length > 0)

    {

    target = document.editform.action;

    target = unescape(target.substring(target.indexOf('title=') + 6, target.lastIndexOf('&action=submit'))).replace(/_/g, ' ');

    window.alert("There's an old afd at the default location already.\n\n" +

    'Please either move it out of the way (and update existing links to it), or file the Afd by hand in another location (such as ' + target + ' (2)).');

    }

    else

    document.editform.wpTextbox1.value += '{' + '{' + 'subst:afd2|pg=' + target + '|text=' + '}' + '}' +

    '-- ~' + '~' + '~' + '~\n' +

    '\n*\'\'\' \'\'\'\n*\'\'\' \'\'\'\n*\'\'\' \'\'\'\n';

    }

    else

    add_link2('javascript:afd()', 'Afd');

    }

    }

    if (window.addEventListener)

    window.addEventListener('load', autoafd, false);

    else if (window.attachEvent)

    window.attachEvent('onload', autoafd);

    // Returns

  • name
  • function addlilink(url, name)

    {

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

    na.setAttribute('href', url);

    var txt = document.createTextNode(name);

    na.appendChild(txt);

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

    li.appendChild(na);

    return li;

    }

    // Adds a "blocklog" tab and fills in the username field on Special:Blockip, if a "&faketarget=username" is present.

    function do_blockip_stuff()

    {

    // focus on Reason field

    document.getElementsByName('wpBlockReason')[0].focus();

    // Look for a &faketarget= for the username/ip

    var l = location.search.substring(1).split('&');

    var target = '';

    for (var i = 0; i < l.length; ++i)

    {

    var n = l[i].indexOf('=');

    if (l[i].substring(0, n) == 'faketarget')

    {

    target = l[i].substring(n + 1);

    break;

    }

    }

    if (target == '')

    return;

    // put account name in "IP Address/username" field

    var addr = document.getElementsByName('wpBlockAddress')[0];

    addr.value = unescape(target);

    // add "blocklog" tab

    var c1 = document.getElementById('column-one');

    var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

    tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target, 'blocklog'));

    }

    // Opens the block log in the current window, and Special:Blockip in a popup.

    // Width, height, top, and left are chosen for a 1600x1200 display.

    //function blockpage_and_log(target)

    //{

    // window.open('Special_Blockip.html?foo=blarg&faketarget=' + target, 'Block', 'width=1600,height=600,top=600,left=0');

    // document.location.href = 'http://en.wikipedia.org/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target;

    //}

    // Adds "block" and "blocklog" tabs to User: and User talk: pages.

    function add_block_tab()

    {

    var c1 = document.getElementById('column-one');

    var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

    // use the "edit this page" tab to get already-tidied url

    var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;

    // cut everything up to "title=" from the start and everything past "&action=edit" from the end

    editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit'));

    editlk = editlk.substring(editlk.indexOf(':') + 1);

    var slloc = editlk.indexOf('/');

    if (slloc > 0)

    editlk = editlk.substring(0, slloc);

    // add "block" tab

    tabs.appendChild(addlilink('/w/index.php?title=Special%3ABlockip&faketarget=' + editlk, 'block'));

    // To open the block page and block log simultaneously, replace the above line with:

    // tabs.appendChild(addlilink('javascript:blockpage_and_log("' + editlk + '")', 'Block'));

    // and uncomment the blockpage_and_log() function above.

    // add "blocklog" tab

    tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + editlk, 'blocklog'));

    }

    function do_onload()

    {

    if (document.title.indexOf('User:') == 0

    || document.title.indexOf('User talk:') == 0)

    add_block_tab();

    else if (document.title.indexOf('Block user') == 0) // could stand to be more robust

    do_blockip_stuff();

    }

    //From User:Func

    if (window.addEventListener)

    window.addEventListener("load", do_onload, false);

    else if (window.attachEvent)

    window.attachEvent("onload", do_onload);

    if ( document.createElement && window.addEventListener )

    {

    function SoFixItInit() // pre-load, (don't want to slow down loading of article's content, though)

    {

    }

    function SoFixItLoad() // post-load

    {

    UserMenu = new PortletMenu( 'p-personal' );

    PageMenu = new PortletMenu( 'p-cactions' );

    NavMenu = new PortletMenu( 'p-navigation' );

    //ToolMenu = new PortletMenu( 'p-tb' );

    // This is inefficient and not particularly robust.

    // This comes first, I want this link to come up as

    // fast as possible.

    //

    function GetByClass( sElem, sClass )

    { var i, a2 = [], a = document.getElementsByTagName( sElem );

    for ( i = 0; i < a.length; i++ )

    if ( a[ i ].className == sClass )

    a2.push( a[ i ] );

    return a2;

    }

    var a, td = GetByClass( 'td', 'diff-otitle' );

    if ( ( td = td[ 0 ] ) && ( a = td.getElementsByTagName( 'a' )[ 0 ] ) )

    a.href = a.href + '&action=edit'; // need to change text, later

    var userName = UserMenu.getText( 'pt-userpage' );

    // personal (top-most) menu

    //

    // Func Talk Prefs Watch List Edits Kate Logs #IRC Out

    //

    UserMenu.setText( 'pt-mytalk' , 'Talk' );

    UserMenu.setText( 'pt-preferences', 'Prefs' );

    UserMenu.setText( 'pt-watchlist' , 'Watchlist' );

    UserMenu.setText( 'pt-mycontris' , 'Contribs' );

    UserMenu.setText( 'pt-logout' , 'Log out' );

    //

    UserMenu.setHref( 'pt-mycontris',

    'http://en.wikipedia.org/w/index.php?title=Special:Contributions&target=' +

    userName + '&offset=0&limit=500' );

    //

    //

    // it seems there is a stylesheet that makes them lowercase

    //

    // ok, the lowercased menu items are starting to really bug me:

    //

    document.getElementById( 'p-personal' ).getElementsByTagName( 'ul' )[0].style.textTransform = 'none';

    //

    UserMenu.insertBefore( 'pt-logout' , 'pt-irc' , 'IRC', 'irc://irc.freenode.net/wikipedia-esperanza' );

    UserMenu.insertBefore( 'pt-logs' , 'pt-kate', 'Kate',

    'javascript:void InlineKate( "' + userName + '" )' );

    if(document.getElementById('ca-edit'))

    document.getElementById('ca-edit').firstChild.innerHTML = 'Edit';

    // so I always know what time it is in UTC land:

    //

    UserMenu.append( 'pt-utc', UTCTime(), 'javascript:void UserMenu.setText("pt-utc",UTCTime())' );

    // article-actions menu, (the "tabs")

    //

    if ( PageMenu[ 'ca-history' ] ) // theory: if it has a history tab, then it's purgable

    {

    PageMenu.insertBefore( 'ca-history', 'ca-lastdiff', 'Last diff',

    PageMenu.getHref( 'ca-history' ).replace( /action=history/, 'diff=0' ) );

    PageMenu.append( 'ca-purge', 'Purge',

    PageMenu.getHref( 'ca-history' ).replace( /action=history/, 'action=purge' ) );

    PageMenu.setText( 'ca-edit' , 'Edit' );

    PageMenu.setText( 'ca-history' , 'History' );

    PageMenu.setText( 'ca-delete' , 'Delete' );

    }

    var x = 1;

    NavMenu.append( 'n-' + x++, 'monobook.js', '/wiki/User:' + userName + '/monobook.js' );

    NavMenu.append( 'n-' + x++, 'Vandalism Fighter', 'http://www.csclub.uwaterloo.ca/~dawill03/cdvf/vf.jar' );

    NavMenu.append( 'n-' + x++, 'Snicket WikiCity', 'http://snicket.wikicities.com/wiki/Special:Recentchanges' );

    NavMenu.append( 'n-' + x++, 'AfDs to be closed', 'http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/Old' );

    }

    function PortletMenu( id ) // constructor

    {

    this.menu = document.getElementById( id );

    this.list = this.menu.getElementsByTagName( 'ul' )[ 0 ]; // bypass "

    Views
    ", etc.

    // sigh...as far as I can figure, there is empty whitespace being treated

    // as TextNodes....

    //

    var LIs = this.list.getElementsByTagName( 'li' );

    for ( var i = 0; i < LIs.length; i++ )

    {

    this[ LIs[ i ].id ] = LIs[ i ];

    }

    this.newItem = function( id, txt, url )

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

    var a = document.createElement( 'a' ); a.href = url;

    a.appendChild( document.createTextNode( txt ) );

    li.appendChild( a );

    this[ id ] = li; // watch this!!!

    return li;

    }

    this.append = function( id, txt, url )

    { this.list.appendChild( this.newItem( id, txt, url ) );

    }

    this.insertBefore = function( old, id, txt, url )

    { this.list.insertBefore( this.newItem( id, txt, url ), this[ old ] );

    }

    // the ByTagName here is a bit annoying, but in Safari, I was picking

    // up TextNodes by using this[ id ].firstChild.firstChild

    //

    this.getText = function( id ) { return this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data }

    this.setText = function( id, txt ) { this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data = txt }

    this.getHref = function( id ) { return this[ id ].getElementsByTagName( 'a' )[ 0 ].href }

    this.setHref = function( id, url ) { this[ id ].getElementsByTagName( 'a' )[ 0 ].href = url }

    // I add em as I need em....

    }

    function InlineKate( user )

    {

    var kate =

    'http://kohl.wikimedia.org/~kate/cgi-bin/count_edits?dbname=enwiki&user=' + user;

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

    div.id = 'inlineKateDiv';

    div.style.position = 'absolute';

    div.style.zIndex = 1000;

    div.style.left = '20px';

    div.style.top = '20px';

    div.style.backgroundColor = '#FFFFFF';

    div.style.borderStyle = 'solid';

    div.style.borderWidth = ' medium';

    div.style.borderColor = '#000000';

    var top = document.createElement( 'div' );

    top.id = 'inlineKateTop';

    top.style.textAlign = 'right';

    top.style.margin = '8px';

    top.style.backgroundColor = '#DDDDDD';

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

    a.appendChild( document.createTextNode( "Go to Kate's" ) );

    a.href = kate;

    a.target = '_parent';

    a.style.margin = '8px';

    top.appendChild( a );

    a = document.createElement( 'a' );

    a.appendChild( document.createTextNode( 'Close' ) );

    a.href = "javascript:void RemoveNode('inlineKateDiv')";

    a.style.margin = '8px';

    top.appendChild( a );

    div.appendChild( top );

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

    iframe.id = 'inlineKateBot';

    iframe.style.width = '300px';

    iframe.style.height = '400px';

    iframe.style.margin = '8px';

    iframe.style.borderStyle = 'solid';

    iframe.style.borderWidth = 'thin';

    iframe.style.borderColor = '#000000';

    iframe.src = kate;

    div.appendChild( iframe );

    document.body.appendChild( div );

    }

    function RemoveNode( id )

    { var node = document.getElementById( id )

    node.parentNode.removeChild( node );

    }

    function UTCTime()

    {

    // Get a date stamp for the time in UTC-land.

    //

    // for the future: a format arg

    //

    var s = '',

    d = new Date(),

    a = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ');

    return d.getUTCDate() + ' ' +

    a[ d.getUTCMonth() ] + ' ' +

    d.getUTCFullYear() + ' ' +

    ( '0' + d.getUTCHours() ).substr( -2 ) + ':' +

    ( '0' + d.getUTCMinutes() ).substr( -2 ) + ' ' + 'UTC';

    }

    SoFixItInit();

    window.addEventListener( 'load', SoFixItLoad, false );

    }

    function NUPatrol()

    {

    if ( ( window.location.href.indexOf( 'Special%3ALog&type=newusers' ) == -1 ) &&

    ( window.location.href.indexOf( 'Special:Log/newusers' ) == -1 ) )

    return; // make more robust???

    var items, item, i, links, user, name, talk, contribs, insertLoc, link;

    items = document.getElementById( 'bodyContent' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' );

    function NewLink( txt, url, plainlinks, linkColor )

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

    a.appendChild( document.createTextNode( txt ) );

    a.href = url;

    if ( plainlinks ) a.className = 'plainlinks';

    if ( linkColor )

    { if ( typeof linkColor == "string" )

    a.style.color = linkColor;

    else a.style.color = '#FF0000'; // old default behavior

    }

    return a;

    }

    for ( i = 0; i < items.length; i++ )

    {

    item = items[ i ];

    links = item.getElementsByTagName( 'a' );

    user = links[ 0 ]; name = user.firstChild.nodeValue;

    talk = links[ 2 ]; talk.firstChild.nodeValue = 'talk'; // lowercase 'Talk' for consistency

    contribs = links[ 3 ];

    insertLoc = user.nextSibling; // ' newusers '

    item.insertBefore( document.createTextNode( ' ( ' ), insertLoc );

    item.insertBefore( talk, insertLoc );

    item.insertBefore( document.createTextNode( ', ' ), insertLoc );

    item.insertBefore( contribs, insertLoc );

    item.insertBefore( document.createTextNode( ', ' ), insertLoc );

    item.insertBefore( NewLink( 'actions', '/w/index.php?title=Special%3ALog&user=' + name, true, '#000088' ), insertLoc );

    item.insertBefore( document.createTextNode( ', ' ), insertLoc );

    item.insertBefore( NewLink( 'blocks', '/w/index.php?title=Special%3ALog&type=block&page=User%3A' + name, true, '#008800' ), insertLoc );

    item.insertBefore( document.createTextNode( ', ' ), insertLoc );

    item.insertBefore( NewLink( 'is blocked?', '/wiki/Special:Ipblocklist?action=search&ip=' + name, true, '#888800' ), insertLoc );

    item.insertBefore( document.createTextNode( ', ' ), insertLoc );

    item.insertBefore( NewLink( 'do block!', '/w/index.php?title=Special:Blockip&ip=' + name, true, '#880000' ), insertLoc );

    item.insertBefore( document.createTextNode( ' )' ), insertLoc );

    item.removeChild( insertLoc.nextSibling ); // should remove the span

    item.removeChild( insertLoc ); // should remove ' newusers ' text

    }

    }

    if ( window.addEventListener ) window.addEventListener( 'load', NUPatrol, false );

    else if ( window.attachEvent ) window.attachEvent( 'onload', NUPatrol );

    // appends msg to the currently-editted page, sets the summary to summ,

    // and marks or unmarks the Watch this page checkbox according to watch.

    function edit_summary_watch(msg, summ, watch)

    {

    var f = document.editform, t = f.wpTextbox1;

    if (t.value.length > 0)

    t.value += '\n';

    t.value += msg;

    f.wpSummary.value = summ;

    f.wpWatchthis.checked = watch;

    }

    // appends msg to the currently-editted page, sets the summary to summ,

    // and marks or unmarks the Watch this page checkbox according to watch.

    function add_del_tag(msg, summ, watch)

    {

    var f = document.editform, t = f.wpTextbox1;

    msg += '\n';

    msg += t.value;

    t.value = msg;

    f.wpSummary.value = summ;

    f.wpWatchthis.checked = watch;

    }

    // adds various tabs to call the above

    function add_tabs()

    {

    var c1 = document.getElementById('column-one');

    var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

    // Only add for pages with "Editing User talk:" somewhere in the title

    if (document.title.indexOf("Editing User talk:") != -1)

    {

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:Uw-vandalism1|}} -- ~" + "~" + "~" + "~", "{{" + "Uw-vandalism1}}", true, 1)',"1"));

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:Uw-vandalism2|}} -- ~" + "~" + "~" + "~", "{{" + "Uw-vandalism2}}", true, 1)',"2"));

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:Uw-vandalism3|}} -- ~" + "~" + "~" + "~", "{{" + "Uw-vandalism3}}", true, 1)',"3"));

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:Uw-vandalism4}} -- ~" + "~" + "~" + "~", "{{" + "Uw-vandalism4}}", true, 1)',"4"));

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:test1}} -- ~" + "~" + "~" + "~", "{{" + "test1}}", true, 1)',"test"));

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:blocked}} ~" + "~" + "~" + "~", "{{" + "blocked}}", true, 1)',"blkd"));

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:welcome}} ~" + "~" + "~" + "~", "{{" + "Welcome}}", true, 1)',"welcome"));

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:test2}} ~" + "~" + "~" + "~", "{{" + "Test2}}", true, 1)',"test2"));

    tabs.appendChild(addlilink('javascript:edit_summary_watch("{{" + "subst:uw-upv}} ~" + "~" + "~" + "~", "{{" + "upv}}", true, 1)',"upv"));

    }

    if (document.title.indexOf("Editing User talk:") == -1 && document.title.indexOf("Editing User:") == -1 && document.title.indexOf("Editing Wikipedia:Articles for deletion") == -1 && document.title.indexOf("Editing ") == 0)

    {

    tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "d}}", "{{" + "d}}", true, 1)',"d"));

    tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "db|}}", "{{" + "db}}", true, 1)',"db"));

    tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "nn-bio}}", "{{" + "nn-bio}}", true, 1)',"nn-bio"));

    tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "db|Very short article providing little or no context}}", "{{" + "db|Very short article providing little or no context}}", true, 1)',"nc"));

    tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "db|Short article that serve no purpose but to disparage their subject}}", "{{" + "db|Short article that serve no purpose but to disparage their subject}}", true, 1)',"attack"));

    tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "nonsense}}", "{{" + "nonsense}}", true, 1)',"nonsense"));

    tabs.appendChild(addlilink('javascript:add_del_tag("{{" + "db|a possible hoax}}", "{{" + "hoax}}", true, 1)',"hoax"));

    }

    if(document.title.indexOf("Editing Wikipedia:Articles for deletion") != -1){ // In-progress VfD tabs

    tabs.appendChild(addlilink('javascript:closevfd("Delete", "")', 'D', ''));

    tabs.appendChild(addlilink('javascript:closevfd("Speedy Delete", "")', 'SD', ''));

    tabs.appendChild(addlilink('javascript:closevfd("Keep", "")', 'K', ''));

    tabs.appendChild(addlilink('javascript:closevfd("No consensus", "")', 'NC', ''));

    tabs.appendChild(addlilink('javascript:closevfd("Merge and Redirect", " to " + prompt("Merge and redirect to?") + "")', 'M&R', ''));

    tabs.appendChild(addlilink('javascript:closevfd("Redirect", " to " + prompt("Redirect to?") + "")', 'R', ''));

    // addlilink(tabs, 'javascript:closevfd(prompt("Result?"), "")', 'Oth', '');

    }

    if (document.title.indexOf("Editing") != 0)

    {

    }

    }

    if (window.addEventListener)

    window.addEventListener("load", add_tabs, false);

    else if (window.attachEvent)

    window.attachEvent("onload", add_tabs);

    function closevfd(bold, notbold){

    var form = document.editform;

    var txt = form.wpTextbox1;

    txt.value = "{{subst:at}} " + bold + "" + notbold + ". --~~~~\n" + txt.value + "\n{{subst:ab}}\n";

    form.wpSummary.value = "Close discussion: " + bold + notbold;

    form.wpWatchthis.checked = false;

    }

    //

    // CSD AutoReason

    document.write('');

    importScript("User:Lupin/recent2.js");

    importScript('User:Lupin/autoedit.js'); //User:Lupin/autoedit.js