var fbApplicationId;
var perms;
var redirectURL;
var t = jQuery.i18n.prop;

var login_html = "<div id='roster-div' class='d'><label  id='roster-label'/><div id='your-online-friends'></div><label id='lobby-label'/><div id='available-players'></div></div>";
var no_login_html = "<img src='" + image_service
		+ "/images/logoazul.gif' width='130px' height='610px' />";

var content_text = "<p>" + t('paragraph1') + "</p><p>"
		+ t('paragraph2') + "</p>";
var authenticated = false;

var otherPlayers = [ 'player-1', 'player-2', 'player-3', 'player-4', 'player-5' ];
var usersMap = [];
var backCards = [];
var folded = false;

$
		.ajaxSetup({
			complete : function(jqXHR, textStatus) {
				if ('error' == textStatus || "timeout" == textStatus) {
					// alert(t('e1'));
				}
				if(  "abort" == textStatus){
					if ($("#key").val() == '') {
						$("#overall-hint")
								.html(
										"<font style='font-size:40px;color:red' >"
								+ t('m1')+"</font>");
					}
				}
			}
		});
function defaultParameters() {
	return "key=" + $("#key").val() + "&applicationURL="
			+ escape(image_service);
}

var pregame = false;
function getPlayer(key) {
	if ($("#key").val() == key) {
		return 'your-div';
	}
	if (usersMap[key] == null) {
		var v = otherPlayers.pop();
		usersMap[key] = v;
		var val = Math.floor(Math.random() * 3) + 1;
		backCards[v] = "comtrek" + val;
	}
	return usersMap[key];
}
function defaultParameters() {
	return "key=" + $("#key").val() + "&applicationURL="
			+ escape(image_service);
}
function logout() {
	$.ajax({
		url : service + "/w/s/logout.action?" + defaultParameters(),
		dataType : 'jsonp',
		async : false,
		success : function(data) {
			$("div#content").html(content_text);
			$("#loginLabel").text(t('label.login'));
			$(".loginData").show();
			$("#logout_btn").hide();
			$("div#hide_button").click();
			authenticated = false;
		}
	});
}
function setGameToolTipMessage(value) {
	$("#game-table-div").attr("title", value);
}

function startScrolling() {
	$("#table-header").mbScrollable({
		width : 700,
		elementsInPage : 1,
		elementMargin : 2,
		shadow : "#999 2px 2px 2px",
		height : "auto",
		controls : "#controls",
		slideTimer : 600,
		autoscroll : true,
		scrollTimer : 20000
	});
}

function doOnLogin() {
	// //console.log("on doOnLogin()");
	authenticated = true;
	$(".loginData").hide();
	$("#right_side").html(login_html);
	setGameToolTipMessage(t('tt18'));
	var chat_area_message = t('tt19');
	$("#table-header")
			.html(
					'<table><tr><td><img width="50px;" title="'
							+ t('tt1')
							+ '" src="'
							+ image_service
							+ '/images/chat_128.png"/></td>'
							+ '<td><table><tr><td>'
							+ '<div title="'
							+ chat_area_message
							+ '" id="chat-area" /></td></tr>'
							+ '<tr><td><input title="'
							+ t('tt2')
							+ '" id="chat" type="text" size="70"/></td><td id="chat-controls"/></tr></table></td>'
							+ '</tr></table>');
	authenticated = true;
	$('#chat').keypress(function(e) {
		if (e.which == 13) {
			e.preventDefault();
			chat();
		}
		return true;
	});
	if (checkFB()) {
		FB.api('/me', function(response) {
			if (response != null && undefined != response.id) {
				$("#your-info").empty();
				$("#your-info").append(
						'<table><tr><td><img src="https://graph.facebook.com/'
								+ response.id
								+ '/picture"/></td></tr><tr><td class="d">'
								+ response.first_name + '</td></tr></table>');
			}
			makePlayerReady(response.first_name, response.id);
		});
	}
	$("#chat").hide();
	// //console.log("Leaving doOnLogin()");
}

function login() {
	$.ajax({
		url : service + "/w/s/login.action?fbAccessToken=" + accessToken
				+ "&fbApplicationId="+fbApplicationId+"&"
				+ defaultParameters(),
		async : false,
		dataType : 'jsonp'
	});
}

function resetMoney() {
	$("#money").text("10");
}
function createGame() {
	reset();
	var numberOfComputerPlayers = 6;
	if (authenticated) {
		numberOfComputerPlayers = 0;
	}
	var murl = service + "/w/s/createGame.action?numberOfPlayers="
			+ numberOfComputerPlayers + "&gameName="+$("#gametype").val()+"&" + defaultParameters();
	$.ajax({
		url : murl,
		dataType : 'jsonp',
		async : false
	});
}

