window.doNotUseDefaultEditTools = true;
/**
* startAjaxGet starts an XmlHttpRequest call on mediawiki.
* should be in a library somewhere
**/
function startAjaxGet(url,onsuccess,argument){
var req = new XMLHttpRequest();
if(!req) return false;
req.onreadystatechange=function(){
if( req.readyState == 4 )
if( req.status == 200 )
if(typeof(onsuccess)=='function')onsuccess(req.responseText,argument);
};
req.open("GET",url);
req.send(''); //the '' is required for firefox 3b2
return true;
}
/**
* extractText(node) is a W3C DOM compliant cross-browser way of
* saying (node.innerText) though it may well be slower (no benchmarking)
**/
function extractText(el){
var output="";
for( var i=0;i<el.childNodes.length;i++ ){
var nod=el.childNodes;
if( nod.nodeName.toUpperCase()=='#TEXT' ){
output+=nod.nodeValue;
}else if(nod.nodeName.indexOf('#') !== 0){
output+=extractText(nod);
}
}
return output;
}
var wet = {}; //Wiktionary Edit Tools global object
/**
* wet_init starts the process of sorting the edittools, should be called every
* page load.
**/
function wet_init(){
//Check we are in edit mode
wet.div=document.getElementById('editpage-specialchars');
if(!wet.div)return false;
//Set everything up for us
wet.sel=document.createElement('select');
wet.ps={};wet.os={};wet.fp=0;
//Get any user edittools section
startAjaxGet(
wgScript+'?title=User:'+encodeURIComponent(wgUserName)+'/edittools&action=render',
wet_user_ajax
);
//Parse the stuff we already have
for(var i=0;i<wet.div.childNodes.length;i++){
var p = wet.div.childNodes;
if(p.nodeName.toUpperCase()=='P'){
if(p.getAttribute('id')){
wet_add_option(p);
}
}
}
//Insert select.
wet.div.insertBefore(wet.sel,wet.div.childNodes);
wet.sel.setAttribute('id','edittools-select');
try{
wet.sel.addEventListener('change',function(){wet_select_set()},false);
}catch(e){
wet.sel.attachEvent('onchange',function(){wet_select_set()});
}
wet_select_first();
}
function wet_user_ajax(resText){
if(resText.indexOf('class="noarticletext"')>-1) return wet_select_first();
var div=document.createElement('div');
wet.div.appendChild(div);
div.style.display="inline";
div.innerHTML=resText;
//Add the stuff we don't have.
for(var i=0;i<div.childNodes.length;i++){
var p = div.childNodes;
if(p.nodeName.toUpperCase()=='P'){
if(p.getAttribute('id')){
wet_add_option(p,true);
}
}
}
wet_select_first();
}
function wet_getset_ajax(resText,which){
try{
wet.ps.innerHTML+=resText.replace(/<\/?p*>/g,'');
var cn = wet.ps.className;
cn=cn.replace(/( +)?delayload( +)?/g,'');
wet.ps.className=cn;
}catch(e){
alert("] contains illegal elements (<span>s only!)");
}
}
function wet_add_option(p,before){
var nme=p.getAttribute('id');
p.style.cssText='display:none';
var opt=document.createElement('option');
opt.setAttribute('value',nme);
opt.appendChild(document.createTextNode(decodeURIComponent(nme.replace(/.({2})/g,"%$1")).replace('_',' ')));
if(before){
wet.sel.insertBefore(opt,wet.sel.childNodes);
wet.fp+=1;
}else{
wet.sel.appendChild(opt);
}
wet.ps=p;
}
function wet_select_set(index){
if(typeof(index)=='undefined'&&wet.sel.selectedIndex>-1){
index=wet.sel.selectedIndex;
}
if(index>-1&&wet.sel.options){
if(wet.currentIndex>-1&&wet.sel.options){
wet.ps[
wet.sel.options.getAttribute('value')
].style.cssText='display: none';
}
wet.currentIndex=index;
wet.sel.options.selected=true;
setCookie('edittoolscharsubset',wet.currentIndex);
var which=wet.sel.options.getAttribute('value');
wet.ps.style.cssText='display:inline';
if(wet.ps.className.indexOf('delayload')>=0){
startAjaxGet(
wgScript+'?title=Mediawiki:Edittools/'+which.replace(/.({2})/g,"%$1")+'&action=render',
wet_getset_ajax,which
);
}
}
}
wet.done=0;
function wet_select_first(){
wet.done+=1;
if(wet.done<2)return false;
var index=parseInt(getCookie('edittoolscharsubset'));
if(isNaN(index))index=0;
wet_select_set(index);
}
jQuery(wet_init);
function addCharSubsetMenu() {return false;}//Turn off current edittools