var player_data;
var money_reset_count = 0;
var stat_reset_count = 0;
var session_game_count = 0;

$(document).ready(function() {
	$.ajaxSetup({ cache: false });
	$.getJSON('/index/load-user', function(data) {
		loadPlayerStats(data);
		setBankAndBets(data);
		showYourStats();
		
		poll_recent_winners();
		setInterval('poll_recent_winners()', 60000);
		$('#ante').removeAttr("readonly");
		$('#bonus').removeAttr("readonly");
 		$('#queens_up').removeAttr("readonly");
 		$('#queens_up_bg').attr('class','bet_input');
		$('#ante_bg').attr('class','bet_input');
		$('#super_bonus_bg').attr('class','bet_input');
		$('#deal').attr('class','button2');
	});
	
	$('#contact').html($('#contact').html() + '@crazy4pokeronline.com');
});

function loadPlayerStats(data)
{
	player_data = data;
	player_data.total_games = parseInt(player_data.total_games);
	player_data.total_withdrawn = parseInt(player_data.total_withdrawn);
	player_data.games_played = parseInt(player_data.games_played);
	player_data.triples = parseInt(player_data.triples);
	player_data.highest = parseInt(player_data.highest);
	player_data.lowest = parseInt(player_data.lowest);
	player_data.queens_win = parseInt(player_data.queens_win);
	player_data.won = parseInt(player_data.won);
	player_data.lost = parseInt(player_data.lost);
	player_data.folded = parseInt(player_data.folded);
}

function setBankAndBets(data)
{
	bank_roll = parseInt(player_data.bank_roll);
 	$('#m').html(formatTotalAmount(bank_roll));
 	$('#ante').val(parseInt(data.ante));
 	$('#bonus').val(parseInt(data.ante));
 	$('#queens_up').val(parseInt(data.queens_up));
 	
 	$('#sound').attr('checked', (data.sound_enabled == '1'));
}

function showYourStats()
{
	if (player_data.total_games == 0)
	{
		$('#ad_unit').hide();
		$('#recent_winners').hide();
		$('#start_here').show();
		$('#super_bonus_chart').show().css('left', '8px');
		$('#stats_header').html('[ <a href=# onclick="login(); return false;">Login</a> ]');
		return;
	}
	
	var divisor = (player_data.won + player_data.lost + player_data.folded);
	$('#hands_played').html(formatTotalNumber(player_data.games_played));
	$('#triples').html(formatTotalNumber(player_data.triples));
	$('#most_money').html(formatTotalAmount(player_data.highest));
	$('#least_money').html(formatTotalAmount(player_data.lowest));
	$('#queens_win_percentage').html(showPercentage(player_data.queens_win, divisor, 25.6, 1, 'Queens Up Win'));
	$('#fold_percentage').html(showPercentage(player_data.folded, divisor, -30, -1, 'Fold'));
	$('#lose_percentage').html(showPercentage(player_data.lost, divisor, -25, -1, 'Lose'));
	$('#win_percentage').html(showPercentage(player_data.won, divisor, 45, 1, 'Win'));
	
	if (session_game_count > 4)
		return;
	
	if (player_data.total_games > 0)
	{
		$('#account_panel').show();
		$('#super_bonus_chart').show().css('left', '365px');
		if (SOUND.ready == true)
			$('#sound_setting').show();
		$('#stats_header').html('[ <a href=# onclick="reset_stats(); return false;">reset</a> ]');
	}
	
	if (player_data.total_games > 1)
	{
		$('#ad_unit').show();
		$('#contact_area').show();
		$('#links').css('left', '550px');
		//$('#promo').show();
	}
	
	if (player_data.total_games > 2)
	{
		$('#recent_winners').show();
	}
	
	if (player_data.total_games > 3 && $('#logo').css('top') == '12px')
	{
		$('#logo').delay(700).animate({ top: '+=12' }, 500, function() {
    		$('#promo').show();
  		});
	}
	
	if (player_data.username)
	{
		$('#account_panel').css('color', '#000');
		$('#account_panel').html('Welcome, ' + player_data.username + ' [ <a href=# onclick="logout(); return false;">Logout</a> ]');
	}
}

function showPercentage(value, divisor, avg, mul, type)
{
	if (divisor == 0 || isNaN(value))
		return '--';
	
	var percent = (parseInt(value)/parseInt(divisor))*100;
	
	var symbol = '%';
	if (player_data.games_played >= 50)
	{
		var calc_percent = percent * mul;
		symbol = '<span class="avg_percent" title="Your ' + type + ' % is about average (avg. is ' + (avg*mul) + '%)">%</span>';
		if (calc_percent > avg + 3)
			symbol = '<span class="good_percent" title="Your ' + type + ' % is better than average (avg. is ' + (avg*mul) + '%)">%</span>';
		else if (calc_percent < avg - 3)
			symbol = '<span class="bad_percent" title="Your ' + type + ' % is worst than average (avg. is ' + (avg*mul) + '%)">%</span>';
	}
	
	var whole = Math.round( percent*10 );
	if (whole % 10 == 0)
		return whole/10 + '.0' + symbol;
	return whole/10 + symbol;
}

