var game;
var AJAX_HANDLER = "/corePoker/actioners/saveHandler.php"

function loadGame( fileName )
{
	game = new PokerGame();
	var dom = newXMLDocument( "request", "" );
	dom.documentElement.setAttribute( "action", "load" );
	dom.documentElement.setAttribute( "filename", fileName );
	var client = getXMLHTTPObject();
	function handler() 
	{
		if( client == null || client.readyState == null || client.readyState == 1 )
		{
			return;
		}
		if( client.readyState == 4 && client.status == 200 ) 
		{
			if( client.responseXML != null )
			{
				//alert( "loadGame() ResponseText: " + client.responseText );
				var responseXml = client.responseXML;
				var errorXmlElements = responseXml.getElementsByTagName( 'error' );
				if ( errorXmlElements.length > 0 )
				{
					alert ( errorXmlElements[0].childNodes[0].nodeValue );
					history.go(-1);
				}
				else
				{
					game.initFromXml( client.responseXML );
					document.getElementById( "newPlayerName" ).focus();
					document.getElementById( 'loading' ).style.display = 'none';
					document.getElementById( 'gameContainer' ).style.display = 'block';
				}
			}
			else
			{
				alert( "Got responseText: " + client.responseText ); 
			}
		}
		else if ( client.readyState == 4 && client.status != 200 )
		{
			alert( "Failed to load. HTTP Status: " + client.status + ". Please retry" );
		}
	}
	client.onreadystatechange = handler;
	client.open( "POST", AJAX_HANDLER, true );
	client.send( dom );
}

function initialiseGame( blindMins, rebuyMins, buyIn, currency, startingStack )
{
	game = new PokerGame();
	game.initWithValues( blindMins, rebuyMins, buyIn, currency, startingStack );
	document.getElementById( "newPlayerName" ).focus();
}

var onGameSaved = function( isSaved, message )
{
	document.getElementById( "saveSpinner" ).style.display = "none";
	if ( !isSaved ) 
	{
		document.getElementById( "saveFailureGraphic" ).style.display = "block";
		alert(message);
	}
	else
	{
		document.getElementById( "saveCompleteGraphic" ).style.display = "block";
	}
	document.getElementById( "saveGameButton" ).style.display = "inline";
}

function saveGame()
{
	document.getElementById( "saveSpinner" ).style.display = "block";
	document.getElementById( "saveFailureGraphic" ).style.display = "none";
	document.getElementById( "saveCompleteGraphic" ).style.display = "none";
	document.getElementById( "saveGameButton" ).style.display = "none";
	game.save( onGameSaved );
}

function addPlayer()
{
	var playerName = document.getElementById( "newPlayerName" ).value;
	if ( playerName == null || playerName == '' )
	{
		return false;
	}
	var player = new PokerPlayer( game );
	player.initWithValues( playerName );
	game.addPlayer( player, true );
	document.getElementById( "newPlayerName" ).value = '';
	document.getElementById( "newPlayerName" ).focus();
	return false;
}

function toggleSettings( sender )
{
	var objSettings = document.getElementById( 'settings' );
	if ( objSettings.style.display == 'none' )
	{
		objSettings.style.display = 'block';
		sender.value = 'Hide Settings';
	}
	else
	{
		objSettings.style.display = 'none';
		sender.value = 'Settings';
	}
}