function checkPuzzle(){
	var answer="";
	for(i=0;i<81;i++){
		r=getValue('c'+i);
		if(r!=""){ answer += r+",";
		}else{ answer += "0,"; }
	}
	dialog('checkpuzzle',answer);
}
function getValue(id){
	return document.getElementById(id).value;
}
function solvePuzzle(){
	var solution=xmlHTTPRequest(loc+"lib/dialogs/sudoku.php?action=solve", "GET", null);
	array=solution.split(",");
	for(i=0;i<81;i++){
		document.getElementById("c"+i).value=array[i];
	}
}
function resetPuzzle(id){
	var puzzle=xmlHTTPRequest(loc+"lib/dialogs/sudoku.php?action=reset&id="+id, "GET", null);
	array=puzzle.split(",");
	for(i=0;i<81;i++){
		document.getElementById("c"+i).value="";
		if(array[i] != "0") document.getElementById("c"+i).value=array[i];
	}
}
function newPuzzle(level){
	var puzzle=xmlHTTPRequest(loc+"lib/dialogs/sudoku.php?action=new&level="+level, "GET", null);
	array=puzzle.split(",");
	for(i=0;i<81;i++){
		if(array[i] != "0"){
			document.getElementById("c"+i).disabled=true;
			document.getElementById("c"+i).value=array[i];
		}else{
			document.getElementById("c"+i).disabled=false;
			document.getElementById("c"+i).value="";
		}
	}
}
function startTimer(){
	setTimeout("addTimer()",1000);
}
function addTimer(){
	var cvalue=parseInt(document.getElementById("clock").value)+1;
	document.getElementById("clock").value=cvalue;
	startTimer();
}
function sudokokey(e,obj) {
  var keyCode = 0;
  if(e.which){
	keyWhich = parseInt(e.which);
	switch(keyWhich){ case 8:case 46:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:break;default:setTimeout("document.getElementById('"+obj+"').value='';",1); }
  }
  if(e.keyCode){
	keyCode = parseInt(e.keyCode);
  	switch(keyCode){ case 8:case 46:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:break;default:return false; }
  }
}
function hoverinput(obj){
  var s = new String(obj.className);
  s = s.replace(/_focus/gi, "");
  if (!obj.iserror){
    if ((obj.hasmouseover) || (obj.hasfocus)){
      s = s + '_focus';
	}
  }
  obj.className = s;
}
function mouseover_input(obj){
  nr=parseInt(obj.id.replace("c",""));
  id=nr;
  for(i=0;i<9;i++){ // horizontal
	if(cell=document.getElementById("c"+id)){
		cell.hasmouseover = true;
		hoverinput(cell);
		if(i==0)cell.select();
	}
	switch(id){ case 8:case 17:case 26:case 35:case 44:case 53:case 62:case 71:case 80:id-=9;break; }
	id++;
  }
  id=nr+9;
  for(i=0;i<9;i++){ // vertical
	if(cell=document.getElementById("c"+id)){
		cell.hasmouseover = true;
		hoverinput(cell);
	}
	if(id>=81)id-=90;
	id=id+9;
  }
}
function mouseout_input(obj){
  nr=parseInt(obj.id.replace("c",""));
  id=nr;
  for(i=0;i<9;i++){ // horizontal
	if(cell=document.getElementById("c"+id)){
		cell.hasmouseover = false;
		hoverinput(cell);
	}
	switch(id){ case 8:case 17:case 26:case 35:case 44:case 53:case 62:case 71:case 80:id-=9;break; }
	id++;
  }
  id=nr+9;
  for(i=0;i<9;i++){ // vertical
	if(cell=document.getElementById("c"+id)){
		cell.hasmouseover = false;
		hoverinput(cell);
	}
	if(id>=81)id-=90;
	id=id+9;
  }
}
function focus_input(obj){
  obj.hasfocus=true;
  hoverinput(obj);
}
function blur_input(obj){
  obj.hasfocus=false;
  hoverinput(obj);
}