function setGameId(gameId) {
	$("#gameId").val(gameId);
}
function playShuffle() {
	$('embed').remove();
	$('body')
			.append(
					'<embed src="'
							+ image_service
							+ '/resources/shuffling-cards-1.mp3" autostart="true" hidden="true" loop="false" >');
}

function startGame() {
	if (players != null) {
		var gameId = $("#gameId").val();
		setGameId(gameId);
		$(".pButton").hide();
	}
	$.ajax({
		url : service + "/w/s/startGame.action?" + defaultParameters()
				+ "&gameId=" + $("#gameId").val(),
		dataType : 'jsonp'
	});
}

function sendMoney(m, action, k) {
	if (m == null) {
		m = $("#money").text();
	}
	resetMoney();
	$(".betWidget").hide();
	$(".anteWidget").hide();
	$.ajax({
		url : service + "/w/s/" + action + ".action?" + defaultParameters()
				+ "&gameId=" + $("#gameId").val() + "&" + k + "=" + m,
		dataType : 'jsonp'
	});
}

function sendAnte(ante) {
	sendMoney(ante, "setAnte", "bet");
	setGameToolTipMessage(t('tt20'));
}

function sendBet(bet) {
	sendMoney(bet, "setBet", "bet");
	setGameToolTipMessage(t('tt21'));
}
function fold() {
	$("#foldBtn").hide();
	folded = true;
	$.ajax({
		url : service + "/w/s/fold.action?" + defaultParameters() + "&gameId="
+ $("#gameId").val(),
		dataType : 'jsonp'
	});
}

function exchangeCards() {
	var cardsToExchange = '';
	var i = 0;
	$.each($('.your-card-div[selected!=selected]'), function(key, val) {
		cardsToExchange += $('#' + val.id).attr("cardid") + "|";
		i++;
	});

	if (configuration.numberOfCardsToExchange < i) {
		alert("You can exchange up to "
				+ configuration.numberOfCardsToExchange
				+ " cards. You need to hold at least "
				+ (configuration.numberOfCardsOnFirstSet - configuration.numberOfCardsToExchange)
				+ " cards.");
	} else {
		$("#exchangeCardsButton").hide();
		$.ajax({
			url : service + "/w/s/exchangeCards.action?" + defaultParameters()
					+ "&gameId=" + $("#gameId").val() + "&cardsToExchange="
					+ cardsToExchange,
			dataType : 'jsonp'
		});
	}
}

function getToken() {
	$.ajax({
		url : service + "/w/s/getToken.action?applicationId=prototype1&fbApplicationId="+fbApplicationId+"&"
				+ defaultParameters(),
		dataType : 'jsonp',
		async : false
	});
}

function reconnect() {
	// console.log("Before setting the value"+$("#connected").val());
	if ((!window.connected)
			&& ($("#key").val() != null && $("#key").val().length > 5)) {
		window.connected = true;
		// console.log("after setting the value:"+$("#connected").val());
		$.ajax({
			url : service + "/w/a?" + defaultParameters(),
			dataType : 'jsonp',
			success : callback,
			async : true,
			cache : false,

			error : function(xhr, textStatus, errorThrown) {
				if (textStatus == 'timeout') {
					this.tryCount++;
					if (this.tryCount <= this.retryLimit) {
						// try again
						$.ajax(this);
						return;
					}
					alert(no_connection_str);
					window.connected = false;
					return;
				}
				if (xhr.status == 500) {
					window.connected = false;
				} else {
					window.connected = false;
				}
			}
		});
	}
}

function cardOnClick(cardId) {
	if ($('#' + cardId).attr("selected") == "selected") {
		$('#' + cardId).css("background", "#006633");
		$('#' + cardId).removeAttr("selected");
		$('#' + cardId + "_txt").empty();
	} else {
		$('#' + cardId).css("background", "red");
		$('#' + cardId).attr("selected", "selected");
		$('#' + cardId + "_txt").text("Hold");
	}
}

function createCard(card, player) {
	var mid = player + '_' + card.id;
	var html = '<div cardid="' + card.id + '" id="' + mid
			+ '" class="your-card-div">' + ' <table><tr><td><img src="'
			+ image_service + "/images/cards/cards-classic/" + card.image
			+ ".png" + '" class="your_card imageCache" onclick="cardOnClick(\''
			+ mid + '\');"/>' + '</td></tr><tr><td id="' + mid
			+ '_txt"></td></tr></table></div><script>$(function() { $( "#'
			+ mid + '" ).draggable({ containment: "parent",  axis: "x"});'
			+ '$( "#' + mid + '" ).addClass("my_card");});</script>';

	$('#' + player + '_cards').append(html);
}

