User:Year2000Prob/Y2P.Wijits.js

Y2P.Wijits = new Object();

Y2P.Wijits.StatusChanger = function(StatusNames) {

try {

var li = document.createElement("li");

li.id = "pt-status";

Y2P.Wijits._StatusNames = StatusNames;

for (var i=0; i

var a = document.createElement("a");

var span = document.createElement("span");

a.onclick = function(e) {

var textbox = document.createElement("input");

textbox.type = "text";

if (e.which == 3) {

a.parentNode.innerHTML = textbox;

textbox.onblur = Y2P.Wijits._SetStatus(i, textbox.value);

} else {

Y2P.Wijits._SetStatus(i, StatusNames[i].defaultText);

};

};

a.appendChild(document.createTextNode(StatusNames[i].defaultText));

span.appendChild(a);

if (i != 0) li.appendChild(document.createTextNode("|"));

li.appendChild(span);

};

document.getElementById("p-personal").appendChild(li);

} catch(e) {

if (Y2P.Debug.Enabled) {

Y2P.Debug.Retry("Y2P Status Changer\nError: " + e, {

onAccept: function() {

Y2P.Wijits.StatusChanger(StatusNames);

}

});

}

};

};

Y2P.Wijits._SetStatus = function(number, text) {

var prelimresp = new XMLHttpRequest();

prelimresp.open("GET", "/index.php?title="+pagename+"&action=submit", false);

var edittime = prelimresp.responseText.match(/\/)[1];

var edittoken = prelimresp.responseText.match(/\/)[1];

var XHR = new XMLHttpRequest();

XHR.open("POST", mw.config.get('wgServer')+mw.config.get('wgScript')+"?title=User:"+wgUserName+"/Status&action=submit", false);

XHR.send("wpEdittime="+edittime+"&wpEditToken="+edittoken+"&wpTextbox1="+escape(Y2P.Wijits._StatusNames[number].templatePre)+escape(text)+escape(Y2P.Wijits._StatusNames[number].templateSuf)+"&wpSummary="+escape(text)+"&wpSection=&wpSave=Save+page");

var headers = {"Content-Type":"application/x-www-form-urlencoded"};

for (header in headers) {

XHR.setRequestHeader(header,headers[header]);

};

};

Y2P.Wijits._CreateStatusType = function() {

var StatusNames = [];

var name = prompt("Enter status name:");

var template = prompt("Enter status template (place \"(statusText)\" in the middle):");

var pre = template.substr(0, "(statusText)");

var suf = template.substr("(statusText)");

StatusNames.push({templatePre:pre,templateSuf:suf,defaultText:name});

if (confirm("Do you want to add another status type?")) {

Y2P.Wijits._createStatusType(StatusNames);

} else {

return StatusNames;

}

};

if (typeof Wijits == "object") {

Wijits.List.push({

name: "Y2P Status Changer",

onEnabled: function() {

Y2P.Wijits.StatusChanger(Y2P.Wijits._CreateStatusType());

},

onDisabled: function() {

if (document.getElementById("pt-status")) document.getElementById("p-personal").removeChild(document.getElementById("pt-status"));

if (Y2P.Wijits._StatusNames) delete Y2P.Wijits._StatusNames;

},

retriveConfigBeforeFullyEnabled: true

});

}