// -*- C++ -*- commento per la commutazione automatica di emacs in C++-mode

// Funzione per la stampa della pagina corrente.
function printPage()
{ 
  window.print();
  return false;
}


// Funzione che in input richiede il nome dell'elemento e restituisce, indipendentemente 
// dal browser, il puntatore a quell'elemento nel documento corrente.
function getElement(elementName)
{
  if (document.getElementById)
    return document.getElementById(elementName)
      else if (document.all)
	return document.all[elementName]
	  else if (document.layers)	  
	    return document.layers[elementName]
}

// Funzione per la gestione dei parametri di raffinamento nelle form di ricerca
// ... chiamata durante l'evento onsubmit.
function checkSearchForm(singleWork)
{      
  // Variabili locali.
  var searchForm = getElement("searchForm"); // Form della ricerca.
  var inputRefineData = getElement("inputRefineData"); // Form dei raffinamenti.
  var removeSpecialChars = new RegExp ('[*]+', 'gi'); // Esp. regolare per eliminare i caratteri speciali '*'. 
  var patternWords = searchForm.fldPattern.value.split(/\s+/); // Array contenente le parole digitate nel pattern principale.
  var wordSeparatorCharsArray; // Array contenente i caratteri di tipo spazio.
  var II;

  // Caricamento dell'array dei caratteri di tipo spazio.
  wordSeparatorCharsArray = wordSeparatorChars.split(','); // wordSeparatorChars è una var. glob. dichiarata nella pagina della ricerca.
  for (II = 0; II < wordSeparatorCharsArray.length; II++) {

    // Test se il carattere corrente è un Unicode composto da più codici numerici.
    if (wordSeparatorCharsArray[II].indexOf(' ') != -1) {
      var converSpaceSep = new RegExp ('[ ]+', 'gi');
      wordSeparatorCharsArray[II] = wordSeparatorCharsArray[II].replace(converSpaceSep, ',');
    }

    // Trasformazione dei valori numerici Unicode in caratteri.	  
    eval("wordSeparatorCharsArray[II] = String.fromCharCode(" + wordSeparatorCharsArray[II] + ");");
  }

  // Test se nel campo stringa principale è stata inserita più di una parola.
  if (patternWords.length > 1) {
    alert("Non è possibile inserire nel campo \"Stringa principale\" più di una stringa.\nLe altre stringhe digitate verranno spostate nel campo di restrizione \"Stringhe correlate\".");
      
    // Spostamento delle stringhe di raffinamento nell'apposito campo.
    for (II = 1; II < patternWords.length; II++) {
      if (searchForm.fldDistPattern.value.length)
	searchForm.fldDistPattern.value += ' ' +  patternWords[II];
      else
	searchForm.fldDistPattern.value += patternWords[II];
    }
      
    // Aggiornamento campo principale.
    searchForm.fldPattern.value = patternWords[0];
    
    return false;

  } else {

    // Controllo che il pattern da ricercare non sia vuoto (dal conteggio vengono esclusi i caratteri speciali).
    if (searchForm.fldPattern.value.replace(removeSpecialChars, '').length < 2) {
      alert("Il campo \"Stringa principale\" deve essere di almeno 2 caratteri, escludendo il carattere speciale '*'");
      return false;
    }
      
    // Gestione dei caratteri di tipo spazio.
    var wordSepCharInMainPattern = new Array(); // Caratteri di tipo spazio nella stringa principale.
    var wordSepCharInCorrPattern = new Array(); // Caratteri di tipo spazio nella stringa correlata.
      
    // Scansione dell'array contenente i caratteri di tipo spazio.
    for (II = 0; II < wordSeparatorCharsArray.length; II++) {

      // Caratteri da eslcudere dal test.
      if (wordSeparatorCharsArray[II] != ' '
	  && wordSeparatorCharsArray[II] != '*') {
	
	// Test sulla presenza di caratteri spazio nella stringa principale.	    
	if (searchForm.fldPattern.value.indexOf(wordSeparatorCharsArray[II]) != -1)
	  wordSepCharInMainPattern.push(wordSeparatorCharsArray[II]);
	      
	// Test sulla presenza di caratteri spazio nella stringa correlata.
	if (searchForm.fldDistPattern.value.indexOf(wordSeparatorCharsArray[II]) != -1)
	  wordSepCharInCorrPattern.push(wordSeparatorCharsArray[II]);
      }	    
    }

      
    // Test se è stato trovato qualche carattere spazio nelle stringhe digitate dall'utente.
    if (wordSepCharInMainPattern.length > 0 || wordSepCharInCorrPattern.length > 0) {
      // Variabili locali.
      var errMsg = "Sono stati digitati caratteri di cui non è possibile effettuare alcuna ricerca " + 
	"perché considerati di tipo spazio. \n" +
	"Si prega di eliminare tali caratteri per poter avviare la ricerca :";
	  
      if (wordSepCharInMainPattern.length > 0) {
	// Variabili locali.
	var wordSepCharInMainPatternFormatted = new String();
	      
	for (var ii = 0; ii < wordSepCharInMainPattern.length; ii++)
	  if (ii == 0)
	    wordSepCharInMainPatternFormatted += "'" + wordSepCharInMainPattern[ii] + "'";
	  else
	    wordSepCharInMainPatternFormatted += " '" + wordSepCharInMainPattern[ii] + "'";
	      
	errMsg += "\n\n" + wordSepCharInMainPattern.length + ((wordSepCharInMainPattern.length == 1) ? " carattere" : " caratteri") + " di tipo spazio " + ((wordSepCharInMainPattern.length == 1) ? "trovato" : "trovati") + " nel campo \"Stringa principale\" : " + wordSepCharInMainPatternFormatted;
      }
      
      if (wordSepCharInCorrPattern.length > 0) {
	// Variabili locali.
	var wordSepCharInCorrPatternFormatted = new String();
	
	for (var ii = 0; ii < wordSepCharInCorrPattern.length; ii++)
	  if (ii == 0)
	    wordSepCharInCorrPatternFormatted += "'" + wordSepCharInCorrPattern[ii] + "'";
	  else
	    wordSepCharInCorrPatternFormatted += " '" + wordSepCharInCorrPattern[ii] + "'";
	
	errMsg += "\n\n" + wordSepCharInCorrPattern.length + ((wordSepCharInCorrPattern.length == 1) ? " carattere" : " caratteri") + " di tipo spazio " + ((wordSepCharInCorrPattern.length == 1) ? "trovato" : "trovati") + " nel campo \"Stringhe correlate\" : " + wordSepCharInCorrPatternFormatted;
      }

      // Stampa del messaggio di errore.
      alert(errMsg);
      return false;
    }

    // Esp. regolare per testare l'uso corretto dei caratteri '*' e ' ' all'interno della stringa principale.
    var findSpecialCharsInPattern = new RegExp ('^[*]?[^* ]+[*]?[ ]*$', 'gi');

    // Test sulla correttezza della stringa principale.      
    if (searchForm.fldPattern.value.search(findSpecialCharsInPattern) == -1) {
      // Stampa del messaggio di errore.
      alert("Errore nel campo \"Stringa principale\": uso scorretto dei caratteri '*' e/o ' '.\n\n"
	    + "L'uso del carattere speciale '*' è consentito solo agli estremi della stringa,\n"
	    + "mentre il carattere ' ' deve essere usato solo come separatore di stringhe.");
      return false;
    }

    // Acquisizione delle parole presenti nel campo di correlazione.
    var wordsInCorrPattern = searchForm.fldDistPattern.value.split(/\s+/);

    // Test sulla correttezza della stringhe correlate.
    if (searchForm.fldDistPattern.value.length > 0 && wordsInCorrPattern.length > 0) {    

      for (var II = 0; II < wordsInCorrPattern.length; II++) {

	// Test sulla correttezza della singola stringa correlata.
	if (wordsInCorrPattern[II].search(findSpecialCharsInPattern) == -1) {
	  // Stampa del messaggio di errore.
	  alert("Errore nella " + (II + 1) + "ª stringa del campo \"Stringhe correlate\": uso scorretto"
		+ " dei caratteri '*' e/o ' '.\n\n"
		+ "L'uso del carattere speciale '*' è consentito solo agli estremi della stringa,\n"
		+ "mentre il carattere ' ' deve essere usato solo come separatore di stringhe.");
	  return false;
	}	      
      }
    }

  }


  // Reset variabili unione valori autori e sezioni.
  searchForm.fldSections.value = "";
  searchForm.fldAuthors.value = "";
  searchForm.fldLangs.value = "";

  if (singleWork == 0) {
    for(II = 1; II <= getElement("sectLen").value; ++II) {
      // Se selezionato aggiungilo alla stringa totale delle sezioni.
      if (getElement("fldSection" + II).checked) {
	if (searchForm.fldSections.value.length) 
	  searchForm.fldSections.value += "," + getElement("fldSection" + II).value;
	else
	  searchForm.fldSections.value = getElement("fldSection" + II).value;
      }
    }
    
    // Aggiunta del raffinamento lista di autori.
    for(II = 0; II < refineAuthorList.length; ++II) {
      if (refineAuthorList[II]["selected"] == 1) {
	if (searchForm.fldAuthors.value.length)
	  searchForm.fldAuthors.value += "," + inputRefineData.fldAuthors.options[II + 1].value;
	else
	  searchForm.fldAuthors.value = inputRefineData.fldAuthors.options[II + 1].value;
      }
    }
  }

  /*
  for(II = 1; II <= getElement("langLen").value; ++II) {
    // Se selezionato aggiungilo alla stringa totale delle lingue.
    if (getElement("fldLang" + II).checked) {    
      if (searchForm.fldLangs.value.length)
	searchForm.fldLangs.value += "," + getElement("fldLang" + II).value;
      else
	searchForm.fldLangs.value = getElement("fldLang" + II).value;
    }
  }
  */

  return true;
} // fine checkSearchForm()


