prefix='/6nimmt/img/'; 
ext='.gif';  
var req = false;
var bLastCard = false;
var bIsBusy = false;
var srcLastCardPlayed = 0;
var activeTimeout = 0;
var iLastCard = 0;

if(window.XMLHttpRequest)
{
	try
	{
		req = new XMLHttpRequest();
	} catch(e) { req = false; }
}
else if (window.ActiveXObject)
{
	try
	{
		req = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			req = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
			req = false;
		}
	}
	
}

var parseCommands;

function parsegame()
{
   if (req.readyState == 4)
   {
        if (req.status == 200)
		{
			document.getElementById("hand" + iLastCard).disabled = "disabled";
			document.getElementById("hand" + iLastCard).src = prefix + 0 + ext;
			if (activeTimeout != 0)
			{
				window.clearTimeout(activeTimeout);
				activeTimeout = 0;
			}
			parseCommands = req.responseText.split("\n");
			parseAction(0);
        } 
    }	
}


function parseAction(count)
{
	var zeile = parseCommands[count];
	var num = zeile.charAt(1);
	var wait = 0;
	
	switch(zeile.charAt(0))
	{
		case 'C':
			DisplayComment(num, zeile.slice(3));
		break;
		case 'D':
			SetDetailURL(zeile.slice(2));
		break;
		case 'H':
			DisplayCard(num, zeile.slice(3));
		break;
		case 'S':
			DisplayScore(num, zeile.slice(3));
		break;
		case 'R':
			DisplayDesk(zeile.slice(1,4), zeile.slice(5));
		break;
		case 'U':
			SetSubmitURL(zeile.slice(2));
		break;
		case 'M':
			Move(count, num, zeile.slice(3));
			wait = 1;
			break;
		case 'G':
			GetRow(count, zeile.slice(3), 6);
			wait = 1;
			break;
		case 'X':
			if (zeile.charAt(2) == '1')
			{
				bLastCard = true;
			}
			else
			{
				bLastCard = false;
			}
		break;
	}

	if (wait == 0)
	{
		count++;
		if (count < parseCommands.length)
			window.setTimeout("parseAction(" + count + ")", 5);
		else
			bIsBusy = false;
	}
}

// helper functions to get position
	function getLeft(l)
	{
	      if (l.offsetParent) return (l.offsetLeft + getLeft(l.offsetParent));
	      else return (l.offsetLeft);
	 return 0;
	}

	function getTop(l)
	{
	      if (l.offsetParent) return (l.offsetTop + getTop(l.offsetParent));
	      else return (l.offsetTop);
	  return 0;
	}

 var movingcard;
 
function Move(count, player, target)
{
	var source = document.images["horn" + player];
	var dest = document.images["desk" + target];
	
	var x1 = getLeft(source);
	var y1 = getTop(source);
	var x2 = getLeft(dest);
	var y2 = getTop(dest);

	movingcard = document.images["movingcard"];
	movingcard.style.position = "absolute";
	movingcard.style.top = y1 + "px";
	movingcard.style.left = x1 + "px";
	movingcard.style.display = "inline";
	
	movingcard.src = source.src;
	source.src = "http://www.onlinebrettspiele.de/6nimmt/img/0.gif";
	
	var x = x1; var y = y1;
	var dx=x2-x1; var dy=y2-y1;
	
	MoveCard(count, x1, y1, dx, dy, 0);
}

function MoveCard(count, x1, y1, dx, dy, t)
{
	var x = x1 + (t * dx / 50);
	var y = y1 + (t * dy / 50);
	movingcard.style.top = y + "px";
	movingcard.style.left = x + "px";
	
	if (t < 50)
	{
		t++;
		window.setTimeout("MoveCard(" + count + ", " + x1 + ", " + y1 + ", " + dx + ", " + dy + ", " + t + ")", 14);
	}
	else
	{	
		count++;
		if (count < parseCommands.length)
			window.setTimeout("parseAction(" + count + ")", 5);
		else
			bIsBusy = false;
	}
}

