User:Xenocidic/monobook.js
From PinataIsland.info, the Viva Piñata wiki
Note: After saving, you may have to bypass your browser's cache to see the changes. Mozilla / Firefox / Safari: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac); IE: hold Ctrl while clicking Refresh, or press Ctrl-F5; Konqueror:: simply click the Reload button, or press F5; Opera users may need to completely clear their cache in Tools→Preferences.
/* javascript quick preview, via AJAX
* Originally by Alex Smotrov, User:Alex Smotrov/qpreview.js
* Minor tweaks by CBM:
* - default location of button changed
* - change button title
* - scroll to top of preview automatically
* <pre>
*/
if (wgAction == 'edit' || wgAction == 'submit')
addOnloadHook(addQPreviewButton);
function addQPreviewButton(){
if (!window.qPreviewName) qPreviewName = 'Quick Preview';
var accesskey = window.qPreviewKey || '';
if ((!window.qPreviewAtBottom) || (window.qPreviewAtBottom != 1) )
addQPSystemButton(qPreviewName, qPreview, 'btnQPreview', 'Quick Preview', accesskey);
else
addQPToolbarButton(qPreviewName, qPreview, 'btnQPreview', 'Quick Preview', accesskey);
}
function qPreview(){
var divPreview = document.getElementById('wikiPreview');
if (!divPreview) return;
var btnQPreview = document.getElementById('btnQPreview');
var btnWidth = Math.max(btnQPreview.scrollWidth, btnQPreview.offsetWidth);
if (btnQPreview) btnQPreview.value = window.qPreviewWait || 'Please wait...';
btnQPreview.style.width = btnWidth + 'px';
a = sajax_init_object();
a.open('POST', document.editform.action+'&live', true);
var Boundary = '--------p1415';
a.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+Boundary);
var txt = document.getElementById('wpTextbox1').value ;
if(txt.indexOf('<ref')>=0 && txt.indexOf('<references')<0
&& txt.indexOf('{{reflist')<0)
txt+='\n<hr />\n==Reference preview ==\n{{reflist|2}}';
var PostData = '--' + Boundary
+ '\nContent-Disposition: form-data; name="wpTextbox1"\n\n'
+ txt + '\n--'+Boundary;
if (a.overrideMimeType) a.overrideMimeType('text/html');
a.send(PostData);
a.onreadystatechange = function(){
if (a.readyState != 4) return;
var html = a.responseText;
html = html.replace(/>/g,'>').replace(/</g,'<').replace(/"/g,'"').replace(/&/g,'&').replace(/'/g,"'");
divPreview.innerHTML = html;
var coords = findQPPos(divPreview);
window.scrollTo(0, coords[1]); // hard left, only scroll vertically
if (btnQPreview) btnQPreview.value = qPreviewName;
};
}
function addQPSystemButton(name, onclick, id, tooltip, accesskey){
var wpPreview = document.getElementById('wpPreview');
if (!wpPreview) {
return;
}
var btn = document.createElement('input');
btn.type = 'button';
if (name) btn.value = name;
if (onclick) btn.onclick = onclick;
if (id) btn.id = id;
if (tooltip) btn.title = tooltip;
if (accesskey) {
btn.accessKey = accesskey;
btn.title += ' [' + tooltipAccessKeyPrefix + btn.accessKey + ']';
}
wpPreview.parentNode.insertBefore(btn, wpPreview);
return btn;
}
function addQPToolbarButton(name, onclick, id, tooltip, accesskey){
var toolbar = document.getElementById('toolbar');
if (!toolbar) return;
var btn = document.createElement('input');
btn.type = 'button';
btn.style.background = '#adbede';
btn.style.height = '22px';
btn.style.verticalAlign = 'middle';
if (name) btn.value = name;
if (onclick) btn.onclick = onclick;
if (id) btn.id = id;
if (tooltip) btn.title = tooltip;
if (accesskey) btn.accessKey = accesskey;
toolbar.appendChild(btn);
return btn;
}
function findQPPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return [curleft,curtop];
}
// </pre>
// this moves the toolbox and search box to the top of the left sidebar
function menu_move_to_top(menu_name) {
menu = document.getElementById(menu_name);
if (menu) {
p = menu.parentNode;
p.removeChild(menu);
p.insertBefore( menu, p.firstChild );
}
}
addOnloadHook(function (){
menu_names = [
"p-tb", // toolbox
"p-search", // search box
"p-interaction", // interaction
"p-navigation", // navigation
];
while ( menu_name = menu_names.pop() ) {
menu_move_to_top(menu_name);
}
});
// the following should force edit section links even when NOEDITSECTION is being used
function naive_section_edit(){
a = getElementsByClassName(document, "*", "mw-headline");
for(i = 0; i < a.length; i++) a[i].insertBefore(document.createElement(
'<span class="editsection">[<a href="' + wgScript + 'title=' +
wgPageName + '&action=edit§ion=' + (i + 1) + '" title="Edit section: '
+ a[i].innerHTML + '">edit</a>]</span>'));
}
addOnloadHook(naive_section_edit);

