function Evidenzia(r, c, colora)
{
if (r == RigaCorrente && c == ColonnaCorrente) 
   {
     if (document.getElementById) {document.getElementById("c_" + r + "_" + c).bgColor = (colora == true) ? "yellow" : "#FFFFFF";}
   }
else
   {
    if (document.getElementById) {document.getElementById("c_" + r + "_" + c).bgColor = (colora == true) ? "aqua" : "#FFFFFF";}
   }
}

function EvidenziaRiga(r, c, colora)
{
var n;
var cont;
n = Orizzontali[r][c];
if (n == 0 && colora) {return;};

for (cont=1; cont < (Orizzontali[r].length - 1); cont++ )
   {
     if (Orizzontali[r][cont] == n) {Evidenzia(r, cont, colora);};
   }

}

function EvidenziaColonna(r, c, colora)
{
var n;
var cont;
n = Verticali[r][c];
if (n == 0 && colora) {return;};

for (cont=1; cont < (Verticali.length - 1); cont++ )
   {
     if (Verticali[cont][c] == n) {Evidenzia(cont, c, colora);};
   }
}

function EvidenziaRigaColonna(r, c)
{
if (!document.getElementById)
{
alert("Il browser utilizzato (" + navigator.appName + " " + navigator.appVersion + " "  + ") non consente di compilare il cruciverba e di verificarne la soluzione.\n\nSi consiglia l'utilizzo di Microsoft Internet Explorer 5 (o superiore).\n\nPuoi comunque giocare stampando la versione PDF del cruciverba. La soluzione di questo gioco sarà presto disponibile all'interno dell'Archivio dei Cruciverba.");
return false;
}
if (Orizzontali[r][c] == 0 && Verticali[r][c] == 0) {return;};
EvidenziaRiga(RigaCorrente, ColonnaCorrente, false);
EvidenziaColonna(RigaCorrente, ColonnaCorrente, false);
if (RigaCorrente == r && ColonnaCorrente ==c) {Orizzontale = !Orizzontale;};
RigaCorrente = r;
ColonnaCorrente = c;
if (Orizzontale && (Orizzontali[r][c] != 0))
   {EvidenziaRiga(RigaCorrente, ColonnaCorrente, true);}
else
   {
      if (Verticali[r][c] != 0)
	  {
       EvidenziaColonna(RigaCorrente, ColonnaCorrente, true);
	   Orizzontale = false;	  
	  }
	  else
	  {
       EvidenziaRiga(RigaCorrente, ColonnaCorrente, true);	  
	   Orizzontale = true;
	  }
    }
if (document.getElementById) {document.getElementById("domande").innerHTML = "";};
if (Orizzontali[r][c] != 0)
   {
     MostraDomandaOrizzontale(Orizzontali[r][c]);
   }
if (Verticali[r][c] != 0)
   {
     MostraDomandaVerticale(Verticali[r][c]);
   }
}

function MostraDomandaOrizzontale(d)
{
if (document.getElementById)
{
if (Orizzontale && DomandeO[d] != "") 
   {
     document.getElementById("domande").innerHTML += "<font color='red' face='Verdana, Arial, Helvetica, sans-serif'><b>" + d + "&nbsp;Orizzontali.&nbsp;</b>" + DomandeO[d] + "<br><br>";
   }
else
   {
    if (DomandeO[d] != "")
       {
        document.getElementById("domande").innerHTML += "<font face='Verdana, Arial, Helvetica, sans-serif'><b>" + d + "&nbsp;Orizzontali.&nbsp;</b>" + DomandeO[d] + "<br><br>";
       }
   }
}
}

function EvidenziaOrizzontale(r, d)
{
var cont;
for (cont=1; cont < (Orizzontali[r].length - 1); cont++ )
   {
     if (Orizzontali[r][cont] == d) {Evidenzia(r, cont, true);};
   }
}

function CercaRiga(d)
{
var c1, c2;
for (c1=1; c1 < (Orizzontali.length - 1); c1++ )
   {
     for (c2=1; c2 < (Orizzontali[c1].length - 1); c2++ )
        {
          if (Orizzontali[c1][c2] == d) 
		     {
			   RigaCorrente = c1;
			   ColonnaCorrente = c2;
			   return;
			 };
        }
   }
return;
}