// Funzione per la gestione della form di ricerca semplice
// ... chiamata durante l'evento onsubmit.
function checkSimpleSearchForm()
{      
  // Variabili locali.
  var searchForm = getElement("simpleSearchForm"); // Form della ricerca.
  var removeSpecialChars = new RegExp ('[*]+', 'gi'); // Esp. regolare per eliminare i caratteri speciali '*'. 
  var patternWords = searchForm.fldPattern.value.split(/\s+/); // Array contenente le parole digitate nel pattern principale.
  var wordSeparatorCharsArray; // Array contenente i caratteri di tipo spazio.
  var II;

  // Caricamento dell'array dei caratteri di tipo spazio.
  wordSeparatorCharsArray = wordSeparatorChars.split(','); // wordSeparatorChars è una var. glob. dichiarata nella pagina della ricerca.
  for (II = 0; II < wordSeparatorCharsArray.length; II++) {

    // Test se il carattere corrente è un Unicode composto da più codici numerici.
    if (wordSeparatorCharsArray[II].indexOf(' ') != -1) {
      var converSpaceSep = new RegExp ('[ ]+', 'gi');
      wordSeparatorCharsArray[II] = wordSeparatorCharsArray[II].replace(converSpaceSep, ',');
    }

    // Trasformazione dei valori numerici Unicode in caratteri.	  
    eval("wordSeparatorCharsArray[II] = String.fromCharCode(" + wordSeparatorCharsArray[II] + ");");
  }

  // Test se nel campo stringa principale è stata inserita più di una parola.
  if (patternWords.length > 1) {
    alert("Non è possibile ricercare più di una parola.\nPer la ricerca correlata a più parole si dovrà usufruire della sezione \"Ricerca avanzata\".");
      
    // Aggiornamento campo principale.
    searchForm.fldPattern.value = patternWords[0];
    
    return false;

  } else {

    // Controllo che il pattern da ricercare non sia vuoto (dal conteggio vengono esclusi i caratteri speciali).
    if (searchForm.fldPattern.value.replace(removeSpecialChars, '').length < 2) {
      alert("Il pattern deve essere di almeno 2 caratteri, escludendo il carattere speciale '*'");
      return false;
    }
      
    // Gestione dei caratteri di tipo spazio.
    var wordSepCharInMainPattern = new Array(); // Caratteri di tipo spazio nella stringa principale.
      
    // Scansione dell'array contenente i caratteri di tipo spazio.
    for (II = 0; II < wordSeparatorCharsArray.length; II++) {

      // Caratteri da eslcudere dal test.
      if (wordSeparatorCharsArray[II] != ' '
	  && wordSeparatorCharsArray[II] != '*') {
	
	// Test sulla presenza di caratteri spazio nella stringa principale.	    
	if (searchForm.fldPattern.value.indexOf(wordSeparatorCharsArray[II]) != -1)
	  wordSepCharInMainPattern.push(wordSeparatorCharsArray[II]);
      }	    
    }
      
    // Test se è stato trovato qualche carattere spazio nelle stringhe digitate dall'utente.
    if (wordSepCharInMainPattern.length > 0) {
      // Variabili locali.
      var errMsg = "Sono stati digitati caratteri di cui non è possibile effettuare alcuna ricerca " + 
	"perché considerati di tipo spazio. \n" +
	"Si prega di eliminare tali caratteri per poter avviare la ricerca :";
	  
      if (wordSepCharInMainPattern.length > 0) {
	// Variabili locali.
	var wordSepCharInMainPatternFormatted = new String();
	      
	for (var ii = 0; ii < wordSepCharInMainPattern.length; ii++)
	  if (ii == 0)
	    wordSepCharInMainPatternFormatted += "'" + wordSepCharInMainPattern[ii] + "'";
	  else
	    wordSepCharInMainPatternFormatted += " '" + wordSepCharInMainPattern[ii] + "'";
	      
	errMsg += "\n\n" + wordSepCharInMainPattern.length + ((wordSepCharInMainPattern.length == 1) ? " carattere" : " caratteri") + " di tipo spazio " + ((wordSepCharInMainPattern.length == 1) ? "trovato" : "trovati") + " nel pattern : " + wordSepCharInMainPatternFormatted;
      }

      // Stampa del messaggio di errore.
      alert(errMsg);
      return false;
    }

    // Esp. regolare per testare l'uso corretto dei caratteri '*' e ' ' all'interno della stringa principale.
    var findSpecialCharsInPattern = new RegExp ('^[*]?[^* ]+[*]?[ ]*$', 'gi');

    // Test sulla correttezza della stringa principale.      
    if (searchForm.fldPattern.value.search(findSpecialCharsInPattern) == -1) {
      // Stampa del messaggio di errore.
      alert("Errore nel pattern: uso scorretto dei caratteri '*' e/o ' '.\n\n"
	    + "L'uso del carattere speciale '*' è consentito solo agli estremi della stringa,\n"
	    + "mentre il carattere ' ' deve essere usato solo come separatore di stringhe.");
      return false;
    }
  } 
} // fine  checkSimpleSearchForm()