function createOthersCard(card, player) {
	var mid = player + '_' + card.id;
	var image = card.image;
	if (card.image == 'facedown') {
		image = backCards[player];
	}
	var html = '<div cardid="' + card.id + '" id="' + mid + '">'
			+ ' <img src="' + image_service + "/images/cards/cards-classic/"
			+ image + ".png" + '"  class="' + player
			+ '_card imageCache m_card"/>'
			+ '</div><script>$(function() {$( "#' + mid
			+ '" ).addClass("other_card")});</script>';

	$('#' + player + '_cards').append(html);
}

function addTableCard(card){
	var image = card.image;
	var mid = 'table_' + card.id;
	var html = '<div cardid="' + card.id + '" id="' + mid + '">'
	+ ' <img src="' + image_service + "/images/cards/cards-classic/"
	+ image + ".png" + '"  class="m_card"/>'
	+ '</div><script>$(function() {$( "#' + mid
	+ '" ).addClass("other_card")});</script>';
	$('#tableCards').append(html);
}
function populateCards(cards, player, hand, type) {
	if ("your-div" != player) {
		$('#' + player + '_cards').empty();
	}
	if( cards != null ){
	$.each(cards, function(key, card) {
		if ("your-div" != player) {
			createOthersCard(card, player, type);
		}
		
	});
	}
	$("#" + player + "_hand").text(handNames[hand]);
}
function populateMoney(money, player) {
	$("#myBalance_" + player).text(money);
}

function resetPlayerDiv(player, id) {
	$("#" + player + "_cards").empty();
	$("#myBalance_" + player).empty();
	$("#" + player + "_name").empty();
	$("#bet_" + player).empty();
	$("#" + player + "_hand").empty();
	$("#won_" + player).empty();
	$("#" + player + "_img").empty();
}
function reset() {
	otherPlayers = [ 'player-1', 'player-2', 'player-3', 'player-4', 'player-5' ];
	players = [];
	backCards = [];
	for (k in otherPlayers) {
		resetPlayerDiv(otherPlayers[k]);
	}
	$("#your-div_cards").empty();
	$('#tableCards').empty();
	usersMap = [];
}
function betAll() {
	var id = $("#key").val();
	var player = getPlayer(id);
	var amount = $("#myBalance_" + player).text() * 1;
	if (500 < amount) {
		amount = 500;
	}
	sendBet(amount);
}
function createYourDiv() {
	$(".pButton").button();
	$(".pButton").hide();

	/*
	 * var player = getPlayer(user.id); populateMoney(user.balance, player);
	 * 
	 * if (user.cards == null) { setDummyCards('your-div'); }
	 */
	usersMap[$("#key").val()] = "You";
}
function getPlayerPicture(player, fbId) {
	if (fbId != null && checkFB()) {
		FB.api('/' + fbId, function(response) {
			$("#" + player + "_img").empty();
			$("#" + player + "_name").empty();
			if (response != null && undefined != response.id) {
				$("#" + player + "_img").html(
						'<img src="https://graph.facebook.com/' + response.id
								+ '/picture"/>');
				$("#" + player + "_name").text(response.first_name);
			}
		});
	}
}

function makePlayerReady(username, fbid) {
	$.ajax({
		url : service + "/w/s/makePlayerReady.action?" + defaultParameters()
				+ "&username=" + username + "&password=" + fbid,
		dataType : 'jsonp',
		async : false
	});
}

function invite(member, name) {
	if (member == $("#key").val()) {
		return;
	}
	if (owner != $("#key").val()) {
		alert(t('tt22'));
		return;
	}
	if (!pregame) {
		alert(t('tt23'));
		return;
	}

	var x = function() {
		var elem = $(this).closest('.item');
		$.confirm({
			'title' : tt17,
			'message' : 'Do you want to invite ' + name
					+ ' to join your game room?',
			'buttons' : {
				'Invite' : {
					'class' : 'blue',
					'action' : function() {
						elem.slideUp();
						$.ajax({
							url : service + "/w/s/invite.action?"
									+ defaultParameters() + "&userId=" + member
									+ "&gameId=" + $("#gameId").val(),
							dataType : 'jsonp',
							async : false
						});
					}
				},
				'Cancel' : {
					'class' : 'gray',
					'action' : function() {
					}
				}
			}
		});

	};
	$('#alert').unbind();
	$('#alert').bind('click', x);
	$('#alert').click();

}

