var t, zeilen, zellen, zeile=0, zelle=0;
var hcolor = "#e1e1e1";

function huepf(e)
{
	if(!e)e=window.event;
	key=e.which?e.which:e.keyCode;
	if(key==37&&zelle>0)
	{
		//links
		z=t.rows[zeile];
		for(i=zelle-1;i>=0;i--)
		{
			c=z.cells[i];
			if(c.firstChild.className == "eingabe")
			{
				c.firstChild.select();
				zelle=i;
				break;
			}
		}
	}
	else if(key==39&&zelle<zellen)
	{
		//rechts
		z=t.rows[zeile];
		for(i=zelle+1;i<zellen;i++)
		{
			c=z.cells[i];
			if(c.firstChild.className == "eingabe")
			{
				c.firstChild.select();
				zelle=i;
				break;
			}
		}
	}
	else if(key==38&&zeile>0)
	{
		//oben
		for(i=zeile-1;i>=0;i--)
		{
			z=t.rows[i];
			c=z.cells[zelle];
			if(c.firstChild.className == "eingabe")
			{
				c.firstChild.select();
				zeile=i;
				break;
			}
		}
	}
	else if(key==40&&zeile<zeilen)
	{
		//alert("zeilen" + zeilen + " zeile" + zeile);
		//unten
		for(i=zeile+1;i<zeilen;i++)
		{
			z=t.rows[i];
			c=z.cells[zelle];
			if(c.firstChild.className == "eingabe")
			{
				c.firstChild.select();
				zeile=i;
				break;
			}
		}
	}
}
function init()
{
	if(document.getElementById('tabelle'))
	{
		t=document.getElementById('tabelle');
		zeilen=t.rows.length;
		zellen=t.rows[0].cells.length;
		document.onkeydown=huepf;
		
		var tempx, tempy = null;
		
		for(x=0;x<zeilen;x++)
		{
			tempx=t.rows[x];
			
			for(y=0;y<zellen;y++)
			{
				tempy=tempx.cells[y];
				
				if (tempy.className == "textr")
				{
					tempy.onclick = highlight;
				}
			}
		}
	}
}
function set(elem)
{
	elem.firstChild.select();
	zeile=elem.parentNode.sectionRowIndex;
	zelle=elem.cellIndex;
}
function solve()
{
	if(confirm("Wollen Sie das Rätsel wirklich lösen lassen?"))
	{
		for(var i=0; i<document.forms.schwedenform.elements.length; i++)
		{
			if(document.forms.schwedenform.elements[i].type == "text")
			{
				if(document.forms.schwedenform.elements[i].name.length == 1)
				{
					document.forms.schwedenform.elements[i].value = document.forms.schwedenform.elements[i].name;
				}
				else if(document.forms.schwedenform.elements[i].name.substr(0,7) == "loesung")
				{
					document.forms.schwedenform.elements[i].value = document.forms.schwedenform.elements[i].title;
				}
			}
		}
	}
}
function unsolve()
{
	if(confirm("Wollen Sie wirklich alle Eingabefelder im Rätsel löschen?"))
	{
		for(var i=0; i<document.forms.schwedenform.elements.length; i++)
		{
			if(document.forms.schwedenform.elements[i].type == "text")
				document.forms.schwedenform.elements[i].value = "";
		}
	}
}
function print_k(url_k)
{
	var printingHTML = '<html><head><title>Druckansicht<\/title>';
    printingHTML += '<link rel="stylesheet" type="text\/css" media="all" href="http://www.schwedenraetsel.net/styles.css" \/>';
    printingHTML += '<link rel="stylesheet" type="text\/css" media="all" href="http://www.schwedenraetsel.net/swek.css" \/>';
    printingHTML += '<\/head><body>';
    
  if(document.getElementById("tabelle"))
  {
    //var formcontainer = document.forms.schwedenform.cloneNode(true);
    var formcontainer = document.createElement("div");
    formcontainer.innerHTML = document.forms.schwedenform.innerHTML;
    formcontainer.getElementsByTagName('div')[0].innerHTML = "&copy; schwedenraetsel.net";
    var inputContainer = formcontainer.getElementsByTagName('div')[1];
    var lastC = inputContainer.lastChild;
    var i = 0;
    
    while ((lastC != null) && (i < 2))
    {
    	if(lastC.nodeType == 1)
    	{
		  	i++;
		  }
		  
		  var tempC = lastC.previousSibling;
		  inputContainer.removeChild(lastC);
		  lastC = tempC;
		}
		
    printingHTML += formcontainer.innerHTML;
    printingHTML += '<\/body><\/html>';
    var printingwindow = window.open("","printwp","toolbar,resizable,scrollbars,menubar");
    printingwindow.document.open();
    printingwindow.document.write(printingHTML);
    alert("Bitte stellen Sie in den Druckoptionen Hintergrund drucken (Farben und Bilder) ein, damit alle Grafiken mitgedruckt werden. Sie finden diese Option unter Seite einrichten in der Druckvorschau.");
		printingwindow.focus();
  }
  else
  {
  	alert("Die Druckansicht konnte leider nicht geöffnet werden.");
  }
}

