var miss_list = new Array();


function check_place ( place ) {

	var t_cell = "b" + (place + 1); //a_map [place]
	var t_v = document.sform[t_cell].value;


	var vc = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

	for (var i = 0; i < check_arr[place].length; i++) {
		var v = document.sform[ check_arr[place][i] ].value;
		
		//alert (check_arr[place][i] + " - " + v);
		
		vc[v] = vc[v] + 1;
	}
	
	if ( t_v ) {
		// place has calue check if it ok
		if ( vc[t_v] > 1 ) {
			return  "bad";
		} else {
			return "";
		}
		
	} else {
		
		var zc = 0;
		var to_ret = "";
		for (var i = 1; i < 10; i++) {
			if ( vc[i] == 0 ) {
			  if ( zc ) {
				to_ret = to_ret + ", ";
			  }
			  to_ret = to_ret + "" + i;
			  zc++;
			}
		}
		if ( ! zc ) {
		  to_ret = "none";
		}
	}
	//alert (vc);
	
	return to_ret;
}

function check_grid () {

	for (var i = 0; i < check_arr.length; i++) {
		var out_name = "rr" + (i + 1);
		var out = document.getElementById (out_name);
		
		out.innerHTML = "";
		
		if ( miss_list[i] ) {
			continue;
		}
		
		var fname = "b" + (i + 1);
		
		var v = document.sform[ fname ].value;
	
		if ( v ) {
			// check value...
			//continue;
		}
	
		var r = check_place ( i );
		out.innerHTML = r;
	}
}

function init_grid () {
	var ds = problems.length / 2;
	document.sform.prob.length = ds;
	var p = 0;
	for (var i = 0; i < problems.length; i += 2) {
    	document.sform.prob.options[p].text = problems[i];
		document.sform.prob.options[p].value = i+1;
		p++;
	}
	
	set_grid (1);
}
	
function set_grid (p) {
	miss_list = new Array();
	
	p = p++;
	
	for (var i = 0; i < problems[p].length; i++) {
		var fname = "b" + (i + 1);
		
		var v = document.sform[ fname ];
		
		if ( problems[p][i] ) {
			v.value = problems[p][i];
			v.readOnly = true;
			v.className = "preset";
		} else {
			v.value = "";
			v.classNam = "userset";
			v.readOnly = false;
		}
		
		miss_list[i] = problems[p][i];
	}
}

function cell_onChange (cell) {

   if ( ! cell.value.match(/^[1-9]$/) ) {
      cell.value = "";
   }


}