function processAvailablePlayers(players) {
	if (players == null) {
		return;
	}
	$("#available-players").empty();
	$
			.each(
					players,
					function(mk, m) {
						if (checkFB()) {
							// console.log("adding:"+m.user);
							var a = m.fbUserId;
							FB
									.api(
											'/' + a,
											function(response) {
												if (response == null
														|| response.id == undefined) {
													return;
												}
												var name = unescape(escape(response.first_name));
												var oclick = " onclick=\"invite('"
														+ m.id
														+ "','"
														+ name
														+ "');\"";
												$("#" + response.id + "_ap")
														.remove();
												$("#available-players")
														.append(
																'<table id="'
																		+ response.id
																		+ '_ap"><tr><td><img title="Click to invite '
																		+ name
																		+ ' to join you game." src="https://graph.facebook.com/'
																		+ response.id
																		+ '/picture"'
																		+ oclick
																		+ '/></td></tr><tr><td><d>'
																		+ name
																		+ '</d></td></tr></table>');
											});
						}
					});
}

function chat() {
	var message = $("#chat").val();
	var destination = $("#chat-controls").attr("destination");
	if (destination == undefined || destination == null
			|| destination.length < 1) {
		alert(t('tt24'));
	} else {
		sendMessage(message, 'personal', destination, null);
		addToChatArea("me", message);
		$("#chat").val("");
	}
}
var friends = [];
function setChat(name, destination) {
	$("#chat").show();
	$("#chat-controls").html(
			"<label id='chat-name-label'>" + name + "</label>");
	$("#chat-controls").unbind();
	$("#chat-controls").bind('click', function() {
		$("#chat-controls").text("");
		$("#chat-controls").unbind();
		$("#chat-area").text("");
		$("#chat").hide();
		$("#chat-name-label").attr("title",t('dc'));
	});
	$("#chat-controls").attr("destination", destination);
}
function getId(data) {
	var a = data.indexOf("@");
	if (a > 1) {
		return data.substring(1, a);
	}
	return data;
}

function processRoster(roster) {
	if (roster == null || jQuery.isEmptyObject(roster)) {
		return;
	}
	$("#your-online-friends").html("");
	$("#your-online-friends [title]").tooltip();
	friends = [];
	$
			.each(
					roster,
					function(mk, m) {
						var fbId = getId(m.user);
						if (friends[fbId] == undefined && checkFB()) {
							FB
									.api(
											'/' + fbId,
											function(response) {
												var name = unescape(escape(response.first_name));
												friends[fbId] = name;
												var full_name = unescape(escape(m.name));
												var oclick = " onclick=\"setChat('"
														+ name
														+ "','"
														+ m.user
														+ "');\"";
												$("#" + response.id + '_friend')
														.remove();
												$("#your-online-friends")
														.append(
																'<table id="'
																		+ response.id
																		+ '_friend"><tr><td><img title="Click to send a message to '
																		+ full_name
																		+ '" src="https://graph.facebook.com/'
																		+ response.id
																		+ '/picture"'
																		+ oclick
																		+ '/></td></tr><tr><td><d>'
																		+ name
																		+ '</d></td></tr></table>');
												/*
												 * console.log("adding:" + name + "
												 * id:" + response.id + "
												 * friends[" + friends[fbId] + "]
												 * m.user:" + m.user);
												 */
											});
						}
					});
}
var players = [];
function joinGame(gameId) {
	reset();
	setGameId(gameId);
	setGameToolTipMessage(t('tt25'));
	$(".startWidget").hide();
	$.ajax({
		url : service + "/w/s/joinGame.action?" + defaultParameters()
				+ "&gameId=" + gameId,
		dataType : 'jsonp',
		async : false,
		cache : false
	});
}

function sendEvent(event, type, destination) {
	sendMessage(null, type, destination, event);
}
function sendMessage(msg, type, destination, evt) {
	var message = "";
	var event = "";
	if (evt != null && evt.length > 2) {
		event = "&event=" + evt;
	}
	if (msg != null && msg.length > 2) {
		message = "&message=" + escape(msg);
	}
	$.ajax({
		url : service + "/w/s/postMessage.action?" + defaultParameters()
				+ "&messageType=" + type + message + "&recipientKey="
				+ destination + event,
		dataType : 'jsonp',
		async : false
	});
}
function showInvitation(data) {
	var x = function() {
		var elem = $(this).closest('.item');
		$.confirm({
			'title' : 'Game Invitation',
			'message' : data.sender +" "+ t('iu'),
			'buttons' : {
				'Accept' : {
					'class' : 'blue',
					'action' : function() {
						elem.slideUp();
						joinGame(data.gameId);
					}
				},
				'Decline' : {
					'class' : 'gray',
					'action' : function() {
						sendEvent("decline", "personal", data.senderKey);
					}
				}
			}
		});

	};
	$('#alert').unbind();
	$('#alert').bind('click', x);
	$('#alert').click();
}

