// Call the challenge server and list the challenges

/*

	Read recent users
	
	This thing expects 2 DIV's to set in the page which it reads with ID:
	
	RecentUsers_MaxUsers
	RecentUsers_GameTypeID
	
*/

$(document).ready(function(){
	var	no_mini_tournament_autoload		=	$('#no_mini_tournament_autoload').text();						   
	var	DoneRead	=	0;
	
	var	GamePlayURI	=	GetURLParameter("GamePlayURI");
	/*
	if (GamePlayURI.length > 0) {
		if (GamePlayURI.indexOf("PlayChallenge") >= 0) {
			ChallengeGameID	=	GetURLParameter("ChallengeGameID");
			if (ChallengeGameID.length > 0) {
				   $('.gs_mini_play_again').attr("onclick", "PlayChallenge(" + ChallengeGameID + ",1)");
				// $('.gs_playagain').attr("onclick", "DoSomething()");
				// $('.gs_mini_play_again').hide();
				ReadChallenges(ChallengeGameID);
				DoneRead					=	1;
				Challenge_Global_ListSize	=	1;

				//	We need to hide the play again button until we actually know what to do with it
			}
		}
	}
	*/
	if (DoneRead == 0) {
		if (no_mini_tournament_autoload != 1) {
			ReadChallenges();
		}
	}
	
});

var	Challenge_Global_ListSize	=	10;
var Challenge_Global_FieldID	=	"ChallengeEntry_";
var	challenge_user_sessionID	=	"";
var	Challenge_GameTypeID		=	0;
var GamePlayJavascript			=	"";		// This is the javascript used to play this game. We need it for the PlayAgain Button
var	HaveReadChallenges			=	0;
var	GlobalChallengeXML			=	"";

/*
function ShowHidePrizeMoney(DivID,Hide)
{
	if (Hide == 1) {
		// $('#' + DivID).hide();
	}
	else {
		$('#' + DivID).show();
	}
}
*/
function ReadChallenges(ChallengeGameID)
{

	if (HaveReadChallenges == 1) {
		return;
	}
	HaveReadChallenges		=	1;
	
	var	WebServiceURL	= "/API/server/challenge/ChallengeServer.php";
	var RPCName			= "challenge.list_challenges";		
	var	Parameters		= new Object;
	
	Challenge_GameTypeID		=	$('#playcash_game_type_id').text();

	Parameters.ListSize			= 	Challenge_Global_ListSize;
	Parameters.LobbyGame		=	1;
	Parameters.AffiliateID		=	readCookie("AffiliateID");
	
	if (Challenge_GameTypeID > 0) {
		Parameters.GameTypeID		=	Challenge_GameTypeID;	
	}
	
	if ((ChallengeGameID != undefined) && (ChallengeGameID > 0)) {
		Parameters.ChallengeGameID		=	ChallengeGameID;			
	}

	GetSimpleRPCData(ShowChallenges,WebServiceURL,RPCName,Parameters);

}

/*

The ShowUserData routine is called when we receive the PublicUserInfo 
call back. It is used to update every "changable" field in on the site
When you have finished processing it, the "setTimeout" forks of another 
request in 30 seconds

*/