function EvidenziaDomandaOrizzontale(d)
{
Orizzontale = true;

EvidenziaRiga(RigaCorrente, ColonnaCorrente, false);
EvidenziaColonna(RigaCorrente, ColonnaCorrente, false);

// Assegno i valori corretti di RigaCorrente e ColonnaCorrente:
CercaRiga(d);

EvidenziaOrizzontale(RigaCorrente, d);

if (document.getElementById) {document.getElementById("domande").innerHTML = "";};
MostraDomandaOrizzontale(d);
}

function MostraDomandaVerticale(d)
{
if (document.getElementById)
{
if (!Orizzontale && DomandeV[d] != "") 
   {
     document.getElementById("domande").innerHTML += "<font color='red' face='Verdana, Arial, Helvetica, sans-serif'><b>" + d + "&nbsp;Verticali.&nbsp;</b>" + DomandeV[d] + "<br><br>";
   }
else
   {
    if (DomandeV[d] != "")
       {
     document.getElementById("domande").innerHTML += "<font face='Verdana, Arial, Helvetica, sans-serif'><b>" + d + "&nbsp;Verticali.&nbsp;</b>" + DomandeV[d] + "<br><br>";
       }
   }
}
}

function EvidenziaVerticale(c, d)
{
var cont;
for (cont=1; cont < (Verticali.length - 1); cont++ )
   {
     if (Verticali[cont][c] == d) {Evidenzia(cont, c, true);};
   }
}

function CercaColonna(d)
{
var c1, c2;
for (c1=1; c1 < (Verticali.length - 1); c1++ )
   {
     for (c2=1; c2 < (Verticali[c1].length - 1); c2++ )
        {
          if (Verticali[c1][c2] == d) 
		     {
			   RigaCorrente = c1;
			   ColonnaCorrente = c2;
			   return;
			 };
        }
   }
return;
}

function EvidenziaDomandaVerticale(d)
{
Orizzontale=false;

EvidenziaRiga(RigaCorrente, ColonnaCorrente, false);
EvidenziaColonna(RigaCorrente, ColonnaCorrente, false);

// Assegno i valori corretti di RigaCorrente e ColonnaCorrente:
CercaColonna(d);

EvidenziaVerticale(ColonnaCorrente, d);

if (document.getElementById) {document.getElementById("domande").innerHTML = "";};
MostraDomandaVerticale(d);
}

function ControllaTasti(field, evt) {
  var srcEl = evt.srcElement? evt.srcElement : evt.target;
  if (srcEl.id == "Login" || srcEl.id == "Pwd" || srcEl.id == "Submit1")  
     {
      return true;
     };
  var keyCode = 
    document.layers ? evt.which :
    document.getElementById ? evt.keyCode :
    document.all ? event.keyCode : 0;
  
  var keyString = String.fromCharCode(keyCode).toUpperCase();
  if (keyString >= "A" && keyString <= "Z")
     {
      InserimentoCarattere(keyString);
	  EvidenziaRigaColonna(RigaCorrente+(!Orizzontale), ColonnaCorrente+Orizzontale);	  
      return true;
     };
  if (keyString == " ")   //32=Spazio
     {
//    Orizzontale = !Orizzontale;    (LO FA GIA' LA EVIDENZIARIGACORRENTE)
	  EvidenziaRigaColonna(RigaCorrente, ColonnaCorrente);
     };
  if (keyCode == 46 || keyCode == 8)   //46=Canc, 8=Backspace
     {
      InserimentoCarattere("");
	  EvidenziaRigaColonna(RigaCorrente-(!Orizzontale), ColonnaCorrente-Orizzontale);	  
     };
  if (keyCode == 39)
     {
   // Freccia dx
   	  EvidenziaRigaColonna(RigaCorrente, ColonnaCorrente==(Orizzontali[0].length-2) ? ColonnaCorrente : ColonnaCorrente+1);
	 }
  else if (keyCode == 40)
     {
   // Freccia giu' o invio
   // TOLTO L'INVIO! (13)
	  EvidenziaRigaColonna(RigaCorrente==(Orizzontali.length-2) ? RigaCorrente : RigaCorrente+1, ColonnaCorrente);	
	 }
  else if (keyCode == 38)
     {
   // Freccia su
	  EvidenziaRigaColonna(RigaCorrente==1 ? RigaCorrente : RigaCorrente-1, ColonnaCorrente);	
	 }
  else if (keyCode == 37)
     {
   // Freccia sx
  	  EvidenziaRigaColonna(RigaCorrente, ColonnaCorrente==1 ? ColonnaCorrente : ColonnaCorrente-1);
	 };
  return false;
}

