var _sk;
var _isVisible;
var _rowCount=0;
var _coordinates;
var _nAiutiTotale=0;

function onLoad() {
}
 

function onKeyNumeric(e) {
	
	// Accetto solo numeri e backspace <-
	//alert(e.keyCode);
	if ( ((e.keyCode >= 48) && (e.keyCode <= 57)) || ((e.keyCode >= 96) && (e.keyCode <= 105)) || (e.keyCode == 8) ) {
		return true;
	} else {
		return false;
	}
}


function populate(){
	var msg="";
	for (r=0; r<_rowCount; r++)  {
		for (c=0; c<_rowCount; c++)  {
			var name=r+""+c+"";
			msg=msg+" "+name;
			document.getElementById(name).value=_sk[r][c];
		}
	}
}

function mix(source) {
	var ret = new Array();
	while (source[0]) {
		ret.push(
			source.splice(
				parseInt(Math.random()*source.length),1)[0]
			)
	}
	
	return ret;
}

function printVet(array){
	document.writeln("ARRAY SIZE: "+array.length+"<br><br>");
	for (r=0; r<array.length; r++)  {
		document.writeln(array[r]);
	}
}

/*
function testArray(){
	
	var a1=new Array(10);
	
	for (r=0; r<10; r++)  {
		a1[r]=r+1;
	}
	
	printVet(a1);
	var a2=mix(a1);
	alert("PPP "+a2.length);
	printVet(a2);
}
*/



function init(sudoku){
	splitSudoku=sudoku.split(";");
	_rowCount=splitSudoku.length;
	_sk=new Array(_rowCount);
	_isVisible=new Array(_rowCount);
	

	//POPOLA
	for (r=0; r<_rowCount; r++)  {
		_sk[r]=new Array(_rowCount);		
		_isVisible[r]=new Array(_rowCount);
		strRow=splitSudoku[r];
		for (c=0; c<_rowCount; c++)  {
			_sk[r][c]=strRow.charAt(c);
			_isVisible[r][c]=0;
		}
	}

	//INIT COORDINATE
	_coordinates=new Array(_rowCount*_rowCount);
	var n=0;
	for (r=0; r<_rowCount; r++)  {
		for (c=0; c<_rowCount; c++)  {
			_coordinates[n]=r+""+c;
			n++;
		}
	}
	
	_coordinates=mix(_coordinates);
	//printVet(_coordinates);
	return;
}

function scopriNumero(){
	for (n=0; n<(_rowCount*_rowCount); n++)  {
		id=_coordinates[n];
		//alert("id: "+id+" value:"+document.getElementById(id).value);
		if (document.getElementById(id).value=="") {
			//alert("ippo!");
			r=id.charAt(0);
			c=id.charAt(1);
			document.getElementById(id).value=_sk[r][c];
			document.getElementById(id).disabled=true;
			_nAiutiTotale++;
			//document.getElementById(id).style.backgroundColor="grey";
			//document.getElementById(id).style.color="red";

			return;
		}
	}
}


function showSolution(msgSbagliati,msgCorretti,msgVuoti){
	var msg="";
	var id="";
	var actualValue;
	var corretti=0;
	var sbagliati=0;
	var nulli=0;
	for (r=0; r<_rowCount; r++)  {
		for (c=0; c<_rowCount; c++)  {
			id=r+""+c+"";
			
			actualValue=document.getElementById(id).value;
			if (actualValue=="") {
				nulli++;
			} 
			if (actualValue!="" && actualValue!=_sk[r][c]){
				document.getElementById(id).style.backgroundColor="red";
				sbagliati++;
			}
			
			if (actualValue==_sk[r][c]){
				document.getElementById(id).style.backgroundColor="green";
				corretti++;
			}
			document.getElementById(id).value=_sk[r][c];
			
			
		}
	}
	corretti=corretti-_nAiutiTotale;
	msg=msgCorretti+": "+corretti+"\n"+msgSbagliati+": "+sbagliati+"\n"+msgVuoti+": "+nulli;

	alert(msg);
	
}


function scopriNumeri(intLevel){
	var nAiutiIniziale=0;
	switch(parseInt(intLevel)){
		case 1:
			nAiutiIniziale=35;
			break;
		case 2:
			nAiutiIniziale=33;
			break;
		case 3:
			nAiutiIniziale=31;
			break;
		case 4:
			nAiutiIniziale=29;
			break;
		case 5:
			nAiutiIniziale=27;
			break;
	}
	for (i=0; i<nAiutiIniziale; i++)  {
		scopriNumero();
	}
}

function getValueAt(row,column){
	return _sk[row][column];
}

function Msg(strMsg){
	alert(strMsg);
} 