// Funzione per aprire una nuova finestra del browser (ad es. per visualizzare immagini, note, ecc.).
function openNewWindow(windowURL, windowName, width, height)
{
  // Variabili locali.
  var wf = "";
  wf = wf + "width=" + width;
  wf = wf + ",height=" + height;
  wf = wf + ",resizable=yes";
  wf = wf + ",scrollbars=yes";
  //wf = wf + ",menubar=yes";
  //wf = wf + ",toolbar=yes";
  //wf = wf + ",directories=yes";
  //wf = wf + ",location=yes";
  //wf = wf + ",status=no";
  
  var newWindow = window.open(windowURL, windowName, wf);
  newWindow.focus();
  
  return false;
}

// ---------------------------------------------------------------------------------
// Variabile globale necessaria per la gestione dell'evidenziazione delle citazioni.
var defaultBackgroundColor = new String();
// ---------------------------------------------------------------------------------
// -------------------------------------------------------------------------
// Funzione per evidenziare tutte le porzioni di una determinata citazione.
// -------------------------------------------------------------------------
function highlightCit(idValueSubStr, highlight)
{
  // Variabili locali.
  var allCit = document.body.getElementsByTagName("q");
  
  // Scorrimento lista dei tag che identificano le citazioni.
  for (var ii = 0; ii < allCit.length; ii++) {
    // Acquisizione e scorrimento lista degli attributi.
    citAttList = allCit.item(ii).attributes;
    
    for (var jj = 0; jj < citAttList.length; jj++) {
      if (citAttList.item(jj).nodeName == "id"
	  && citAttList.item(jj).nodeValue.indexOf(idValueSubStr) != -1)
	if (highlight == 1) {
	  defaultBackgroundColor = allCit.item(ii).style.backgroundColor;
	  allCit.item(ii).style.backgroundColor = '#EBDDC0';
	} else if (highlight == 0)
	  allCit.item(ii).style.backgroundColor = defaultBackgroundColor;
    } // fine scansione attributi.
    
  } // fine scansione tags.	                			  
  
} // fine highlightCit(...)