function showRaised(data, what) {
	var r = null;
	var player = getPlayer(data.raiser);
	var yourBet = data.yourBet;
	var currentBet = data.currentBet;
	var name = $("#" + player + "_name").text();
	r = function() {
		var elem = $(this).closest('.item');
		$.confirm({
			'title' : what + ' Raised',
			'message' : name + ' raised ' + what + ".<br> Your current " + what
					+ ":" + yourBet + '. <br>Game ' + what + ':' + currentBet
					+ '. <br>You need to Add:' + data.difference,
			'buttons' : {
				'Add' : {
					'class' : 'blue',
					'action' : function() {
						elem.slideUp();
						if ('Ante' == what) {
							sendAnte(data.difference);
						} else {
							sendBet(data.difference);
						}
					}
				},
				'Fold' : {
					'class' : 'gray',
					'action' : function() {
						fold();
					}
				},
				'Raise' : {
					'class' : 'green',
					'action' : function() {
						$("#money").text(data.difference);
						$(".betWidget").show();
					}
				}
			}
		});
	};
	$('#alert').unbind();
	$('#alert').bind('click', r);
	$('#alert').click();
}

var owner;
var configuration;

function showStartButton(gameOwner) {
	owner = gameOwner;
	if (!authenticated
			|| (gameOwner == $("#key").val() && otherPlayers != null && otherPlayers.length < 5)) {
		$(".startWidget").show();
		setGameToolTipMessage(t('start_game_message'));
	} else {
		setGameToolTipMessage(t('tt26'));
	}

}
function addToChatArea(name, message) {
	$("#chat-area").append(
			"<br/><font class='d'>" + name + "</font>"+" "+t('said')+":<font class='d'>"
					+ unescape(escape(message)) + "</font>");
	$("#chat-area").animate(
			{
				scrollTop : ($("#chat-area").prop("scrollHeight") - $(
						"#chat-area").height())
			});
}
function callback(d) {
	var data = d;
	d = null;
	window.connected = false;
	if (data == null) {
		reconnect();
		return;
	}
	if ("getToken" == data.event) {
		$("#key").val(data.key);
		redirectURL = data.fbRedirectURL;
		redirectURL = redirectURL.replace("$$$", $("#key").val());
		perms = data.fbPermissions;
		if (data.alreadyLogged) {
			// $("#loginLabel").text(t('label.logout'));
		}
		createGame();
		// initFB();
	}
	if ("gameCreated" == data.event) {
		setGameId(data.gameId);
	}
	if ("applicationAuthenticationFailure" == data.event) {
		return;
	}
	if ("playerAvailable" == data.event) {
		processAvailablePlayers(data.players);
	}
	if ("playerUnavailable" == data.event) {
		processAvailablePlayers(data.players);
	}
	if ("rosterUpdate" == data.event) {
		processRoster(data.roster);
	}
	if ("game-terminated" == data.event) {
		showStartButton(data.gameOwner);
	}
	if("game-dealer-opens-card" == data.event){
		addTableCard(data.card);
	}
	if( "player-needs-bet-for-card" == data.event){
		$(".betWidget").show();
	}
	if ("game-started" == data.event) {
		$.each(players, function(key, val) {
			var player = getPlayer(val.id);
			$("#bet_" + player).empty();
			$("#" + player + "_hand").empty();
			$("#" + player + "_cards").empty();
		});
		$("#tableCards").empty();
		$("#jquery_jplayer_1").jPlayer("play");
		$("#jquery_jplayer_1").jPlayer("play");
		$("#jquery_jplayer_1").jPlayer("play");
		$(".anteWidget").show();
		folded = false;
		setGameToolTipMessage(t('ante_hint'));
		pregame = false;
		configuration = data.configuration;
	}

	if ("player-first-set-of-cards-received" == data.event) {
		var player = getPlayer(data.player.id);
		populateCards(data.player.cards, player, data.player.handEvaluation);
		setGameToolTipMessage(t('bet_on_cards'));
		$(".pButton").hide();
		if (!folded) {
			$(".betWidget").show();
		}
	}

	if ("anteRaised" == data.event) {
		showRaised(data, 'Ante');
	}

	if ("betRaised" == data.event) {
		showRaised(data, 'Bet');
	}

	if ("player-fold" == data.event) {
		var player = getPlayer(data.player.id);
		$("#" + player + "_hand").html(
				"<font color='red'>" + t('folded') + "</font>");
	}

	if ("player-just-joined" == data.event) {
		$.each(data.game.players, function(key, val) {
			var player = getPlayer(val.id);
			populateMoney(val.balance, player);
			$("#" + player + "_name").text(val.name);
			if (val.fbUserId != null) {
				getPlayerPicture(player, val.fbUserId);
				$("#" + player + "_img").bind('click', function(){
					setChat(val.name, val.id);
				});
			} else if (val.type == "computer") {
				$("#" + player + "_img").html(
						'<img src="' + image_service + '/images/empty.gif"/>');
			}
		});
		showStartButton(data.gameOwner);
	}

	if ("player-left-game" == data.event) {
		var player = getPlayer(data.player.id);
		resetPlayerDiv(player, data.player.id);
		otherPlayers.push(player);
		delete usersMap[data.player.id];
	}
	if ("decline" == data.event) {
		alert(data.sender + " "+ t('di'));
	}

	if ("message" == data.event) {
		if (data.message != null) {

			var id = getId(data.sender);
			var name = data.sender;
			if (id != data.sender) {
				name = friends[id];
			}
			addToChatArea(name, data.message);
			setChat(name, data.senderId);
		}
		// alert(data.sender+" message:"+data.message);
	}

	if ("accept" == data.event) {
		// alert(data.sender + " "+ t('ai'));
		var player = getPlayer(data.senderKey);
		$("#" + player + "_name").text(data.sender);
		getPlayerPicture(player, data.fbUserId);
		$("#" + player + "_img").bind('click', function(){
			setChat(data.sender, data.senderKey);
		});
	}

	if ("invitationToJoinAGame" == data.event) {
		showInvitation(data);
	}

	if ("player-bet-done" == data.event) {
		var player = getPlayer(data.player.id);
		$("#myBalance_" + player).text(data.player.balance);
		$("#bet_" + player).html(
				"<td>Ante:" + data.player.ante + "</td><td> Bet:" + data.player.bet+"</td>");
		if (data.player.id == $("#key").val()) {
			populateMoney(data.player.balance, data.player.id);
		}
		if (data.player.fbUserId != null) {
			getPlayerPicture(player, data.player.fbUserId);
			$("#" + player + "_img").bind('click', function(){
				setChat(data.player.name, data.player.id);
			});
		}
		$("#jquery_jplayer_3").jPlayer("play");
	}

	if ("game-bets-before-exchange-done" == data.event) {
		$(".betWidget").hide();
		if (!folded) {
			$("#exchangeCardsButton").show();
		}
		setGameToolTipMessage(t('exchange_cards_hint'));

	}
	if ("game-bets-done" == data.event) {

	}

	if ("player-ante-done" == data.event) {
		var player = getPlayer(data.player.id);
		$("#myBalance_" + player).text(data.player.balance);
		$("#bet_" + player).html(
				"<td>Ante:" + data.player.ante + "</td><td> Bet:" + data.player.bet+"</td>");
		if (data.player.id == $("#key").val()) {
			populateMoney(data.player.balance, data.player.id);
		}
		$("#jquery_jplayer_3").jPlayer("play");
	}

	if ("player-card-received" == data.event) {
		var player = getPlayer(data.player.id);
		if (data.player.id == $("#key").val()) {
			createCard(data.player.card, player);
		} else {
			createOthersCard(data.player.card, player);
		}
		$("#jquery_jplayer_2").jPlayer("play");
	}

	if ("player-card-discarded" == data.event) {
		var player = getPlayer(data.player.id);
		$("#" + player + "_" + data.player.card.id).remove();
	}
	if ("game-cards-exchanged" == data.event) {
		$(".pButton").hide();
		if (!folded) {
			$(".betWidget").show();
		}
		setGameToolTipMessage(t('final_bet'));
	}
	if ("player-cards-exchanged" == data.event) {
		var gameId = $("#gameId").val();
		setGameId(gameId);
		if (data.player.cards != null) {
			var player = getPlayer(data.player.id);
			populateCards(data.player.cards, player,
					data.player.handEvaluation, data.player.type);
			setGameToolTipMessage(t('tt28'));
		} else {
			var player = getPlayer(data.player.id);
			if (data.player.exchanged > 0) {
				var idx = 0;
				$.each($("." + player + "_card"), function(key, val) {
					if (idx < data.player.exchanged) {
						val.src = image_service
								+ "/images/cards/cards-classic/53.png";
					}
					idx++;
				});
			}
		}
	}
	if ("game-winners-available" == data.event) {
		var gameId = $("#gameId").val();
		setGameId(gameId);
		setGameToolTipMessage(t('start_new_game'));
		players = data.game.players;
		var you = null;
		$.each(data.game.players, function(key, val) {
			var player = getPlayer(val.id);
			$("#myBalance_" + player).empty();
			$("#myBalance_" + player).text(val.balance);
			$("#won_" + player).text(t('won_str') + val.wonGames);
			if (val.id == $("#key").val()) {
				you = val;
			} else {
				if (val.state != 'player-fold') {
					var player = getPlayer(val.id);
					populateCards(val.cards, player, val.handEvaluation,
							val.type);
				}
			}
		});
		populateCards(you.cards, 'your-div', you.handEvaluation, you.type);
		$.each(data.game.winners, function(key, val) {
			var player = getPlayer(val);
			var options = {};
			$("#" + player).effect('pulsate', options, 500);
			if (player == 'your-div') {
				$("#jquery_jplayer_4").jPlayer("play");
			} else {
				$("#jquery_jplayer_5").jPlayer("play");
			}
		});
		$(".pButton").hide();
		$(".betWidget").hide();
		if (you.balance > 0) {
			showStartButton(data.gameOwner);
		} else {
			setGameToolTipMessage(out_of_money);
			$("#resetButton").show();
		}
		pregame = true;
	}
	if ("authenticated" == data.event) {
		doOnLogin();
	}
	if ("non-authenticated" == data.event) {
		$(".loginData").show();
	}
	if ("connection-error-no-key" == data.event) {
		alert(window.connected = false);
	}
	if( "redirect" == data.event){
		window.location = data.applicationURL;
	}
	if ("loginFailure" == data.event) {
		$(".loginData").show();
	}
	if ("logout" != data.event) {
		reconnect();
	}
}
var handNames = [];

