Järjestelmäviesti:Gadget-RefHelper2b.js

Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.

  • Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
  • Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
  • Internet Explorer ja Edge: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
  • Opera: Paina Ctrl-F5.
var debug_time_1=0;
var debug_time_2=0;
var debug_time_3=0;

var refhelper_revision_cache_revid=0;
var refhelper_revision_cache_revtext="";

function XMLHttpRequestWrapper() {
   if (window.XMLHttpRequest) {
     return new XMLHttpRequest();
   } else if (window.ActiveXObject) {
     return new ActiveXObject('Microsoft.XMLHTTP')
   } else {
     _error("Could not create XMLHttpRequest on this browser");
     return null;
   }
}
function saveEditRef() {
  debug_time_1=new Date().valueOf();

  var orig=document.getElementById('origref').value;

  var e=document.getElementById('refname');
  var refname=e.value;

  document.getElementById("refeditformtitle").innerHTML="Talletetaan viitettä nimeltä \"" + fixUtf8(refname) + "\"" + "" +"</h1>\n";

  var e=document.getElementById('refheader');
  var refheader=e.value;

  var e=document.getElementById('refeditform');
  e.disabled=true;
  var str=e.value.replace(/\n|\r/mg, "");
  var str=str.replace(/ {1,10}/mg, " ");
  var replace=refheader + str + "</ref>";

  var e=document.getElementById('refcomment');
  var refcomment=e.value;

//  alert(orig +"\n" + replace +"\n" + refname +"\n" + refheader + "\n");
  getEditTokenAndSave2(mw.config.get('wgPageName'), orig, replace, refname, refcomment,true);
}

function getEditTokenAndSave2(pagename, orig, replace, refname, refcomment, loadsource) {
  debug_time_2=new Date().valueOf(); 
  url="//fi.wikipedia.org/w/api.php?action=query&format=json&prop=info|revisions&intoken=edit&titles=" + encodeURIComponent(pagename);
  $.getJSON(url
  ,
    function(data) {
        $.each(data.query.pages, function(n,page){
           edittoken=page.edittoken;
           starttimestamp=page.starttimestamp;
           for (rev in page.revisions) break;
           edittime= page.revisions[rev].timestamp;
           baserevid= page.revisions[rev].revid;                      
        });

        if (refhelper_revision_cache_revid==baserevid && refhelper_revision_cache_revtext.length>10)
        {
           getEditTokenAndSave2_b(
              pagename, 
              orig, 
              replace, 
              refname, 
              refcomment, 
              refhelper_revision_cache_revtext,      // wpTextbox1
              edittime,                              // wpEdittime
              starttimestamp,                        // wpStarttime, 
              edittoken,                             // wpEditToken 
              baserevid                              // wgCurRevisionId,
             );
        }
        else
        {
          url="//fi.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&rvprop=timestamp|ids|content&titles="+ encodeURIComponent(pagename);
          $.getJSON(url
          ,
          function(data) {
            $.each(data.query.pages, function(n,page){
              for (rev in page.revisions)  break;                 

              edittime= page.revisions[rev].timestamp;
              baserevid= page.revisions[rev].revid;                    
              content= page.revisions[rev]['*'];  
           });
           getEditTokenAndSave2_b(
              pagename, 
              orig, 
              replace, 
              refname, 
              refcomment, 
              content,              // wpTextbox1
              edittime,             // wpEdittime
              starttimestamp,            // wpStarttime, 
              edittoken,            // wpEditToken 
              baserevid             // wgCurRevisionId,
             );
          });
       }
    });
}