function ShowChallenges(xml,result)
{
	$('#challenge_loading').hide();
	$('#mini_tournament_loading').hide();
	
	var Status		=	$("scalar[id='Status']",xml).text();
	if (Status != "OK") {
		var	ErrorCount		=	$("scalar[id='ErrorCount']",xml).text();
		var	ErrorMessage	=	"";
		
		for (ThisError=1;ThisError<=ErrorCount;ThisError++) {
			ThisError		=	$("vector[id='Error_" + ThisError + "']",xml);
			ErrorMessage	=	ErrorMessage + "<br>" + $("scalar[id='ErrorMessage']",ThisError).text();	
		}
		DisplayCashPlayError(ErrorMessage);
		return;
	}

	challenge_user_sessionID	=	PHP_UserSessionID;

	var	Challenges			=	$("scalar[id='Challenges']",xml).text();
	GlobalChallengeXML		=	xml;
	
	if (Challenges > 0) {
		$('.gs_mini_play_again').show();
	}
	
	for (var i=1;i<Challenge_Global_ListSize;i++) {
		
		if (i<=Challenges) {
			
			ThisChallenge			=	$("vector[id='Challenge_" + i + "']",xml);
			try {
				var	ChallengeGameID		=	$("scalar[id='ChallengeGameID']",ThisChallenge).text();
				
				// var	Description		=	$("scalar[id='Description']",ThisChallenge).text();
				var	GameTypeName		=	$("scalar[id='GameTypeName']",ThisChallenge).text();
				var	PlayerCount			=	$("scalar[id='PlayerCount']",ThisChallenge).text();
				var	MaxPlayers			=	parseInt($("scalar[id='MaxPlayers']",ThisChallenge).text());
				var	EndDateTime			=	$("scalar[id='EndDateTime']",ThisChallenge).text();
				var	DisplayStake		=	$("scalar[id='DisplayStake']",ThisChallenge).text();
				var	DisplayPrizeMoney	=	$("scalar[id='TotalDisplayPrizeMoney']",ThisChallenge).text();
				var CreateUserName		=	$("scalar[id='CreateUserName']",ThisChallenge).text();
				var Leader_Score		=	$("scalar[id='Display_Leader_Score']",ThisChallenge).text();
				var Leader_Name			=	$("scalar[id='Leader_Name']",ThisChallenge).text();
				var WillRollOver		=	parseInt($("scalar[id='WillRollOver']",ThisChallenge).text());
				
				var	GameImageArray		=	$("vector[id='GameImageArray']",ThisChallenge);
				var	GameImage			=	$("scalar[id='GameImageURL_300x225']",GameImageArray).text();
				
				if (MaxPlayers == 0) {
					MaxPlayers = "999";
				}

				var	MaxLength	=	15;
				
				if (Leader_Name.length>MaxLength) {
					Leader_Name	=	Leader_Name.substring(0,(MaxLength-3)).trim() + "...";
				}
				
				var	LeaderString		=	Leader_Name + " (" + Leader_Score + ")";
			
				var DisplayUser			=	CreateUserName;
				if (Leader_Name.length > 0) {
					DisplayUser			=	LeaderString;
				}
			
				if (DisplayUser.length > 0) {
					if (PlayerCount == 0) {
						PlayerCount 	= 1;
					}
				}

				var	PlayerString;
				if (MaxPlayers==999) {
					PlayerString		=	PlayerCount + "/Unlimited";
				} else {
					PlayerString		=	PlayerCount + "/" + MaxPlayers;
				}
				var	CurrencySymbol		=	"";
				var href				=	"javascript:PlayChallenge(" + ChallengeGameID + "," + i + ")";	
				// href='DoSomething()';
				
				$('#' + Challenge_Global_FieldID + i + '_href').attr("href", href);

				
				$('#' + Challenge_Global_FieldID + i + '_PlayerString').html(PlayerString);
				$('#' + Challenge_Global_FieldID + i + '_EndDateTime').html(EndDateTime);
				$('#' + Challenge_Global_FieldID + i + '_CreateUserName').html(DisplayUser);
				$('#' + Challenge_Global_FieldID + i + '_DisplayStake').html(CurrencySymbol + DisplayStake);
				var	DisplayPrizeMoney				=	CurrencySymbol + DisplayPrizeMoney;
				$('#' + Challenge_Global_FieldID + i + '_DisplayPrizeMoney').html(DisplayPrizeMoney);

				//	Optional Fields....
				
				$('#' + Challenge_Global_FieldID + i + '_ChallengeGameName').html(GameTypeName);
				$('#' + Challenge_Global_FieldID + i + '_Leader_Name').html(Leader_Name);
				$('#' + Challenge_Global_FieldID + i + '_Leader_Score').html(Leader_Score);
				
				$('#' + Challenge_Global_FieldID + i + '_image_name').text(GameImage);
				$('#' + Challenge_Global_FieldID + i + '_GameTypeName').text(GameTypeName);
				// var GameName	=	$('#' + Challenge_Global_FieldID + i + '_GameTypeName').text();

				if (WillRollOver == 1) {
					$('#' + Challenge_Global_FieldID + i + '_will_roll_over').show();
				}
				else {
					$('#' + Challenge_Global_FieldID + i + '_will_roll_over').hide();
				}

				//	Now we are going to fill the prize money popup
				
				try {
					var PrizeMoneyArray	=	$("vector[id='PrizeMoneyArray']",ThisChallenge);
					var	Prizes			=	$("vector[id='Prizes']",PrizeMoneyArray);
					$('.' + Challenge_Global_FieldID + i + '_TotalPrize').html(DisplayPrizeMoney);
					var	PrizePositions	=	parseInt($("scalar[id='PrizePositions']",PrizeMoneyArray).text());
					var	WinBrainCells	=	parseInt($("scalar[id='WinBrainCells']",PrizeMoneyArray).text());
					if (parseInt(WinBrainCells) == 0) {
						WinBrainCells	=	10;
					}
					$('#' + Challenge_Global_FieldID + i + '_WinBrainCells').html(WinBrainCells);
					for (var PMR=1;PMR<=11;PMR++) {						
						var	UsePosition	=	PMR;
						// 	Number 11 is special... It's the last one in the list
						if (PMR == 11) {
							UsePosition = PrizePositions;
						}
						
						var	RowClassName		=	Challenge_Global_FieldID + i + '_row_' + UsePosition;
						if (UsePosition <= 	PrizePositions) 
						{
							var	ThisPrize			=	$("vector[id='Position_" + UsePosition + "']",Prizes);
							var	DisplayPrize		=	$("scalar[id='DisplayPrizeMoney']",ThisPrize).text();
							var	PositionClassName	=	Challenge_Global_FieldID + i + '_position_class_' + UsePosition;
							var	PrizeClassName		=	Challenge_Global_FieldID + i + '_prize_class_' + UsePosition;
	
							$('.' + PositionClassName).html(UsePosition);
							$('.' + PrizeClassName).html(DisplayPrize);
							$('.' + RowClassName).show();
						}
						else {
							$('.' + RowClassName).hide();
						}
					}
				}
				catch (Exception) {}
				
				$('#' + Challenge_Global_FieldID + i).show();
			}
			catch (Exception) {}
		}
		else {
			$('#ChallengeEntry_' + i).hide();
		}
	}
		
	$('#challenge_create_challenge').show();
	if (Challenges > 0) {
		$('#no_challenges').hide();
		$('#no_mini_tournaments').hide();
	}
	else {
		$('#no_challenges').show();
		$('#no_mini_tournaments').show();
	}
	setTimeout("ReadChallenges()", 600000);
}