$(document)
		.ready(
				function() {
					if( isMobile){
						mobile();
					}else{
						notMobile();
					}		
					$(".loginBtns").button();
					$(".loginData").show();
					$("#login_btn").click(login);
					$("#logout_btn").click(logout);
					$("#logout_btn").hide();
					$(".authenticatedWidget").hide();
					$("div.panel_button").click(function() {
						$("div#panel").animate({
							height : "500px"
						}).animate({
							height : "400px"
						}, "fast");
						$("div.panel_button").toggle();
					});

					$("div#hide_button").click(function() {
						$("div#panel").animate({
							height : "0px"
						}, "fast");
					});

					$("div#login").click(function() {
						// $("div#hide_button").click();
					});
					$("#fb-login").attr("href", redirectURL);

					createYourDiv();
					$("#jquery_jplayer_1")
							.jPlayer(
									{
										ready : function() {
											$(this)
													.jPlayer(
															"setMedia",
															{
																mp3 : image_service
																		+ "/resources/shuffling-cards-1.mp3",
																wav : image_service
																		+ "/resources/shuffling-cards-1.wav"
															});
										},
										supplied : "mp3,wav"
									});
					$("#jquery_jplayer_2").jPlayer({
						ready : function() {
							$(this).jPlayer("setMedia", {
								mp3 : image_service + "/resources/card.mp3",
								wav : image_service + "/resources/card.wav"
							});
						},
						supplied : "mp3,wav"
					});
					$("#jquery_jplayer_3")
							.jPlayer(
									{
										ready : function() {
											$(this)
													.jPlayer(
															"setMedia",
															{
																mp3 : image_service
																		+ "/resources/coin-drop-5.mp3",
																wav : image_service
																		+ "/resources/coin-drop-5.wav"
															});
										},
										supplied : "mp3,wav"
									});
					$("#jquery_jplayer_4")
							.jPlayer(
									{
										ready : function() {
											$(this)
													.jPlayer(
															"setMedia",
															{
																mp3 : image_service
																		+ "/resources/applause-8.mp3",
																wav : image_service
																		+ "/resources/applause-8.wav"
															});
										},
										supplied : "mp3,wav"
									});
					$("#jquery_jplayer_5").jPlayer({
						ready : function() {
							$(this).jPlayer("setMedia", {
								wav : image_service + "/resources/ah.wav",
								mp3 : image_service + "/resources/ah.mp3"
							});
						},
						supplied : "wav,mp3"
					});
					pregame = true;
					$('img.imageCache').imageCache();
					$("#lang").change(function(){
					      	setText();
					});
					$("#lang").trigger("change");
					$(".betWidget").hide();
					$("#target").attr("src", image_service + '/images/money_add.png');
					$("#target1").attr("src", image_service + '/images/money_delete.png');
					$('#target').click(
							function() {
								$('#money').html(
										function(i, val) {
											var v = $("#money").text() * 1;
											var myBalance = $(
													"#myBalance_your-div")
													.text() * 1;

											if ((v + 10) > 100) {
												return 100;
											}
											if ((v + 10) > myBalance) {
												return v;
											}
											return v + 10;
										});
							});
					$('#target1').click(function() {
						$('#money').html(function(i, val) {
							var v = $("#money").text() * 1;
							if ((v - 10) < 10) {
								return 10;
							}
							return v - 10;
						});
					});
					resetMoney();
					$("#gametype").change(function(){
						createGame();
					});
					
					$("#foldBtn").click(function(){
						$("#foldBtn").hide();
						folded = true;
						$.ajax({
							url : service + "/w/s/fold.action?" + defaultParameters() + "&gameId="
									+ $("#gameId").val(),
							dataType : 'jsonp'
						});
					});
				});

