User:Kmccoy/vector.js

var wlUnwatch = new function{ var unWatchLinks = []; var watchMsg = window.wgAjaxWatch ? mw.config.get('wgAjaxWatch').watchMsg : 'Watch'; var unwatchMsg = window.wgAjaxWatch ? mw.config.get('wgAjaxWatch').unwatchMsg : 'Unwatch'; var wlForm; var inProgress = null; var timeoutID = null; this.onLoad = function { //public method if (!(wlForm = document.forms[0]) || !wlForm.namespace) return; var content = document.getElementById('content') || document.getElementById('mw_content') var links = content.getElementsByTagName('a'); for (var i = 0; i < links.length; i++){ //append (x) links after history links if (!links[i].href.match(/[?&]action=history([&#]|$)/)) continue; var unwatch = document.createElement('a'); unwatch.href = mw.config.get('wgServer')+mw.config.get('wgScript')+'?action=unwatch&title='+encodeURIComponent(links[i].title); unwatch.onclick = onClick; unWatchLinks.push(unwatch); var nextEl = links[i].nextSibling.nextSibling; //item after )		nextEl.parentNode.insertBefore(document.createTextNode(' ('), nextEl); nextEl.parentNode.insertBefore(unwatch, nextEl); nextEl.parentNode.insertBefore(document.createTextNode(') '), nextEl);		setUnwatchLink(unwatch, false);	} } function setUnwatchLink (unwatchLink, state) {	unwatchLink.innerHTML = state ? '+' : 'x';	unwatchLink.title = state ? watchMsg : unwatchMsg; } function getPgName (unwatchLink){	return decodeURIComponent(unwatchLink.href.match(/&title=(.+)/)[1]); } function onClick(e) {	if (inProgress) return false;	if (!e) var e = window.event;	if (e.target) var targ = e.target; else if (e.srcElement) var targ = e.srcElement;	inProgress = getPgName(targ);	timeoutID = window.setTimeout(	function {inProgress = null},	10000	); 	//call server	var action = (targ.innerHTML == 'x') ? 'u' : 'w';	sajax_do_call('wfAjaxWatch', [inProgress, action], showResult);	return false; } function showResult (request) {	if (timeoutID) window.clearTimeout(timeoutID);	var response = request.responseText;	if (window.wlUnwatchShowMsg) jsMsg (response.substr(4), 'watch'); var name = inProgress, name2 = name, state, prefix, idx, ns = 0, pg, i, el; inProgress = null; if (response.match(/^/)) state = true else if (response.match(/^/)) state = false else return; //unrecognized response //find the name of "other page" if ((idx = name.indexOf(':')) != -1){ //not main namespace prefix = name.substring(0,idx); name2 = name.substring(idx + 1) for (i=2; i < wlForm.namespace.options.length; i++) if (wlForm.namespace.options[i].text == prefix) ns = i - 1; if (ns == 0) name2 = name; // guess : was a part of the page name }	if (ns % 2)	ns--; else ns++; //switch to "other" namespace if (ns > 0) name2 = wlForm.namespace.options[ns+1].text + ':' + name2; //now mark all pages that are either name or name2 for (i=0; i<unWatchLinks.length; i++) if ((pg = getPgName(unWatchLinks[i])) && (pg==name || pg==name2)) { setUnwatchLink (unWatchLinks[i], state); el = unWatchLinks[i]; //now mark the whole line while ((el=el.previousSibling) && (el.nodeName!='DIV') && (el.nodeName!='BR')) if (el.style) el.style.textDecoration = state ? 'line-through' : ''; } } }//obj if (mw.config.get('wgCanonicalSpecialPageName') && mw.config.get('wgCanonicalSpecialPageName')=='Watchlist' && mw.config.get('wgAction')=='view') { if (doneOnloadHook) wlUnwatch.onLoad; //if imported dynamically else addOnloadHook (wlUnwatch.onLoad) }

document.write('<\/script>'); document.write('<\/link>');