function highlight_right(cellidx, rowidx)
{
	var temprow = t.rows[rowidx];
	
	for(var d=cellidx;d<zellen;d++)
	{
		var tempcell = temprow.cells[d];
		
		if(tempcell.className != "pfeil")
			return;
		
		tempcell.style.backgroundColor = hcolor;
		tempcell.firstChild.style.backgroundColor = hcolor;
	}
}

function highlight_down(cellidx, rowidx)
{
	for(var w=rowidx;w<zeilen;w++)
	{
		var tempcell = t.rows[w].cells[cellidx];
		
		if(tempcell.className != "pfeil")
			return;
		
		tempcell.style.backgroundColor = hcolor;
		tempcell.firstChild.style.backgroundColor = hcolor;
	}
}

function unhighlight()
{
	var tempx, tempy = null;
		
	for(x=0;x<zeilen;x++)
	{
		tempx=t.rows[x];
		
		for(y=0;y<zellen;y++)
		{
			tempy=tempx.cells[y];
			
			if(tempy.className == "pfeil")
			{
				tempy.style.backgroundColor = "#ffffff";
				tempy.firstChild.style.backgroundColor = "#ffffff";
			}
		}
	}
}

function highlight()
{
	var tempzeile=this.parentNode.sectionRowIndex;
	var tempzelle=this.cellIndex;
	var tempcell = null;
	unhighlight();
	
	if(tempzelle == 0)
	{
		//first column
		if(tempzeile > 0)
		{
			//oben
			tempcell = t.rows[tempzeile - 1].cells[tempzelle];
			
			if(tempcell.className == "pfeil" && tempcell.style.backgroundImage.indexOf("/p_ur.gif") > 0)
			{
				//oben rechts
				highlight_right(tempzelle, tempzeile - 1);
				return;
			}
		}
		
		if(tempzeile < zeilen - 1)
		{
			//unten
			tempcell = t.rows[tempzeile + 1].cells[tempzelle];
			
			if(tempcell.className == "pfeil" && tempcell.style.backgroundImage.indexOf("/p_or.gif") > 0)
			{
				//unten rechts
				highlight_right(tempzelle, tempzeile + 1);
				return;
			}
		}
		
		//rechts
		tempcell = t.rows[tempzeile].cells[tempzelle + 1];
		
		if(tempcell.className == "pfeil" && tempcell.style.backgroundImage.indexOf("/p_l.gif") > 0)
		{
			//rechts
			highlight_right(tempzelle + 1, tempzeile);
			return;
		}
	}
	
	if(tempzeile == 0)
	{
		//first row
		if(tempzelle > 0)
		{
			//links
			tempcell = t.rows[tempzeile].cells[tempzelle - 1];
			
			if(tempcell.className == "pfeil" && tempcell.style.backgroundImage.indexOf("/p_ru.gif") > 0)
			{
				//oben rechts
				highlight_down(tempzelle - 1, tempzeile);
				return;
			}
		}
		
		if(tempzelle < zellen - 1)
		{
			//rechts
			tempcell = t.rows[tempzeile].cells[tempzelle + 1];
			
			if(tempcell.className == "pfeil" && tempcell.style.backgroundImage.indexOf("/p_lu.gif") > 0)
			{
				//unten rechts
				highlight_down(tempzelle + 1, tempzeile);
				return;
			}
		}
		
		//unten
		tempcell = t.rows[tempzeile + 1].cells[tempzelle];
		
		if(tempcell.className == "pfeil" && tempcell.style.backgroundImage.indexOf("/p_o.gif") > 0)
		{
			//rechts
			highlight_down(tempzelle, tempzeile + 1);
			return;
		}
	}
	else
	{
		//rechts
		if(tempzelle < zellen - 1)
		{
			tempcell=t.rows[tempzeile].cells[tempzelle + 1];
			
			if(tempcell.style.backgroundImage.indexOf("/p_l.gif") > 0 || tempcell.style.backgroundImage.indexOf("/p_l_o.gif") > 0)
			{
				highlight_right(tempzelle + 1, tempzeile);
				return;
			}
		}
		
		if(tempzeile < zeilen - 1)
		{
			tempcell=t.rows[tempzeile + 1].cells[tempzelle];
			
			if(tempcell.style.backgroundImage.indexOf("/p_o.gif") > 0 || tempcell.style.backgroundImage.indexOf("/p_l_o.gif") > 0)
			{
				highlight_down(tempzelle, tempzeile + 1);
				return;
			}
		}
	}
}