function getEditTokenAndSave2_b(
    pagename,
    orig,
    replace,
    refname,
    refcomment,
    tmpTextbox1, 
    wpEdittime,
    wpStarttime,
    wpEditToken,
    wgCurRevisionId 
)
{

    var wpWatchthis="";
    var wpSummary="/ refHelper / Viitettä " + refname +" muutettu; " +refcomment;

// Mikäli ollaan luomassa uutta reffiä  
    if (orig=="") {
      var re=new RegExp('(\{\{viitteet.*?)(\n|\}\})', "im");
      var viitteet=re.exec(tmpTextbox1)[1];
      if (viitteet==null) {
           alert("Yritettiin luoda uusi ref, mutta 'viitteet-mallinetta ei löytynyt");
           return false;
      }
      orig=viitteet;
      if (viitteet.search(/\| ?viitteet ?=/)==-1) {
           alert("Viitteet parametria ei löytynyt");
           viitteet+="|viitteet=";
      }

      replace=viitteet + "\n" + replace + "\n"; 
      var wpSummary="/ refHelper / Tallennettu uusi viite " + refname +"; " +refcomment;

    }
//    alert(orig + "\n\n" + replace +"\n\n" + newTextbox1);

    var newTextbox1=tmpTextbox1.replace(orig, replace);
    var wpMinoredit=document.getElementById('wpMinoredit').checked;
    if (newTextbox1==tmpTextbox1) {
       alert("Ei muutoksia.");
      alert(orig + "\n\n" + replace +"\n\n" + newTextbox1);
    } else {
      mediaWikiAction2( pagename, 'edit', newTextbox1, wpEdittime, wpStarttime, wpEditToken, wpSummary, wgCurRevisionId, wpWatchthis, wpMinoredit);
    }   
}

function mediaWikiAction2(pagename, action, text, wpEdittime, wpStarttime, wpEditToken, wpSummary, wgCurRevisionId, wpWatchthis, wpMinoredit) {
    debug_time_3=new Date().valueOf();
    $.ajax({
        url: mw.util.wikiScript( 'api' ),
        data: {
            format: 'json',
            action: action,
            title: pagename,
            summary: wpSummary,
            text: text,
            token: wpEditToken
        },
        dataType: 'json',
        type: 'POST',
        success: function( data ) {
            if ( data && data.edit && data.edit.result == 'Success' ) {
               var  debug_time_4=new Date().valueOf();
//               alert(( debug_time_2-debug_time_1) + ":" + ( debug_time_3-debug_time_2) + ":" + ( debug_time_4-debug_time_3) );
               document.getElementById("refeditordiv").innerHTML="<h1>Viite tallennettu. Näytetään tehty muutos....</h1>";
               window.location="//fi.wikipedia.org/w/index.php?title="+ pagename+ "&diff=cur&oldid=" + wgCurRevisionId;

            } else if ( data && data.error ) {
                alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info );
            } else {
                alert( 'Error: Unknown result from API.' );
            }
        },
        error: function( xhr ) {
            alert( 'Error: Request failed.' );
        }
    });
}
 
function fixUtf8(str) {
   str=str.replace(".C3.B6", "ö");
   str=str.replace(".C3.96", "Ö");
   str=str.replace(".C3.A4", "ä");
   str=str.replace(".C3.84", "Ä");
   str=str.replace(".2C", ",");

   return str;
}

function getLatestArticleSource2(refname, pagename)
{
  url="//fi.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&rvprop=timestamp|ids|content&titles="+ encodeURIComponent(pagename);
  $.getJSON(url
  ,
  function(data) {
     $.each(data.query.pages, function(n,page){
       for (rev in page.revisions)  break;                 
       edittime= page.revisions[rev].timestamp;
       baserevid= page.revisions[rev].revid;                    
       revisiontext= page.revisions[rev]['*'];  

       refhelper_revision_cache_revid=baserevid;
       refhelper_revision_cache_revtext=revisiontext;
     });
      var e=document.getElementById('refname');
      e.value=refname;

      refname=refname.replace(/_/g, "[_ ]");

// Idiot fix
    refname=fixUtf8(refname);   

// Siivotaan <ref name="jotain" /> tyyppiset viitteet pois häiritsemästä viitteen hakevaa regexpiä

   var refs=revisiontext.split("<ref");
   for (var n=1; n<refs.length; n++) {
       if (refs[n].search("</ref>")==-1) continue;
       else reftmp="<ref" + refs[n].split("</ref>")[0] +"</ref>";

// Optimointia. Jos nimeä ei löydy niin ei tarvitse parsia viitettä.

       var re=new RegExp(refname);
       if (reftmp.search(re)==-1) continue;
// Siivotaan nimiviitteet pois
//       if (reftmp.search(/<ref *?name *?=.*?\/>/ig)==-1) continue;

// < 20101114 käytössä ollut regex
//       var re=new RegExp("(<ref.*? name *?= *?[\"\']?" + refname + "[\"\']?.*?>)([\\s\\S]*?)</ref>", "ig");

       var re=new RegExp("(<ref {1,10}name *?= *?[\"\']?" + refname + "[\"\']? *?>)([\\s\\S]*?)</ref>", "ig");

       var r=re.exec(reftmp);
       if (r==null) continue;
       else {
// Haluttu viite löytyi joten asetetaan se muokattavaksi

         var e=document.getElementById('origref');
         e.value=r[0];

         var e=document.getElementById('refheader');
         e.value=r[1];

         var e=document.getElementById('refeditform');
         var ref=r[2];
         ref=expandRef(ref);
         e.value=ref;
         e.disabled=false;

         return true;
       }
     }
// Mikäli päästään tänne asti niin viitettä ei löytynyt
      if (r==null) {
          var msg="Virhe: Viitettä " + refname + " ei löydy. Debug: \"" + re;
          var e=document.getElementById('refeditform');
          e.value=msg;
          alert(msg);
          return false;
      }    
  });
}