function mobile(){
	$("#table-header").css({"height":0,"overflow":"none"});
	$("#chat-area").css({"height":0,"overflow":"none"});
	$("#table-controls").empty();
	$("#header").remove();
}
function notMobile(){
	$("#right_side").html(no_login_html);
	$("#mobile-controls-right").empty();
	$("#mobile-controls-left").empty();
	$("#ad1")
	.html(

			"<img src='"
					+ image_service
					+ "/images/logotipo.gif' width='130px' height='610px' />");
	initFB();
	(function(d) {
		var js, id = 'facebook-jssdk';
		if (d.getElementById(id)) {
			return;
		}
		js = d.createElement('script');
		js.id = id;
		js.async = true;
		js.src = "//connect.facebook.net/en_US/all.js";
		d.getElementsByTagName('head')[0].appendChild(js);
	}(document));
}
function checkFB() {
	return typeof (FB) != 'undefined' && FB != null;
}
function fb() {
	if( !facebook ){
		return;
	}
	// console.log(redirectURL);
	if (checkFB()) {
		FB.login(function(response) {
			if (response.authResponse) {
				$("#iframe").attr("src", redirectURL);
				// console.log('Welcome! Fetching your information.... ');
				// console.log("after calling fb-login");
				$(".authenticatedWidget").show();
				$("div#hide_button").click();
			} else {
				// console.log('User cancelled login or did not fully
				// authorize.');
			}
		}, {
			scope : perms
		}, {
			cb : fbLoginCallback
		});
	}
}