// -------------------------------------------------------------------------
// Funzione per la selezione di un nuovo autore nella lista di raffinamento.
// -------------------------------------------------------------------------
function selectRefineAuthor(authorIndex, authorListDivId) {

  if (refineAuthorList[authorIndex]["selected"] == 0) {

    // Aggiornamento lista autori per il raffinamento.
    refineAuthorList[authorIndex]["selected"] = 1;
    
    // Aggiornamento della visualizzazione degli autori selezionati.
    printRefineAuthorList(authorListDivId);
  }

  return false;
} // fine selectRefineAuthor(...)

// -------------------------------------------------------------------------
// Funzione per la deselezione di un autore dalla lista di raffinamento.
// -------------------------------------------------------------------------
function deselectRefineAuthor(authorIndex, authorListDivId) {
  // Aggiornamento lista autori per il raffinamento.
  refineAuthorList[authorIndex]["selected"] = 0;
  
  // Aggiornamento della visualizzazione degli autori selezionati.
  printRefineAuthorList(authorListDivId);

  return false;
} // fine deselectRefineAuthor(...)


// -------------------------------------------------------------------------
// Funzione per la stampa della lista degli autori per il raffinamento.
// -------------------------------------------------------------------------
function printRefineAuthorList(authorListDivId) {
  // Variabili locali.
  var authorListDiv = getElement(authorListDivId);
  var authorSelCount = 0;
  
  // Stampa degli autori per il raffinamento.
  for (var ii = 0; ii < refineAuthorList.length; ii++) {
    
    if (refineAuthorList[ii]["selected"] == 1) {
      // Salvataggio nome autore corrente.
      var authorName = refineAuthorList[ii]["value"];
      
      // Incremento contatore autori selezionati.
      authorSelCount++;
      
      if (authorSelCount == 1)
	authorListDiv.innerHTML = authorName + " [ <a href=\"#\" onclick=\"return deselectRefineAuthor(" + ii + ", '" + authorListDivId + "');\">cancella</a> ]";
      else
	authorListDiv.innerHTML += " , " + authorName + " [ <a href=\"#\" onclick=\"return deselectRefineAuthor(" + ii + ", '" + authorListDivId + "');\">cancella</a> ]";      
    }
  }
  
  // Se nessun autore è selezionato svuota il div che stampa la lista. 
  if (authorSelCount == 0) authorListDiv.innerHTML = "&#160;";

  return false;
} // fine printRefineAuthorList(...)