function CreateChallenge(GameTypeID,
						 Description) 
{

	var	WebServiceURL					= 	"/API/server/challenge/ChallengeServer.php";
	var RPCName							= 	"challenge.add_challenge";		
	var	Parameters						= 	new Object;
	
	var	ChallengeCategoryID				=	1;
	try {
		ChallengeCategoryID				=	parseInt($('#input_challenge_category').val());
	} 
	catch (Exception) {}
	
	var	ChallengeLevelID				=	1;
	try {
		ChallengeLevelID				=	parseInt($('#input_challenge_level').val());
	} 
	catch (Exception) {}
	
	var	ChallengeEmails					=	"";
	try {
		ChallengeEmails					=	$('#input_challenge_emails').val();
	} 
	catch (Exception) {}
	
	var	ChallengeMinutes				=	1;
	try {
		//ChallengeMinutes				=	parseInt($('#facebox #input_challenge_minutes').val());
		ChallengeMinutes 				= parseInt(GetFaceBoxFieldByID("input_challenge_minutes"));
	} 
	catch (Exception) {}
	
	var	ChallengePlayers				=	1;
	try {
		//ChallengePlayers				=	parseInt($('#facebox #input_challenge_players').val());
		ChallengePlayers 				= parseInt(GetFaceBoxFieldByID("input_challenge_players"));
	} 
	catch (Exception) {}
	
	var	Stake							=	0;	
	try {
		Stake							=	parseInt($('#fb_create_public_challenge_stake_hidden').text());
	} 
	catch (Exception) {}

	
	challenge_user_sessionID			=	PHP_UserSessionID;
	
	Parameters.UserSessionID			=	challenge_user_sessionID;
	Parameters.GameTypeID				=	GameTypeID;
	Parameters.AnyoneCanJoin			=	1;
	Parameters.ChallengeCategoryID		=	ChallengeCategoryID;
	Parameters.ChallengeLevelID			=	ChallengeLevelID;
	Parameters.Description				=	Description;
	Parameters.Stake					=	Stake;
	Parameters.LobbyGame				=	1;
	Parameters.MaxPlayers				=	ChallengePlayers;
	Parameters.ChallengeOpenMinutes		=	ChallengeMinutes;
		
	GetSimpleRPCData(DoneCreateChallenge,WebServiceURL,RPCName,Parameters);
	
}

