User:Saruoh/monobook.js

// This javascript prevents carelessly submission (hitting Enter at summary field).

// To enable, copy and paste this script to a subpage of your user page.

// 2004-07-30: New feature: Replace Fullwidth comma (U+FF0C) to Ideographic comma (U+3001)

// and Fullwidth full stop (U+FF0E) to Ideographic full stop (U+3002)

// If you don't need this feature, use the past version.

// This script is under public domain, and comes with ABSOLUTELY NO WARRANTY.

// You can use/modify/redistribute without any permission.

var submitchecker_buttonclicked = false;

var confirm_prompt = "Textarea contains “\uFF0C”(U+FF0C) and/or “\uFF0E”(U+FF0E).\nReplace them?";

var confirm_result = null;

function install_submitchecker() {

var f = document.getElementById("editform");

if(f) {

var inputs = f.getElementsByTagName("input");

for(var i = 0; i < inputs.length; ++i)

if(inputs[i].type == "submit")

inputs[i].onclick = submitchecker_nocheck;

f.onsubmit = submitchecker;

}

}

function submitchecker() {

var edit = document.getElementById("editform").getElementsByTagName("textarea")[0];

if(edit && /[\uFF0C\uFF0E]/.test(edit.value)) {

var r;

if(window.execScript) {

window.execScript(

"confirm_result = MsgBox(confirm_prompt,vbYesNoCancel)",

"VBScript");

if(confirm_result == 2) return false;

r = (confirm_result == 6);

} else {

r = prompt(confirm_prompt, "yes");

if(!r) return false;

r = /^[yY]/.test(r);

}

if(r) {

edit.value = edit.value.replace(/\uFF0C/g, '\u3001').replace(/\uFF0E/g, '\u3002');

}

}

if(submitchecker_buttonclicked) return true;

return confirm("Are you sure you want to submit your changes?");

}

function submitchecker_nocheck(e) {

if(e && e.target) {

var name = e.target.name;

if(name != "wpSave" && name != "wpPreview") return true;

}

submitchecker_buttonclicked = true;

return true;

}

if(window.attachEvent) window.attachEvent("onload", install_submitchecker);

else if(window.addEventListener) window.addEventListener("load", install_submitchecker, false);

// restore helper

function install_restore_helper() {

var e, t, p, b;

if(!(e = document.getElementById('undelete'))) return;

if(!(t = e.getElementsByTagName('h2')[1])) return;

p = document.createElement('p');

b = document.createElement('button');

b.setAttribute('type', 'button');

b.onclick = restore_select_all;

b.appendChild(document.createTextNode('Check all'));

p.appendChild(b);

p.appendChild(document.createTextNode(' '));

b = document.createElement('button');

b.setAttribute('type', 'button');

b.onclick = restore_select_reverse;

b.appendChild(document.createTextNode('Reverse checks'));

p.appendChild(b);

e.insertBefore(p, t.nextSibling);

}

function restore_select_all() {

var e, i;

if(!(e = document.getElementById('undelete'))) return;

e = e.getElementsByTagName('input');

for(i = 0; i < e.length; ++i)

if(e[i].type == 'checkbox') e[i].checked = true;

return false;

}

function restore_select_reverse() {

var e, i;

if(!(e = document.getElementById('undelete'))) return;

e = e.getElementsByTagName('input');

for(i = 0; i < e.length; ++i)

if(e[i].type == 'checkbox') e[i].checked = !e[i].checked;

return false;

}

if(window.attachEvent) window.attachEvent("onload", install_restore_helper);

else if(window.addEventListener) window.addEventListener("load", install_restore_helper, false);