// --------------------------------------------------------------------------
// Funzione per la gestione dei parametri di raffinamento nella form di 
// ricerca per l'apparato iconografico... chiamata durante l'evento onsubmit.
// --------------------------------------------------------------------------
function checkFigSearchForm() {
  // Variabili locali.
  var figSearchForm = getElement("figSearchForm"); // Form della ricerca.
  var fldCorpusListNotNull = false;
  var fldBookListNotNull = false;
  var fldInterpListNotNull = false;

  // Reset variabili unione valori autori e sezioni.
  figSearchForm.fldCorpusList.value = "";
  figSearchForm.fldBookList.value = "";
  figSearchForm.fldInterpList.value = "";

  // Gestione del raffinamento sulle bibbie.
  for(II = 1; II <= getElement("corpusListLength").value; ++II) {
    // Se selezionato aggiungilo alla stringa totale dei corpus.
    if (getElement("corpus" + II).checked) {
      fldCorpusListNotNull = true;
      if (figSearchForm.fldCorpusList.value.length)
	figSearchForm.fldCorpusList.value += "," + getElement("corpus" + II).value;
      else
	figSearchForm.fldCorpusList.value = getElement("corpus" + II).value;
    }
  }

  // Gestione del raffinamento sui libri di una bibbia.
  for(II = 0; II < refineBookList.length; ++II) {
    if (refineBookList[II]["selected"] == 1) {
      fldBookListNotNull = true;
      if (figSearchForm.fldBookList.value.length)
	figSearchForm.fldBookList.value += "," + figSearchForm.bookSelect.options[II + 1].value;
      else
	figSearchForm.fldBookList.value = figSearchForm.bookSelect.options[II + 1].value;
    }
  }

  // Gestione del raffinamento sulle tipologie delle immagini.
  for(II = 1; II <= getElement("interpListLength").value; ++II) {
    // Se selezionato aggiungilo alla stringa totale dei corpus.
    if (getElement("interp" + II).checked) {
      fldInterpListNotNull = true;
      if (figSearchForm.fldInterpList.value.length)
	figSearchForm.fldInterpList.value += "," + getElement("interp" + II).value;
      else
	figSearchForm.fldInterpList.value = getElement("interp" + II).value;
    }
  }
  
  // Test per il controllo della corretta compilazione dei campi.
  if (fldCorpusListNotNull == false) {
    alert("Per effettuare la ricerca si deve selezionare almeno una bibbia dalla lista.");
    return false;
  }
  /*
  if (fldBookListNotNull == false) {
    alert("Per effettuare la ricerca si deve selezionare almeno un libro dalla lista.");
    return false;
  }
  */
  if (fldInterpListNotNull == false) {
    alert("Per effettuare la ricerca si deve selezionare almeno una tipologia di immagini.");
    return false;
  }
  
  return true;
} // fine checkFigSearchForm(...)

