// p č il numero della casella
function gioco(p) {
off='__';
err=' ';
dim=document.forms[2].dim.value; //imposta la dimensione 10x10
max=document.forms[2].max.value; // il numero massimo 100
met=document.forms[2].met.value; //100

// Mosse 100
cenR = new Array(0,2,3, 2, 0,-2,-3,-2);
cenC = new Array(3,2,0,-2,-3,-2, 0, 2);

// Mosse Cavallo
cavR = new Array(1,2, 2, 1,-1,-2,-2,-1);
cavC = new Array(2,1,-1,-2,-2,-1, 1, 2);

/*Riga e colonna attuale*/
rig = Math.floor(p/dim)+1;
col = p-(rig-1)*dim+1;

/*Controlla se mossa valida*/
ult=document.forms[2].ult.value;
if (ult>=0) 
{
	valido=false;
	ultRig=Math.floor(ult/dim)+1;
	ultCol=ult-(ultRig-1)*dim+1;
	if (met==100)
	{
		for (n=0; n<8; n++)
		{
			if (rig==ultRig+cenR[n] && col==ultCol+cenC[n])
			{
				valido=true
			}
		}
	}
	if (met=="cav")
	{
		for (n=0; n<8; n++)
		{
			if (rig==ultRig+cavR[n] && col==ultCol+cavC[n])
			{
				valido=true
			}
		}
	}
}
else
{
	valido=true;
}

/*Assegna il numero alla cella contando le celle riempite*/
if (valido)
{
	if (document.forms[0].elements[p].value==off)
	{
		/*Conta quante celle sono state riempite*/
		var cont=0;
		for (var n=0; n<max; n++)
		{
			/*Cancella suggerimenti della mossa precedente*/
			if (document.forms[0].elements[n].value==off)
			{
				document.forms[0].elements[n].value=err;
			}
			nVicini=0;
			if (document.forms[0].elements[n].value!=off && document.forms[0].elements[n].value!=err)
			{
				cont++;
			}
			else
			{
				/* Colora eventuali celle a rischio */
				for (i=0;i<8;i++)
				{
					rig0 = Math.floor(n/dim)+1;col0 = n-(rig0-1)*dim+1;
					if (met=="100")
					{
						proxRig=rig0+cenR[i];proxCol=col0+cenC[i];
					}
					if (met=="cav")
					{
						proxRig=rig0+cavR[i];proxCol=col0+cavC[i];
					}
					if (proxRig>=1 && proxRig<=dim && proxCol>=1 && proxCol<=dim)
					{
						nProx=((proxRig-1)*dim)+proxCol-1;
						if (document.forms[0].elements[nProx].value==err || document.forms[0].elements[nProx].value==off)
						{
							nVicini++;
						}
					}
					if (nVicini>2)
						i=8;
				}
			}
			if      (nVicini==2 && n!=p) document.forms[0].elements[n].style.background="Orange";
			else if (nVicini==1 && n!=p) document.forms[0].elements[n].style.background="Red";
			else if (nVicini==0 && document.forms[0].elements[n].value==0 && n!=p) document.forms[0].elements[n].style.background="Blue";
			else document.forms[0].elements[n].style.background="White";
		}
		/*Assegna il numero alla Casella*/
		cont++;
		document.forms[0].elements[p].value=cont;
		document.forms[2].ult.value=p;
		document.forms[1].info.value='Numero di caselle: '+cont;
	}
	else
	{
		alert('Casella occupata!')
		valido=false;
	}
} else {
	alert('Mossa non valida!')
}

/*Verifica se il gioco e' finito e mostra le mosse valide*/
if (valido) {
	fine=true;
	for (n=0;n<8;n++) {
		if (met=="100") {
			proxRig=rig+cenR[n];
			proxCol=col+cenC[n];}
		if (met=="cav") {
			proxRig=rig+cavR[n];
			proxCol=col+cavC[n];}
		if (proxRig>=1 && proxRig<=dim && proxCol>=1 && proxCol<=dim) {
			prox=((proxRig-1)*dim)+proxCol-1;
			if (document.forms[0].elements[prox].value==err) {
				fine=false;
				document.forms[0].elements[prox].value=off}}
	}
	if (fine)
	{
		if (ult>0)
		{
			document.forms[2].ult.value=0;
			if (cont<100)
			{
				if(confirm('Hai perso. Hai riempito solo '+cont+' caselle e non hai pių mosse possibili. Vuoi riprovare?'))
					{window.location.href="http://www.aleph-zero.it/giochi/gioco_del_cento/cento.php"}
			}
			else if (confirm('Fine partita! Hai coperto '+cont+' caselle. Vuoi salvare la tua soluzione?'))
			{
				soluz='';
				for (var n=0; n<max; n++)
				{
					num=document.forms[0].elements[n].value;
					if (num==0) {num='__'}
					if (num.length==1) {num='0'+num}
					if (num.length==3) {num='00'}
					soluz = soluz+num;
				}
				window.open("http://www.aleph-zero.it/giochi/gioco_del_cento/salva.php?soluz="+soluz,"displayWindow","toolbar=no,scrollbars=yes,width=400");
			}
		}
	}
}

}

