var ranks=["Card", "blank", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"];
var suits=["BackRed", "Clubs", "Diamonds", "Hearts", "Spades"];
var hand_names=["blank", "blank", "blank", "blank", "blank", "blank", "blank", 
		  	    "7-High", "8-High", "9-High", "10-High", "Jack-High", "Queen-High", "King-High", "Ace-High", 
		        "Pair", "Two-Pair", "Straight", "Flush", "3-of-a-Kind", "Straight Flush!", "4-of-a-Kind!"];

var player, dealer, unsorted_player, unsorted_dealer, player_four, dealer_four, player_val, dealer_val, player_hand_val;
var player_cards, dealer_cards, player_card_not_used, dealer_card_not_used, folded, winner, bet_amount, queens_amt, net_win, triple_down, game_result;

var speed = 0.7; //1.0;
var folded_speed = 0.2; //0.4;
var bank_roll;// = '<font size=5>loading...</font>';

preload_images();


function deal_me()
{
	if ($('#deal').hasClass('buttonDis2'))
		return;
	
	if (bet_check())
	{
		folded = false;
		reset();
		
		$('#start_here').hide();
		
		$('#deal').attr('class','buttonDis2');
		$('#raise').val('');
		$('#queens_up').attr('readonly', true);
		$('#queens_up_bg').attr('class','bet_input_disabled');
		$('#ante').attr('readonly', true);
		$('#ante_bg').attr('class','bet_input_disabled');
		$('#bonus').attr('readonly', true);
		$('#super_bonus_bg').attr('class','bet_input_disabled');
		$('#raise').attr('readonly', true);
		$('#raise_bg').attr('class','bet_input_disabled');
		setTimeout("show_card(0, 'player');", 700*speed);
	}
};

function deal_player()
{
	player = generate_hand(new Array());
	unsorted_player = copy_array(player);
	player.sort(card_sort_fn);
	player_four = calc_hand(player);
	player_val = eval_hand(player_four);
	player_cards = generate_images(unsorted_player);
	player_card_not_used = cardMissing(player, player_four);
};

function deal_dealer()
{
	dealer = generate_hand(player);
	unsorted_dealer = copy_array(dealer);
	dealer.sort(card_sort_fn);
	dealer_four = calc_hand(dealer);
	dealer_val = eval_hand(dealer_four);
	dealer_cards = generate_images(unsorted_dealer);
	dealer_card_not_used = cardMissing(dealer, dealer_four);
};

function reset()
{
	if (player_cards == null)
		return;
	
	$('#p').hide();
	$('#d').hide();
	$('#w').html(' ');
	$('#win').hide();
	$('#lose').hide();
	$('#payout').hide();
	
	$('#Qup').attr('src', 'images/Q-up0.gif');
	$('#SuperB').attr('src', 'images/Super-b0.gif');
		
	for (var i=0; i<player_cards.length; i++)
	{
		player_cards[i] = getImage(0);
		dealer_cards[i] = getImage(0);
		
		$('#p' + i).attr('src',player_cards[i]).css('border', "solid 3px white");
		$('#d' + i).attr('src',dealer_cards[i]).css('border', "solid 3px white");
	}
};

function show_dealer()
{
	$('#play').attr('class','buttonDis2');
	$('#triple').attr('class','buttonDis3');
	$('#fold').attr('class','buttonDis2');

	var show_speed = speed;
	if (folded)
		show_speed = folded_speed;
	setTimeout("show_card(0, 'dealer');", 200*show_speed);
};

function fold()
{
	if ($('#fold').hasClass('buttonDis2'))
		return;
	
	if ($('#queens_up').val() == '' || $('#queens_up').val().charAt(0) == ' ')
		queens_amt = 0;
	else
		queens_amt = parseInt($('#queens_up').val());
		net_win = 0;
	net_win = net_win - queens_amt;
	net_win = net_win - parseInt($('#ante').val());
	net_win = net_win - parseInt($('#bonus').val());
	
	bank_roll = bank_roll + net_win;
	
	triple_down = false;
	folded = true;
	show_dealer();
};

function play_hand(multipler)
{
	if (multipler == 1 && $('#play').hasClass('buttonDis2'))
		return;
	if (multipler == 3 && $('#triple').hasClass('buttonDis3'))
		return;
	
	net_win = 0;
	
	if (multipler == 3)
		triple_down = true;
	else
		triple_down = false;
	
	if ($('#queens_up').val() == '' || $('#queens_up').val().charAt(0) == ' ')
		queens_amt = 0;
	else
		queens_amt = parseInt($('#queens_up').val());

	net_win = net_win - queens_amt;
	net_win = net_win - parseInt($('#ante').val());
	net_win = net_win - parseInt($('#bonus').val());
	
	if ((parseInt($('#ante').val())*multipler) > bank_roll)
		$('#raise').val(bank_roll);
	else
		$('#raise').val(parseInt($('#ante').val()) * multipler);
	
	net_win = net_win - parseInt($('#raise').val());
	bet_amount = Math.abs(net_win);
	bank_roll = bank_roll + net_win;
	
	$('#m').html(formatTotalAmount(bank_roll));
	
	folded = false;
	show_dealer();
};

function bet_check()
{
	var ante_bet = $('#ante').val();
	var bonus_bet = $('#bonus').val();
	var queens_bet = $('#queens_up').val();

	if (isNaN(ante_bet) || isNaN(queens_bet) || isNaN(bonus_bet) || 
		ante_bet.charAt(0) == ' ' || queens_bet.charAt(0) == ' ' || bonus_bet.charAt(0) == ' ')
	{
		$('#w').html('Bets must be a number');
		$('#w').hide().fadeIn('slow');
	    return false;
	}
	if (ante_bet == '')
	{
		$('#w').html('Ante cannot be blank');
		$('#w').hide().fadeIn('slow');
		return false;
	}
	if (ante_bet != bonus_bet)
	{
		$('#w').html('Ante must equal Super Bonus');
		$('#w').hide().fadeIn('slow');
		return false;
	}
	if (queens_bet == '')
	{
		queens_bet = 0;
	}
	
	ante_bet = parseInt(ante_bet);
	bonus_bet = parseInt(bonus_bet);
	queens_bet = parseInt(queens_bet);
	
	if (ante_bet < 1)
	{
		$('#w').html('Ante must be at least $1');
		$('#w').hide().fadeIn('slow');
		return false;
	}
	if (ante_bet > 100000000)
	{
		$('#w').html('Max bet is $100,000,000');
		$('#w').hide().fadeIn('slow');
		return false;
	}
	if (queens_bet < 0)
	{
		$('#w').html('Queens Up must be > 0');
		$('#w').hide().fadeIn('slow');
		return false;
	}
	if (queens_bet > 100000000)
	{
		$('#w').html('Max Queens Up bet is $100,000,000');
		$('#w').hide().fadeIn('slow');
		return false;
	}
	if ((ante_bet*3) + queens_bet > bank_roll)
	{
		$('#w').html('<p style="color:red; font-size:0.85em;">Not Enough Money!<br>[ <a href=# onclick="reset_money();">reset bank</a> ]</p>');
		$('#w').hide().fadeIn('slow');
		return false;
	}
	$('#w').html(' ');
	return true;
};

function calc_winner()
{
	winner = 'It\'s a Draw';
	game_result = 'D';
	if (player_val > dealer_val)
	{
		winner = 'You Win!';
		game_result = 'W';
	}
	else if (player_val < dealer_val)
	{
		winner = 'You Lose!';
		game_result = 'L';
	}
	else
	{
		var tie_break = break_tie(player_four, dealer_four, player_val);
		if (tie_break > 0)
		{
			winner = 'You Win!';
			game_result = 'W';
		}
		else if(tie_break < 0)
		{
			winner = 'You Lose!';
			game_result = 'L';
		}
	}
	
	if (folded)
	{
		winner = ((game_result == 'L' && dealerQualifies()) ? 'Good Fold!' : 'You folded.');
		game_result = 'F';
		
		
		if (queens_amt == 0)
			$('#queens_up_payout').html('$0');
		else
			$('#queens_up_payout').html(formatTotalAmount(-queens_amt));
		$('#ante_payout').html(formatTotalAmount(-parseInt($('#ante').val())));
		$('#play_payout').html('Folded');
		$('#super_bonus_payout').html('$0');

		$('#total_payout').html(formatTotalAmount(net_win));
		$('#total_payout').css('color', 'red');
		$('#m').html(formatTotalAmount(bank_roll));
		if ($('#rules').css('display') == 'block')
			$("#rules").delay(100).hide('drop',{},350);
		$("#payout").delay(150).show('drop',{},350);
		
		
		var p_hand = '';
		for (var i=0; i<player.length; i++)
		{
			p_hand += player[i] + ' ';
		}
		
		var d_hand = '';
		for (var i=0; i<dealer.length; i++)
		{
			d_hand += dealer[i] + ' ';
		}
		
		update_stats($('#ante').val(), 0, $('#queens_up').val(), triple_down, isQueensUpWin(), game_result, net_win, bank_roll, p_hand, d_hand, player_val);
	}
	else
		pay_bets();
};

function pay_bets()
{
	net_win = 0;
	var ante_net = -parseInt($('#ante').val());
	var play_net = -parseInt($('#raise').val());

	if(dealerQualifies())
	{
		if (winner == 'You Win!')
		{
			net_win = net_win + (parseInt($('#ante').val()) * 2);
			ante_net = parseInt($('#ante').val());
			net_win = net_win + (parseInt($('#raise').val()) * 2);
			play_net = parseInt($('#raise').val());
		}
		else if (winner == 'Draw')
		{
			net_win = net_win + parseInt($('#ante').val());
			ante_net = 0;
			net_win = net_win + parseInt($('#raise').val());
			play_net = 0;
		}
	
	}
	else
	{   //deal doesn't qualify
		winner = 'Dealer doesn\'t qualify';
		net_win = net_win + parseInt($('#ante').val());
		ante_net = 0;
		net_win = net_win + (parseInt($('#raise').val()) * 2);
		play_net = parseInt($('#raise').val());
	}
	
	var queens_net = pay_queens_up();
	var super_bonus_net = pay_super_bonus();

	if ((net_win - bet_amount) < 0)
	{
		$('#total_payout').html(formatTotalAmount((net_win - bet_amount)));
		$('#total_payout').css('color', '#d23838');
	}
	else
	{
		$('#total_payout').html('+$' + formatTotalNumber(net_win - bet_amount));
		$('#total_payout').css('color', '#029666');
	}
	if ($('#rules').css('display') == 'block')
		$("#rules").delay(100).hide('drop',{},350);
	$("#payout").delay(150).show('drop',{},350);

	bank_roll = bank_roll + net_win;
	$('#m').html(formatTotalAmount(bank_roll));

	var p_hand = '';
	for (var i=0; i<player.length; i++)
	{
		p_hand += player[i] + ' ';
	}
	
	var d_hand = '';
	for (var i=0; i<dealer.length; i++)
	{
		d_hand += dealer[i] + ' ';
	}
	
	update_stats($('#ante').val(), $('#raise').val(), $('#queens_up').val(), triple_down, isQueensUpWin(), game_result, (net_win - bet_amount), bank_roll, p_hand, d_hand, player_hand_val);

	// show payout breakdown here
	$('#queens_up_payout').html(formatTotalAmount(queens_net));
	$('#ante_payout').html(formatTotalAmount(ante_net));
	$('#play_payout').html(formatTotalAmount(play_net));
	$('#super_bonus_payout').html(formatTotalAmount(super_bonus_net));
	
};

function pay_queens_up()
{
	if (queens_amt == 0)
		return 0;

	var before_payment = net_win;
	switch(player_val) {
		case 21:
			net_win = net_win + (parseInt($('#queens_up').val()) * 51);
			$('#Qup').attr('src', 'images/Q-up7.gif');
			break;
		case 20:
			net_win = net_win + (parseInt($('#queens_up').val()) * 41);
			$('#Qup').attr('src', 'images/Q-up6.gif');
			break;
		case 19:
			net_win = net_win + (parseInt($('#queens_up').val()) * 9);
			$('#Qup').attr('src', 'images/Q-up5.gif');
			break;
		case 18:
			net_win = net_win + (parseInt($('#queens_up').val()) * 5);
			$('#Qup').attr('src', 'images/Q-up4.gif');
			break;
		case 17:
			net_win = net_win + (parseInt($('#queens_up').val()) * 4);
			$('#Qup').attr('src', 'images/Q-up3.gif');
			break;
		case 16:
			net_win = net_win + (parseInt($('#queens_up').val()) * 3);
			$('#Qup').attr('src', 'images/Q-up2.gif');
			break;
		case 15:
			if (isPair(player_four) > 120000) {
				net_win = net_win + (parseInt($('#queens_up').val()) * 2);
				$('#Qup').attr('src', 'images/Q-up1.gif');
			}
			break;
		default:
			break;
	}

	return (net_win - before_payment - parseInt($('#queens_up').val()));
};

function pay_super_bonus()
{
	var before_payment = net_win;
	
	// player doesn't lose super bonus if he/she has straight or better but his hand still loses
	if (player_val >= 17 && game_result == 'L')
		net_win = net_win + parseInt($('#bonus').val());
	else if (game_result == 'W' || game_result == 'D' || !dealerQualifies())
		net_win = net_win + parseInt($('#bonus').val());

	player_hand_val = player_val;
	
	switch(player_val) {
		case 21: 
			if (isFourOfKind(player_four) == 14) {
				player_hand_val += 1;
				net_win = net_win + (parseInt($('#bonus').val()) * 200);
				$('#SuperB').attr('src', 'images/Super-b6.gif');
			} else {
				net_win = net_win + (parseInt($('#bonus').val()) * 30);
				$('#SuperB').attr('src', 'images/Super-b5.gif');
			}
			break;
		case 20:
			net_win = net_win + (parseInt($('#bonus').val()) * 15);
			$('#SuperB').attr('src', 'images/Super-b4.gif');
			break;
		case 19:
			net_win = net_win + (parseInt($('#bonus').val()) * 2);
			$('#SuperB').attr('src', 'images/Super-b3.gif');
			break;
		case 18:
			net_win = net_win + Math.floor((parseInt($('#bonus').val()) * 1.5));
			$('#SuperB').attr('src', 'images/Super-b2.gif');
			break;
		case 17:
			net_win = net_win + (parseInt($('#bonus').val()) * 1);
			$('#SuperB').attr('src', 'images/Super-b1.gif');
			break;
		default:
			break;
	}
	
	return (net_win - before_payment - parseInt($('#bonus').val()));
}

function show_card(card, who)
{
	if (who == 'player')
	{
		if (card == 0)
			deal_player();
		$('#p' + card).attr('src', player_cards[card]);
	}
	else
	{
		if (card == 0)
			deal_dealer();
		$('#d' + card).attr('src', dealer_cards[card]);
	}
	if (card == 4)
	{
		if (who == 'player')
		{
			$('#play').attr('class','button2');
			$('#fold').attr('class','button2');
			if (canTriple())
				$('#triple').attr('class','button3');
			
			setTimeout("show_eval('player');", 800*speed);
		}
		else
			setTimeout("show_eval('dealer');", 600*speed);
	}
	else
	{
		var show_speed = speed;
		if (folded && who == 'dealer')
			show_speed = folded_speed;
		setTimeout("show_card(" + (card+1) + ", '" + who + "');", 500*show_speed);
	}
		
	if (folded == false)
		play_sound('deal');
};

function show_eval(who)
{
	if (who == 'player')
	{
		for (var i=0; i<unsorted_player.length; i++)
		{
			if (player_card_not_used == unsorted_player[i])
				$('#p'+i).css('border', 'solid 3px #F5933B');
			else
				$('#p'+i).css('border', 'solid 3px #3BA4F5');
		}
		$('#p').html(hand_names[player_val]);
		$('#p').show();
		
				
		if (canTriple())
			play_sound('big_win');
	}
	else
	{
		for (var i=0; i<unsorted_dealer.length; i++)
		{
			if (dealer_card_not_used == unsorted_dealer[i])
				$('#d'+i).css('border', 'solid 3px #F5933B');
			else
				$('#d'+i).css('border', 'solid 3px #3BA4F5');
		}
		$('#d').html(hand_names[dealer_val]);
		$('#d').show();
		
		setTimeout("show_winner();", 350*speed);
	}
};

function show_winner()
{
	calc_winner();
	
	$('#w').html(winner);
	//$('#w').hide().fadeIn(250);
	$('#queens_up').removeAttr('readonly');
	$('#ante').removeAttr('readonly');
	$('#bonus').removeAttr('readonly');
	$('#raise').removeAttr('readonly');
	$('#play').attr('class','buttonDis2');
	$('#triple').attr('class','buttonDis3');
	$('#fold').attr('class','buttonDis2');
	$('#deal').attr('class','button2');
	$('#queens_up_bg').attr('class','bet_input');
	$('#super_bonus_bg').attr('class','bet_input');
	$('#ante_bg').attr('class','bet_input');
};

function getImage(card)
{
	return "images/" + ranks[get_rank(card)] + suits[get_suit(card)] + ".gif";
};

function calc_hand(hand)
{
	var best_hand = 0;
	var best_hand_val = 0;
	var hand_value = 0;
	var without = 4;
	var i = 0, j = 0;
	for (i=0; i<hand.length; i++)
	{
		var four_hand = new Array(4);
		var idx = 0;
		for (j=0; j<hand.length; j++)
		{
			if (j != without)
			{
				four_hand[idx] = hand[j];
				idx++;
			}
		}
		hand_value = eval_hand(four_hand);
		if (hand_value > best_hand_val)
		{
			best_hand_val = hand_value;
			best_hand = four_hand;
		}
		without--;
	}
	return best_hand;
};

function eval_hand(hand)
{
	if (isFourOfKind(hand) > 0)
		return 21;
	if (isStraightFlush(hand) > 0)
		return 20;
	if (isThreeOfKind(hand) > 0)
		return 19;
	if (isFlush(hand) > 0)
		return 18;
	if (isStraight(hand) > 0)
		return 17;
	if (isTwoPair(hand) > 0)
		return 16;
	if (isPair(hand) > 0)
		return 15;
	return highCard(hand);
};

function break_tie(hand1, hand2, type)
{
	switch(type) {
		case 21: return isFourOfKind(hand1) - isFourOfKind(hand2);
		case 20: return isStraightFlush(hand1) - isStraightFlush(hand2);
		case 19: return isThreeOfKind(hand1) - isThreeOfKind(hand2);
		case 18: return isFlush(hand1) - isFlush(hand2);
		case 17: return isStraight(hand1) - isStraight(hand2);
		case 16: return isTwoPair(hand1) - isTwoPair(hand2);
		case 15: return isPair(hand1) - isPair(hand2);
		default: return isHighCard(hand1) - isHighCard(hand2);
	}
};

function isFourOfKind(hand)
{
	var start_rank = get_rank(hand[0]);
	var end_rank = get_rank(hand[3]);
	if (start_rank != end_rank)
		return -1;
	return start_rank;
};

function isStraightFlush(hand)
{
	var flush = isFlush(hand);
	var straight = isStraight(hand);
	if (flush > 0 && straight > 0)
		return straight;
	return -1;
};

function isThreeOfKind(hand)
{
	if (get_rank(hand[0]) == get_rank(hand[2]))
		return get_rank(hand[0]);
	if (get_rank(hand[1]) == get_rank(hand[3]))
	    return get_rank(hand[1]);
	return -1;
};

function isFlush(hand)
{
	var current_suit = get_suit(hand[0]);
	var result = get_rank(hand[0]) * 1000000;
	var multipler = 10000;
	var i = 0;
	for (i=1; i<4; i++)
	{
		if (current_suit != get_suit(hand[i]))
			return -1;
		result = result + (multipler * get_rank(hand[i]));
		multipler = multipler / 100;
	}
	return result;
};

function isStraight(hand)
{
	var current_rank = get_rank(hand[0]);
	var high_card = current_rank;
	var ace_case = false;
	if (current_rank == 14)
		ace_case = true;
	var i = 0;
	for (i=1; i<4; i++)
	{
		if (ace_case && i == 1 && get_rank(hand[i]) == 4)
			high_card = 4;
		else if (current_rank != get_rank(hand[i])+1)
			return -1;
		
		current_rank = get_rank(hand[i]);
	}
	return high_card;
};

function isTwoPair(hand)
{
	if (get_rank(hand[0]) == get_rank(hand[1]) &&
	    get_rank(hand[2]) == get_rank(hand[3]))
	    	return (get_rank(hand[0])*100) + get_rank(hand[2]);
	return -1;
};

function isPair(hand)
{
    if (get_rank(hand[0]) == get_rank(hand[1]))
    	return (get_rank(hand[0])*10000) + (get_rank(hand[2])*100) + get_rank(hand[3]);
    if (get_rank(hand[1]) == get_rank(hand[2]))
    	return (get_rank(hand[1])*10000) + (get_rank(hand[0])*100) + get_rank(hand[3]);
    if (get_rank(hand[2]) == get_rank(hand[3]))
    	return (get_rank(hand[2])*10000) + (get_rank(hand[0])*100) + get_rank(hand[1]);	
	return -1;
};

function isHighCard(hand)
{
	var result = 0;
	var multipler = 1000000;
	var i = 0;
	for (i=0; i<4; i++)
	{
		result = result + (multipler * get_rank(hand[i]));
		multipler = multipler / 100;
	}
	return result;
};

function highCard(hand) { return get_rank(hand[0]); };

function get_suit(card) { return Math.floor(card/100); };
function get_rank(card) { return card%100; };

function generate_hand(other_hand)
{
	var hand = new Array(5)
    var card = 0;
    var i = 0, j = 0;
    var repeat = false;
    for (i=0; i<5; i++)
    {
    	repeat = false;
        card = generate_card();

        if (cardIn(other_hand, card))
        	repeat = true;
        else
        {
        	for (j=0; j<i; j++)
            {
        	    if (hand[j] == card)
                {
            	    repeat = true;
                    break;
                }
            }
        }

        if (repeat)
        	i--;
        else
            hand[i] = card;
    }
    return hand;
};

function cardIn(hand, card)
{
	var i=0;
	for (i=0; i<hand.length; i++)
	{
		if (hand[i] == card)
			return true;
	}
	return false;
};

function cardMissing(hand5, hand4)
{
	var i=0;
	for (i=0; i<hand5.length; i++)
	{
		if (!cardIn(hand4, hand5[i]))
			return hand5[i];
	}
	return -1;
};

function dealerQualifies()
{
	if (dealer_val >= 15) //pair or better
		return true;
	if (highCard(dealer_four) >= 13) //king-high or better
		return true;
	return false;
};

function isQueensUpWin()
{
	if (player_val >= 16) //two-pair or better
		return true;
	if (player_val == 15) //pair
	{
		if (isPair(player_four) > 120000)
			return true;
	}
	return false;
};

function canTriple()
{
	if (player_val >= 16) //two-pair or better
		return true;
	if (player_val == 15) //pair
	{
		if (isPair(player_four) > 140000)
			return true;
	}
	return false;
};

function generate_card()
{
	var suit = generate_suit()*100;
	var rank = generate_rank();
	return suit + rank;
};

function generate_suit()
{
	return Math.floor(Math.random()*4)+1;
};

function generate_rank()
{   //Ace = 14
	return Math.floor(Math.random()*13)+2;
};

function generate_images(hand)
{
	var images = new Array(hand.length);
	var i=0;
	for (i=0; i<hand.length; i++)
	{
		images[i] = getImage(hand[i]);
	}
	return images;
};

function card_sort_fn (a, b) {
  var aRank = get_rank(a);
  var bRank = get_rank(b);
  
  if (aRank < bRank) return 1;
  if (aRank > bRank) return -1;

  return 0;
};

function copy_array (arr) {
	var new_arr = new Array(arr.length);
	for (var i=0; i<arr.length; i++)
		new_arr[i] = arr[i];
	return new_arr;
};

function makeFaster()
{
	if ($('#faster').attr('checked'))
	{
		speed = 0.2;
		folded_speed = 0.1;
	}
	else
	{
		speed = 1.0;
		folded_speed = 0.4;
	}
};

function preload_images()
{
	for (var i=2; i<=14; i++)
	{
		for (var j=1; j<=4; j++)
		{
			var card = (j*100) + i;
			var preload_me = new Image(175,50);
			preload_me.src = getImage(card);
		}
	}
};

function formatTotalAmount(number)
{
	if (number < 0)
		return '-$' + formatTotalNumber(Math.abs(number));
	return '$' + formatTotalNumber(number);
};

function formatTotalNumber(number)
{
	if (number != parseInt(number))
		return number;
	
	var buffer = "";
	
	while (number > 999)
	{
		var thou = (number%1000).toString();
		if (thou.length == 1)
		{
			thou = "00" + thou;
		}
		else if (thou.length == 2)
		{
			thou = "0" + thou;
		}
		buffer = "," + thou + buffer;
		number = Math.floor(number/1000);
	}
	buffer = number + buffer;
	
	return buffer;
};