// -------------------------------------------------------------------------
// Funzione per la selezione di un nuovo libro nella lista di raffinamento.
// -------------------------------------------------------------------------
function selectRefineBook(bookIndex, bookListDivId) {

  if (refineBookList[bookIndex]["selected"] == 0) {

    // Aggiornamento lista autori per il raffinamento.
    refineBookList[bookIndex]["selected"] = 1;
    
    // Aggiornamento della visualizzazione degli autori selezionati.
    printRefineBookList(bookListDivId);
  }

  return false;
} // fine selectRefineBook(...)

// -------------------------------------------------------------------------
// Funzione per la deselezione di un libro dalla lista di raffinamento.
// -------------------------------------------------------------------------
function deselectRefineBook(bookIndex, bookListDivId) {
  // Aggiornamento lista autori per il raffinamento.
  refineBookList[bookIndex]["selected"] = 0;
  
  // Aggiornamento della visualizzazione degli autori selezionati.
  printRefineBookList(bookListDivId);

  return false;
} // fine deselectRefineBook(...)


// -------------------------------------------------------------------------
// Funzione per la stampa della lista dei libri per il raffinamento.
// -------------------------------------------------------------------------
function printRefineBookList(bookListDivId) {
  // Variabili locali.
  var bookListDiv = getElement(bookListDivId);
  var bookSelCount = 0;
  
  // Stampa degli autori per il raffinamento.
  for (var ii = 0; ii < refineBookList.length; ii++) {
    
    if (refineBookList[ii]["selected"] == 1) {
      // Salvataggio nome autore corrente.
      var bookName = refineBookList[ii]["value"];
      
      // Incremento contatore autori selezionati.
      bookSelCount++;
      
      if (bookSelCount == 1)
	bookListDiv.innerHTML = bookName + " [ <a href=\"#\" onclick=\"return deselectRefineBook(" + ii + ", '" + bookListDivId + "');\">cancella</a> ]";
      else
	bookListDiv.innerHTML += " , " + bookName + " [ <a href=\"#\" onclick=\"return deselectRefineBook(" + ii + ", '" + bookListDivId + "');\">cancella</a> ]";      
    }
  }
  
  // Se nessun autore è selezionato svuota il div che stampa la lista. 
  if (bookSelCount == 0) bookListDiv.innerHTML = "&#160;";

  return false;
} // fine printRefineBookList(...)


// --------------------------------------------------------------------------
// Funzione per il controllo dei parametri di raffinamento nella form di 
// ricerca nei versetti... chiamata durante l'evento onsubmit.
// --------------------------------------------------------------------------
function checkVerseSearchForm(verseSearchForm) {

  if (verseSearchForm.fldCorpus.value == 0) {
    alert("Per effettuare la ricerca si deve selezionare una bibbia dalla lista.");
    return false;    
  }

  if (verseSearchForm.fldBook.value == 0) {
    alert("Per effettuare la ricerca si deve selezionare un libro dalla lista.");
    return false;    
  }

  if (verseSearchForm.fldBiblVerse.value == "") {
    alert("Per effettuare la ricerca digitare il numero del capitolo e del versetto desiderato separati da una virgola. (ad es. 1,3)");
    return false;
  } else {
    fldBiblVerseArray = verseSearchForm.fldBiblVerse.value.split(',');
    if (fldBiblVerseArray.length == 2) {
      verseSearchForm.fldChapter.value = fldBiblVerseArray[0];
      verseSearchForm.fldVerseNum.value = fldBiblVerseArray[1];
    } else {
      alert("Errore nel campo versetto! Digitare il numero del capitolo e del versetto desiderato separati da una virgola. (ad es. 1,3)");
      return false;
    }
  }
  return true;
} // fine checkVerseSearchForm()