function update_stats(ante, raise, queens_up, triple, queens_win, game_result, net, bank_roll, p_hand, d_hand, player_hand_val)
{
	player_data.total_games = player_data.total_games + 1;
	player_data.games_played = player_data.games_played + 1;
	player_data.triples = (triple == true ? (player_data.triples+1) : player_data.triples);
	player_data.highest = Math.max(player_data.highest, bank_roll);
	player_data.lowest = Math.min(player_data.lowest, bank_roll);
	player_data.queens_win = (queens_win ? (player_data.queens_win+1) : player_data.queens_win);
	player_data.won = (game_result == 'W' ? (player_data.won+1) : player_data.won);
	player_data.lost = (game_result == 'L' ? (player_data.lost+1) : player_data.lost);
	player_data.folded = (game_result == 'F' ? (player_data.folded+1) : player_data.folded);
	
	showYourStats();
	
	if (player_data.total_games % 10 == 0)
	{
		new_ad(true);
	}
	else if (player_data.total_games % 3 == 0)
	{
		new_ad(false);
	}
	
	if (player_hand_val > 19)
	{
		_gaq.push(['_trackEvent', 'big_hand', player_hand_val + ""]);
		setTimeout('poll_recent_winners()', 3000);
	}
	
	var params = { 'tg':	player_data.total_games, 
				   'gp':	player_data.games_played, 
				   'ht':	player_data.highest,
				   'lt':	player_data.lowest,
				   't':		player_data.triples,
				   'qw':	player_data.queens_win,
				   'w':		player_data.won,
				   'l':		player_data.lost,
				   'f':		player_data.folded,
				   'b':		bank_roll,
				   'a':		ante,
				   'r':		raise,
				   'qu':	queens_up,
				   'o': 	game_result,
				   'n': 	net,
				   'p': 	p_hand,
				   'd': 	d_hand,
				   'v': 	player_hand_val };
    
	$.ajax({
  		url: 'index/play-game?' + jQuery.param(params),
  		cache: false,
  		success: function(data) { }
	});
	
	if (game_result == 'W')
		play_sound('win');
	
	// for goal conversion & user tracking //
	session_game_count += 1;
	if (session_game_count == 1)
	{
		_gaq.push(['_trackPageview', '/game_one']);
		
		_gaq.push(['_trackEvent', 'session_type', (player_data.total_games == 1 ? 'new_user' : 'returning_user')]);
	}
	else if (session_game_count == 50)
	{
		_gaq.push(['_trackPageview', '/game_fifty']);
	}
}

function login()
{
	_gaq.push(['_trackEvent', 'login', 'click']);
	
	$('#login_msg').html('');
	
	$("#login_dialog").dialog({
		resizable: false,
		position: [70, 50],
		height:'auto',
		width:335,
		modal: true,
		buttons: {
			'Login': function() {
				_gaq.push(['_trackEvent', 'login', 'set']);
				var params = {'u':$('#l_username').val(), 'p':$('#l_password').val()};
				
				$(":button:contains('Login')").attr("disabled","disabled");
				$.ajax({
  					url: 'index/login?' + jQuery.param(params),
  					cache: false,
  					success: function(data) {
  						$(":button:contains('Login')").attr("disabled","disabled");
  						if (data.status == 'error')
  							$('#login_msg').html(data.msg);
  						else
  						{
  							session_game_count = 0;
  							loadPlayerStats(data);
							setBankAndBets(data);
							showYourStats();
							$('#start_here').hide();
	  						$("#login_dialog").dialog('close');
	  					}
  					}
				});
			},
			'Cancel': function() {
				_gaq.push(['_trackEvent', 'login', 'cancel']);
				$(this).dialog('close');
			}
		}
	});
	
	$('#l_username').focus();
}

function logout()
{
	$.ajax({
  		url: 'index/logout',
  		success: function(data) {
  			location.reload(true);
   		}
	});
}

