User:Sgeo/monobook.js (toolbox links)

function addlink(name, url) { var na = document.createElement('a'); na.setAttribute('href', '/wiki/' + url); var txt = document.createTextNode(name); na.appendChild(txt); var nli = document.createElement('li'); nli.setAttribute('class', 'p-newlinks'); nli.appendChild(na); return nli; }

function morelinks { var ndivportlet = document.createElement('div'); var ndivpbody = document.createElement('div'); var colone = document.getElementById('column-one'); ndivportlet.setAttribute('class', 'portlet'); ndivportlet.setAttribute('id', 'p-newlinks'); ndivpbody.setAttribute('class', 'pBody'); var nul = document.createElement('ul'); nul.setAttribute('id', 'p-newlinks'); nul.appendChild(addlink('RfA', 'WP:RFA')); nul.appendChild(addlink('VfD', 'WP:VFD')); nul.appendChild(addlink('FAC', 'WP:FAC')); nul.appendChild(addlink('RfC', 'WP:RFC')); nul.appendChild(addlink('RfAr', 'WP:RFAR')); nul.appendChild(addlink('MoS', 'WP:MOS')); nul.appendChild(addlink('ViP', 'WP:VIP')); nul.appendChild(addlink('VP', 'WP:VP'));

var title=document.createElement('h5'); title.appendChild(document.createTextNode('Shortcuts')); ndivportlet.appendChild(title); ndivpbody.appendChild(nul); ndivportlet.appendChild(ndivpbody); colone.appendChild(ndivportlet); }

function do_onload { morelinks; }

if (window.addEventListener) window.addEventListener("load", do_onload, false); else if (window.attachEvent) window.attachEvent("onload", do_onload);

// Milliseconds before fetching results var typePause = 500;

var xmlHttp = (window.XMLHttpRequest) ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"); var searchCache = {}; var searchStr; var searchEl; var searchTimeout; var resultCount; var resultsEl;

function getResults { var encStr = escape(searchStr.replace(/ /g, '_')); xmlHttp.open("GET", "http://en.wikipedia.org/wiki/Special:Search?gen=titlematch&ns0=0&limit=10&search=" + encStr, true); xmlHttp.onreadystatechange = parseResults; xmlHttp.send(null); }

function parseResults { if (xmlHttp.readyState > 3) {   var resultArr = xmlHttp.responseText.replace(/^$/gm, '').split("\n"); searchCache[searchStr.toLowerCase] = resultArr; showResults(resultArr); } }