function GetRow(count, row, card)
{
	// alert("GetRow(" + count + ", " + row + ", " + card + ")");
	var source = document.images["desk" + row + "x" + card];
	card--;
	var dest = document.images["desk" + row + "x" + card];	
	
	var x1 = getLeft(source);
	var y1 = getTop(source);
	var x2 = getLeft(dest);
	var y2 = getTop(dest);

	movingcard = document.images["movingcard"];
	movingcard.style.position = "absolute";
	movingcard.style.top = y1 + "px";
	movingcard.style.left = x1 + "px";
	movingcard.style.display = "inline";
	movingcard.style.zIndex = "-1";
	
	movingcard.src = source.src;
	source.src = "http://www.onlinebrettspiele.de/6nimmt/img/0.gif";
	
	var x = x1; var y = y1;
	var dx=x2-x1; var dy=y2-y1;
	
	MoveRow(count, row, card, x1, y1, dx, dy, 0);
}

function MoveRow(count, row, card, x1, y1, dx, dy, t)
{
	var x = x1 + (t * dx / 12);
	var y = y1 + (t * dy / 12);
	movingcard.style.top = y + "px";
	movingcard.style.left = x + "px";
	
	if (t < 12)
	{
		t++;
		window.setTimeout("MoveRow(" + count + ", " + row + ", " + card + ", " + x1 + ", " + y1 + ", " + dx + ", " + dy + ", " + t + ")", 12);
	}
	else
	{	
		if (card > 1)
		{
			GetRow(count, row, card);
		}
		else
		{
			document.images["desk" + row + "x1"].src =  "http://www.onlinebrettspiele.de/6nimmt/img/0.gif";
			movingcard.style.zIndex = "10";
			count++;
			if (count < parseCommands.length)
				window.setTimeout("parseAction(" + count + ")", 5);
			else
				bIsBusy = false;
		}
	}

}

function DisplayCard(player, card)
{
	try
	{
		var eleScore = "horn" + player;
		document.images[eleScore].src = prefix + card + ext;
		document.getElementById(eleScore).alt = "" + card + "";
		document.getElementById(eleScore).title = "" + card + "";
	}
	catch(e){}
}

function DisplayDesk(row, card)
{
	try
	{
		var ele = "desk" + row;
		document.images[ele].src = prefix + card + ext;
		if (card == 0)
			card = "";
		document.getElementById(ele).alt = "" + card + "";
		document.getElementById(ele).title = "" + card + "";
	}
	catch(e){}

}

function DisplayComment(num, comment)
{
	if (num == 1)
		document.getElementById("c1").firstChild.nodeValue  = comment;
	else if (num == 2)
		document.getElementById("c2").firstChild.nodeValue = comment;
	else if (num == 3)
		document.getElementById("c3").firstChild.nodeValue  = comment;
	else if (num == 4)
		document.getElementById("c4").firstChild.nodeValue  = comment;
}

function play(card)
{
	if (bIsBusy)
		return false;
		
	iLastCard = card;
		
	var currentsubmiturl = document.getElementById("currentsubmiturl").value + "&w=" + card;
	
	if (bLastCard == true)
	{
		location.href = currentsubmiturl;
		return false;
	}

	if (req)
	{
	
		currentsubmiturl =  "play.asp" + currentsubmiturl;
		req.open("GET", currentsubmiturl, true);
		req.onreadystatechange = parsegame;
		req.send("");
		bIsBusy = true;
		srcLastCardPlayed = document.getElementById("hand" + card).src;
		activeTimeout = window.setTimeout("networktimeout()", 5000);
		return false;
		
	}
	
	return true;
}

function networktimeout()
{	
	if (bIsBusy)
	{
		req.abort();
		bIsBusy = false;
		window.alert("Der Server antwortet nicht. Bitte stellen Sie sicher, dass Ihr Computer mit dem Internet verbunden ist und wiederholen Sie dann Ihren Spielzug.");
	}
	else
	{
		srcLastCardPlayed = "";
	}

}

function SetSubmitURL(submiturl)
{
	document.getElementById("currentsubmiturl").value = submiturl;
}

function SetDetailURL(detailurl)
{
	document.getElementById("details").href = detailurl;
	document.getElementById("details").firstChild.nodeValue = "[ausführlich]";
}

function DisplayScore(player, score)
{
	try
	{
		var eleScore = "score" + player;
		var eleFont = "font" + player;
		var text = score + ' Hornochse';
		if (score != 1)
			text += 'n';
		document.getElementById(eleScore).firstChild.nodeValue = text;
		if (score > 0)
			document.getElementById(eleFont).color = "red";
		else
			document.getElementById(eleFont).color = "black";
	}
	catch(e){}
}