function expandRef(ref) {

// Siivotaan viitteestä muotoillut
   ref=ref.replace(/\n|\r/g, "");
   ref=ref.replace(/ {1,10}/mg, " ");

// Rivitään ja muotoillaan viite uudestaan
   ref=ref.replace(/(\| | \|| \| )/g, "\n | ");
   ref=ref.replace(/\}\} *?$/, "\n}}");
   return ref;
}

function getWindowWidth() {
  var myWidth = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
//Non-IE
    myWidth = window.innerWidth;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
//IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
  } else if( document.body && document.body.clientWidth ) {
//IE 4 compatible
  myWidth = document.body.clientWidth;
  }
  return myWidth;
}

function getWindowHeight() {
  var myHeight = 0;
  if( typeof( window.innerHeight ) == 'number' ) {
//Non-IE
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
//IE 6+ in 'standards compliant mode'
    myHeight = document.documentElement.clientHeight;
  } else if( document.body &&  document.body.clientHeight ) {
//IE 4 compatible
  myHeight = document.body.clientHeight;
  }
  return myWidth;
}


function createBasicRefEditorDiv() {
 var width=700;
 var newDiv = document.createElement('div');
 newDiv.setAttribute("id", "refeditordiv");

 var myWidth=getWindowWidth();
// Mikäli ruudun koko on iso, niin tehdään vain pieni ikkuna ja keskitetään se.
 if (myWidth>width) {
   newDiv.style.width=width + "px";
   newDiv.style.position="fixed";
   newDiv.style.right=Math.round(((myWidth/2) - (width/2))) + "px";
 }
 newDiv.className="infobox";
 newDiv.style.border="0.2em solid black";
 newDiv.style.padding="1em";
 newDiv.style.paddingTop="0.2em";
 newDiv.style.paddingRight="2em";
 newDiv.style.margin="1em";
 newDiv.style.zIndex=10;
// newDiv.style.backgroundColor="white";

 newDiv.style.top="100px";
// newDiv.style.top=(window.innerHeight-100) + "px";

 return newDiv;
}

