// JavaScript Document

//  Effetto slide, sull'altezza di un tag: espande o collassa
function EspandiCollassaH(espandi, id_intervallo, id_tag, visibile, altezza) {
  //  Valore di incremento o decremento dell'altezza
  var k = 20;

  //  Parametro per la nuova altezza
  var nuova_altezza = document.getElementById(id_tag).offsetHeight;
  
  //  Controlla se espandere o collassare il tag
  nuova_altezza += espandi == 1 ? k : - k;

  //  Controlla se il valore è positivo o restituisce zero
  if (nuova_altezza < 0)
    nuova_altezza = 0;

  //  Mostra o nasconde una porzione del tag alla volta
  document.getElementById(id_tag).style.height = nuova_altezza+'px';   
  document.getElementById(id_tag).style.overflow = 'hidden';
  document.getElementById(id_tag).style.display = visibile;
 
  //  Se l'altezza corrente corrisponde a quella finale blocca il timer
  if (document.getElementById(id_tag).offsetHeight > altezza ||
    document.getElementById(id_tag).offsetHeight <= 0) {   
    //  Cambia la visibilità in base al valore di espansione
    if (espandi == 0)
      document.getElementById(id_tag).style.display = 'none';
        
    //  Azzera l'intervallo
    clearInterval(id_intervallo);
  }
}

//  Mostra o nasconde un tag
function MostraNascondi(id_tag) {
  //  Imposta il timer di richiamo alla funzione espandi o collassa
  var t = 10;

  //  Valore di default per la visibilità
  var visibile = 'block';

  //  Salva il valore della visibilità iniziale
  var old_visibile = document.getElementById(id_tag).style.display;

  //  Salva il valore dell'altezza iniziale
  var old_altezza = document.getElementById(id_tag).style.height;
  
  //  Mostra temporaneamente il tag
  document.getElementById(id_tag).style.display = visibile;
  
  //  Imposta temporaneamente un'altezza massima del tag in base al suo contenuto
  if (old_altezza)
    document.getElementById(id_tag).style.height = 'auto';

  //  Recupera al volo l'altezza del contenuto id_tag
  var altezza = document.getElementById(id_tag).offsetHeight;

  //  Reimposta il valore di altezza iniziale
  if (old_altezza)
    document.getElementById(id_tag).style.height = old_altezza;
  
  //  Reimposta il valore della visibilità iniziale
  document.getElementById(id_tag).style.display = old_visibile;

  // Espande il tag poco alla volta
  if (document.getElementById(id_tag).style.display == 'none')
    var id_intervallo = setInterval(function () { EspandiCollassaH(1, id_intervallo, id_tag, visibile, altezza) }, t);

  //  Collassa il tag poco alla volta
  else
    var id_intervallo = setInterval(function () { EspandiCollassaH(0, id_intervallo, id_tag, visibile, altezza) }, t);
}

//  Scambia le visibilità di due tag
function Scambia(id_tag1, id_tag2, visibile1, visibile2) {
  //  Valore di default per la visibilità
  if (!visibile1)
    visibile1 = 'block';
    
  if (!visibile2)
    visibile2 = 'block';

  // Rende il primo tag visibile e il secondo invisibile
	if (document.getElementById(id_tag1).style.display == '' || 
    document.getElementById(id_tag1).style.display == 'none') {
    document.getElementById(id_tag1).style.display = visibile1;
    document.getElementById(id_tag2).style.display = 'none';
  }
  
  //  Nasconde il primo tag e mostra di nuovo il secondo
  else {
    document.getElementById(id_tag1).style.display = 'none';
    document.getElementById(id_tag2).style.display = visibile2;
  }
}