E' in corso una procedura di uniformazione delle seconde edizioni

Dizionario demografico multilingue (seconda edizione armonizzata, volume italiano)

Differenze tra le versioni di "MediaWiki:RefToolbarNoDialogsTextTerm.js"

Dizionario demografico multilingue (seconda edizione unificata, volume italiano)
(mw28 version)
(From es-ii)
 
Riga 2: Riga 2:
 
var wikEdAutoUpdateUrl;
 
var wikEdAutoUpdateUrl;
 
function refbuttons() {
 
function refbuttons() {
   if (mw.toolbar && (document.getElementById('toolbar') || document.getElementById('wikiEditor-section-main'))/* && wikEdAutoUpdateUrl == null*/) {
+
   if (mw.toolbar && (document.getElementById('toolbar') || document.getElementById('wikiEditor-ui-toolbar'))/* && wikEdAutoUpdateUrl == null*/) {
 
     if (document.getElementById('toolbar')) {
 
     if (document.getElementById('toolbar')) {
 
       button = document.createElement('a');
 
       button = document.createElement('a');
Riga 8: Riga 8:
 
       button.title = "Insert citation";
 
       button.title = "Insert citation";
 
       buttonimage = document.createElement('img');
 
       buttonimage = document.createElement('img');
       buttonimage.src = "//upload.wikimedia.org/wikipedia/commons/0/00/Button_easy_cite_%281%29.png";
+
       buttonimage.src = "http://upload.wikimedia.org/wikipedia/commons/0/00/Button_easy_cite_%281%29.png";
 
       buttonimage.alt = "Insert footnote";
 
       buttonimage.alt = "Insert footnote";
 
       button.appendChild(buttonimage);
 
       button.appendChild(buttonimage);
Riga 18: Riga 18:
 
       button.id = 'reftoolbar-button';
 
       button.id = 'reftoolbar-button';
 
       buttonimage = document.createElement('img');
 
       buttonimage = document.createElement('img');
       buttonimage.src = "//upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Curly_Brackets.svg/22px-Curly_Brackets.svg.png";
+
       buttonimage.src = "http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Curly_Brackets.svg/22px-Curly_Brackets.svg.png";
 
       buttonimage.alt = "Insert citation";
 
       buttonimage.alt = "Insert citation";
 
       button.classname = "tool tool-button";
 
       button.classname = "tool tool-button";
Riga 25: Riga 25:
 
       buttonimage.style.paddingTop = "5px";
 
       buttonimage.style.paddingTop = "5px";
 
       buttonimage.style.paddingLeft = "3px";
 
       buttonimage.style.paddingLeft = "3px";
       button.appendChild(buttonimage);
+
       button.appendChild(buttonimage)
       //document.getElementById('wikiEditor-ui-toolbar').childNodes[0].childNodes[1].appendChild(button);
+
       document.getElementById('wikiEditor-ui-toolbar').childNodes[0].childNodes[1].appendChild(button);
       ////document.getElementById('reftoolbar-button').onclick = easyCiteMain;
+
       //document.getElementById('reftoolbar-button').onclick = easyCiteMain;
       //$j('#reftoolbar-button').live('click', function() { easyCiteMain(); });
+
       $(document).on('click', '#reftoolbar-button', function() { easyCiteMain(); });
      $('#wikiEditor-section-main .group-insert').append( button );
 
      $(button).click( function() { easyCiteMain(); });
 
 
 
 
     }
 
     }
 
     if (navigator.userAgent.indexOf('MSIE') == -1) {
 
     if (navigator.userAgent.indexOf('MSIE') == -1) {
Riga 50: Riga 47:
 
     else {
 
     else {
 
       selection = '<div id="citeselect" style="display:none"><input type="button" value="Cite web" onclick="citeWeb()" />'+
 
       selection = '<div id="citeselect" style="display:none"><input type="button" value="Cite web" onclick="citeWeb()" />'+
'<input type="button" value="Cite book" onclick="citeBook()" />'+
+
        '<input type="button" value="Cite book" onclick="citeBook()" />'+
'<input type="button" value="Cite journal" onclick="citeJournal()" />'+
+
        '<input type="button" value="Cite journal" onclick="citeJournal()" />'+
'<input type="button" value="Cite news" onclick="citeNews()" />'+
+
        '<input type="button" value="Cite news" onclick="citeNews()" />'+
'<input type="button" value="Named ref" onclick="citeNamedRef()" />'+
+
        '<input type="button" value="Named ref" onclick="citeNamedRef()" />'+
'<input type="button" value="Error check" onclick="dispErrors()" />'+
+
        '<input type="button" value="Error check" onclick="dispErrors()" />'+
'<input type="button" value="Cancel" onclick="hideInitial()" />'+
+
        '<input type="button" value="Cancel" onclick="hideInitial()" />'+
'<input type="button" value="TextTerm" onclick="textTerm()" /></div>';
+
        '<input type="button" value="TextTerm" onclick="textTerm()" /></div>';
 
       document.getElementById('editform').innerHTML = selection + document.getElementById('editform').innerHTML;
 
       document.getElementById('editform').innerHTML = selection + document.getElementById('editform').innerHTML;
 
     }
 
     }
 
   }
 
   }
 
}
 
}
+
 
 
function addOption(script, text) {
 
function addOption(script, text) {
 
   option = document.createElement('input');
 
   option = document.createElement('input');
Riga 69: Riga 66:
 
   return option;
 
   return option;
 
}
 
}
+
 
 
function hideInitial() {
 
function hideInitial() {
 
   document.getElementById('citeselect').style.display = 'none';
 
   document.getElementById('citeselect').style.display = 'none';
 
   oldFormHide();
 
   oldFormHide();
 
}
 
}
+
 
 
function oldFormHide() {
 
function oldFormHide() {
 
   if (numforms != 0) {
 
   if (numforms != 0) {
Riga 83: Riga 80:
 
   }
 
   }
 
}  
 
}  
+
 
 
function easyCiteMain() {
 
function easyCiteMain() {
 
   document.getElementById('citeselect').style.display = '';
 
   document.getElementById('citeselect').style.display = '';
 
}
 
}
+
 
 
var months = ['January', 'February', 'March', 'April', 'May', 'June',
 
var months = ['January', 'February', 'March', 'April', 'May', 'June',
  'July', 'August', 'September', 'October', 'November', 'December'];
+
              'July', 'August', 'September', 'October', 'November', 'December'];
 
var citeGlobalDateFormat = "<date> <monthname> <year>";
 
var citeGlobalDateFormat = "<date> <monthname> <year>";
 
function getTime() {
 
function getTime() {
Riga 123: Riga 120:
 
   return (datestr);
 
   return (datestr);
 
}
 
}
+
 
 
function citeWeb() {
 
function citeWeb() {
 
   citeNewsWeb("cite web");
 
   citeNewsWeb("cite web");
Riga 135: Riga 132:
 
}  
 
}  
  
var texttermall = new Array();
+
var texttermall = [];
var texttermcur = new Array();
+
var texttermcur = [];
var textterminput = new Array();
+
var textterminput = [];
 
var poffset=null, prange=null, noffset=null, nrange=null;
 
var poffset=null, prange=null, noffset=null, nrange=null;
 
var section = '';
 
var section = '';
Riga 164: Riga 161:
  
 
function texttermfill(subtext) {
 
function texttermfill(subtext) {
   var ref = new Array();
+
   var ref = [];
 
   this.term = '';
 
   this.term = '';
 
   this.note= '';
 
   this.note= '';
Riga 192: Riga 189:
 
       switch (j)
 
       switch (j)
 
       {
 
       {
      case 0 : this.term = ref[1]; break;
+
        case 0 : this.term = ref[1]; break;
      case 1 : this.note = ref[1]; break;
+
        case 1 : this.note = ref[1]; break;
      case 2 : this.section = ref[1]; break;
+
        case 2 : this.section = ref[1]; break;
      default :
+
        default :
if(ref[1].match(/^ *?EnglishEntry *?= *?(.*) *?$/))
+
        if(ref[1].match(/^ *?EnglishEntry *?= *?(.*) *?$/))
  this.englishentry = ref[1].replace(/^ *?EnglishEntry *?= *?(.*) *?$/,"$1");
+
          this.englishentry = ref[1].replace(/^ *?EnglishEntry *?= *?(.*) *?$/,"$1");
else if(ref[1].match(/^ *?IndexEntry *?= *?(.*) *?$/))
+
        else if(ref[1].match(/^ *?IndexEntry *?= *?(.*) *?$/))
  this.indexentry = ref[1].replace(/^ *?IndexEntry *?= *?(.*) *?$/,"$1");
+
          this.indexentry = ref[1].replace(/^ *?IndexEntry *?= *?(.*) *?$/,"$1");
else if(ref[1].match(/^ *?OtherIndexEntry *?= *?(.*) *?$/))
+
        else if(ref[1].match(/^ *?OtherIndexEntry *?= *?(.*) *?$/))
  this.otherindexentry = ref[1].replace(/^ *?OtherIndexEntry *?= *?(.*) *?$/,"$1");
+
          this.otherindexentry = ref[1].replace(/^ *?OtherIndexEntry *?= *?(.*) *?$/,"$1");
else if(ref[1].match(/^ *?OtherIndexEntryTwo *?= *?(.*) *?$/))
+
        else if(ref[1].match(/^ *?OtherIndexEntryTwo *?= *?(.*) *?$/))
  this.otherindexentrytwo = ref[1].replace(/^ *?OtherIndexEntryTwo *?= *?(.*) *?$/,"$1");
+
          this.otherindexentrytwo = ref[1].replace(/^ *?OtherIndexEntryTwo *?= *?(.*) *?$/,"$1");
else if(ref[1].match(/^ *?OtherIndexEntryThree *?= *?(.*) *?$/))
+
        else if(ref[1].match(/^ *?OtherIndexEntryThree *?= *?(.*) *?$/))
  this.otherindexentrythree = ref[1].replace(/^ *?OtherIndexEntryThree *?= *?(.*) *?$/,"$1");
+
          this.otherindexentrythree = ref[1].replace(/^ *?OtherIndexEntryThree *?= *?(.*) *?$/,"$1");
else if(ref[1].match(/^ *?OtherIndexEntryFour *?= *?(.*) *?$/))
+
        else if(ref[1].match(/^ *?OtherIndexEntryFour *?= *?(.*) *?$/))
  this.otherindexentryfour = ref[1].replace(/^ *?OtherIndexEntryFour *?= *?(.*) *?$/,"$1");
+
          this.otherindexentryfour = ref[1].replace(/^ *?OtherIndexEntryFour *?= *?(.*) *?$/,"$1");
else if(ref[1].match(/^ *?OtherIndexEntryFive *?= *?(.*) *?$/))
+
        else if(ref[1].match(/^ *?OtherIndexEntryFive *?= *?(.*) *?$/))
  this.otherindexentryfive = ref[1].replace(/^ *?OtherIndexEntryFive *?= *?(.*) *?$/,"$1");
+
          this.otherindexentryfive = ref[1].replace(/^ *?OtherIndexEntryFive *?= *?(.*) *?$/,"$1");
else if(ref[1].match(/^ *?EnglishEntry *?= *?(.*) *?$/))
+
        else if(ref[1].match(/^ *?EnglishEntry *?= *?(.*) *?$/))
  this.englishentry = ref[1].replace(/^ *?EnglishEntry *?= *?(.*) *?$/,"$1");
+
          this.englishentry = ref[1].replace(/^ *?EnglishEntry *?= *?(.*) *?$/,"$1");
else if(j==3){
+
        else if(j==3){
    this.subnote = ref[1];
+
          this.subnote = ref[1];
}else{
+
        }else{
  alert("texttermfill error j=" + j + " ref1= " +ref[1]);
+
          alert("texttermfill error j=" + j + " ref1= " +ref[1]);
  //console.log("texttermfill error j=" + j + " ref1= " +ref[1]);
+
          //console.log("texttermfill error j=" + j + " ref1= " +ref[1]);
}
+
        }
 
       }
 
       }
 
       j++;
 
       j++;
Riga 224: Riga 221:
 
     }
 
     }
 
   } while (nr==true);
 
   } while (nr==true);
 +
 
 +
    this.indexentry_i=this.term;  // Plural doesn't seem to be necessary
 +
    this.otherindexentry_oi=this.indexentry_i.replace(/(.*) (.*)/, "$2. $1");
 
   //console.log("j=" + j + " term=" + this.term + " note=" + this.note + " section=" + this.section +" subnote=" + this.subnote +" indexentry=" + this.indexentry + " otherindexentry=" + this.otherindexentry);
 
   //console.log("j=" + j + " term=" + this.term + " note=" + this.note + " section=" + this.section +" subnote=" + this.subnote +" indexentry=" + this.indexentry + " otherindexentry=" + this.otherindexentry);
 
}
 
}
Riga 243: Riga 243:
 
       offset = textarea.selectionStart;
 
       offset = textarea.selectionStart;
 
       range = textarea.selectionEnd - textarea.selectionStart;
 
       range = textarea.selectionEnd - textarea.selectionStart;
 
