// 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. 
//
///////////////////////////////////////////////////////////////////

// Variabili globali
var styleClassColumn = "";
var styleClassTitle = "";
var styleClassText = "";
var styleClassLink = "";
var textFederato = "";
var styleClassChiave = "";

// 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;
}

// display dati pagina federazione
function DisplayDBFederazione(dbMatrix) {

  // Inizializzazione dei vari campi da stampare
  for (i=0; i<dbMatrix.length; i++) {
    titolo		= dbMatrix[i][DB_TITOLO];
	id			= dbMatrix[i][DB_ID];
    fed			= dbMatrix[i][DB_FEDERATO];
    link		= dbMatrix[i][DB_LINK];
	logo		= dbMatrix[i][DB_LOGO];
	gestore		= dbMatrix[i][DB_GESTORE];
	lingua		= dbMatrix[i][DB_LINGUA];
	chiave		= dbMatrix[i][DB_CHIAVE];
	descrizione	= dbMatrix[i][DB_DESCRIZIONE];

	// imposta stili css
	setCssStyle(fed);

	// imposta chiamata alla pagina scheda del sito con l'id del sito
	enciclopedia = "scheda_sito.html?t=SelectEqual&f1="+DB_ID+"&v1="+id+"&f2=&v2=&s=";

	// formattazione pagina html
	document.write('<tr><td>');
			document.write('<span class='+styleClassLink+'>');
				document.write('<a href='+enciclopedia+' onmouseover="this.T_TITLE=\'Descrizione\';return escape(\''+descrizione+'\')">'+titolo+'</a>');
			document.write('</span>');
	document.write('</td></tr>');

  }  // Fine del for

}

// display dati pagina enciclopedia
function DisplayDBEnciclopedia(dbMatrix) {

	// conta siti federati e non federati
	countFed = 0;
	countNonFed = 0;
	for (i=0; i<dbMatrix.length; i++) {
		fed	= dbMatrix[i][DB_FEDERATO];
		if (fed == "S") { countFed++; }
		else { countNonFed++; }
	}
	
	// messaggio informativo esito ricerca
	if (dbMatrix.length == 0) {
		document.write('<tr><td align="center" class=textTitleRed>Non sono stati trovati siti!</td></tr>');
	}
	if (dbMatrix.length == 1) {
		document.write("<tr><td align='center' colspan='2' class='textTitleRed'>E' stato trovato "+dbMatrix.length+" sito!<br><br></td></tr>");
	}
	if (dbMatrix.length > 1) {
		document.write('<tr><td align="center" colspan="2" class="textTitleRed">Sono stati trovati '+dbMatrix.length+' siti!</td></tr>');
		document.write('<tr><td align="center" colspan="2">');
		document.write('<span class="textFederati">'+countFed);
		if (countFed == 1) { document.write(' Federato </span>'); }
		              else { document.write(' Federati </span>'); }
		document.write('&nbsp;&nbsp;&nbsp;');
		document.write('<span class="textNonFederati">'+countNonFed);
		if (countNonFed == 1) { document.write(' Non Federato</span><br><br></td></tr>'); }
		                 else { document.write(' Non Federati</span><br><br></td></tr>'); }
	}

  db_cat.sort(); // Sort tabella categorie

  // Inizializzazione dei vari campi da stampare
  for (i=0; i<dbMatrix.length; i++) {
    titolo		= dbMatrix[i][DB_TITOLO];
	id			= dbMatrix[i][DB_ID];
    fed			= dbMatrix[i][DB_FEDERATO];
    link		= dbMatrix[i][DB_LINK];
	logo		= dbMatrix[i][DB_LOGO];
	gestore		= dbMatrix[i][DB_GESTORE];
	lingua		= dbMatrix[i][DB_LINGUA];
	chiave		= dbMatrix[i][DB_CHIAVE];
	descrizione	= dbMatrix[i][DB_DESCRIZIONE];

	// imposta stili css
	setCssStyle(fed);

	// decodifica lingua
	lingua = getLingua(lingua);

	// Decodifica chiave
	chiave = getChiave(chiave);

	// verifica gestore
	gestore = checkGestore(gestore);

	// componi nome logo
	if (logo != "") {
		logo = getLogo(id, logo);
	}

	// formattazione pagina html
	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Titolo:</td>');
		document.write('<td id='+id+' class='+styleClassTitle+'>'+titolo+'</td>');
	document.write('</tr>');

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Link:</td>');
		document.write('<td class='+styleClassText+'>');
			document.write('<span class='+styleClassLink+'>');
				document.write('<a href='+link+' target="_blank">'+link+'</a>');
			document.write('</span>');
		document.write('</td>');
	document.write('</tr>');

	if (top.showBannerFlag == 1 && logo != "") {
		document.write('<tr><td>&nbsp;</td><td><img src="images/banner_siti/'+logo+'"></td></tr>');
	}

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Stato:</td>');
		document.write('<td class='+styleClassText+'>'+textFederato+'</td>');
	document.write('</tr>');
	
	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Gestore:</td>');
		document.write('<td class='+styleClassText+'>'+gestore+'</td>');
	document.write('</tr>');

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Lingua:</td>');
		document.write('<td class='+styleClassText+'>'+lingua+'</td>');
	document.write('</tr>');

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Parole chiave:</td>');
		document.write('<td class='+styleClassChiave+'>'+chiave+'</td>');
	document.write('</tr>');

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Descrizione:</td>');
		document.write('<td class='+styleClassText+' align="justify">'+descrizione+'</td>');
	document.write('</tr>');

	document.write('<tr><td>&nbsp;</td></tr><!-- Blank line -->');

  }  // Fine del for
}