function createEditRefPopup(refname, refnum, newref) {
 var newDiv=createBasicRefEditorDiv(); 

// var newref=newref ? "true" : "false";

 var str="<h1 id='refeditformtitle'>Muokataan viitettä nimeltä \"" + fixUtf8(refname) + "\"" + refnum +"</h1>\n";
 str+="<form>\n";
 str+="<input type='hidden' name='refname' id='refname' value='' />\n";
 str+="<input type='hidden' name='refheader' id='refheader' value='' />\n";
 str+="<input type='hidden' name='origref' id='origref' value='' />\n";
 str+="<input type='hidden' name='newref' id='newref' value='" + newref +"' />\n";
 str+="<textarea name='refeditform' id='refeditform' disabled='true' rows='15' >Ladataan viitteen sisältöä....</textarea><br/>\n";
 str+="Yhteenveto: <input type='text' name='refcomment' id='refcomment' value='' size='40' /><br />\n";
 if (newref==true) str+="<button type='button' onclick='createNewRefWizard(\"" +refname +"\")' >Takaisin</button>\n";
 str+="<button type='button' onclick='saveEditRef()' >Tallenna</button> <button type='button' onclick='closeEditRefPopup()'>Peruuta</button>\n";
 str+="Pieni muutos: <input type='checkbox' name='wpMinoredit' id='wpMinoredit' value='1' />\n";
 str+="<div id='refhelp'></div>\n"; 
 newDiv.innerHTML=str;
 document.body.appendChild(newDiv);
}
function createNewRefWizard(refname) {
  closeEditRefPopup();
  newDiv=createBasicRefEditorDiv();

 var str="<h1>Luodaan viite nimeltä \"" + refname + "\" </h1>\n";
 str+="<div style='font-size:125%;margin-top:1em;'>\n";
 str+="Valitse minkä tyyppisen viitteen haluat tehdä.<br />\n";
 str+="<dl style='margin-top:1em;margin-left:1em;margin-bottom:2em;'>\n";
 str+="<dt><a href='javascript:createNewRefWizard2(\"" + refname +"\", \"Verkkoviite\");'>Verkkoviite</a></dt>\n";
 str+="<dd>Tähän selitys verkkoviiteestä. <a href='//fi.wikipedia.org/wiki/Malline:Verkkoviite'>ohje</a></dd>\n";
 str+="<dt><a href='javascript:createNewRefWizard2(\"" + refname +"\", \"Kirjaviite\");'>Kirjaviite</a></dt>\n";
 str+="<dd>Tähän selitys kirjaviiteestä. <a href='//fi.wikipedia.org/wiki/Malline:Kirjaviite'>ohje.</a></dd>\n";
 str+="<dt><a href='javascript:createNewRefWizard2(\"" + refname +"\", \"Lehtiviite\");'>Lehtiviite</a></dt>\n";
 str+="<dd>Tähän selitys lehtiviiteestä. <a href='//fi.wikipedia.org/wiki/Malline:Lehtiviite'>ohje.</a></dd>\n";
 str+="<dt><a href='javascript:createNewRefWizard2(\"" + refname +"\", \"Karttaviite\");'>Karttaviite</a></dt>\n";
 str+="<dd>Tähän selitys karttaviiteestä. <a href='//fi.wikipedia.org/wiki/Malline:Karttaviite'>ohje.</a></dd>\n";
 str+="<dt><a href='javascript:createNewRefWizard2(\"" + refname +"\", \"Standardiviite\");'>Standardiviite</a></dt>\n";
 str+="<dd>Tähän selitys standardiviiteestä. <a href='//fi.wikipedia.org/wiki/Malline:Standardiviite'>ohje.</a></dd>\n";
 str+="</dl>\n";
 str+="<form> <button type='button' onclick='closeEditRefPopup()'>Peruuta</button>\n";
 str+="</div>\n";
 newDiv.innerHTML=str;
 document.body.appendChild(newDiv);

  
}