+
      realltxtterms = /({{TextTerm)|({{NewTextTerm)/gm; // works, finds after Term
       var lstxtterm = textarea.value.substring(0,textarea.selectionEnd). lastIndexOf("{{TextTerm") ; // Just before the string. No regex
+
      var lstxtterm =-1;
 +
      subtextt= textarea.value.substring(0,textarea.selectionEnd);
 +
       while ((nbtxt=realltxtterms.exec(subtextt))){ lstxtterm=realltxtterms.lastIndex- nbtxt[0].length}
 +
      //var lstxtterm = textarea.value.substring(0,textarea.selectionEnd). search("{{TextTerm|{{NewTextTerm") ; // Just before the string. No regex
 
       var lstcltxtterm = textarea.value.substring(0,textarea.selectionStart). lastIndexOf("}}") ; //might be for another purpose than TextTerm
 
       var lstcltxtterm = textarea.value.substring(0,textarea.selectionStart). lastIndexOf("}}") ; //might be for another purpose than TextTerm
 
       // Looking for the section
 
       // Looking for the section
Riga 250: Riga 253:
 
       var psectione = textarea.value.substring(0,textarea.selectionEnd). lastIndexOf("===") ; // Just before the string. No regex
 
       var psectione = textarea.value.substring(0,textarea.selectionEnd). lastIndexOf("===") ; // Just before the string. No regex
 
       if(psectione != -1){
 
       if(psectione != -1){
var psections = textarea.value.substring(0,psectione). lastIndexOf("===") ; // Just before the string. No regex
+
        var psections = textarea.value.substring(0,psectione). lastIndexOf("===") ; // Just before the string. No regex
if(psections != -1){
+
        if(psections != -1){
  section =  textarea.value.substring(psections,psectione+3).match(/^=== *?(\d{3}) *?===$/)[1];
+
          section =  textarea.value.substring(psections,psectione+3).match(/^=== *?(\d{3}) *?===$/)[1];
}
+
        }
 
       }
 
       }
 
       //console.log(" section |" + section);
 
       //console.log(" section |" + section);
Riga 259: Riga 262:
 
        
 
        
 
       if ( (-1 == lstxtterm) || ((-1 < lstxtterm) && (lstxtterm < lstcltxtterm)) ) { // @{{TextTerm ...@}}...(...)..  
 
       if ( (-1 == lstxtterm) || ((-1 < lstxtterm) && (lstxtterm < lstcltxtterm)) ) { // @{{TextTerm ...@}}...(...)..  
// {{Refnumber }} ....!  
+
        // {{Refnumber }} ....!  
// alert("We are after outside a previous TextTerm or no TextTerm before:" + textarea.value.substring(0,textarea.selectionStart ));
+
        // alert("We are after outside a previous TextTerm or no TextTerm before:" + textarea.value.substring(0,textarea.selectionStart ));
texttermcur = new texttermfill("|" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
+
        texttermcur = new texttermfill("|" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
//console.log(" We want to fill with the selection=" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
+
        //console.log(" We want to fill with the selection=" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
// On se retrouve avec du texte à ajouter et le curseur inchangé à textarea.selectionStart   
+
        // On se retrouve avec du texte à ajouter et le curseur inchangé à textarea.selectionStart   
 
       } else if ( (lstxtterm > lstcltxtterm) && (lstcltxtterm > -1) ) { // @}}... @{{TextTerm ... (...)..  
 
       } else if ( (lstxtterm > lstcltxtterm) && (lstcltxtterm > -1) ) { // @}}... @{{TextTerm ... (...)..  
//alert("We are within a TextTerm or no closing }}:" + textarea.value.substring(lstcltxtterm, lstxtterm));
+
        //alert("We are within a TextTerm or no closing }}:" + textarea.value.substring(lstcltxtterm, lstxtterm));
+
       
// ( textarea.value.substring(lstxtterm, textarea.selectionStart). search(new RegExp("}}")) == -1) {
+
        // ( textarea.value.substring(lstxtterm, textarea.selectionStart). search(new RegExp("}}")) == -1) {
var endtxterm= textarea.value.substring(textarea.selectionStart, textarea.length). search("}}");
+
        var endtxterm= textarea.value.substring(textarea.selectionStart, textarea.value.length). search("}}");
if( endtxterm == -1)
+
        if( endtxterm == -1)
  error(" Error no closing TextTerm; should be fixed:" + textarea.value.substring(textarea.selectionStart, textarea.length));
+
          error(" Error no closing TextTerm; should be fixed:" + textarea.value.substring(textarea.selectionStart, textarea.value.length));
else{
+
        else{
  endtxterm = endtxterm + textarea.selectionStart +2 ; // }} included
+
          endtxterm = endtxterm + textarea.selectionStart +2 ; // }} included
  // Looking for @{{TextTerm....}}@
+
          // Looking for @{{TextTerm....}}@
  // alert("We are within textterm  " + lstxtterm + " to " + endtxterm + " soit:" + textarea.value.substring(lstxtterm,endtxterm) );
+
          // alert("We are within textterm  " + lstxtterm + " to " + endtxterm + " soit:" + textarea.value.substring(lstxtterm,endtxterm) );
  //console.log(" Replacing with form result:" + textarea.value.substring(lstxtterm+"{{TextTerm".length,endtxterm-"}}".length));
+
          //console.log(" Replacing with form result:" + textarea.value.substring(lstxtterm+"{{TextTerm".length,endtxterm-"}}".length));
  texttermcur = new texttermfill(textarea.value.substring(lstxtterm+"{{TextTerm".length,endtxterm-"}}".length) );
+
          texttermcur = new texttermfill(textarea.value.substring(lstxtterm+"{{TextTerm".length,endtxterm-"}}".length) );
  // On devrait remplacer {{TextTerm ...}} par la forme, soit de lstxtterm endtxtterm
+
          // On devrait remplacer {{TextTerm ...}} par la forme, soit de lstxtterm endtxtterm
  // On se fout de la sélection originale et la repositionne sur toute l'étendue du textterm.
+
          // On se fout de la sélection originale et la repositionne sur toute l'étendue du textterm.
  // alert("After null before textarea.selectionStart is" + textarea.selectionStart + " end=" +  textarea.selectionEnd);
+
          // alert("After null before textarea.selectionStart is" + textarea.selectionStart + " end=" +  textarea.selectionEnd);
  // alert(" selection is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
+
          // alert(" selection is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
  textarea.selectionStart = lstxtterm;
+
          textarea.selectionStart = lstxtterm;
  textarea.selectionEnd = endtxterm;
+
          textarea.selectionEnd = endtxterm;
  // alert("After null textarea.selectionStart is" + textarea.selectionStart + " end=" +  textarea.selectionEnd);
+
          // alert("After null textarea.selectionStart is" + textarea.selectionStart + " end=" +  textarea.selectionEnd);
  // alert(" selection is now:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
+
          // alert(" selection is now:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
} //en endtxtterm
+
        } //en endtxtterm
 
       } // end  @}}... @{{TextTerm ... (...)..  
 
       } // end  @}}... @{{TextTerm ... (...)..  
 
     }else{ // coming from a previous or next
 
     }else{ // coming from a previous or next
Riga 291: Riga 294:
 
       // alert(" After next selection is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
 
       // alert(" After next selection is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
 
       // alert("Coming from a previous or next modifing selectionStart start is an offsetstart =" + offset + " and range=" + range)
 
       // alert("Coming from a previous or next modifing selectionStart start is an offsetstart =" + offset + " and range=" + range)
  // Previous
+
      // Previous
  //                                selectionStart selectionEnd
+
      //                                selectionStart selectionEnd
  //                                        >                <
+
      //                                        >                <
  // ^....@{{TextTerm....#}}.................@{{TextTerm ...}}!
+
      // ^....@{{TextTerm....#}}.................@{{TextTerm ...}}!
  //      !<-range-------->!  
+
      //      !<-range-------->!  
  //                      #<-offset--------->!  
+
      //                      #<-offset--------->!  
  // Next
+
      // Next
  //  selectionStart selectionEnd
+
      //  selectionStart selectionEnd
  //      >                <
+
      //      >                <
  // ^....@{{TextTerm....#}}.................@{{TextTerm ...}}!
+
      // ^....@{{TextTerm....#}}.................@{{TextTerm ...}}!
  //                                        !<--range------->!  
+
      //                                        !<--range------->!  
  //                      #<-offset--------->!  
+
      //                      #<-offset--------->!  
 
       // alert(" Before textarea.selectionStart=" + textarea.selectionStart + " textarea.selectionEnd=" + textarea.selectionEnd);
 
       // alert(" Before textarea.selectionStart=" + textarea.selectionStart + " textarea.selectionEnd=" + textarea.selectionEnd);
 
       //alert(" Before is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
 
       //alert(" Before is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
 
       textarea.selectionStart = (offset > 0 ? textarea.selectionEnd + offset : textarea.selectionStart + offset -range);
 
       textarea.selectionStart = (offset > 0 ? textarea.selectionEnd + offset : textarea.selectionStart + offset -range);
 
       textarea.selectionEnd = textarea.selectionStart + range;
 
       textarea.selectionEnd = textarea.selectionStart + range;
        // Looking for the section
+
      // Looking for the section
 
       section = '';
 
       section = '';
 
       var psectione = textarea.value.substring(0,textarea.selectionEnd). lastIndexOf("===") ; // Just before the string. No regex
 
       var psectione = textarea.value.substring(0,textarea.selectionEnd). lastIndexOf("===") ; // Just before the string. No regex
 
       if(psectione != -1){
 
       if(psectione != -1){
var psections = textarea.value.substring(0,psectione). lastIndexOf("===") ; // Just before the string. No regex
+
        var psections = textarea.value.substring(0,psectione). lastIndexOf("===") ; // Just before the string. No regex
if(psections != -1){
+
        if(psections != -1){
  section =  textarea.value.substring(psections,psectione+3).match(/^=== *?(\d{3}) *?===$/)[1];
+
          section =  textarea.value.substring(psections,psectione+3).match(/^=== *?(\d{3}) *?===$/)[1];
}
+
        }
 
       }
 
       }
 
       //console.log(" section Other |" + section);
 
       //console.log(" section Other |" + section);
Riga 321: Riga 324:
 
       // alert(" After textarea.selectionStart=" + textarea.selectionStart + " textarea.selectionEnd=" + textarea.selectionEnd);
 
       // alert(" After textarea.selectionStart=" + textarea.selectionStart + " textarea.selectionEnd=" + textarea.selectionEnd);
 
       //console.log("textterm cur is:" + textarea.value.substring(textarea.selectionStart+"{{TextTerm".length,textarea.selectionEnd-"}}".length));
 
       //console.log("textterm cur is:" + textarea.value.substring(textarea.selectionStart+"{{TextTerm".length,textarea.selectionEnd-"}}".length));
       texttermcur = new texttermfill(textarea.value.substring(textarea.selectionStart+"{{TextTerm".length,textarea.selectionEnd-"}}".length) );
+
       // We are at the beginning of a selection or of a {{TextTerm or NewTextTerm and we should know the length until |
 +
      if(textarea.value.substring(textarea.selectionStart,textarea.selectionEnd).match("{{TextTerm")){
 +
        var ctermtype="TextTerm";
 +
      }else if (textarea.value.substring(textarea.selectionStart,textarea.selectionEnd).match("{{NewTextTerm")){
 +
        var ctermtype="NewTextTerm";
 +
      }else
 +
        var ctermtype="";
 +
 
 +
    // texttermcur = new texttermfill(textarea.value.substring(textarea.selectionStart+"{{TextTerm".length,textarea.selectionEnd-"}}".length) );
 +
 
 +
      texttermcur = new texttermfill(textarea.value.substring(textarea.selectionStart+ctermtype.length,textarea.selectionEnd-"}}".length) );
 
     }
 
     }
 
   }else{
 
   }else{
Riga 334: Riga 347:
 
   //    pstart          pend
 
   //    pstart          pend
 
   //      !<--------offsetpstart------------>!  
 
   //      !<--------offsetpstart------------>!  
   //                      #<-offsetpsend---->!  
+
   //                      #<-offsetpsend---->!
 
+
  //realltxtterms = /({{TextTerm[^}]+)|({{NewTextTerm[^}]+)/gm; // works, finds end of }}
   var pstart = textarea.value.substring(0,textarea.selectionStart). lastIndexOf("{{TextTerm");  
+
  realltxtterms = /({{TextTerm)|({{NewTextTerm)/gm; // works, finds after Term
 +
   var pstart=-1;
 +
  subtextt= textarea.value.substring(0,textarea.selectionStart);
 +
  while ((nbtxt=realltxtterms.exec(subtextt))){ pstart=realltxtterms.lastIndex- nbtxt[0].length}
 +
  //  var pstart = textarea.value.substring(0,textarea.selectionStart). search("{{TextTerm|{{NewTextTerm");
 
   if ( pstart == -1) { // No previous
 
   if ( pstart == -1) { // No previous
 
     // alert( "NO previous : " + textarea.value.substring(0,textarea.selectionStart));
 
     // alert( "NO previous : " + textarea.value.substring(0,textarea.selectionStart));
Riga 343: Riga 360:
 
   }else{
 
   }else{
 
     // alert( "Previous pstart=" + pstart + " selectionStart=" + textarea.selectionStart + " pstart:selectionStart=" + textarea.value.substring(pstart,textarea.selectionStart));
 
     // alert( "Previous pstart=" + pstart + " selectionStart=" + textarea.selectionStart + " pstart:selectionStart=" + textarea.value.substring(pstart,textarea.selectionStart));
 +
//    if(textarea.value.substring(pstart,textarea.selectionStart).match("{{TextTerm")){
 +
    if(textarea.value.substring(pstart-"{{TextTerm".length,pstart).match("{{TextTerm")){
 +
    var ptermtype="TextTerm";
 +
    }else if (textarea.value.substring(pstart-"{{NewTextTerm".length,pstart).match("{{NewTextTerm")){
 +
      var ptermtype="NewTextTerm";
 +
    }else
 +
        var ptermtype="";
 
     var pend = textarea.value.substring(pstart,textarea.selectionStart). search("}}") ; // Regex ?
 
     var pend = textarea.value.substring(pstart,textarea.selectionStart). search("}}") ; // Regex ?
 
     // alert( "Previous pstart=" + pstart + " pend= " + pend + " selectionStart=" + textarea.selectionStart + " pstart:selectionStart=" + textarea.value.substring(pstart,textarea.selectionStart));
 
     // alert( "Previous pstart=" + pstart + " pend= " + pend + " selectionStart=" + textarea.selectionStart + " pstart:selectionStart=" + textarea.value.substring(pstart,textarea.selectionStart));
Riga 360: Riga 384:
 
   //                                        ><  nrange    >
 
   //                                        ><  nrange    >
 
   //                      #<-offsetnstart--->!  
 
   //                      #<-offsetnstart--->!  
   var nstart = textarea.value.substring(textarea.selectionEnd,textarea.length). search("{{TextTerm")  
+
   var nstart = textarea.value.substring(textarea.selectionEnd,textarea.value.length). search("{{TextTerm|{{NewTextTerm") ;
 
   if ( nstart == -1) { // No next
 
   if ( nstart == -1) { // No next
     // alert( "NO next TextTerm : " +  textarea.value.substring(textarea.selectionEnd,textarea.length));
+
     // alert( "NO next TextTerm : " +  textarea.value.substring(textarea.selectionEnd,textarea.value.length));
 
     noffset = null;
 
     noffset = null;
 
     nrange = null;
 
     nrange = null;
 
   }else{
 
   }else{
     var nend = textarea.value.substring(textarea.selectionEnd + nstart,textarea.length). search("}}") ;
+
    if(textarea.value.substring(nstart,textarea.selectionStart).match("{{TextTerm")){
 +
    var ntermtype="TextTerm";
 +
    }else if (textarea.value.substring(textarea.selectionStart,textarea.selectionEnd).match("{{NewTextTerm")){
 +
      var ntermtype="NewTextTerm";
 +
    }else
 +
      var ntermtype="";
 +
     var nend = textarea.value.substring(textarea.selectionEnd + nstart,textarea.value.length). search("}}") ;
 
     if ( nend == -1) { // Strange no ending
 
     if ( nend == -1) { // Strange no ending
       stop( "NO ending }} in previous : " + textarea.value.substring(textarea.selectionEnd,textarea.length)) ;
+
       stop( "NO ending }} in previous : " + textarea.value.substring(textarea.selectionEnd,textarea.value.length)) ;
 
     }else{
 
     }else{
 
       noffset = nstart ;
 
       noffset = nstart ;
Riga 379: Riga 409:
  
 
   oldFormHide();
 
   oldFormHide();
   template = "TextTerm";
+
   if (!ctermtype)
 +
    template = "TextTerm";
 +
  else
 +
    template = ctermtype;
 
   var legend;
 
   var legend;
 
   if (template == "TextTerm") {
 
   if (template == "TextTerm") {
 
     legend = "TextTerm source";
 
     legend = "TextTerm source";
 +
  } else if  (template == "NewTextTerm"){
 +
    legend = "NewTextTerm source";
 
   } else {
 
   } else {
 
     legend = "Cite news source";
 
     legend = "Cite news source";
Riga 389: Riga 424:
  
 
   numforms++;
 
   numforms++;
 +
  var  star_i="";
 +
  var  star_oi="";
 +
  if(texttermcur.indexentry == ""){
 +
    if(texttermcur.indexentry != texttermcur.indexentry_i){
 +
      star_i=" style='background-color:red'"; //<td style="background-color:red">
 +
      texttermcur.indexentry = texttermcur.indexentry_i;
 +
    }
 +
  } else {
 +
    star_i="";
 +
  }
 +
  if(texttermcur.otherindexentry == ""){
 +
    if(texttermcur.otherindexentry != texttermcur.otherindexentry_oi){
 +
      star_oi=" style='background-color:red'"; // <td style="background-color:red">
 +
      texttermcur.otherindexentry = texttermcur.otherindexentry_oi;
 +
    }
 +
  } else {
 +
      star_oi="";
 +
  }
 
   form = '<div id="citediv'+numforms+'">'+
 
   form = '<div id="citediv'+numforms+'">'+
 
     '<fieldset><legend>'+legend+'</legend>'+
 
     '<fieldset><legend>'+legend+'</legend>'+
Riga 405: Riga 458:
 
     '<td width="40"><input type="text" tabindex=1 style="width:10%" id="section" value= "' +
 
     '<td width="40"><input type="text" tabindex=1 style="width:10%" id="section" value= "' +
 
     texttermcur.section + '"></td>'+
 
     texttermcur.section + '"></td>'+
     '<td width="120"><label for="indexentry">&nbsp;IndexEntry: </label></td>'+
+
     '<td width="120"'+star_i+'><label for="indexentry">&nbsp;IndexEntry: </label></td>'+
 
     '<td width="400"><input type="text" tabindex=1 style="width:100%" id="indexentry" value= "' +
 
     '<td width="400"><input type="text" tabindex=1 style="width:100%" id="indexentry" value= "' +
 
     texttermcur.indexentry + '"></td></tr>'+
 
     texttermcur.indexentry + '"></td></tr>'+
     '<tr><td width="120"><label for="otherindexentry">&nbsp;OtherIndexEntry: </label></td>'+
+
     '<tr><td width="120"'+star_oi+'><label for="otherindexentry">&nbsp;OtherIndexEntry:: </label></td>'+
 
     '<td width="400"><input type="text" tabindex=1 style="width:100%" id="otherindexentry" value= "' +
 
     '<td width="400"><input type="text" tabindex=1 style="width:100%" id="otherindexentry" value= "' +
 
     texttermcur.otherindexentry + '"></td>'+
 
     texttermcur.otherindexentry + '"></td>'+
Riga 451: Riga 504:
 
     '<input type="hidden" value="'+template+'" id="template">'+
 
     '<input type="hidden" value="'+template+'" id="template">'+
 
     '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
 
     '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
 
     '<td width="120"><label for="title">&nbsp;Title: </label></td>'+
 
     '<td width="120"><label for="title">&nbsp;Title: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td></tr>'+
 
     '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
 
     '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
 
     '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
 
     '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
 
     '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
 
     '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
 
     '<td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
 
     '<td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td></tr>'+
 
     '<tr><td width="120"><label for="work">&nbsp;Work: </label></td>'+
 
     '<tr><td width="120"><label for="work">&nbsp;Work: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="work"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="work"></td>'+
 
     '<td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
 
     '<td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td></tr>'+
 
     '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
 
     '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
 
     '<td width="120"><label for="language">&nbsp;Language: </label></td>'+
 
     '<td width="120"><label for="language">&nbsp;Language: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td></tr>'+
 
     '<tr><td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
 
     '<tr><td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate" value="'+ newtime +'"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate" value="'+ newtime +'"></td>'+
 
     '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
 
     '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
 
     '<tr><td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
 
     '<tr><td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
 
     '</table>'+
 
     '</table>'+
 
     '<input type="button" value="Add citation" onClick="addcites()">'+
 
     '<input type="button" value="Add citation" onClick="addcites()">'+
'</fieldset></div>';
+
    '</fieldset></div>';
  document.getElementById('citeselect').innerHTML += form;
+
  document.getElementById('citeselect').innerHTML += form;
 
}
 
}
+
 
 
function citeBook() {
 
function citeBook() {
 
   oldFormHide();
 
   oldFormHide();
Riga 491: Riga 544:
 
     '<input type="hidden" value="'+template+'" id="template">'+
 
     '<input type="hidden" value="'+template+'" id="template">'+
 
     '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
 
     '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
 
     '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
 
     '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
 
     '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
 
     '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
 
     '<td width="120"><label for="others">&nbsp;Others: </label></td>'+
 
     '<td width="120"><label for="others">&nbsp;Others: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="others"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="others"></td></tr>'+
 
     '<tr><td width="120"><label for="title">&nbsp;Title: </label></td>'+
 
     '<tr><td width="120"><label for="title">&nbsp;Title: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td>'+
 
     '<td width="120"><label for="editor">&nbsp;Editor: </label></td>'+
 
     '<td width="120"><label for="editor">&nbsp;Editor: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="editor"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="editor"></td></tr>'+
 
     '<tr><td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
 
     '<tr><td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td>'+
 
     '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
 
     '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
 
     '<tr><td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
 
     '<tr><td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td>'+
 
     '<td width="120"><label for="edition">&nbsp;Edition: </label></td>'+
 
     '<td width="120"><label for="edition">&nbsp;Edition: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="edition"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="edition"></td></tr>'+
 
     '<tr><td width="120"><label for="series">&nbsp;Series: </label></td>'+
 
     '<tr><td width="120"><label for="series">&nbsp;Series: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="series"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="series"></td>'+
 
     '<td width="120"><label for="volume">&nbsp;Volume: </label></td>'+
 
     '<td width="120"><label for="volume">&nbsp;Volume: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="volume"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="volume"></td></tr>'+
 
     '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
 
     '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
 
     '<td width="120"><label for="chapter">&nbsp;Chapter: </label></td>'+
 
     '<td width="120"><label for="chapter">&nbsp;Chapter: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="chapter"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="chapter"></td></tr>'+
 
     '<tr><td width="120"><label for="isbn">&nbsp;ISBN: </label></td>'+
 
     '<tr><td width="120"><label for="isbn">&nbsp;ISBN: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="isbn"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="isbn"></td>'+
 
     '<td width="120"><label for="oclc">&nbsp;OCLC: </label></td>'+
 
     '<td width="120"><label for="oclc">&nbsp;OCLC: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="oclc"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="oclc"></td></tr>'+
 
     '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
 
     '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
 
     '<td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
 
     '<td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate"></td></tr>'+
 
     '<tr><td width="120"><label for="language">&nbsp;Language: </label></td>'+
 
     '<tr><td width="120"><label for="language">&nbsp;Language: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td>'+
 
     '<td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
 
     '<td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
 
     '</table>'+
 
     '</table>'+
 
     '<input type="button" value="Add citation" onClick="addcites()">'+
 
     '<input type="button" value="Add citation" onClick="addcites()">'+
'</fieldset></div>';
+
    '</fieldset></div>';
  document.getElementById('citeselect').innerHTML += form;
+
  document.getElementById('citeselect').innerHTML += form;
 
}
 
}
+
 
 
function citeJournal() {
 
function citeJournal() {
 
   oldFormHide();
 
   oldFormHide();
Riga 541: Riga 594:
 
   numforms++;
 
   numforms++;
 
   form = '<div id="citediv'+numforms+'">'+
 
   form = '<div id="citediv'+numforms+'">'+
     '<fieldset><legend>Cite journal source</legend>'+
+
     '<fieldset><legend>Cite book source</legend>'+
 
     '<table cellspacing="5">'+
 
     '<table cellspacing="5">'+
 
     '<input type="hidden" value="'+template+'" id="template">'+
 
     '<input type="hidden" value="'+template+'" id="template">'+
 
     '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
 
     '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
 
     '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
 
     '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
 
     '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
 
     '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
 
     '<td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
 
     '<td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td></tr>'+
 
     '<tr><td width="120"><label for="title">&nbsp;Title: </label></td>'+
 
     '<tr><td width="120"><label for="title">&nbsp;Title: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td>'+
 
     '<td width="120"><label for="journal">&nbsp;Journal: </label></td>'+
 
     '<td width="120"><label for="journal">&nbsp;Journal: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="journal"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="journal"></td></tr>'+
 
     '<tr><td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
 
     '<tr><td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td>'+
 
     '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
 
     '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
 
     '<tr><td width="120"><label for="volume">&nbsp;Volume: </label></td>'+
 
     '<tr><td width="120"><label for="volume">&nbsp;Volume: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="volume"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="volume"></td>'+
 
     '<td width="120"><label for="issue">&nbsp;Issue: </label></td>'+
 
     '<td width="120"><label for="issue">&nbsp;Issue: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="issue"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="issue"></td></tr>'+
 
     '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
 
     '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
 
     '<td width="120"><label for="issn">&nbsp;ISSN: </label></td>'+
 
     '<td width="120"><label for="issn">&nbsp;ISSN: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="issn"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="issn"></td></tr>'+
 
     '<tr><td width="120"><label for="oclc">&nbsp;OCLC: </label></td>'+
 
     '<tr><td width="120"><label for="oclc">&nbsp;OCLC: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="oclc"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="oclc"></td>'+
 
     '<td width="120"><label for="language">&nbsp;Language: </label></td>'+
 
     '<td width="120"><label for="language">&nbsp;Language: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td></tr>'+
 
     '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
 
     '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
 
     '<td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
 
     '<td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate"></td></tr>'+
 
     '<tr><td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
 
     '<tr><td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
 
     '</table>'+
 
     '</table>'+
 
     '<input type="button" value="Add citation" onClick="addcites()">'+
 
     '<input type="button" value="Add citation" onClick="addcites()">'+
Riga 667: Riga 720:
 
     var savepos= textarea.selectionStart;
 
     var savepos= textarea.selectionStart;
 
     if ('selectionStart' in textarea) {
 
     if ('selectionStart' in textarea) {
       textarea.value=textarea.value.substring(0,textarea.selectionStart) + texttermchain + textarea.value.substring(textarea.selectionEnd, textarea.length);  
+
       textarea.value=textarea.value.substring(0,textarea.selectionStart) + texttermchain + textarea.value.substring(textarea.selectionEnd, textarea.value.length);  
 
       //insertTags(texttermchain, '', '');
 
       //insertTags(texttermchain, '', '');
 
       textarea.selectionStart = savepos;
 
       textarea.selectionStart = savepos;
Riga 682: Riga 735:
 
    
 
    
 
}
 
}
+
 
 +
 
 +
 
 
function addcites(template) {
 
function addcites(template) {
 
   cites = document.getElementById('citediv'+numforms).getElementsByTagName('input');
 
   cites = document.getElementById('citediv'+numforms).getElementsByTagName('input');
Riga 699: Riga 754:
 
     }
 
     }
 
   }
 
   }
   cite = citebegin + citename + citeinner + "}}</ref>";
+
   cite = citebegin + citename + citeinner + "numforms=" + numforms + "}}</ref>";
 
   $("#wpTextbox1").focus();
 
   $("#wpTextbox1").focus();
 
   insertTags(cite, '', '');
 
   insertTags(cite, '', '');
 
   document.getElementById('citediv'+numforms).style.display = 'none';
 
   document.getElementById('citediv'+numforms).style.display = 'none';
 
}
 
}
+
 
 
function getNamedRefs(calls) {
 
function getNamedRefs(calls) {
 
   if (typeof(wikEdUseWikEd) != 'undefined') {
 
   if (typeof(wikEdUseWikEd) != 'undefined') {
Riga 738: Riga 793:
 
   return namedrefs;
 
   return namedrefs;
 
}
 
}
+
 
 
function citeNamedRef() {
 
function citeNamedRef() {
 
   namedrefs = getNamedRefs(false);
 
   namedrefs = getNamedRefs(false);
Riga 755: Riga 810:
 
       '<table cellspacing="5">'+
 
       '<table cellspacing="5">'+
 
       '<tr><td><label for="namedrefs">&nbsp;Named references in text</label></td>'+
 
       '<tr><td><label for="namedrefs">&nbsp;Named references in text</label></td>'+
            '<td><select name="namedrefs" id="namedrefs">';
+
      '<td><select name="namedrefs" id="namedrefs">';
 
     for (var i=0;i<namedrefs.length;i++) {
 
     for (var i=0;i<namedrefs.length;i++) {
 
       form+= '<option value="'+namedrefs[i]+'">'+namedrefs[i]+'</option>';
 
       form+= '<option value="'+namedrefs[i]+'">'+namedrefs[i]+'</option>';
Riga 763: Riga 818:
 
       '<input type="button" value="Add citation" onClick="addnamedcite()">'+
 
       '<input type="button" value="Add citation" onClick="addnamedcite()">'+
 
       '</fieldset></div>';
 
       '</fieldset></div>';
    document.getElementById('citeselect').innerHTML += form;
+
    document.getElementById('citeselect').innerHTML += form;
 
   }
 
   }
 
}
 
}
+
 
 
function addnamedcite() {
 
function addnamedcite() {
 
   name = document.getElementById('citediv'+numforms).getElementsByTagName('select')[0].value;
 
   name = document.getElementById('citediv'+numforms).getElementsByTagName('select')[0].value;
Riga 774: Riga 829:
 
   document.getElementById('citediv'+numforms).style.display = 'none';
 
   document.getElementById('citediv'+numforms).style.display = 'none';
 
}
 
}
+
 
 
function getAllRefs() {
 
function getAllRefs() {
 
   if (typeof(wikEdUseWikEd) != 'undefined') {
 
   if (typeof(wikEdUseWikEd) != 'undefined') {
Riga 802: Riga 857:
 
   return allrefs;
 
   return allrefs;
 
}
 
}
+
 
 
function NRcallError(namedrefs, refname) {
 
function NRcallError(namedrefs, refname) {
 
   for (var i=0; i<namedrefs.length; i++) {
 
   for (var i=0; i<namedrefs.length; i++) {
Riga 811: Riga 866:
 
   return false;
 
   return false;
 
}
 
}
+
 
 
function errorCheck() {
 
function errorCheck() {
 
   var allrefs = getAllRefs();
 
   var allrefs = getAllRefs();
Riga 848: Riga 903:
 
         if (allrefscontent[i] == allrefscontent[p] && i != p) {
 
         if (allrefscontent[i] == allrefscontent[p] && i != p) {
 
           errorlist[q] = '<tr><td width="75%"><tt>'+allrefscontent[i]+'</tt></td>';
 
           errorlist[q] = '<tr><td width="75%"><tt>'+allrefscontent[i]+'</tt></td>';
           errorlist[q] += '<td width="25%">Multiple refs contain this content, a <a href="//en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">named reference</a> should be used instead</td></tr>';
+
           errorlist[q] += '<td width="25%">Multiple refs contain this content, a <a href="http://en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">named reference</a> should be used instead</td></tr>';
 
           q++;
 
           q++;
 
           samecontentexclude[sx] = allrefscontent[i]
 
           samecontentexclude[sx] = allrefscontent[i]
Riga 856: Riga 911:
 
         p++;
 
         p++;
 
       }
 
       }
    skipcheck=false;
+
      skipcheck=false;
 
     }
 
     }
 
     if (templates) {
 
     if (templates) {
Riga 867: Riga 922:
 
         if (!skipcheck) {
 
         if (!skipcheck) {
 
           errorlist[q] = '<tr><td width="75%"><tt>'+allrefs[i]+'</tt></td>';
 
           errorlist[q] = '<tr><td width="75%"><tt>'+allrefs[i]+'</tt></td>';
           errorlist[q] += '<td width="25%">Does not use a <a href="//en.wikipedia.org/wiki/Wikipedia:Citation_templates">citation template</a></td></tr>';
+
           errorlist[q] += '<td width="25%">Does not use a <a href="http://en.wikipedia.org/wiki/Wikipedia:Citation_templates">citation template</a></td></tr>';
 
           q++;
 
           q++;
 
           templateexclude[tx] = allrefscontent[i];
 
           templateexclude[tx] = allrefscontent[i];
Riga 889: Riga 944:
 
         if (namedrefs[k] == namedrefs[z] && k != z) {
 
         if (namedrefs[k] == namedrefs[z] && k != z) {
 
           errorlist[q] = '<tr><td width="75%"><tt>'+namedrefs[k]+'</tt></td>';
 
           errorlist[q] = '<tr><td width="75%"><tt>'+namedrefs[k]+'</tt></td>';
           errorlist[q] += '<td width="25%">Multiple references are given the same <a href="//en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">name</a></td></tr>';
+
           errorlist[q] += '<td width="25%">Multiple references are given the same <a href="http://en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">name</a></td></tr>';
 
           q++;
 
           q++;
 
           repeatnameexclude[rx] = namedrefs[z];
 
           repeatnameexclude[rx] = namedrefs[z];
Riga 897: Riga 952:
 
         z++;
 
         z++;
 
       }
 
       }
    skipcheck = false;
+
      skipcheck = false;
 
     }
 
     }
 
   }
 
   }
Riga 912: Riga 967:
 
         if (!NRcallError(namedrefs, namedrefcalls[p])) {
 
         if (!NRcallError(namedrefs, namedrefcalls[p])) {
 
           errorlist[q] = '<tr><td width="75%"><tt>'+namedrefcalls[p]+'</tt></td>';
 
           errorlist[q] = '<tr><td width="75%"><tt>'+namedrefcalls[p]+'</tt></td>';
           errorlist[q] += '<td width="25%">A <a href="//en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">named reference</a> is used but not defined</td></tr>';
+
           errorlist[q] += '<td width="25%">A <a href="http://en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">named reference</a> is used but not defined</td></tr>';
 
           q++;
 
           q++;
 
           undefexclude[ux] = namedrefs[p];
 
           undefexclude[ux] = namedrefs[p];
Riga 920: Riga 975:
 
       skipcheck = false;
 
       skipcheck = false;
 
     }
 
     }
}
+
  }
 
   if (q > 0) {
 
   if (q > 0) {
 
     return errorlist;
 
     return errorlist;
Riga 927: Riga 982:
 
   }
 
   }
 
}
 
}
+
 
 
function dispErrors() {
 
function dispErrors() {
 
   oldFormHide();
 
   oldFormHide();
Riga 935: Riga 990:
 
     '<input type="checkbox" id="unclosed" /> Unclosed <tt>&lt;ref&gt;</tt> tags<br/>'+
 
     '<input type="checkbox" id="unclosed" /> Unclosed <tt>&lt;ref&gt;</tt> tags<br/>'+
 
     '<input type="checkbox" id="samecontent" /> References with the same content<br/>'+
 
     '<input type="checkbox" id="samecontent" /> References with the same content<br/>'+
     '<input type="checkbox" id="templates" /> References not using a <a href="//en.wikipedia.org/wiki/Wikipedia:Citation_templates">citation template</a><br/>'+
+
     '<input type="checkbox" id="templates" /> References not using a <a href="http://en.wikipedia.org/wiki/Wikipedia:Citation_templates">citation template</a><br/>'+
 
     '<input type="checkbox" id="repeated" /> Multiple references with the same name<br/>'+
 
     '<input type="checkbox" id="repeated" /> Multiple references with the same name<br/>'+
 
     '<input type="checkbox" id="undef" /> Usage of undefined named references<br/>'+
 
     '<input type="checkbox" id="undef" /> Usage of undefined named references<br/>'+
Riga 942: Riga 997:
 
   document.getElementById('citeselect').innerHTML += form;
 
   document.getElementById('citeselect').innerHTML += form;
 
}
 
}
+
 
 
function doErrorCheck() {
 
function doErrorCheck() {
 
   var errors = errorCheck();
 
   var errors = errorCheck();
Riga 968: Riga 1 023:
 
     form+= '</table>'+
 
     form+= '</table>'+
 
       '</fieldset></div>';
 
       '</fieldset></div>';
    document.getElementById('citeselect').innerHTML += form;
+
    document.getElementById('citeselect').innerHTML += form;
 
   }
 
   }
 
}
 
}
+
 
 
$( refbuttons );
 
$( refbuttons );

Versione attuale delle 19:44, 7 mag 2019

var numforms = 0;
var wikEdAutoUpdateUrl;
function refbuttons() {
  if (mw.toolbar && (document.getElementById('toolbar') || document.getElementById('wikiEditor-ui-toolbar'))/* && wikEdAutoUpdateUrl == null*/) {
    if (document.getElementById('toolbar')) {
      button = document.createElement('a');
      button.href = "javascript:easyCiteMain()";
      button.title = "Insert citation";
      buttonimage = document.createElement('img');
      buttonimage.src = "http://upload.wikimedia.org/wikipedia/commons/0/00/Button_easy_cite_%281%29.png";
      buttonimage.alt = "Insert footnote";
      button.appendChild(buttonimage);
      document.getElementById('toolbar').appendChild(button);
    } else {
      button = document.createElement('a');
      button.href = "#";
      button.title = "Insert citation";
      button.id = 'reftoolbar-button';
      buttonimage = document.createElement('img');
      buttonimage.src = "http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Curly_Brackets.svg/22px-Curly_Brackets.svg.png";
      buttonimage.alt = "Insert citation";
      button.classname = "tool tool-button";
      buttonimage.style.width = "22px";
      buttonimage.style.height = "17px";
      buttonimage.style.paddingTop = "5px";
      buttonimage.style.paddingLeft = "3px";
      button.appendChild(buttonimage)
      document.getElementById('wikiEditor-ui-toolbar').childNodes[0].childNodes[1].appendChild(button);
      //document.getElementById('reftoolbar-button').onclick = easyCiteMain;
      $(document).on('click', '#reftoolbar-button', function() { easyCiteMain(); });
    }
    if (navigator.userAgent.indexOf('MSIE') == -1) {
      //alert("NO MSIE");
      citemain = document.createElement('div');
      citemain.style.display = 'none';
      citemain.setAttribute('Id', 'citeselect');
      citemain.appendChild( addOption("citeWeb()", "Cite web") );
      citemain.appendChild( addOption("citeBook()", "Cite book") );
      citemain.appendChild( addOption("citeJournal()", "Cite journal") );
      citemain.appendChild( addOption("citeNews()", "Cite news") );
      citemain.appendChild( addOption("citeNamedRef()", "Named ref") );
      citemain.appendChild( addOption("dispErrors()", "Error check") );
      citemain.appendChild( addOption("hideInitial()", "Cancel") );
      citemain.appendChild( addOption("textTerm()", "TextTerm") );
      document.getElementById('wpTextbox1').parentNode.insertBefore(citemain, document.getElementById('wpTextbox1'));
    }
    else {
      selection = '<div id="citeselect" style="display:none"><input type="button" value="Cite web" onclick="citeWeb()" />'+
        '<input type="button" value="Cite book" onclick="citeBook()" />'+
        '<input type="button" value="Cite journal" onclick="citeJournal()" />'+
        '<input type="button" value="Cite news" onclick="citeNews()" />'+
        '<input type="button" value="Named ref" onclick="citeNamedRef()" />'+
        '<input type="button" value="Error check" onclick="dispErrors()" />'+
        '<input type="button" value="Cancel" onclick="hideInitial()" />'+
        '<input type="button" value="TextTerm" onclick="textTerm()" /></div>';
      document.getElementById('editform').innerHTML = selection + document.getElementById('editform').innerHTML;
    }
  }
}

function addOption(script, text) {
  option = document.createElement('input');
  option.setAttribute('type', 'button');
  option.setAttribute('onclick', script);
  option.setAttribute("value", text);
  return option;
}

function hideInitial() {
  document.getElementById('citeselect').style.display = 'none';
  oldFormHide();
}

function oldFormHide() {
  if (numforms != 0) {
    document.getElementById('citediv'+numforms).style.display = 'none';
  }
  if (document.getElementById('errorform') != null) {
    document.getElementById('citeselect').removeChild(document.getElementById('errorform'));
  }
} 

function easyCiteMain() {
  document.getElementById('citeselect').style.display = '';
}

var months = ['January', 'February', 'March', 'April', 'May', 'June',
              'July', 'August', 'September', 'October', 'November', 'December'];
var citeGlobalDateFormat = "<date> <monthname> <year>";
function getTime() {
  var datestr = '';
  if (typeof citeUserDateFormat != 'undefined') {
    datestr = citeUserDateFormat;
  } else {
    datestr = citeGlobalDateFormat;
  }
  var DT = new Date();
  var zmonth = '';
  var month = DT.getUTCMonth()+1;
  if (month < 10) {
    zmonth = "0"+month.toString();
  } else {
    zmonth = month.toString();
  }
  month = month.toString();
  var zdate = '';
  var date = DT.getUTCDate()
  if (date < 10) {
    zdate = "0"+date.toString();
  } else {
    zdate = date.toString();
  }
  date = date.toString()
  datestr = datestr.replace('<date>', date);
  datestr = datestr.replace('<month>', month);
  datestr = datestr.replace('<zdate>', zdate);
  datestr = datestr.replace('<zmonth>', zmonth);
  datestr = datestr.replace('<monthname>', months[DT.getUTCMonth()]);
  datestr = datestr.replace('<year>', DT.getUTCFullYear().toString());
  return (datestr);
}

function citeWeb() {
  citeNewsWeb("cite web");
}
function citeNews() {
  citeNewsWeb("cite news");
}

function textTerm() {
  textTermf();
} 

var texttermall = [];
var texttermcur = [];
var textterminput = [];
var poffset=null, prange=null, noffset=null, nrange=null;
var section = '';
var subnote = '';

function textTermf() {
  textTermform(null,null);
}

function nexttextterm() {
  //console.log("nexttexterm before noffset :" + noffset + " nrange=" + nrange);
  savetextterms(); // Save if changed
  if(noffset){ // If there is a next
    textTermform(noffset, nrange); // Call with offset !{{TextTerm    }}
  }
}
function previoustextterm() {
  //console.log("previoustexterm before poffset :" + poffset + " prange=" + prange);
  savetextterms();
  if(poffset){ // If there is a next
    textTermform(poffset, prange); // Call with offset !{{TextTerm    }}
  }
}



function texttermfill(subtext) {
  var ref = [];
  this.term = '';
  this.note= '';
  this.section= '';
  if(section != '')
    this.section = section;
  this.subnote = '';
  if(subnote != '')
    this.subnote = subnote;
  this.englishentry= '';
  this.indexentry= '';
  this.otherindexentry = '';
  this.otherindexentrytwo = '';
  this.otherindexentrythree = '';
  this.otherindexentryfour = '';
  this.otherindexentryfive = '';

  var j=0;
  var nr=true;
  regexbar= /\|([^|]*)/gm 
  //regexbar =/\|((.)*?)(?=[\||\n])/gm //"|programmes de population|1|933|IndexEntry=programme de population|OtherIndexEntry=population, programme de"
  do {
    ref = regexbar.exec(subtext);
    //console.log(" subtext=" + subtext);
    //console.log(" ref=" + ref);
    if(ref != null){
      switch (j)
      {
        case 0 : this.term = ref[1]; break;
        case 1 : this.note = ref[1]; break;
        case 2 : this.section = ref[1]; break;
        default :
        if(ref[1].match(/^ *?EnglishEntry *?= *?(.*) *?$/))
          this.englishentry = ref[1].replace(/^ *?EnglishEntry *?= *?(.*) *?$/,"$1");
        else if(ref[1].match(/^ *?IndexEntry *?= *?(.*) *?$/))
          this.indexentry = ref[1].replace(/^ *?IndexEntry *?= *?(.*) *?$/,"$1");
        else if(ref[1].match(/^ *?OtherIndexEntry *?= *?(.*) *?$/))
          this.otherindexentry = ref[1].replace(/^ *?OtherIndexEntry *?= *?(.*) *?$/,"$1");
        else if(ref[1].match(/^ *?OtherIndexEntryTwo *?= *?(.*) *?$/))
          this.otherindexentrytwo = ref[1].replace(/^ *?OtherIndexEntryTwo *?= *?(.*) *?$/,"$1");
        else if(ref[1].match(/^ *?OtherIndexEntryThree *?= *?(.*) *?$/))
          this.otherindexentrythree = ref[1].replace(/^ *?OtherIndexEntryThree *?= *?(.*) *?$/,"$1");
        else if(ref[1].match(/^ *?OtherIndexEntryFour *?= *?(.*) *?$/))
          this.otherindexentryfour = ref[1].replace(/^ *?OtherIndexEntryFour *?= *?(.*) *?$/,"$1");
        else if(ref[1].match(/^ *?OtherIndexEntryFive *?= *?(.*) *?$/))
          this.otherindexentryfive = ref[1].replace(/^ *?OtherIndexEntryFive *?= *?(.*) *?$/,"$1");
        else if(ref[1].match(/^ *?EnglishEntry *?= *?(.*) *?$/))
          this.englishentry = ref[1].replace(/^ *?EnglishEntry *?= *?(.*) *?$/,"$1");
        else if(j==3){
          this.subnote = ref[1];
        }else{
          alert("texttermfill error j=" + j + " ref1= " +ref[1]);
          //console.log("texttermfill error j=" + j + " ref1= " +ref[1]);
        }
      }
      j++;
    } else {
      nr=false;
    }
  } while (nr==true);
   
    this.indexentry_i=this.term;  // Plural doesn't seem to be necessary
    this.otherindexentry_oi=this.indexentry_i.replace(/(.*) (.*)/, "$2. $1");
  //console.log("j=" + j + " term=" + this.term + " note=" + this.note + " section=" + this.section +" subnote=" + this.subnote +" indexentry=" + this.indexentry + " otherindexentry=" + this.otherindexentry);
}


function textTermform(offset,range){

  // We search for TextTerm in wptexbox1 from cursor position (offset) and if selected (range)
  // If called by a previous or next, they are not null {{TextTerm<-......>}}
  // if outside of a TextTerm template, we will fill with the term with the selection
  // in any case we compute the previous nextstart and previus end and next offset not real.
  // if inside a TextTerm we fill the form
  // if saveterm is necessary, we save and exit.
  // if previous or next, we save if necessary and we call textTermform with a new offset >0 (next) or <0 (previous) and range
  // 
  var textarea= document.getElementById('wpTextbox1');
  if ('selectionStart' in textarea) {
    if (offset == null){ // range should be null too
      offset = textarea.selectionStart;
      range = textarea.selectionEnd - textarea.selectionStart;
      realltxtterms = /({{TextTerm)|({{NewTextTerm)/gm; // works, finds after Term
      var lstxtterm =-1;
      subtextt= textarea.value.substring(0,textarea.selectionEnd);
      while ((nbtxt=realltxtterms.exec(subtextt))){ lstxtterm=realltxtterms.lastIndex- nbtxt[0].length}
      //var lstxtterm = textarea.value.substring(0,textarea.selectionEnd). search("{{TextTerm|{{NewTextTerm") ; // Just before the string. No regex
      var lstcltxtterm = textarea.value.substring(0,textarea.selectionStart). lastIndexOf("}}") ; //might be for another purpose than TextTerm
      // Looking for the section
      section = '';
      var psectione = textarea.value.substring(0,textarea.selectionEnd). lastIndexOf("===") ; // Just before the string. No regex
      if(psectione != -1){
        var psections = textarea.value.substring(0,psectione). lastIndexOf("===") ; // Just before the string. No regex
        if(psections != -1){
          section =  textarea.value.substring(psections,psectione+3).match(/^=== *?(\d{3}) *?===$/)[1];
        }
      }
      //console.log(" section |" + section);
      //textarea.value.substring(0,textarea.selectionStart). search(new RegExp("((({{TextTerm[^}]+)[^{]+)+)");
      
      if ( (-1 == lstxtterm) || ((-1 < lstxtterm) && (lstxtterm < lstcltxtterm)) ) { // @{{TextTerm ...@}}...(...).. 
        // {{Refnumber }} ....! 
        // alert("We are after outside a previous TextTerm or no TextTerm before:" + textarea.value.substring(0,textarea.selectionStart ));
        texttermcur = new texttermfill("|" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
        //console.log(" We want to fill with the selection=" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
        // On se retrouve avec du texte à ajouter et le curseur inchangé à textarea.selectionStart   
      } else if ( (lstxtterm > lstcltxtterm) && (lstcltxtterm > -1) ) { // @}}... @{{TextTerm ... (...).. 
        //alert("We are within a TextTerm or no closing }}:" + textarea.value.substring(lstcltxtterm, lstxtterm));
        
        // ( textarea.value.substring(lstxtterm, textarea.selectionStart). search(new RegExp("}}")) == -1) {
        var endtxterm= textarea.value.substring(textarea.selectionStart, textarea.value.length). search("}}");
        if( endtxterm == -1)
          error(" Error no closing TextTerm; should be fixed:" + textarea.value.substring(textarea.selectionStart, textarea.value.length));
        else{
          endtxterm = endtxterm + textarea.selectionStart +2 ; // }} included
          // Looking for @{{TextTerm....}}@
          // alert("We are within textterm  " + lstxtterm + " to " + endtxterm + " soit:" + textarea.value.substring(lstxtterm,endtxterm) );
          //console.log(" Replacing with form result:" + textarea.value.substring(lstxtterm+"{{TextTerm".length,endtxterm-"}}".length));
          texttermcur = new texttermfill(textarea.value.substring(lstxtterm+"{{TextTerm".length,endtxterm-"}}".length) );
          // On devrait remplacer {{TextTerm ...}} par la forme, soit de lstxtterm endtxtterm
          // On se fout de la sélection originale et la repositionne sur toute l'étendue du textterm.
          // alert("After null before textarea.selectionStart is" + textarea.selectionStart + " end=" +  textarea.selectionEnd);
          // alert(" selection is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
          textarea.selectionStart = lstxtterm;
          textarea.selectionEnd = endtxterm;
          // alert("After null textarea.selectionStart is" + textarea.selectionStart + " end=" +  textarea.selectionEnd);
          // alert(" selection is now:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
        } //en endtxtterm
      } // end  @}}... @{{TextTerm ... (...).. 
    }else{ // coming from a previous or next
      // alert("After Next textarea.selectionStart is" + textarea.selectionStart + " end=" +  textarea.selectionEnd);
      // alert(" After next selection is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
      // alert("Coming from a previous or next modifing selectionStart start is an offsetstart =" + offset + " and range=" + range)
      // Previous
      //                                selectionStart selectionEnd
      //                                         >                <
      // ^....@{{TextTerm....#}}.................@{{TextTerm ...}}!
      //       !<-range-------->! 
      //                       #<-offset--------->! 
      // Next
      //  selectionStart selectionEnd
      //      >                 <
      // ^....@{{TextTerm....#}}.................@{{TextTerm ...}}!
      //                                         !<--range------->! 
      //                       #<-offset--------->! 
      // alert(" Before textarea.selectionStart=" + textarea.selectionStart + " textarea.selectionEnd=" + textarea.selectionEnd);
      //alert(" Before is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
      textarea.selectionStart = (offset > 0 ? textarea.selectionEnd + offset : textarea.selectionStart + offset -range);
      textarea.selectionEnd = textarea.selectionStart + range;
      // Looking for the section
      section = '';
      var psectione = textarea.value.substring(0,textarea.selectionEnd). lastIndexOf("===") ; // Just before the string. No regex
      if(psectione != -1){
        var psections = textarea.value.substring(0,psectione). lastIndexOf("===") ; // Just before the string. No regex
        if(psections != -1){
          section =  textarea.value.substring(psections,psectione+3).match(/^=== *?(\d{3}) *?===$/)[1];
        }
      }
      //console.log(" section Other |" + section);

      // alert(" After is:" + textarea.value.substring(textarea.selectionStart,textarea.selectionEnd));
      // alert(" After textarea.selectionStart=" + textarea.selectionStart + " textarea.selectionEnd=" + textarea.selectionEnd);
      //console.log("textterm cur is:" + textarea.value.substring(textarea.selectionStart+"{{TextTerm".length,textarea.selectionEnd-"}}".length));
      // We are at the beginning of a selection or of a {{TextTerm or NewTextTerm and we should know the length until |
      if(textarea.value.substring(textarea.selectionStart,textarea.selectionEnd).match("{{TextTerm")){
        var ctermtype="TextTerm";
      }else if (textarea.value.substring(textarea.selectionStart,textarea.selectionEnd).match("{{NewTextTerm")){
        var ctermtype="NewTextTerm";
      }else
        var ctermtype="";

     // texttermcur = new texttermfill(textarea.value.substring(textarea.selectionStart+"{{TextTerm".length,textarea.selectionEnd-"}}".length) );

      texttermcur = new texttermfill(textarea.value.substring(textarea.selectionStart+ctermtype.length,textarea.selectionEnd-"}}".length) );
    }
  }else{
    alert("No selectionStart Internet Explorer < 9?");
  }  
  // Looking for previous and next
  // Previous
  // ^....@{{TextTerm....#}}.................@{{TextTerm ...}}!
  //                        poffset
  //       <   prange      ><
  //       ><              ><
  //     pstart          pend
  //       !<--------offsetpstart------------>! 
  //                       #<-offsetpsend---->!
  //realltxtterms = /({{TextTerm[^}]+)|({{NewTextTerm[^}]+)/gm; // works, finds end of }}
  realltxtterms = /({{TextTerm)|({{NewTextTerm)/gm; // works, finds after Term
  var pstart=-1;
  subtextt= textarea.value.substring(0,textarea.selectionStart);
  while ((nbtxt=realltxtterms.exec(subtextt))){ pstart=realltxtterms.lastIndex- nbtxt[0].length}
  //  var pstart = textarea.value.substring(0,textarea.selectionStart). search("{{TextTerm|{{NewTextTerm");
  if ( pstart == -1) { // No previous
    // alert( "NO previous : " + textarea.value.substring(0,textarea.selectionStart));
    poffset = null;
    prange = null;
  }else{
    // alert( "Previous pstart=" + pstart + " selectionStart=" + textarea.selectionStart + " pstart:selectionStart=" + textarea.value.substring(pstart,textarea.selectionStart));
//    if(textarea.value.substring(pstart,textarea.selectionStart).match("{{TextTerm")){
    if(textarea.value.substring(pstart-"{{TextTerm".length,pstart).match("{{TextTerm")){
     var ptermtype="TextTerm";
    }else if (textarea.value.substring(pstart-"{{NewTextTerm".length,pstart).match("{{NewTextTerm")){
      var ptermtype="NewTextTerm";
    }else
        var ptermtype="";
    var pend = textarea.value.substring(pstart,textarea.selectionStart). search("}}") ; // Regex ?
    // alert( "Previous pstart=" + pstart + " pend= " + pend + " selectionStart=" + textarea.selectionStart + " pstart:selectionStart=" + textarea.value.substring(pstart,textarea.selectionStart));
    if ( pend == -1) { // Strange no ending
      stop( "NO ending }} in previous : " + textarea.value.substring(0,textarea.selectionStart));
    }else{
      prange = pend + 2; // }} included
      poffset = pstart + prange - textarea.selectionStart;  // should be negative
      // alert( " prange =" + prange + " poffset=" + poffset);
    }
  }
  // Next
  // ^....@{{TextTerm....#}}.................@{{TextTerm ...}}!
  //                       !<--------offsetnend-------------->! 
  //                       #<-offsetnstart--->! 
  //                                      noffset
  //                                         ><   nrange     >
  //                       #<-offsetnstart--->! 
  var nstart = textarea.value.substring(textarea.selectionEnd,textarea.value.length). search("{{TextTerm|{{NewTextTerm") ;
  if ( nstart == -1) { // No next
    // alert( "NO next TextTerm : " +  textarea.value.substring(textarea.selectionEnd,textarea.value.length));
    noffset = null;
    nrange = null;
  }else{
    if(textarea.value.substring(nstart,textarea.selectionStart).match("{{TextTerm")){
     var ntermtype="TextTerm";
    }else if (textarea.value.substring(textarea.selectionStart,textarea.selectionEnd).match("{{NewTextTerm")){
      var ntermtype="NewTextTerm";
    }else
      var ntermtype="";
    var nend = textarea.value.substring(textarea.selectionEnd + nstart,textarea.value.length). search("}}") ;
    if ( nend == -1) { // Strange no ending
      stop( "NO ending }} in previous : " + textarea.value.substring(textarea.selectionEnd,textarea.value.length)) ;
    }else{
      noffset = nstart ;
      nrange = nend +2 ;// }}
    }
  }


  // We do have offset or null, as well formfilled with a selection.

  oldFormHide();
  if (!ctermtype)
    template = "TextTerm";
  else
    template = ctermtype;
  var legend;
  if (template == "TextTerm") {
    legend = "TextTerm source";
  } else if  (template == "NewTextTerm"){
    legend = "NewTextTerm source";
  } else {
    legend = "Cite news source";
  }
  newtime = getTime();

  numforms++;
  var  star_i="";
  var  star_oi="";
  if(texttermcur.indexentry == ""){
    if(texttermcur.indexentry != texttermcur.indexentry_i){
      star_i=" style='background-color:red'"; //<td style="background-color:red">
      texttermcur.indexentry = texttermcur.indexentry_i;
    }
  } else {
    star_i="";
  }
  if(texttermcur.otherindexentry == ""){
    if(texttermcur.otherindexentry != texttermcur.otherindexentry_oi){
      star_oi=" style='background-color:red'"; // <td style="background-color:red">
      texttermcur.otherindexentry = texttermcur.otherindexentry_oi;
    }
  } else {
      star_oi="";
  }
  form = '<div id="citediv'+numforms+'">'+
    '<fieldset><legend>'+legend+'</legend>'+
    '<table cellspacing="5">'+
    '<input type="hidden" value="'+template+'" id="template">'+
    '<tr><td><label for="term">&nbsp;*Term or expression: </label></td>'+
    '<td colspan="3"><input type="text" tabindex=1 style="width:100%" id="term" value= "' +
    texttermcur.term + '"></tr>'+
    '<tr><td width="100"><label for="note">&nbsp;*Note number (1, 2 etc .): </label></td>'+
    '<td width="40"><input type="text" tabindex=1 style="width:10%" id="note" value= "' +
    texttermcur.note + '"></td>'+
    '<td width="100"><label for="subnote">&nbsp;Subnote (2): </label></td>'+
    '<td width="40"><input type="text" tabindex=1 style="width:10%" id="subnote" value= "' +
    texttermcur.subnote + '"></td></tr>'+
    '<tr><td width="300"><label for="section">&nbsp;Section (102, 933 etc.): </label></td>'+
    '<td width="40"><input type="text" tabindex=1 style="width:10%" id="section" value= "' +
    texttermcur.section + '"></td>'+
    '<td width="120"'+star_i+'><label for="indexentry">&nbsp;IndexEntry: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="indexentry" value= "' +
    texttermcur.indexentry + '"></td></tr>'+
    '<tr><td width="120"'+star_oi+'><label for="otherindexentry">&nbsp;OtherIndexEntry:: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="otherindexentry" value= "' +
    texttermcur.otherindexentry + '"></td>'+
    '<td width="120"><label for="otherindexentrytwo">&nbsp;OtherIndexEntryTwo: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="otherindexentrytwo" value= "' +
    texttermcur.otherindexentrytwo + '"></td></tr>'+
    '<tr><td width="120"><label for="otherindexentrythree">&nbsp;OtherIndexEntryThree: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="otherindexentrythree" value= "' +
    texttermcur.otherindexentrythree + '"></td>'+
    '<td width="120"><label for="otherindexentryfour">&nbsp;OtherIndexEntryFour: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="otherindexentryfour" value= "' +
    texttermcur.otherindexentryfour + '"></td></tr>'+
    '<tr><td width="120"><label for="otherindexentryfive">&nbsp;OtherIndexEntryFive: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="otherindexentryfive" value= "' +
    texttermcur.otherindexentryfive + '"></td>'+
    '<td width="120"><label for="englishentry">&nbsp;EnglishEntry (for Chinese and Japanese): </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="englishentry" value= "' +
    texttermcur.englishentry + '"></td></tr>'+
    '</table>'+
    '<input type="button" id="previous" value="(save &) previous TextTerm" onClick="previoustextterm()">'+
    '<input type="button" value="(save &) exit" onClick="savetextterms()">'+
    '<input type="button" id="next" value="(save &) next TextTerm" onClick="nexttextterm()">'+
    '</fieldset></div>';
  document.getElementById('citeselect').innerHTML += form;
}


function citeNewsWeb(templatename) {
  oldFormHide();
  template = templatename;
  var legend;
  if (template == "cite web") {
    legend = "Cite web source";
  } else {
    legend = "Cite news source";
  }
  newtime = getTime();
  numforms++;
  form = '<div id="citediv'+numforms+'">'+
    '<fieldset><legend>'+legend+'</legend>'+
    '<table cellspacing="5">'+
    '<input type="hidden" value="'+template+'" id="template">'+
    '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
    '<td width="120"><label for="title">&nbsp;Title: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td></tr>'+
    '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
    '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
    '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
    '<td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td></tr>'+
    '<tr><td width="120"><label for="work">&nbsp;Work: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="work"></td>'+
    '<td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td></tr>'+
    '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
    '<td width="120"><label for="language">&nbsp;Language: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td></tr>'+
    '<tr><td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate" value="'+ newtime +'"></td>'+
    '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
    '<tr><td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
    '</table>'+
    '<input type="button" value="Add citation" onClick="addcites()">'+
    '</fieldset></div>';
  document.getElementById('citeselect').innerHTML += form;
}

function citeBook() {
  oldFormHide();
  template = "cite book";
  numforms++;
  form = '<div id="citediv'+numforms+'">'+
    '<fieldset><legend>Cite book source</legend>'+
    '<table cellspacing="5">'+
    '<input type="hidden" value="'+template+'" id="template">'+
    '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
    '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
    '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
    '<td width="120"><label for="others">&nbsp;Others: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="others"></td></tr>'+
    '<tr><td width="120"><label for="title">&nbsp;Title: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td>'+
    '<td width="120"><label for="editor">&nbsp;Editor: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="editor"></td></tr>'+
    '<tr><td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td>'+
    '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
    '<tr><td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td>'+
    '<td width="120"><label for="edition">&nbsp;Edition: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="edition"></td></tr>'+
    '<tr><td width="120"><label for="series">&nbsp;Series: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="series"></td>'+
    '<td width="120"><label for="volume">&nbsp;Volume: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="volume"></td></tr>'+
    '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
    '<td width="120"><label for="chapter">&nbsp;Chapter: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="chapter"></td></tr>'+
    '<tr><td width="120"><label for="isbn">&nbsp;ISBN: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="isbn"></td>'+
    '<td width="120"><label for="oclc">&nbsp;OCLC: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="oclc"></td></tr>'+
    '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
    '<td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate"></td></tr>'+
    '<tr><td width="120"><label for="language">&nbsp;Language: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td>'+
    '<td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
    '</table>'+
    '<input type="button" value="Add citation" onClick="addcites()">'+
    '</fieldset></div>';
  document.getElementById('citeselect').innerHTML += form;
}

function citeJournal() {
  oldFormHide();
  template = "cite journal";
  numforms++;
  form = '<div id="citediv'+numforms+'">'+
    '<fieldset><legend>Cite book source</legend>'+
    '<table cellspacing="5">'+
    '<input type="hidden" value="'+template+'" id="template">'+
    '<tr><td width="120"><label for="last">&nbsp;Last name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="last"></td>'+
    '<td width="120"><label for="first">&nbsp;First name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="first"></td></tr>'+
    '<tr><td width="120"><label for="coauthors">&nbsp;Coauthors: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="coauthors"></td>'+
    '<td width="120"><label for="date">&nbsp;Publication date: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="date"></td></tr>'+
    '<tr><td width="120"><label for="title">&nbsp;Title: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="title"></td>'+
    '<td width="120"><label for="journal">&nbsp;Journal: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="journal"></td></tr>'+
    '<tr><td width="120"><label for="publisher">&nbsp;Publisher: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="publisher"></td>'+
    '<td width="120"><label for="location">&nbsp;Location: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="location"></td></tr>'+
    '<tr><td width="120"><label for="volume">&nbsp;Volume: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="volume"></td>'+
    '<td width="120"><label for="issue">&nbsp;Issue: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="issue"></td></tr>'+
    '<tr><td width="120"><label for="pages">&nbsp;Pages: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="pages"></td>'+
    '<td width="120"><label for="issn">&nbsp;ISSN: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="issn"></td></tr>'+
    '<tr><td width="120"><label for="oclc">&nbsp;OCLC: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="oclc"></td>'+
    '<td width="120"><label for="language">&nbsp;Language: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="language"></td></tr>'+
    '<tr><td width="120"><label for="url">&nbsp;URL: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="url"></td>'+
    '<td width="120"><label for="accessdate">&nbsp;Access date: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="accessdate"></td></tr>'+
    '<tr><td width="120"><label for="refname">&nbsp;Reference name: </label></td>'+
    '<td width="400"><input type="text" tabindex=1 style="width:100%" id="refname"></td></tr>'+
    '</table>'+
    '<input type="button" value="Add citation" onClick="addcites()">'+
    '</fieldset></div>';
  document.getElementById('citeselect').innerHTML += form;
}

function saveinput(terminput) {
  //  terminput = document.getElementById('citediv'+numforms).getElementsByTagName('input');
  this.term = '';
  this.note= '';
  this.section = '';
  this.indexentry= '';
  this.otherindexentry = '';
  this.otherindexentrytwo = '';
  this.otherindexentrythree = '';
  this.otherindexentryfour = '';
  this.otherindexentryfive = '';
  this.englishentry = '';

  for (var i=0; i<terminput.length-1; i++) {
    if (terminput[i].id == "template" ){
      ;
    }else if (terminput[i].id == "term" ){
      this.term = terminput[i].value;
    }else if(terminput[i].id == "note"){
      this.note = terminput[i].value;
    }else if(terminput[i].id == "section"){
      this.section = terminput[i].value;
    }else if(terminput[i].id == "subnote"){
      this.subnote = terminput[i].value;
    }else if(terminput[i].id == "indexentry"){
      this.indexentry = terminput[i].value;
    }else if(terminput[i].id == "otherindexentry"){
      this.otherindexentry = terminput[i].value;
    }else if(terminput[i].id == "otherindexentrytwo"){
      this.otherindexentrytwo = terminput[i].value;
    }else if(terminput[i].id == "otherindexentrythree"){
      this.otherindexentrythree = terminput[i].value;
    }else if(terminput[i].id == "otherindexentryfour"){
      this.otherindexentryfour = terminput[i].value;
    }else if(terminput[i].id == "otherindexentryfive"){
      this.otherindexentryfive = terminput[i].value;
    }else if(terminput[i].id == "englishentry"){
      this.englishentry = terminput[i].value;
    }else{
      ;;//alert(" SaveInput terminput[i].id = " + terminput[i].id + " terminput[i].value =" + terminput[i].value);
    }

  }
}

function savetextterms(template) {
  var txtterminput = document.getElementById('citediv'+numforms).getElementsByTagName('input');
  textterminput = new saveinput(txtterminput);
  //alert("texttermcur=" + texttermcur);
  //alert("textterminput=" + textterminput);
  // Testing
  var different = false;
  if((textterminput.term != texttermcur.term) || (textterminput.note != texttermcur.note) ||
     (textterminput.section != texttermcur.section) ||
     (textterminput.subnote != texttermcur.subnote) ||
     (textterminput.indexentry != texttermcur.indexentry) ||
     (textterminput.otherindexentry != texttermcur.otherindexentry) || 
     (textterminput.otherindexentrytwo != texttermcur.otherindexentrytwo) ||
     (textterminput.otherindexentrythree != texttermcur.otherindexentrythree) ||
     (textterminput.otherindexentryfour != texttermcur.otherindexentryfour) ||
     (textterminput.otherindexentryfive != texttermcur.otherindexentryfive) ||
     (textterminput.englishentry != texttermcur.englishentry) )
    different = true;

  if (different){
    // alert(" They are different, have to save" );
    var texttermchain="{{TextTerm";
    texttermchain += '|' + (textterminput.term ? textterminput.term : '');
    texttermchain += '|' + (textterminput.note ? textterminput.note : '');
    texttermchain += (textterminput.section ? '|' + textterminput.section : '');
    texttermchain += (textterminput.subnote ? '|' + textterminput.subnote : '');
    texttermchain += (textterminput.indexentry ? '|IndexEntry='+ textterminput.indexentry : '');
    texttermchain += (textterminput.otherindexentry ? '|OtherIndexEntry='+ textterminput.otherindexentry : '');
    texttermchain += (textterminput.otherindexentrytwo ? '|OtherIndexEntryTwo='+ textterminput.otherindexentrytwo : '');
    texttermchain += (textterminput.otherindexentrythree ? '|OtherIndexEntryThree='+ textterminput.otherindexentrythree : '');
    texttermchain += (textterminput.otherindexentryfour ? '|OtherIndexEntryFour='+ textterminput.otherindexentryfour : '');
    texttermchain += (textterminput.otherindexentryfive ? '|OtherIndexEntryFive='+ textterminput.otherindexentryfive : '');
    texttermchain += (textterminput.englishentry ? '|EnglishEntry='+ textterminput.englishentry : '');
    texttermchain += "}}";
    
    var textarea= document.getElementById('wpTextbox1');
    var savepos= textarea.selectionStart;
    if ('selectionStart' in textarea) {
      textarea.value=textarea.value.substring(0,textarea.selectionStart) + texttermchain + textarea.value.substring(textarea.selectionEnd, textarea.value.length); 
      //insertTags(texttermchain, '', '');
      textarea.selectionStart = savepos;
      textarea.selectionEnd = savepos + texttermchain.length;
    }
    else{
      alert("No selectionStart firefox");
    }
  }
  else{
    ;//alert(" They are similar, don't save" );
  }
  document.getElementById('citediv'+numforms).style.display = 'none';
  
}



function addcites(template) {
  cites = document.getElementById('citediv'+numforms).getElementsByTagName('input');
  var citebegin = '<ref';
  var citename = '';
  var citeinner = '';
  for (var i=0; i<cites.length-1; i++) {
    if (cites[i].value != '' && cites[i].id != "refname" && cites[i].id != "template") {
      citeinner += "|" + cites[i].id + "=" + cites[i].value;
    }
    else if (cites[i].value != '' && cites[i].id == "refname" && cites[i].id != "template") {
      citebegin += ' name="' + cites[i].value + '"';
    }
    else if (cites[i].value != '' && cites[i].id != "refname" && cites[i].id == "template") {
      citename = '>{{' + cites[i].value;
    }
  }
  cite = citebegin + citename + citeinner + "numforms=" + numforms + "}}</ref>";
  $("#wpTextbox1").focus();
  insertTags(cite, '', '');
  document.getElementById('citediv'+numforms).style.display = 'none';
}

function getNamedRefs(calls) {
  if (typeof(wikEdUseWikEd) != 'undefined') {
    if (wikEdUseWikEd == true) {
      WikEdUpdateTextarea();
    }
  }
  text = document.getElementById('wpTextbox1').value;
  var regex;
  if (calls) {
    regex = /< *?ref +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)) *?\/ *?>/gi //'
  } else {
    regex = /< *?ref +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)) *?>/gi //'
  }
  var namedrefs = [];
  var i=0;
  var nr=true;
  do {
    ref = regex.exec(text);
    if(ref != null){
      if (ref[5]) {
        namedrefs[i] = ref[5];
      } else if (ref[3]) {
        namedrefs[i] = ref[3];
      } else {
        namedrefs[i] = ref[6];
      }
      i++;
    } else {
      nr=false;
    }
  } while (nr==true);
  return namedrefs;
}

function citeNamedRef() {
  namedrefs = getNamedRefs(false);
  if (namedrefs == '') {
    oldFormHide();
    numforms++;
    out = '<div id="citediv'+numforms+'"><fieldset>'+
      '<legend>References in text</legend>There are no named refs (<tt>&lt;ref name="Name"&gt;</tt>) in the text</fieldset></div>';
    document.getElementById('citeselect').innerHTML += out;
  }
  else {
    oldFormHide();
    numforms++;
    form = '<div id="citediv'+numforms+'">'+
      '<fieldset><legend>References in article</legend>'+
      '<table cellspacing="5">'+
      '<tr><td><label for="namedrefs">&nbsp;Named references in text</label></td>'+
      '<td><select name="namedrefs" id="namedrefs">';
    for (var i=0;i<namedrefs.length;i++) {
      form+= '<option value="'+namedrefs[i]+'">'+namedrefs[i]+'</option>';
    }
    form+= '</select>'+
      '</td></tr></table>'+
      '<input type="button" value="Add citation" onClick="addnamedcite()">'+
      '</fieldset></div>';
    document.getElementById('citeselect').innerHTML += form;
  }
}

function addnamedcite() {
  name = document.getElementById('citediv'+numforms).getElementsByTagName('select')[0].value;
  ref = '<ref name="'+name+'" />';
  $("#wpTextbox1").focus();
  insertTags(ref, '', '');
  document.getElementById('citediv'+numforms).style.display = 'none';
}

function getAllRefs() {
  if (typeof(wikEdUseWikEd) != 'undefined') {
    if (wikEdUseWikEd == true) {
      WikEdUpdateTextarea();
    }
  }
  text = document.getElementById('wpTextbox1').value;
  regex = /< *?ref( +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)))? *?>((.|\n)*?)< *?\/? *?ref *?>/gim //"
  var allrefs = [];
  var i=0;
  var nr=true;
  do {
    ref = regex.exec(text);
    if(ref != null){
      if (ref[0].search(/[^\s]{150}/) != -1) {
        ref[0] = ref[0].replace(/\|([^\s])/g, "| $1");
      }
      ref[0] = ref[0].replace(/</g, "&lt;");
      ref[0] = ref[0].replace(/>/g, "&gt;");
      allrefs[i] = ref[0];
      i++;
    } else {
      nr=false;
    }
  } while (nr==true);
  return allrefs;
}

function NRcallError(namedrefs, refname) {
  for (var i=0; i<namedrefs.length; i++) {
    if (namedrefs[i] == refname) {
      return true;
    }
  }
  return false;
}

function errorCheck() {
  var allrefs = getAllRefs();
  var allrefscontent = [];
  var samecontentexclude = [];
  var sx=0;
  var templateexclude = [];
  var tx=0;
  var skipcheck = false;
  var namedrefcalls = getNamedRefs(true);
  for (var i=0; i<allrefs.length; i++) {
    allrefscontent[i] = allrefs[i].replace(/&lt; *?ref( +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)))? *?&gt;((.|\n)*?)&lt; *?\/? *?ref *?&gt;/gim, "$8");  //"
  }
  var namedrefs = getNamedRefs(false);
  var errorlist = [];
  var q=0;
  unclosed = document.getElementById('unclosed').checked;
  samecontent = document.getElementById('samecontent').checked;
  templates = document.getElementById('templates').checked;
  repeated = document.getElementById('repeated').checked;
  undef = document.getElementById('undef').checked;
  for (var i=0; i<allrefs.length; i++) {
    if (allrefs[i].search(/&lt; *?\/ *?ref *?&gt;/) == -1 && unclosed) {
      errorlist[q] = '<tr><td width="75%"><tt>'+allrefs[i]+'</tt></td>';
      errorlist[q] += '<td width="25%">Unclosed <tt>&lt;ref&gt;</tt> tag</td></tr>';
      q++;
    }
    if (samecontent) {
      for (var d=0; d<samecontentexclude.length; d++) {
        if (allrefscontent[i] == samecontentexclude[d]) {
          skipcheck = true;
        }
      }
      var p=0;
      while (p<allrefs.length && !skipcheck) {
        if (allrefscontent[i] == allrefscontent[p] && i != p) {
          errorlist[q] = '<tr><td width="75%"><tt>'+allrefscontent[i]+'</tt></td>';
          errorlist[q] += '<td width="25%">Multiple refs contain this content, a <a href="http://en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">named reference</a> should be used instead</td></tr>';
          q++;
          samecontentexclude[sx] = allrefscontent[i]
          sx++;
          break;
        }
        p++;
      }
      skipcheck=false;
    }
    if (templates) {
      if (allrefscontent[i].search(/\{\{cite/i) == -1 && allrefscontent[i].search(/\{\{citation/i) == -1 && allrefscontent[i].search(/\{\{Comic (book|strip) reference/i) == -1 && allrefscontent[i].search(/\{\{Editorial cartoon reference/i) == -1 && allrefscontent[i].search(/\{\{harv/i) == -1) {
        for (var x=0; x<templateexclude.length; x++) {
          if (allrefscontent[i] == templateexclude[x]) {
            skipcheck = true;
          }
        }
        if (!skipcheck) {
          errorlist[q] = '<tr><td width="75%"><tt>'+allrefs[i]+'</tt></td>';
          errorlist[q] += '<td width="25%">Does not use a <a href="http://en.wikipedia.org/wiki/Wikipedia:Citation_templates">citation template</a></td></tr>';
          q++;
          templateexclude[tx] = allrefscontent[i];
          tx++;
        }
        skipcheck = false;
      }
    }
  }
  if (repeated) {
    var repeatnameexclude = [];
    var rx=0;
    for (var k=0; k<namedrefs.length; k++) {
      for (var d=0; d<repeatnameexclude.length; d++) {
        if (namedrefs[k] == repeatnameexclude[d]) {
          skipcheck = true;
        }
      }
      var z=0;
      while (z<namedrefs.length && !skipcheck) {
        if (namedrefs[k] == namedrefs[z] && k != z) {
          errorlist[q] = '<tr><td width="75%"><tt>'+namedrefs[k]+'</tt></td>';
          errorlist[q] += '<td width="25%">Multiple references are given the same <a href="http://en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">name</a></td></tr>';
          q++;
          repeatnameexclude[rx] = namedrefs[z];
          rx++;
          break;
        }
        z++;
      }
      skipcheck = false;
    }
  }
  if (undef) {
    var undefexclude = [];
    var ux=0;
    for (var p=0; p<namedrefcalls.length; p++) {
      for (var d=0; d<undefexclude.length; d++) {
        if (allrefscontent[i] == undefexclude[d]) {
          skipcheck = true;
        }
      }
      if (!skipcheck) {
        if (!NRcallError(namedrefs, namedrefcalls[p])) {
          errorlist[q] = '<tr><td width="75%"><tt>'+namedrefcalls[p]+'</tt></td>';
          errorlist[q] += '<td width="25%">A <a href="http://en.wikipedia.org/wiki/Wikipedia:Footnotes#Naming_a_ref_tag_so_it_can_be_used_more_than_once">named reference</a> is used but not defined</td></tr>';
          q++;
          undefexclude[ux] = namedrefs[p];
          ux++;
        }
      }
      skipcheck = false;
    }
  }
  if (q > 0) {
    return errorlist;
  } else {
    return 0;
  }
}

function dispErrors() {
  oldFormHide();
  form = '<div id="errorform"><fieldset>'+
    '<legend>Error checking</legend>'+
    '<b>Check for:</b><br/>'+
    '<input type="checkbox" id="unclosed" /> Unclosed <tt>&lt;ref&gt;</tt> tags<br/>'+
    '<input type="checkbox" id="samecontent" /> References with the same content<br/>'+
    '<input type="checkbox" id="templates" /> References not using a <a href="http://en.wikipedia.org/wiki/Wikipedia:Citation_templates">citation template</a><br/>'+
    '<input type="checkbox" id="repeated" /> Multiple references with the same name<br/>'+
    '<input type="checkbox" id="undef" /> Usage of undefined named references<br/>'+
    '<input type="button" id="errorchecksubmit" value="Check for selected errors" onclick="doErrorCheck()"/>'+
    '</fieldset></div>';
  document.getElementById('citeselect').innerHTML += form;
}

function doErrorCheck() {
  var errors = errorCheck();
  document.getElementById('citeselect').removeChild(document.getElementById('errorform'));
  if (errors == 0) {
    if (numforms != 0) {
      document.getElementById('citediv'+numforms).style.display = 'none';
    }
    numforms++;
    out = '<div id="citediv'+numforms+'"><fieldset>'+
      '<legend>Error checking</legend>No errors found.</fieldset></div>';
    document.getElementById('citeselect').innerHTML += out;
  }
  else {
    if (numforms != 0) {
      document.getElementById('citediv'+numforms).style.display = 'none';
    }
    numforms++;
    form = '<div id="citediv'+numforms+'">'+
      '<fieldset><legend>Error checking</legend>'+
      '<table border="1px">';
    for (var i=0; i<errors.length; i++) {
      form+=errors[i];
    }
    form+= '</table>'+
      '</fieldset></div>';
    document.getElementById('citeselect').innerHTML += form;
  }
}

$( refbuttons );