// DisplayDB.js
//
// Questo file contiene le funzioni che si occupano di visualizzare
// la  tabella che ottieniamo  come risultato di una interrogazione
// sulla base  di dati.  Va richiamata  all'interno del  file  HTML
// passandogli l'array che contiene, codificata, la tabella.
//
// L'unica  funziona  che  eventualmente  va  modificata e' proprio
// quella che ha cablato in se il layout della tabella (DisplayDB),
// che  in questo esempio e' semplicemente  un elenco preformattato
// del contenuto del database. 
//
///////////////////////////////////////////////////////////////////

// Per la formattazione dei vari campi si usano queste funzioni qui
// definite
function resize(Stringa, MaxLunghezza, Blanks) {
  var resizedString = "";

  if (Stringa.length>MaxLunghezza)
    resizedString = Stringa.substring(0, MaxLunghezza-Blanks)+makeSpaces(Blanks);
  else
    resizedString = Stringa + makeSpaces(MaxLunghezza-Stringa.length);

  return resizedString;
}

function makeSpaces(numeroSpazi) {
  var spaceString = "";

  for(var i=0; i<numeroSpazi; i++)
    spaceString += " ";

  return spaceString;
}

function DisplayDB(dbMatrix) {

  // Dichiarazione della lunghezza dei campi (per la formattazione)
  // E' stato previsto che se il valore del campo supera quello qui
  // di seguito definito, viene troncato per rientrare nei limiti.
  
  // Ricordiamo che i campi sono legati agli indici della tabella nel
  // modo seguente:
  //
  // CODICE: 0 - DESCRIZIONE: 1
  //

  CODICE = 0;
  DESCRIZIONE = 1;


  MaxLen = new Array();
  MaxLen[CODICE] = 10;
  MaxLen[DESCRIZIONE] = 2000;

  // Spazi vuoti tra una colonna e l'altra
  blankSpace = 2;

  // Inizializzazione dei vari campi da stampare
  for (i=0; i<dbMatrix.length; i++) {
    cod = dbMatrix[i][CODICE];
    des = dbMatrix[i][DESCRIZIONE];

    // Se il valore supera la lunghezza consentita, viene troncato
    cod = resize(cod, MaxLen[CODICE], blankSpace);
    des = resize(des, MaxLen[DESCRIZIONE], blankSpace);

    //document.write(cod);
    //document.writeln(des);
	return des;
  }  // Fine del for
}


function DisplayTesto(dbMatrix) {

  // Dichiarazione della lunghezza dei campi (per la formattazione)
  // E' stato previsto che se il valore del campo supera quello qui
  // di seguito definito, viene troncato per rientrare nei limiti.
  
  // Ricordiamo che i campi sono legati agli indici della tabella nel
  // modo seguente:
  //
  // CODICE: 0 - DESCRIZIONE: 1
  //

  CODICE = 0;
  TITOLO = 1;
  FRASE = 2;


  MaxLen = new Array();
  MaxLen[CODICE] = 10;
  MaxLen[TITOLO] = 200;
  MaxLen[FRASE] = 5000;


  // Spazi vuoti tra una colonna e l'altra
  blankSpace = 2;

  // Inizializzazione dei vari campi da stampare
  for (i=0; i<dbMatrix.length; i++) {
    cod = dbMatrix[i][CODICE];
    des = dbMatrix[i][TITOLO];
    testo = dbMatrix[i][FRASE];

    // Se il valore supera la lunghezza consentita, viene troncato
    cod = resize(cod, MaxLen[CODICE], blankSpace);
    des = resize(des, MaxLen[TITOLO], blankSpace);
    testo = resize(testo, MaxLen[FRASE], blankSpace);

    //document.write(cod);
    //document.writeln(des);
	return testo;
  }  // Fine del for
}


function DisplayGruppi(dbMatrix) {

  // Dichiarazione della lunghezza dei campi (per la formattazione)
  // E' stato previsto che se il valore del campo supera quello qui
  // di seguito definito, viene troncato per rientrare nei limiti.
  
  // Ricordiamo che i campi sono legati agli indici della tabella nel
  // modo seguente:
  //
  // CODICE: 0 - DESCRIZIONE: 1
  //

  CODICE = 0;
  GRUPPO = 1;
  COORDINATORE = 2;
  SEGRETARIO = 3;
  ECONOMO = 4;
  EMAIL =5;
  FAX =6;


  MaxLen = new Array();
//  MaxLen[CODICE] = 10;
  MaxLen[GRUPPO] = 50;
  MaxLen[COORDINATORE] = 30;
  MaxLen[SEGRETARIO] = 30;
  MaxLen[ECONOMO] = 30;
  MaxLen[EMAIL] = 40;
  MaxLen[FAX] = 30;

  // Spazi vuoti tra una colonna e l'altra
  blankSpace = 2;


  // Inizializzazione dei vari campi da stampare
  for (i=0; i<dbMatrix.length; i++) {
//    cod = dbMatrix[i][CODICE];
    gruppo = dbMatrix[i][GRUPPO];
    coord = dbMatrix[i][COORDINATORE];
    segr = dbMatrix[i][SEGRETARIO];
    econ = dbMatrix[i][ECONOMO];
    mail = dbMatrix[i][EMAIL];
    fax = dbMatrix[i][FAX];


    // Se il valore supera la lunghezza consentita, viene troncato
//    cod = resize(cod, MaxLen[CODICE], blankSpace);
    gruppo = resize(gruppo, MaxLen[GRUPPO], blankSpace);
    coord = resize(coord, MaxLen[COORDINATORE], blankSpace);
    segr = resize(segr, MaxLen[SEGRETARIO], blankSpace);
    econ = resize(econ, MaxLen[ECONOMO], blankSpace);
    mail = resize(mail, MaxLen[EMAIL], blankSpace);
    fax = resize(fax, MaxLen[FAX], blankSpace);

//formatto gia la pagina come tabella
document.write	('<TABLE class="mytab">')
document.write	('<TH colspan=2>' + gruppo + '</TH>')
/*document.write	('<TR>')
document.write	('<TD class="etichetta">Coordinatore</TD>')
document.write	('<TD>'+ coord + '</TD>')
document.write	('</TR>')
document.write	('<TR>')
document.write	('<TD class="etichetta">Segretario</TD>')
document.write	('<TD>'+ segr + '</TD>')
document.write	('</TR>')
document.write	('<TR>')
document.write	('<TD class="etichetta">Economo</TD>')
document.write	('<TD>'+ econ + '</TD>')
document.write	('</TR>')
document.write	('<TR>')
document.write	('<TD class="etichetta">E-mail</TD>')
document.write	('<TD><A HREF="mailto:'+ mail + '">'+ mail + '</A></TD>')
document.write	('</TR>')
document.write	('<TR>')
document.write	('<TD class="etichetta">Fax</TD>')
document.write	('<TD>'+ fax + '</TD>')
document.write	('</TR>')
document.write	('</TABLE>')
*/

  }  // Fine del for
}