function DoneCreateChallenge(xml,result)
{

	var Status		=	$("scalar[id='Status']",xml).text();
	if (Status != "OK") {
		var	ErrorCount		=	$("scalar[id='ErrorCount']",xml).text();
		var	ErrorMessage	=	"";
		
		for (ThisError=1;ThisError<=ErrorCount;ThisError++) {
			ThisError		=	$("vector[id='Error_" + ThisError + "']",xml);
			ErrorMessage	=	ErrorMessage + "<br>" + $("scalar[id='ErrorMessage']",ThisError).text();	
		}
		DisplayCashPlayError(ErrorMessage);
		return;
	}
	
	var	ChallengeGameID		=	$("scalar[id='ChallengeID']",xml).text();
	GamePlayJavascript		=	"javascript:PlayChallenge(" + ChallengeGameID + ",1)";	

	JoinChallenge(ChallengeGameID);
	
	return;
}
function DoSomething()
{
	alert("here");
}
function PlayChallenge(ChallengeGameID,Sequence) 
{	
	
	// alert("here");
	// $("#frame_loading").show();
	
	var	WebServiceURL	= "/API/server/challenge/ChallengeServer.php";
	var RPCName			= "challenge.challange_status";		
	var	Parameters		= new Object;
	
	Parameters.ChallengeGameID			= 	ChallengeGameID;
	Parameters.UserUniqueID				=	PHP_ClientUniqueID;
	
	//	We store the actual Javascript function which was used to select this game
	/*
	ThisChallenge			=	$("vector[id='Challenge_" + Sequence + "']",GlobalChallengeXML);
	try {
		var	GameTypeName		=	$("scalar[id='GameTypeName']",ThisChallenge).text();
		var	GameImageArray		=	$("vector[id='GameImageArray']",ThisChallenge);
		var	GameImage			=	$("scalar[id='GameImageURL_300x225']",GameImageArray).text();
	}
	catch (Exception) {}
	*/
	// GamePlayJavascript		=	$('#' + Challenge_Global_FieldID + Sequence + '_href').attr("href");
	GamePlayJavascript		=	"javascript:PlayChallenge(" + ChallengeGameID + "," + Sequence + ")";	
	
	// var	GameImage			=	$('#' + Challenge_Global_FieldID + Sequence + '_image_name').text();
	// var GameName			=	$('#' + Challenge_Global_FieldID + Sequence + '_GameTypeName').text();
	
	// $('.challenge_game_image').attr("src", GameImage);
	// $('.facebox_game_type_name').text(GameTypeName);
	
	GetSimpleRPCData(FillChallengeFaceBox,WebServiceURL,RPCName,Parameters);
	
}

