function gioco(p) {
off='__';
err=' ';
dim=document.form1.dim.value;
max=document.form1.max.value;
met=document.form1.met.value;
// 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.form1.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.form0[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.form0[n].value==off) {
				document.form0[n].value=err;}
			nVicini=0;
			if (document.form0[n].value!=off && document.form0[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.form0[nProx].value==err || document.form0[nProx].value==off) {
							nVicini++;}}}
			}
			if      (nVicini==2 && n!=p) document.form0[n].style.background="Orange";
			else if (nVicini==1 && n!=p) document.form0[n].style.background="Red";
			else if (nVicini==0 && document.form0[n].value==0) document.form0[n].style.background="Blue";
			else document.form0[n].style.background="Black";
		}
		/*Assegna il numero alla Cella*/
		cont++;
		document.form0[p].value=cont;
		document.form1.ult.value=p;
		document.form1.info.value='Celle '+cont;
	} else {
		alert('Cella 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.form0[prox].value==err) {
				fine=false;
				document.form0[prox].value=off}}
	}
	if (fine) {if (ult>0) {
		document.form1.ult.value=0;
		nome=prompt('Fine partita! Hai coperto '+cont+' caselle. Inserisci il tuo nome da mettere nei Record:','');
		if (nome!=null) {
			soluz='';
			for (var n=0; n<max; n++) {
				num=document.form0[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://giro.altervista.org/game/record.php?game="+met+"&dim="+dim+"&nome="+nome+"&punti="+cont+"&soluz="+soluz,"displayWindow","toolbar=no,scrollbars=yes,width=400");
		}
	}}
}

}
