User:Coconut-Freak/AJAX auto refresher.js

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

// ADVANCED AJAX AUTO-REFRESHING ARTICLES

// A possible gadget.

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

ajaxPages = new Array("Special:RecentChanges", "Special:Watchlist", "Special:Log");

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() {

if (skin == "monobook") {

s = 1;

} else {

s = 0;

}

ajaxRCCookie = (getCookie("ajaxload-"+wgPageName)=="on") ? true:false;

document.getElementsByTagName("h1")[0].innerHTML += ' AJAX:';

document.getElementById("ajaxRCtoggle").checked = ajaxRCCookie;

if (getCookie("ajaxload-"+wgPageName)=="on") loadRCData();

}

function toggleRC() {

if (document.getElementById("ajaxRCtoggle").checked == true) {

setCookie("ajaxload-"+wgPageName, "on", 30);

loadRCData();

} else {

setCookie("ajaxload-"+wgPageName, "off", 30);

clearTimeout(rcTimer);

}

}

function loadRCData() {

if (getRCDataRO.readyState == 4 || getRCDataRO.readyState == 0) {

if (location.href.indexOf("/wiki/")) {

rcURL = "http://" + location.hostname + "/wiki/" + wgPageName + location.search;

} else {

rcURL = "http://" + location.hostname + "/" + wgPageName + 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);

}

}

for (x in ajaxPages) {

if (wgPageName == ajaxPages[x]) addOnloadHook(preloadAJAXRC);

}

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

// END OF AJAX AUTO-REFRESH

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