function FillChallengeFaceBox(xml,result)
{

	var Status		=	$("scalar[id='Status']",xml).text();
	if (Status != "OK") {
		var	ErrorCount		=	$("scalar[id='ErrorCount']",xml).text();
		var	ErrorMessage	=	"";
		
		for (ThisError=1;ThisError<=ErrorCount;ThisError++) {
			ThisError		=	$("vector[id='Error_" + ThisError + "']",xml);
			ErrorMessage	=	ErrorMessage + "<br>" + $("scalar[id='ErrorMessage']",ThisError).text();	
		}
		DisplayCashPlayError(ErrorMessage);
		return;
	}
	
	try {
		// alert(xml);
		var	ChallengeGameID		=	$("scalar[id='ChallengeGameID']",xml).text();
		var	EndDateTime			=	$("scalar[id='EndDateTime']",xml).text();
		var	Players				=	parseInt($("scalar[id='Players']",xml).text());
		var	DisplayPrizeMoney	=	$("scalar[id='DisplayPrizeMoney']",xml).text();
		var	GameTypeName		=	$("scalar[id='GameTypeName']",xml).text();
		var	MaxPlayers			=	$("scalar[id='MaxChallengePlayers']",xml).text();
		var	DisplayStake		=	$("scalar[id='DisplayStake']",xml).text();
		var GameButtonImageURL	=	$("scalar[id='GameButtonImageURL']",xml).text();
		var	GameImageURL_300x225=	$("scalar[id='GameImageURL_300x225']",xml).text();
		var	Stake				=	0;
		try {
			Stake				=	$("scalar[id='Stake']",xml).text();
		}
		catch (Exception) {}

		$('#fb_challenge_h1').text("Join the " + GameTypeName + " Tournament!");
		// $('#fb_challenge_image').attr("src", GameButtonImageURL);

		var	SpacesLeft		=	MaxPlayers - Players;
		$('#fb_challenge_spacesleft').html("There are " + SpacesLeft + " spaces left");
		
		if (MaxPlayers == 0) {
			$('#fb_challenge_spacesleft_parent').hide();
		}
		else {
			$('#fb_challenge_spacesleft_parent').show();
		}


		switch (Players) {
			
			case 0:		$('#fb_challenge_players').text("You are the first Player!");
						// $('#fb_challenge_players').text("You are the first Player!");
						break;
					
			case 1:		$('#fb_challenge_players').text("There is currently 1 player");
						break;
						
			default: 	$('#fb_challenge_players').text("There are currently " + Players + " players");
						break;
		}
		
		var	MaxPlayers		=	$('#fb_challenge_show_players').text();
		
		$('#fb_challenge_prizemoney').html(DisplayPrizeMoney);
		$('.facebox_game_type_name').text(GameTypeName);
		$('.challenge_game_image').attr("src", GameImageURL_300x225);
		
		$('#fb_challange_endtime').text(EndDateTime);
		$('#fb_challenge_stake').html(DisplayStake);

	}
	catch (Exception) {}
	
	$('#fb_challenge_current_winner').hide();
		
	if (Players > 0) {
		
		var	Leader_UserID			=	parseInt($("scalar[id='Leader_UserID']",xml).text());
		var	Display_Leader_Score	=	$("scalar[id='Display_Leader_Score']",xml).text();
		var	Leader_Name				=	$("scalar[id='Leader_Name']",xml).text();
		
		if (Leader_UserID > 0) {
			var LeaderMessage		=	Leader_Name + " (score: " + Display_Leader_Score + ")";
			$('#fb_challenge_current_winner').html(LeaderMessage);
			$('#fb_challenge_current_winner').show();
		}

		for (i=1;i<=MaxPlayers;i++) {			
			if (i<=Players) {				
				ThisPlayers			=	$("vector[id='Player_" + i + "']",xml);
				ThisUserInfo		=	$("vector[id='UserInfo']",ThisPlayers);
				
				var	UserName		=	$("scalar[id='UserName']",ThisUserInfo).text();
				var	AvatarURL		=	$("scalar[id='AvatarURL']",ThisUserInfo).text();
				
				$('#fb_challenge_name_' + i).text(UserName);
				$('#fb_challenge_avatar_' + i).attr("src", AvatarURL);
				
				
				try {
					$('#fb_challenge_row_' + i).show();
				}
				catch (Exception) {}
			}
			else {
				$('#fb_challenge_row_' + i).hide();
			}
		}
		$('#fb_challenge_no_players').hide();
		$('#fb_challenge_yes_players').show();
	}
	else {
		$('#fb_challenge_no_players').show();
		$('#fb_challenge_yes_players').hide();
	}

	ShowButton(Stake,'fb_user_login_yes','fb_user_login_no')

	if (challenge_user_sessionID.length > 0) {
		var href	=	"javascript:JoinChallenge(" + ChallengeGameID + ")";	
		$('#fb_joinnow').attr("href", href);
		// $('#fb_user_login_no').hide();
		// $('#fb_user_login_yes').show();
	}
	else {
		// $('#fb_user_login_yes').hide();
		// $('#fb_user_login_no').show();
	}
	
	// $("#frame_loading").hide();
	$.facebox({ div: '#fb_play_challenge' },'lightbox');

}