function initFB() {
	if( !facebook ){
		return;
	}
	window.fbAsyncInit = function() {
		FB.init({
			appId : fbApplicationId, // App ID
			channelURL : service + 'channel.jsp', // Channel File
			status : true, // check login status
			cookie : true, // enable cookies to allow the server to access the
			// session
			oauth : true, // enable OAuth 2.0
			xfbml : true
		// parse XFBML
		});

		fb();
	};
}
function setText() {
	jQuery.i18n.properties({
		name : 'global-' + $("#lang").val(),
		path : 'resources/',
		mode : 'both'
	});
	handNames['highCard'] = t('highCard');
	handNames['pair'] = t('pair');
	handNames['twoPairs'] = t('twoPairs');
	handNames['threeOfAKind'] = t('threeOfAKind');
	handNames['flush'] = t('flush');
	handNames['fullHouse'] = t('fullHouse');
	handNames['fourOfAKind'] = t('fourOfAKind');
	handNames['straight'] = t('straight');
	handNames['royalFlush'] = t('royalFlush');
	$("#title1").text(t('label.title.ln1'));
	$("#title2").text(t('label.title.ln2'));
	$("#hide").text(t('label.hide'));
	
	$("#myBalance_your-div").attr("title", t('ttr3'));
	$("#won_your-div").attr('title', t('tt4'));
	$("#bet_your-div").attr('title', t('tt5'));

	$("#startButton").attr("title", t('tt6'));
	$("#startButton").text(t('start_game_str'));
	$("#anteButton").attr("title", t('tt7'));
	$("#anteButton").text(t('send_ante_str'));
	$("#betButton").attr("title", t('tt8'));
	$("#betButton").text(t('send_bet_str'));
	$("#exchangeCardsButton").attr("title", t('tt9'));
	$("#exchangeCardsButton").text(t('exchange_cards_str'));
	$("#resetButton").attr("title", t('tt10'));
	$("#target").attr("title", t('tt11'));
	
	$("#money").attr("title", t('tt12'));
	$("#target1").attr("title", t('tt13'));
	$("#foldBtn").attr("title", t('tt14'));
	$("#foldBtn").text(t('foldStr'));
	$("#checkButton").attr("title", t('tt15'));
	$("#checkButton").text(t('check'));
	$("#betAllButton").attr("title", t('tt16'));
	$("#betAllButton").text(t('max'));
	$("#roster-label").text(t('your_online_friends'));
	$("#lobby-label").text(t('lobby'));
	$("#loginLabel").text(t('label.login'));
	$("#overall-hint").text(t('tt27'));
}
function fbLoginCallback() {
	// console.log("login called");
}

