User:Alex Smotrov/qpreview.js

if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit')

addOnloadHook(addQPreviewButton);

function addQPreviewButton(){

if (!window.qPreviewName) qPreviewName = 'QPreview';

var accesskey = window.qPreviewKey || '';

if (window.qPreviewAtBottom)

addSystemButton(qPreviewName, qPreview, 'btnQPreview', 'Quick Preview', accesskey);

else

addToolbarButton(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 || '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 PostData = '--' + Boundary

+ '\nContent-Disposition: form-data; name="wpTextbox1"\n\n'

+ document.getElementById('wpTextbox1').value + '\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;

divPreview.style.display = 'block'

if (btnQPreview) btnQPreview.value = qPreviewName;

};

}

function addSystemButton(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 addToolbarButton(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;

}