function JoinChallenge(ChallengeGameID)
{
	$('#fb_user_login_yes').hide();
	$('#fb_join_now').hide();
	$('.accept_btn').hide();
	$('.please_wait').show();
	
	var	WebServiceURL	= "/API/server/challenge/ChallengeServer.php";
	var RPCName			= "challenge.accept_challenge";		
	var	Parameters		= new Object;
	
	Parameters.ChallengeGameID			= 	ChallengeGameID;
	Parameters.UserSessionID			= 	challenge_user_sessionID;
	Parameters.Debug					= 	0;
	Parameters.SendCRM					= 	0;
	Parameters.StoreMicroTime			= 	0;
	
	GetSimpleRPCData(EnterChallenge,WebServiceURL,RPCName,Parameters);
	
}

function EnterChallenge(xml,result)
{
	var Status		=	$("scalar[id='Status']",xml).text();
	if (Status != "OK") {
		var	ErrorCount		=	$("scalar[id='ErrorCount']",xml).text();
		var	ErrorMessage	=	"";
		
		for (ThisError=1;ThisError<=ErrorCount;ThisError++) {
			ThisError		=	$("vector[id='Error_" + ThisError + "']",xml);
			ErrorMessage	=	ErrorMessage + "<br>" + $("scalar[id='ErrorMessage']",ThisError).text();	
		}
		DisplayCashPlayError(ErrorMessage);
		return;
	}
	else {
		var	GameURL		=	$("scalar[id='GameURL']",xml).text();
		GameURL			=	AddGETParameter(GameURL,"GamePlayJavascript=" + encodeURI(GamePlayJavascript));
		window.location = GameURL;
	}
}

function CreateAndPlayChallenge(Stake,DisplayStake) 
{
	challenge_user_sessionID	=	$('#challenge_user_sessionID').text();
	
	$('#fb_create_public_challenge_stake').text(DisplayStake);
	$('#fb_create_public_challenge_stake_hidden').text(Stake);
	
	ShowButton(Stake,'fb_create_public_challenge_login_yes','fb_create_public_challenge_login_no')
	
	if (challenge_user_sessionID.length > 0) {
		// var href	=	"javascript:JoinChallenge(" + ChallengeGameID + ")";	
		// $('#fb_joinnow').attr("href", href);
		//$('#fb_create_public_challenge_login_no').hide();
		//$('#fb_create_public_challenge_login_yes').show();
	}
	else {
		//$('#fb_create_public_challenge_login_yes').hide();
		//$('#fb_create_public_challenge_login_no').show();
	}
	
	$.facebox({ div: '#fb_create_public_challenge' },'lightbox');
	
}	
