var livecheck=false;
var hints=false;

function setHintText(text)
{
	if (window.document.all && window.document.all["notused"])
	{
		window.document.all["notused"].innerHTML=text;
	}
	else
	{
		window.document.getElementById("notused").innerHTML=text;
	}
}

function setHintDisplay(display)
{
	if (window.document.all && window.document.all["notused"])
	{
		window.document.all["notused"].style.display=display;
	}
	else
	{
		window.document.getElementById("notused").style.display=display;
	}	
}

function sethints(val)
{
	hints=val;
	if (!val)
	{
		setHintText("&nbsp;");
		setHintDisplay('none');
	}
	else
		setHintDisplay('block');
}

function setlivecheck(val)
{
	livecheck=val;
	if (!val)
	{
		resetClasses();
	}
}

function resetForm()
{
	resetClasses();
}

function resetClasses()
{
	for (i=0;i<9;i++)
	{
		for (j=0;j<9;j++)
		{
			field=document.getElementById("field"+j+i);
		    if (field.className!="predef")
			    field.className="richtig";
		}
	}	
}

function changed(field,j,i)
{
   if (livecheck)
   {
	   if (solution[i][j]==field.value)
	   {
	   		field.className="richtig";
	   }
	   else
	   {
	   		field.className="falsch";
	   }
   }
}

var used = new Array(10);

function focused(field,x,y)
{
    if (hints)
    {
		used[1]=false;
		used[2]=false;
		used[3]=false;
		used[4]=false;
		used[5]=false;
		used[6]=false;
		used[7]=false;
		used[8]=false;
		used[9]=false;
		
		// Horizontal
		for (i=0;i<9;i++)
		{
			if (i!=x)
			{
				field=document.getElementById("field"+i+y);
				if (field.value>0 && field.value<10)
					used[field.value]=true;
			}
		}
		// Vertikal
		for (i=0;i<9;i++)
		{
			if (i!=y)
			{
				field=document.getElementById("field"+x+i);
				if (field.value>0 && field.value<10)
					used[field.value]=true;
			}
		}
		
		// Block
		var minx=Math.floor(x/3)*3;
		var miny=Math.floor(y/3)*3;
		for (i=minx;i<(minx+3);i++)
		{
			for (j=miny;j<(miny+3);j++)
			{
				if (i!=x || j!=y)
				{
					field=document.getElementById("field"+i+j);
					if (field.value>0 && field.value<10)
						used[field.value]=true;
				}
			}
		}
		
		var str_notused="";
		for (i=1;i<10;i++)
		{
			if (used[i]==false)
			{
				if (str_notused!="")
					str_notused+=",";
				str_notused+=i;
			}
		}
		//str_notused="Mögliche Zahlen: "+str_notused;
		setHintText(str_notused);
	}
}

function istFertig()
{
	if (doCheck(false))
		alert("Herzlichen Glückwunsch, Sie haben das Rätsel erfolgreich gelöst");
	else
		alert("Es sind noch nicht alle Felder korrekt ausgefüllt");
}

function doCheck(color)
{
	var correct=true;
	for (i=0;i<9;i++)
	{
		for (j=0;j<9;j++)
		{
			field=document.getElementById("field"+j+i);
		    if (field.className!="predef")
			    if (solution[i][j]!=field.value)
			    {
			    	correct=false;
			   		if (field.value!="")
			    	{
			   			if (color)
			   				field.className="falsch";
			    	}
			    }
			    else
			    {
			   		field.className="richtig";
			   		//field.value=solution[i][j];
			    }
		}
	}
	return correct;
}

function aufloesen()
{
	for (i=0;i<9;i++)
	{
		for (j=0;j<9;j++)
		{
			field=document.getElementById("field"+j+i);
		    if (field.className!="predef")
			    if (solution[i][j]==field.value)
			    {
			   		field.className="richtig";
			    }
			    else
			    {
			   		field.className="falsch";
			   		field.value=solution[i][j];
			    }
		}
	}
}
