new function()
{
var settings, isJsPage = wgPageName.slice(-3) == ".js";
try{ settings = Gerbrant.mng.decache; }catch(nosettings){}
if(!settings) settings = {};
if(!settings.onAllPages && !isJsPage) return;
var pathPrefix = "http://en.wikipedia.org/w/index.php?title=User:";
var pathPostfix = ".js&action=raw&ctype=text/javascript&dontcountme=s";
var interPrefix1 = "http://";
var interPrefix2 = ".wikipedia.org/w/index.php?title=User:";
var globalScope = window;
var frameworkObject = Gerbrant.fw;
// -------------------------
var self = this;
var myWin = null, ul, thisJs;
var jss = {}, chk = {}, i, fwLoad;
if(isJsPage && wgPageName.slice(0, 5) == "User:")
{
thisJs = wgPageName.slice(5, -3).replace(/\//g, ".");
jss[thisJs] = chk[thisJs] = true;
}
jss[wgUserName + ".monobook"] = true;
fwLoad = frameworkObject.load;
if(fwLoad) for(i in fwLoad) jss[fwLoad[i]] = true;
var decacheLink = document.createElement("A");
decacheLink.innerHTML = "Remove selected items from cache.";
function modulePath(moduleName)
{
var p = moduleName.indexOf(":"), inter;
if(p == -1)
p = pathPrefix;
else
{
inter = moduleName.slice(0, p);
moduleName = moduleName.slice(p + 1);
p = interPrefix1 + inter + interPrefix2;
}
return p + moduleName.replace(/\./g, "/") + pathPostfix;
}
function updateLink()
{
var buffer = [], i;
for(i in chk) buffer.push(modulePath(i));
if(buffer.length) i = "gerbrant-decache:" + buffer.join("#");
else i = "#";
decacheLink.href = i;
}
function tieCbToJs(cb, js)
{
cb.onclick = function()
{
if(cb.checked) chk[js] = true;
else delete chk[js];
updateLink();
}
}
function dumpJS(ul, js)
{
var cb = document.createElement("INPUT");
cb.type = "CHECKBOX";
cb.checked = cb.defaultChecked = !!chk[js];
tieCbToJs(cb, js);
var t = document.createTextNode(js);
var li = document.createElement("LI");
li.appendChild(cb);
li.appendChild(t);
ul.appendChild(li);
}
function refreshWindow()
{
var i;
ul.innerHTML = "";
for(i in jss) dumpJS(ul, i);
updateLink();
}
var oldLM = frameworkObject.loadModule;
var newLM = function(moduleName, callback)
{
if(!jss[moduleName])
jss[moduleName] = true;
if(myWin != null) refreshWindow();
oldLM(moduleName, callback);
}
frameworkObject.loadModule = newLM;
globalScope.loadModule = newLM;
this.show = function()
{
if(myWin == null)
{
myWin = new Gerbrant.gui.window("Decache");
ul = document.createElement("UL");
var div = myWin.getContent();
div.appendChild(ul);
div.appendChild(decacheLink);
}
refreshWindow();
}
this.caption = "Decache";
loadModules(["Gerbrant.gui.window", "Gerbrant.gui.toolbox"], function()
{
module("Gerbrant.mng.decache", self);
if(!settings.notInToolbox) Gerbrant.gui.toolbox.addObject(self);
});
}