
//
// anagramma.js
// gestione gioco interattivo 'Anagramma'
//

// **********************************************
//                   DATI LOCALI
// **********************************************
Dim=20;

// **********************************************
// FUNZIONI COMUNI, ADATTATE AL SINGOLO GIOCO
// **********************************************
function reset_schema()
// imposta strutture dati per (ri)partire col gioco
{
// CODICE COMUNE
  if (Risolto || SoluzioneVista || VediSoluzione || VediInfo)
    return;

// CODICE DIPENDENTE DAL SINGOLO GIOCO

// CODICE COMUNE
  vedi_schema();
}

function nuovo_schema()
// calcola parametri schema scelto e lo visualizza
{
  Esposto=(get_esposto(Schema)).toString();
  return(false);
}

function vedi_schema()
// visualizza schema
{
  ss='<table align="center" width="100%"><tr><td><table '+
             'align="center"><tr><td><span class="centertxt" id="eit0">'+
             '</span></td></tr><tr><td><span id="eit1"></span><br><span '+
             'id="eit2"></span></td></tr></table></td></tr></table>';
  document.getElementById('eitsk').innerHTML=ss;
  // inserisce tabella per gioco classico

  document.getElementById(eittag(0)).innerHTML=
   '<center><i>'+get_titolo(Schema)+'</i></center>';
  // inserisce titolo gioco classico

  Quanti=0;                           // numero iniziale di gruppi di incognite
  espst=Esposto.split('|');           // spezzetta esposto riga per riga

  codice='';                          // codice html iniziale
  iddiv=3;                            // indice eitx dal quale partire
  for (i=0;i<espst.length;i++)        // per ogni verso del gioco classico
  {
    espst[i]=espst[i].replace(/\s/g,'&nbsp;');
    if ((j=espst[i].indexOf('['))!=-1)// se ci sono incognite
    {
      Quanti++;                       // incr. n. gruppi incognite presenti
      pp=espst[i].indexOf('[');       // acquisisce posizioni [ e ]
      sp=espst[i].indexOf(']');
// DA MIGLIORARE! NESSUN PROBLEMA PER ORA MA NON INTERCETTA EVENTUALI VERSI CON
// DUE O PIU' GRUPPI DI INCOGNITE

      codice+='<span>'+espst[i].slice(0,pp-1)+
              (pp==0?'':'&nbsp;')+'</span>'+
             '<span onClick="cliccata('+iddiv+');'+
             'return(false);"'+'id="'+eittag(iddiv)+'">'+
              espst[i].slice(pp+1,sp)+'</span>'+'<span>'+
              espst[i].slice(sp+1,espst[i].length)+'</span>';
      // costruisce codice html per verso attuale

      iddiv++;         // incrementa indice eitx

      codice+="<br>";  // adatta layout
    }
    else               // altrimenti non ci sono incognite
      codice+='<div>'+espst[i]+'</div>';  // codice html per verso attuale
  }

  document.getElementById(eittag(1)).innerHTML=codice;
  // inserisce codice html dell'esposto

  document.getElementById(eittag(2)).innerHTML='<i>('+
    get_autore(Schema)+')</i>';
  // inserisce pseudonimo autore gioco

  zooma_font(0); // adatta zoomata al valore iniziale
}

function cliccata(c)
// cliccato su elemento
{
  if (Risolto || VediSoluzione)
    return;

  colora(c,'#ccc');
  // evidenzia elemento c
}

function inkeys(e)
// gestore pressione tasti
{
  if (Risolto || SoluzioneVista || VediSoluzione || VediInfo)
    return;

  return false;
}

function soluzione()
// visualizza soluzione
{
  if (VediInfo)
    return;

  SoluzioneVista=true;
  VediSoluzione=!VediSoluzione;
  for (i=0;i<Quanti;i++)
    document.getElementById(eittag(i+3)).innerHTML=
      ((get_soluzione(Schema).toString()).split(',')).slice(i,i+1);

  stopTimer();
}

// -------------------------------
// INIZIO CODICE LOCALE AGGIUNTIVO
// -------------------------------

var Quanti;           // numero gruppi incognite presenti singolo gioco

document.onkeydown=inkeys;
// aggancia gestore pressione tasti alla pagina

function colora(e,s)
// colora elemento e
{
  document.getElementById(eittag(e)).style.backgroundColor=s;
}