function InserimentoCarattere(car)
{
if (document.getElementById)
{
document.getElementById("l_" + RigaCorrente + "_" + ColonnaCorrente).innerHTML =
    "<font size='2' face='Verdana, Arial, Helvetica, sans-serif'><b>" + car + "</b></font>";
}
Risposta[RigaCorrente][ColonnaCorrente] = car;
AggiornaSoluzione();
}

function InviaSoluzione()
{
var c1, c2;
if (document.getElementById) {
//*document.getElementById("Reply").value = "";
for (c1=1; c1 < (Risposta.length - 1); c1++)
   {
     for (c2=1; c2 < (Risposta[c1].length - 1); c2++ )
        {
		  if ((Risposta[c1][c2] == "") || (Risposta[c1][c2] == " "))
		     {
			   alert("Completare il cruciverba, prima di verificare la soluzione.");
                           if (document.all) document.getElementById("c_" + RigaCorrente + "_" + ColonnaCorrente).focus();
                           return false;
		     }
//*       document.getElementById("Reply").value += Risposta[c1][c2];
        }
   }
//document.getElementById("form1").submit();
if (document.getElementById("Login").value == "")
   {
     alert("Inserire il Login");
	 document.getElementById("Login").focus();
     return false;
   }
if (document.getElementById("Pwd").value == "")
   {
     alert("Inserire la Password");
	 document.getElementById("Pwd").focus();
     return false;
   }
//alert(document.getElementById("Reply").value);

AggiornaSoluzione_2();

return true;
}
else
{
alert("Il browser utilizzato (" + navigator.appName + " " + navigator.appVersion + ") non consente di compilare il cruciverba e di verificarne la soluzione.\n\nSi consiglia l'utilizzo di Microsoft Internet Explorer 5 (o superiore).\n\nPuoi comunque giocare stampando la versione PDF del cruciverba. La soluzione di questo gioco sarà presto disponibile all'interno dell'Archivio dei Cruciverba.");
return false;
}
}

function Inizializza(r, c, n_r, n_c)
{

var rig;
var col;

rig = r;
col = c;

var c1;
var c2;

//alert(document.getElementById("Reply").value);

if (document.getElementById)
{

/*if (document.getElementById("Reply").value == "")
  {
   for (c1=1; c1<= (n_r * n_c); c1++)
       document.getElementById("Reply").value += "*";
  }*/
if (document.getElementById("Reply").value.length == n_r * n_c)
  {
   for (c1=1; c1 <= n_r; c1++)
     {
      for (c2=1; c2 <= n_c; c2++)
        {
          if (document.getElementById("Reply").value.substring((c1-1)*n_c+c2-1,(c1-1)*n_c+c2) != "*"
             &&
             document.getElementById("Reply").value.substring((c1-1)*n_c+c2-1,(c1-1)*n_c+c2) != " ")
             {
             document.getElementById("l_" + c1 + "_" + c2).innerHTML = "<font size='2' face='Verdana, Arial, Helvetica," +
             "sans-serif'><b>" + document.getElementById("Reply").value.substring((c1-1)*n_c+c2-1,(c1-1)*n_c+c2) +              "</b></font>";
             }
          if (document.getElementById("Reply").value.substring((c1-1)*n_c+c2-1,(c1-1)*n_c+c2) != "*")
             {
             Risposta[c1][c2] = document.getElementById("Reply").value.substring((c1-1)*n_c+c2-1,(c1-1)*n_c+c2);
             }
        }
     }
  }
else
  {
   document.getElementById("Reply").value = "";
   for (c1=1; c1<= (n_r * n_c); c1++)
       document.getElementById("Reply").value += "*";
//   document.getElementById("Reply").value = "                ";
  }
EvidenziaRigaColonna(r, c);
return;
}
}