function createNewRefWizard2(refname, reftype) {
  closeEditRefPopup();
  createEditRefPopup(refname, "", true);
  var str="";
  var refhelp="";

    var d = new Date();
    pvm=d.getDate() +"." +(d.getMonth()+1) +"." +d.getFullYear();
 


 switch(reftype) {
    case 'Verkkoviite'  : str="{{Verkkoviite | Osoite = | Nimeke = | Tekijä = | Tiedostomuoto = | Selite = | Julkaisu = | Ajankohta = | Julkaisupaikka = | Julkaisija = | Viitattu = " + pvm +" | Kieli = }}"; 
                          refhelp="<ul><li><a href='//fi.wikipedia.org/wiki/Malline:Verkkoviite'>Verkkoviitteen käyttöohje.</a></li></ul>"; 
                          break;

    case 'Kirjaviite'   : str="{{Kirjaviite | Tekijä = | Nimeke = | Suomentaja = | Vuosi = | Luku = | Sivu = | Selite = | Julkaisupaikka = | Julkaisija = | Tunniste = | www = | www-teksti = | Tiedostomuoto = | Viitattu = " + pvm +" | Kieli = }}";
                          refhelp="<ul><li><a href='//fi.wikipedia.org/wiki/Malline:Kirjaviite'>Kirjaviitteen käyttöohje.</a></li></ul>"; 
                          break;
                          

    case 'Lehtiviite' : str="{{Lehtiviite | Tekijä = | Otsikko = | Julkaisu = | Ajankohta = | Vuosikerta = | Numero = | Sivut = | Julkaisupaikka = | Julkaisija = | Selite = | Tunniste = | www = | www-teksti = | Tiedostomuoto = | Viitattu = " + pvm +" | Kieli = | Lopetusmerkki = }}";
                          refhelp="<ul><li><a href='//fi.wikipedia.org/wiki/Malline:Artikkeliviite'>Artikkeliviitteen käyttöohje.</a></li></ul>"; 
                          break;

    case 'Karttaviite' : str="{{Karttaviite | Tekijä = | Nimeke = | Mittakaava =  | Lehti = | Julkaisupaikka = Helsinki | Julkaisija = | Ajankohta = | Selite = | Tunniste = | www = | www-teksti = | Tiedostomuoto = | Viitattu = " + pvm +" | Kieli = }}"; 
                          refhelp="<ul><li><a href='//fi.wikipedia.org/wiki/Malline:Karttaviite'>Karttaviitteen käyttöohje.</a></li></ul>"; 
                          break;
   
    case 'Standardiviite' : str="{{Standardiviite | Numero =  | Nimeke =  | Julkaisupaikka =  | Julkaisija =  | Ajankohta =  | Selite = | Sivut = | www = | www-teksti = | Tiedostomuoto = | Viitattu = " + pvm +" | Kieli = }}"; 
                          refhelp="<ul><li><a href='//fi.wikipedia.org/wiki/Malline:Standardiviite'>Standardiviitteen käyttöohje.</a></li></ul>"; 
                          break;
 }
 str=expandRef(str);
 var e=document.getElementById('refeditform')
 e.value=str;
 e.disabled=false;

 document.getElementById('refname').value=refname;
 document.getElementById('refheader').value="<ref name=\'" + refname +"\'>";
 document.getElementById('refhelp').innerHTML=refhelp;

}
function closeEditRefPopup() {
  var e=document.getElementById("refeditordiv");
  if (e) document.body.removeChild(e);
}

function editRef(refname, refnum) {
  closeEditRefPopup();

  createEditRefPopup(refname, refnum, false);
  getLatestArticleSource2(refname, mw.config.get('wgPageName')) ;
 
}

function editRef2()  {
 editRef("vancouver-esittely");
}

function toggleRef(id) {
 var span=document.getElementById(id);

// Mikäli viitettä katsotaan ensimmäistä kertaa, niin
// kopioidaan viite viitelistasta inline viitteeksi

 if (span.innerHTML=="") createInlineRef(id, span);

// Mikäli viite on näkyvillä niin piilotetaan se ja päin vastoin
 if (span.style.display=="none") span.style.display="inline";
 else span.style.display="none";
}

// Kopioidaan viite viitelistasta inline viitteeksi
function createInlineRef(id, span) {
   var buttons="";
   var refname="";
   var id_tmp=id.replace("inline", "note");
   var note=document.getElementById(id_tmp);

// Ne tapaukset joissa viitettä on käytetty useita kertoja
   if (note==null) {
      id_tmp=id_tmp.replace(/_([0-9]{1,3})-([0-9]{1,3})$/, "-$1");
      note=document.getElementById(id_tmp);
   }
// Ne tapaukset joissa viitettä ei ole olemassa tai niitä ei ole käytetty kertaakaan
// (haetaan virheilmoitus)
   if (note==null) {
      id_tmp=id_tmp.replace(/-([0-9]{1,3})$/, "");
      note=document.getElementById(id_tmp);
   }


   if (note==null) alert("Error: note=null id_tmp=" + id_tmp);
   refname=id_tmp.replace(/cite_note-(.*?)-[0-9]{1,3}$/, "$1");
   if (refname==id_tmp) {
      var reftitle="";     
   } else {
     refname=refname.replace(/\.3F/g, "/");
     refname=refname.replace(/\.C3\.A4/g, "ä");

     var sup=note.getElementsByTagName("sup");
     var refnum="";
     if (sup!=null && sup.length>1)  refnum=" (" + sup.length +")";
 //    buttons=" [ <a href='javascript:editRef(\"" + refname +"\" , \"" + refnum + "\")'>muokkaa</a> ]";
//     var reftitle= "Viitteen nimi: " + refname + refnum + " − ";

// Viitteen nimi lienee turhaa informaatiota, sen näkee editorissa jos sitä tarvitsee
     var reftitle="";
   }
   span.innerHTML=" <small><a href='#" + id_tmp +"'>&darr;</a>  </small> " + reftitle + note.innerHTML  + buttons ;

// Siivoaa viitteistä ylimääräistä tauhkaa pois
  span.innerHTML=span.innerHTML.replace(/↑ ?/, "");
  span.innerHTML=span.innerHTML.replace(/<sup>(.*?)<\/sup>/ig, "");
}