// display dati pagina scheda_sito
function DisplayDBSchedaSito(dbMatrix) {

  db_cat.sort(); // Sort tabella categorie

  // Inizializzazione dei vari campi da stampare
  for (i=0; i<dbMatrix.length; i++) {
    titolo		= dbMatrix[i][DB_TITOLO];
	id			= dbMatrix[i][DB_ID];
    fed			= dbMatrix[i][DB_FEDERATO];
    link		= dbMatrix[i][DB_LINK];
	logo		= dbMatrix[i][DB_LOGO];
	gestore		= dbMatrix[i][DB_GESTORE];
	lingua		= dbMatrix[i][DB_LINGUA];
	chiave		= dbMatrix[i][DB_CHIAVE];
	descrizione	= dbMatrix[i][DB_DESCRIZIONE];

	// imposta stili css
	setCssStyle(fed);

	// decodifica lingua
	lingua = getLingua(lingua);

	// Decodifica chiave
	chiave = getChiave(chiave);

	// verifica gestore
	gestore = checkGestore(gestore);

	// componi nome logo
	if (logo != "") {
		logo = getLogo(id, logo);
	}

	// formattazione pagina html
	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Titolo:</td>');
		document.write('<td id='+id+' class='+styleClassTitle+'>'+titolo+'</td>');
	document.write('</tr>');

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Link:</td>');
		document.write('<td class='+styleClassText+'>');
			document.write('<span class='+styleClassLink+'>');
				document.write('<a href='+link+' target="_blank">'+link+'</a>');
			document.write('</span>');
		document.write('</td>');
	document.write('</tr>');

	if (logo != "") {
		document.write('<tr><td>&nbsp;</td><td><img src="images/banner_siti/'+logo+'"></td></tr>');
	}

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Stato:</td>');
		document.write('<td class='+styleClassText+'>'+textFederato+'</td>');
	document.write('</tr>');
	
	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Gestore:</td>');
		document.write('<td class='+styleClassText+'>'+gestore+'</td>');
	document.write('</tr>');

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Lingua:</td>');
		document.write('<td class='+styleClassText+'>'+lingua+'</td>');
	document.write('</tr>');

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Parole chiave:</td>');
		document.write('<td class='+styleClassChiave+'>'+chiave+'</td>');
	document.write('</tr>');

	document.write('<tr>');
		document.write('<td class='+styleClassColumn+'>Descrizione:</td>');
		document.write('<td class='+styleClassText+' align="justify">'+descrizione+'</td>');
	document.write('</tr>');

	document.write('<tr><td>&nbsp;</td></tr><!-- Blank line -->');

  }  // Fine del for
}

// Decodifica lingua del sito
function getLingua(lingua) {

  // Inizializzazione dei vari campi
  for (i_lan=0; i_lan<db_lingua.length; i_lan++) {
    // Si effettua un casting a tipo stringa
    valoreCampo = '' + db_lingua[i_lan][LINGUA_CODICE]; 
	// Confronta il valore
	if (valoreCampo.toUpperCase() == lingua.toUpperCase()) {
      return db_lingua[i_lan][LINGUA_TESTO];
    }
  }

  // non trovato
  return "???";
}

// Imposta stili CSS
function setCssStyle(fed) {
	if (fed == "S")
	  {
		styleClassColumn = "textFederatiColumn";
		styleClassTitle = "textFederatiTitle";
		styleClassText = "textFederati";
		styleClassLink = "linkFederati";
		textFederato = "Sito Federato";
	  }
	else
	  {
		styleClassColumn = "textNonFederatiColumn";
		styleClassTitle = "textNonFederatiTitle";
		styleClassText = "textNonFederati";
		styleClassLink = "linkNonFederati";
		textFederato = "Sito Non Federato";
	  }
	styleClassChiave = "enciclopediaKeyWords";
}

// Verifica esistenza gestore
function checkGestore(gestore) {
	if (gestore == "") {return "Sconosciuto";}
	return gestore;
}

// Componi nome logo
function getLogo(id, logo) {
	switch (logo) {
	case "1":
		return id+".jpg";
	case "2":
		return id+".gif";
	case "3":
		return id+".png";
	default:
		return "ERROR"; // in questo caso viene visualizzato un box vuoto (per controllo)
	}
}

// Decodifica parole chiave
function getChiave(chiave) {

  categoria = "";

  // Inizializzazione dei vari campi
  for (i_cat=0; i_cat<db_cat.length; i_cat++) {
  // Si effettua un casting a tipo stringa
    valoreCampo = '' + db_cat[i_cat][CAT_CODICE]; 

	// Confronta il valore (se compreso)
	if (chiave.toUpperCase().indexOf(valoreCampo) != -1)
	{
		// aggiungi ogni categoria al testo separata da una virgola
		if (categoria != "") {categoria = categoria + ", ";}
		categoria = categoria + db_cat[i_cat][CAT_TESTO];
	}

  }

  return categoria;

}