function AggiornaSoluzione()
{
var c1, c2;
if (RigaCorrente == 1 && ColonnaCorrente == 1)
  {
   if (Risposta[RigaCorrente][ColonnaCorrente] == "")
     {
      document.getElementById("Reply").value = " " + document.getElementById("Reply").value.substring(1);
     }
   else
     {
      document.getElementById("Reply").value = Risposta[RigaCorrente][ColonnaCorrente] + document.getElementById("Reply").value.substring(1);
     }
  }
else
  {
   if (Risposta[RigaCorrente][ColonnaCorrente] == "")
     {
      document.getElementById("Reply").value = 
              document.getElementById("Reply").value.substring(0, (RigaCorrente-1)*nc + ColonnaCorrente-1) + 
              " " + 
              document.getElementById("Reply").value.substring((RigaCorrente-1)*nc + ColonnaCorrente);
     }
   else
     {
    //alert("parte precedente: " +  document.getElementById("Reply").value.substring(0, (RigaCorrente-1)*nc+                   ColonnaCorrente-1));
    //alert("parte seguente: " + document.getElementById("Reply").value.substring((RigaCorrente-1)*nc + ColonnaCorrente));
      document.getElementById("Reply").value = 
              document.getElementById("Reply").value.substring(0, (RigaCorrente-1)*nc + ColonnaCorrente-1) + 
              Risposta[RigaCorrente][ColonnaCorrente] + 
              document.getElementById("Reply").value.substring((RigaCorrente-1)*nc + ColonnaCorrente);
    //alert("posizione in cui vado a scrivere: " + ((RigaCorrente-1)*nc + ColonnaCorrente));
     }
  }
return;

/**************************
//VECCHIA GESTIONE:
if (document.getElementById) 
  {
   document.getElementById("Reply").value = "";
   for (c1=1; c1 < (Risposta.length - 1); c1++ )
      {
       for (c2=1; c2 < (Risposta[c1].length - 1); c2++ )
          {
            if (Risposta[c1][c2] == "") 
               {
                 document.getElementById("Reply").value += " ";
               }
            else
               {
                 document.getElementById("Reply").value += Risposta[c1][c2];
               }
          }
      }
  }
***************************/
}

function AggiornaSoluzione_2()
{
var c1, c2;
if (document.getElementById) 
  {
   document.getElementById("Reply").value = "";
   for (c1=1; c1 < (Risposta.length - 1); c1++ )
      {
       for (c2=1; c2 < (Risposta[c1].length - 1); c2++ )
          {
            if (Risposta[c1][c2] == "") 
               {
                 document.getElementById("Reply").value += " ";
               }
            else
               {
                 document.getElementById("Reply").value += Risposta[c1][c2];
               }
          }
      }
  }
return;
}

function Mostra(f)
{
 var stile;
 if (window.showModalDialog)
   {
    var result;
    if (f=="InvioPassword2.htm")
        stile = "dialogWidth:575px;dialogHeight:315px;dialogLeft:center;dialogTop:center";
    else
        stile = "dialogWidth:675px;dialogHeight:725px;dialogLeft:center;dialogTop:center";

    result = showModalDialog(f, "", stile);
   }
 else
   {
    if (f=="registrazione2.htm") f = "registrazione.htm";
    if (f=="InvioPassword2.htm") f = "InvioPassword.htm";
    window.open(f, "resizable,width=675,height=725");
   }
}


function Stampa(f)
{
 var stile;
 if (window.showModalDialog)
   {
    var result;
    stile = "dialogWidth:575px;dialogHeight:385px;dialogLeft:center;dialogTop:center";
    result = showModalDialog("InvioPDF2.asp?File=" + f, "", stile);
   }
 else
   {
    window.open('InvioPDF.asp?File=' + f, 'resizable,width=575,height=605');
   }
}