function showResults(resultArr) { var returnStr = ""; var resultsEl = searchEl.suggestList;

if (resultArr.length < 2) resultsEl.style.display = "none"; else {   resultsEl.innerHTML = "";

for (var i=0; i < resultArr.length-1; i++) {       var linkEl = document.createElement("a"); linkEl.style.display = "block"; linkEl.style.position = "relative"; linkEl.style.textDecoration = "none"; linkEl.style.color = "WindowText"; linkEl.style.padding = "1px 3px"; linkEl.href = "/wiki/" + resultArr[i]; linkEl.onmouseover = function(e) {       var srcEl = e ? e.target : event.srcElement; srcEl.style.backgroundColor = "Highlight"; srcEl.style.color = "HighlightText"; }     linkEl.onmouseout = function(e) {       var srcEl = e ? e.target : event.srcElement; srcEl.style.backgroundColor = "Window"; srcEl.style.color = "WindowText"; }

if (resultsEl.curSel == i)     { linkEl.style.backgroundColor = "Highlight"; linkEl.style.color = "HighlightText"; }

var textEl = document.createTextNode(resultArr[i].replace(/_/g, ' '));

var listItemEl = document.createElement("li"); listItemEl.style.padding = 0; listItemEl.style.margin = 0;

listItemEl.appendChild(linkEl); linkEl.appendChild(textEl); resultsEl.appendChild(listItemEl); }

var offLeft = 0; var offTop = 0; var offEl = searchEl;

for (offEl && offEl != document.documentElement; offEl = offEl.offsetParent) {     offTop += offEl.offsetTop; offLeft += offEl.offsetLeft; }

resultsEl.style.left = offLeft + "px"; resultsEl.style.top = offTop + searchEl.offsetHeight + "px"; resultsEl.style.position = "absolute"; resultsEl.style.display = "block";

searchEl.onblur = function {     setTimeout(function      {        searchEl.suggestList.style.display = "none";        //searchEl.suggestList.parentNode.style.position = "static";      }, 1000); } }

// set width, top, left }

function resultType { if (!searchEl) return;

searchStr = searchEl.value; if (searchTimeout) clearTimeout(searchTimeout);

if (searchStr != "") {   if (searchCache[searchStr.toLowerCase]) showResults(searchCache[searchStr.toLowerCase]) else searchTimeout = setTimeout(getResults, typePause); }   else {   searchEl.suggestList.style.display = "none"; } }

document.onkeyup = function(e) { var srcEl = e ? e.target : event.srcElement;

if (srcEl.tagName.toLowerCase == "input" && srcEl.name == "search" && srcEl.type == "text") {   if (!srcEl.wikiTransform) {     srcEl.autocomplete = "off"; srcEl.wikiTransform = true;

var listEl = document.createElement("ul"); listEl.style.margin = 0; listEl.style.padding = 0; listEl.style.listStyleType = "none"; listEl.style.listStyleImage = "none"; listEl.style.display = "none"; listEl.style.position = "absolute"; listEl.style.border = "1px solid #000"; listEl.style.font = "menu"; listEl.style.color = "WindowText"; listEl.style.whiteSpace = "nowrap"; listEl.style.cursor = "default"; listEl.style.backgroundColor = "window"; listEl.style.zIndex = 500; listEl.curSel = -1;

document.body.appendChild(listEl); //srcEl.parentNode.insertBefore(listEl, srcEl.nextSibling); srcEl.suggestList = listEl; /*var posEl = document.createElement("div"); posEl.style.position = "relative"; posEl.appendChild(srcEl); srcEl.parentNode.replaceChild(posEl, srcEl);*/ }

searchEl = srcEl; resultType; } }

document.onkeydown = function(e) { var srcEl = e ? e.target : event.srcElement; var keyCode = e ? e.charCode : event.keyCode;

if (srcEl.tagName.toLowerCase == "input" && srcEl.name == "search" && srcEl.type == "text") {   switch (keyCode) {     case 40 : // down

var allLinks = srcEl.suggestList.getElementsByTagName("a");

if (srcEl.suggestList.curSel < 0) {         srcEl.suggestList.curSel = 0; allLinks[0].style.backgroundColor = "Highlight"; allLinks[0].style.color = "HighlightText"; break; }       else if (srcEl.suggestList.curSel + 1 < allLinks.length) {         allLinks[srcEl.suggestList.curSel].style.backgroundColor = ""; allLinks[srcEl.suggestList.curSel].style.color = ""; allLinks[++srcEl.suggestList.curSel].style.backgroundColor = "Highlight"; allLinks[srcEl.suggestList.curSel].style.color = "HighlightText"; }

break; case 38 : // up

var allLinks = srcEl.suggestList.getElementsByTagName("a");

if (srcEl.suggestList.curSel < 0) {         srcEl.suggestList.curSel = allLinks.length - 1; allLinks[allLinks.length - 1].style.backgroundColor = "Highlight"; allLinks[allLinks.length - 1].style.color = "HighlightText"; break; }       else if (srcEl.suggestList.curSel - 1 >= 0) {         allLinks[srcEl.suggestList.curSel].style.backgroundColor = ""; allLinks[--srcEl.suggestList.curSel].style.backgroundColor = "Highlight"; allLinks[srcEl.suggestList.curSel].style.color = "HighlightText"; }

break;

case 13 : // return

var allLinks = srcEl.suggestList.getElementsByTagName("a");

if (srcEl.suggestList.curSel > -1) srcEl.value = allLinks[srcEl.suggestList.curSel].firstChild.nodeValue;

case 37 : // left break; case 39 : // right break; } } }