function initRefHelper() {
 var e=document.getElementsByTagName("sup");
 for (n=0; n<e.length; n++) {
   var tmpclass=e[n].getAttribute("class"); 
   if (tmpclass==null) tmpclass=e[n].getAttribute("CLASS");
   if (tmpclass==null) tmpclass=e[n].className;

   if (tmpclass=="reference") {
     
     var id=e[n].getAttribute("id");
     id = id ? id.replace("ref", "inline") : '';
     var text=e[n].firstChild.innerHTML;

     e[n].firstChild.href="javascript:toggleRef(\"" + id +"\")";
     var newSpan = document.createElement('span');
     newSpan.innerHTML="<span id='" + id +"' style='display:none;background-color:#DDEEFF;padding:0.25em;padding-left:0.5em; padding-right:0.5em;'></span>";

     e[n].parentNode.insertBefore(newSpan, e[n].nextSibling);
   }
  }

  var e=document.getElementsByTagName("ol");
 for (n=0; n<e.length; n++) {
   var tmpclass=e[n].getAttribute("class"); 
   if (tmpclass==null) tmpclass=e[n].getAttribute("CLASS");
   if (tmpclass==null) tmpclass=e[n].className;
   

   if (tmpclass=="references") {
     var r=e[n].getElementsByTagName("li");
     for (m=0; m<r.length; m++) {

     var tmpid=r[m].getAttribute("id"); 
     if (tmpid==null) tmpid=r[m].getAttribute("ID");
     if (tmpid==null) continue;    // Jos id:tä ei saada niin ei ole ref.

       var refname=tmpid.replace(/cite_note-(.*?)(-[0-9]{1,3})$/, "$1");

       refname=refname.replace(/\.3F/g, "/");
       refname=refname.replace(/\.C3\.A4/g, "ä");
      
       if (r[m].innerHTML.search(/[\"\' =]error[\"\' >]/m)>0) {
          var sup=r[m].getElementsByTagName("sup"); 
// Värjätään yksittäiset viitemerkinnät punaiseksi
          var j=0;
          refname=refname.replace(/cite_note-(.*?)(-[0-9]{1,3})?$/, "$1");

          var button=" [ <a style='color:red' href='javascript:createNewRefWizard(\"" + refname +"\");'>Luo puuttuva viite " + refname +"</a> ]";
          var tmp_refname=r[m].getElementsByTagName("a")[0].getAttribute("href").replace("#", "");
          tmp_refname=tmp_refname.replace(/_[0-9]$/, "_" + m);
          while (ref= document.getElementById(tmp_refname + "-" +j)) {
            ref.innerHTML=button;
            j++;
           }
// Tehdään nappi uuden viitteen luomista varten
           r[m].innerHTML+= button;
          continue;
       }

// reffillä ei name attribuuttia
       var tmpid=r[m].getAttribute("id"); 
       if (tmpid==null) tmpid=r[m].getAttribute("ID");

       if (refname==tmpid) continue;

       var sup=r[m].getElementsByTagName("sup");
       if (sup!=null && sup.length>1)  refnum=" ( Viitattu " + sup.length +" kertaa.)";
       else refnum="";     
  
       buttons=" [ <a href='javascript:editRef(\"" + refname +"\" , \"" + refnum + "\")'>muokkaa</a> ]";

       r[m].innerHTML+=buttons;
     }
   }
 }
}

if (mw.config.get('wgIsArticle')==true) $( initRefHelper );