MediaWiki:WikiProject User scripts/Scripts/Multi-NS search.js

// Adds a drop-down menu to the search box to choose the namespace to search in.

$(function () {

var searchGoButton = document.getElementById('searchGoButton');

if (!searchGoButton) return;

var searchNsHidden = document.createElement('input');

searchNsHidden.id = 'searchNsHidden';

searchNsHidden.type = 'hidden';

searchNsHidden.name = 'ns0';

searchNsHidden.value = '1';

var searchNsMenu = document.createElement('select');

searchNsMenu.id = 'searchNsMenu';

searchNsMenu.name = 'ns';

searchNsMenu.options[searchNsMenu.options.length] = new Option('(Main)', 0);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Talk', 1);

searchNsMenu.options[searchNsMenu.options.length] = new Option('User', 2);

searchNsMenu.options[searchNsMenu.options.length] = new Option('User talk', 3);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Wikipedia', 4);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Wikipedia talk', 5);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Image', 6);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Image talk', 7);

searchNsMenu.options[searchNsMenu.options.length] = new Option('MediaWiki', 8);

searchNsMenu.options[searchNsMenu.options.length] = new Option('MediaWiki talk', 9);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Template', 10);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Template talk', 11);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Help', 12);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Help talk', 13);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Category', 14);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Category talk', 15);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Portal', 100);

searchNsMenu.options[searchNsMenu.options.length] = new Option('Portal talk', 101);

searchNsMenu.onchange = function () {

searchNsHidden.name = 'ns' + (this.selectedIndex < 0 ? '0' :

this.options[this.selectedIndex].value);

};

// From /w/skins/MonoBook/main.css?5:

searchNsMenu.style.width = '10.9em';

searchNsMenu.style.margin = '0';

searchNsMenu.style.fontSize = '95%';

searchGoButton.parentNode.insertBefore(searchNsHidden, searchGoButton);

searchGoButton.parentNode.insertBefore(searchNsMenu, searchGoButton);

});