User:Spang/autowatch.js

/* Allows you to watch/unwatch a page without leaving it. */

function getXmlHttpObject { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest; } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }   catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }     catch (e) { xmlHttp = false; }   }  }  return xmlHttp; }

function changeTab { if (xmlHttp.readyState != 2) return; if (watchAction == 'watch') { watchLink.innerHTML = 'unwatch'; watchAction = 'unwatch'; } else if (watchAction == 'unwatch') { watchLink.innerHTML = 'watch'; watchAction = 'watch'; } }

function setWatch(action) { xmlHttp = getXmlHttpObject; if (xmlHttp == false) return; xmlHttp.onreadystatechange = changeTab; xmlHttp.open('GET', mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + wgPageName + '&action=' + action, true); xmlHttp.send(null); }

function setWatchTab { if (document.getElementById('ca-watch') || document.getElementById('ca-unwatch')) { if (document.getElementById('ca-watch')) { watchLink = document.getElementById('ca-watch').getElementsByTagName('a')[0]; watchAction = 'watch'; } else if (document.getElementById('ca-unwatch')) { watchLink = document.getElementById('ca-unwatch').getElementsByTagName('a')[0]; watchAction = 'unwatch'; }     watchUrl = watchLink.href watchLink.href = 'javascript:setWatch(watchAction);'; } } addOnloadHook(setWatchTab);