User:ScatheMote/Sandbox

// Code courtesy of pcj of WoWWiki. // This is a modified version of the WoWWiki site version, in that it is designed for global.js use.

// Code adds a checkbox at the top of the Special:RecentChanges list, next to the header. // Ticking it sets a cookie (should be individual to wikis) and starts updating the RC list. // This occurs silently every 60 seconds without a full page reload occuring.

function setCookie(c_name,value,expiredays) { var exdate=new Date exdate.setDate(exdate.getDate+expiredays) document.cookie=c_name+ "=" +escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString) }

function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" }

function getXmlHttpRequestObject { if (window.XMLHttpRequest) { return new XMLHttpRequest; //Not Internet Explorer } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer } else { //fail silently } } getRCDataRO = getXmlHttpRequestObject; var cr = new RegExp("\r", "gm"); var lf = new RegExp("\n", "gm"); var endText = new RegExp(' [\t\s]*?[\t\s]*? ', "mi"); var rcTimer; var rcRefresh = 60000; function preloadAJAXRC { s = 0; ajaxRCCookie = getCookie("ajaxRC")=="on" ? true:false; document.getElementsByTagName("h1")[s].innerHTML += ' Auto-Refresh: '; document.getElementById("ajaxRCtoggle").checked = ajaxRCCookie; if (getCookie("ajaxRC")=="on") loadRCData; }

function toggleRC { if (document.getElementById("ajaxRCtoggle").checked == true) { setCookie("ajaxRC", "on", 30); loadRCData; } else { setCookie("ajaxRC", "off", 30); clearTimeout(rcTimer); } }

function loadRCData { if (getRCDataRO.readyState == 4 || getRCDataRO.readyState == 0) { if (location.href.indexOf("/wiki/")) { rcURL = "http://" + location.hostname + "/wiki/Special:RecentChanges" + location.search; } else { rcURL = "http://" + location.hostname + "/Special:RecentChanges" + location.search; } getRCDataRO.open("GET", rcURL, true); getRCDataRO.onreadystatechange = parseRCdata; getRCDataRO.send(null); } }

function parseRCdata { if (getRCDataRO.readyState == 4) { textFilter = new RegExp(' .*? [\t\s]*?[\t\s]*? ', "i"); rawRCdata = getRCDataRO.responseText.replace(cr, "").replace(lf, ""); filteredRCdata = textFilter.exec(rawRCdata); updatedText = filteredRCdata[0].replace(' ', "").replace(endText, ""); document.getElementById("bodyContent").innerHTML = updatedText; rcTimer = setTimeout("loadRCData;", rcRefresh); } }

if (wgPageName == "Special:RecentChanges") addOnloadHook(preloadAJAXRC);

// Credits go to the Transformers Wiki http://transformers.wikia.com/ for this function if ( skin == 'monobook' ) { function loadsearchstuff { // If you're reading this, I'm sorry. Messy code lies ahead.

if (document.implementation && document.implementation.createDocument) xmlDoc=document.implementation.createDocument("","",null); else xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

xmlDoc.async=false; xmlDoc.load("/index.php?title=Template:Searchicons&action=raw");

// Establishing the various fragments of the search box. var randindex = Math.floor(Math.random*xmlDoc.getElementsByTagName("item").length); var searchicon = ""; var searchbox = document.getElementById('searchBody');

// Throwing all the various fragments together. var searchfieldentry = document.getElementById('searchInput').value; searchbox.innerHTML = searchicon + searchbox.innerHTML; document.getElementById('searchInput').value = searchfieldentry;

// Finally, removing the redundant "search" title at the top. searchbox.parentNode.removeChild(searchbox.parentNode.getElementsByTagName("h5")[0]);

// Sets focus on the search bar ... // document.getElementById('searchInput').focus; }

addOnloadHook(loadsearchstuff); }