function signup()
{
	_gaq.push(['_trackEvent', 'save_stats', 'click']);
	
	var allFields = $([]).add($('#s_username')).add($('#s_password')).add($('#confirm_password'));
	allFields.removeClass('ui-state-highlight');
	$('#signup_msg').html('');
	
	$("#signup_dialog").dialog({
		resizable: false,
		position: [70, 50],
		height:'auto',
		width:410,
		modal: true,
		buttons: {
			'Create': function() {
				_gaq.push(['_trackEvent', 'save_stats', 'create']);
				
				allFields.removeClass('ui-state-highlight');
				
				if ($('#s_username').val().length < 4)
				{
					$('#s_username').addClass('ui-state-highlight');
					$('#signup_msg').html("Username must be at least 4 chars.");
					return;
				}
				
				if ($('#s_password').val().length < 6)
				{
					$('#s_password').addClass('ui-state-highlight');
					$('#signup_msg').html("Password must be at least 6 chars.");
					return;
				}
				
				//if ($('#s_password').val() != $('#confirm_password').val())
				//{
				//	$('#confirm_password').addClass('ui-state-highlight');
				//	$('#signup_msg').html("Please verify your password again.");
				//	return;
				//}
				
				var params = {'u':$('#s_username').val(), 'p':$('#s_password').val()};
				
				$(":button:contains('Create')").attr("disabled","disabled");
				$.ajax({
  					url: 'index/signup?' + jQuery.param(params),
  					cache: false,
  					success: function(data) {
  						$(":button:contains('Create')").removeAttr("disabled");
  						if (data.status == 'ok')
  						{
  							$('#start_here').hide();
  							$('#account_panel').css('color', '#000');
							$('#account_panel').html('Welcome, ' + $('#s_username').val() + ' [ <a href=# onclick="logout(); return false;">Logout</a> ]');
	  						$("#signup_dialog").dialog('close');
	  					}
	  					else
	  						$('#signup_msg').html(data.msg);
  					}
				});
			}
		}
	});
	
	$('#s_username').focus();
}


function reset_stats()
{
	_gaq.push(['_trackEvent', 'reset_stats', 'click']);
	
	$("#stat_reset_confirm").dialog({
		resizable: false,
		position: [270, 40],
		height:'auto',
		modal: true,
		buttons: {
			'Reset': function() {
				stat_reset_count += 1;
				_gaq.push(['_trackEvent', 'reset_stats', 'set']);
				
				$('#hands_played').html(0);
				$('#triples').html(0);
				$('#most_money').html(formatTotalAmount(bank_roll));
				$('#least_money').html(formatTotalAmount(bank_roll));
				$('#queens_win_percentage').html('--');
				$('#fold_percentage').html('--');
				$('#lose_percentage').html('--');
				$('#win_percentage').html('--');
	
				$.ajax({
  					url: 'index/reset-stats?b=' + bank_roll,
  					cache: false,
  					success: function(data) {
					    loadPlayerStats(data);
  					}
				});
				
				$(this).dialog('close');
			},
			'Cancel': function() {
				$(this).dialog('close');
			}
		}
	});
}

function reset_money()
{
	_gaq.push(['_trackEvent', 'reset_money', 'click']);
	
	$("#total_withdrawn").html('<u>Total withdrawn to date:</u> ' + formatTotalAmount(player_data.total_withdrawn));
	
	$("#money_reset_confirm").dialog({
		resizable: false,
		position: [540, 270],
		height:'auto',
		width:418,
		modal: true,
		buttons: {
			'$10,000': function() {
				bank_roll = 10000;
				set_money();
				$(this).dialog('close');
			},
			'$1,000': function() {
				bank_roll = 1000;
				set_money();
				$(this).dialog('close');
			},
			'$100': function() {
				bank_roll = 100;
				set_money();
				$(this).dialog('close');
			}
		}
	});
}

function set_money()
{
	money_reset_count += 1;
	
	_gaq.push(['_trackEvent', 'reset_money', 'set', "" + bank_roll, money_reset_count]);
	
	$('#m').html(formatTotalAmount(bank_roll));
	$('#w').html(' ');
	
	player_data.total_withdrawn += bank_roll;
	
	var params = {'b':bank_roll, 't':player_data.total_withdrawn};
	$.ajax({
  		url: 'index/reset-money?' + jQuery.param(params),
  		cache: false,
  		success: function(data) {
		    
  		}
	});
	play_sound('reset');
}

function toggle_sound()
{
	_gaq.push(['_trackEvent', 'toggle_sound', ($('#sound').attr('checked') ? 'on' : 'off')]);
	
	$.ajax({
  		url: 'index/toggle-sound?v=' + ($('#sound').attr('checked') ? '1' : '0'),
  		cache: false,
  		success: function(data) {
		    
  		}
	});
}

function play_sound(sound)
{
	if ($('#sound').attr('checked'))
		$('#SoundBoard')[0].playSound(sound);
}

function poll_recent_winners()
{
	$.ajax({
  		url: 'index/poll-recent-winners',
  		cache: false,
  		success: function(data) {
		    $('#str8_flush').html(formatWinner(data['Straight Flush']));
		    $('#quads').html(formatWinner(data['4-of-a-Kind']));
		    $('#quad_aces').html(formatWinner(data['Four Aces']));
  		}
	});
}

function formatWinner(data)
{
	var winnerHTML = data.ago + ' by ' + data.player + ' The hand won <b>' + formatTotalAmount(data.take) + '</b>';
	if (data.isYou)
		return winnerHTML + '<font color="#f3831e"> <-- THATS YOU!</font>';
	return winnerHTML;
}

function new_ad(new_topic)
{
	var new_url = (new_topic ? "/main.php?topic=vegas&game=" : "/main.php?game=") + session_game_count;
	if ($.browser.msie)
	{
		var new_iframe = $('#game').clone();
		new_iframe.src = new_url;
		$('#game').replaceWith(new_iframe);
	}
	else
	{
		$('#game').attr('src', new_url);
	}
}

