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","6-High","7-High","8-High","9-High","10-High","Jack-High","Queen-High","King-High","Ace-High","Pair","Two-Pair","3-of-a-Kind","Straight","Flush","Full-House","4-of-a-Kind!","Straight Flush!","Royal Flush!"];var player,dealer,unsorted_player,unsorted_dealer,player_val,dealer_val;var player_cards,dealer_cards,folded,winner,bet_amount,net_win,jackpot_winnings,game_result;var speed=0.7;var folded_speed=0.2;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("");$("#jackpot").attr("disabled",true);$("#ante").attr("readonly",true);$("#ante_bg").attr("class","bet_input_disabled");$("#raise").attr("readonly",true);$("#raise_bg").attr("class","bet_input_disabled");$("#payout_outline").hide();$("#jackpot_payout_outline").hide();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_val=eval_hand(player);player_cards=generate_images(unsorted_player)}function deal_dealer(){dealer=generate_hand(player);unsorted_dealer=copy_array(dealer);dealer.sort(card_sort_fn);dealer_val=eval_hand(dealer);dealer_cards=generate_images(unsorted_dealer);play_sound("deal");$("#d4").attr("src",dealer_cards[4])}function reset(){if(player_cards==null){return}$("#p").hide();$("#d").hide();$("#w").html(" ");$("#win").hide();$("#lose").hide();$("#payout").hide();for(var a=0;a<player_cards.length;a++){player_cards[a]=getImage(0);dealer_cards[a]=getImage(0);$("#p"+a).attr("src",player_cards[a]).css("border","solid 3px white");$("#d"+a).attr("src",dealer_cards[a]).css("border","solid 3px white")}}function show_dealer(){$("#play").attr("class","buttonDis2");$("#fold").attr("class","buttonDis2");var a=speed;if(folded){a=folded_speed}setTimeout("show_card(0, 'dealer');",200*a)}function fold(){if($("#fold").hasClass("buttonDis2")){return}net_win=$("#jackpot").attr("checked")?-1:0;net_win-=parseInt($("#ante").val());PLAYER.bank_roll=PLAYER.bank_roll+net_win;folded=true;show_dealer()}function play_hand(){if($("#play").hasClass("buttonDis2")){return}net_win=$("#jackpot").attr("checked")?-1:0;net_win-=parseInt($("#ante").val());$("#raise").val(parseInt($("#ante").val())*2);net_win-=parseInt($("#raise").val());bet_amount=Math.abs(net_win);PLAYER.bank_roll+=net_win;$("#m").html(formatTotalAmount(PLAYER.bank_roll));folded=false;show_dealer()}function bet_check(){var b=$("#ante").val();var a=$("#jackpot").attr("checked")?1:0;if(isNaN(b)||b.charAt(0)==" "){$("#w").html("Bets must be a number");$("#w").hide().fadeIn("slow");return false}if(b==""){$("#w").html("Ante cannot be blank");$("#w").hide().fadeIn("slow");return false}if(a==""){a=0}b=parseInt(b);if(b<1){$("#w").html("Ante must be at least $1");$("#w").hide().fadeIn("slow");return false}if(b>100000000){$("#w").html("Max bet is $100,000,000");$("#w").hide().fadeIn("slow");return false}if((b*3)+a>PLAYER.bank_roll){$("#w").html('<p style="color:red; font-size:0.85em;">Not Enough Money! [ <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 c=break_tie(player,dealer,player_val);if(c>0){winner="You Win!";game_result="W"}else{if(c<0){winner="You Lose!";game_result="L"}}}}if(folded){winner=((game_result=="L"&&dealerQualifies())?"Good Fold!":"You folded.");game_result="F";if($("#jackpot").attr("checked")){$("#jackpot_payout").html("-$1")}else{$("#jackpot_payout").html("--")}$("#ante_payout").html(formatTotalAmount(-parseInt($("#ante").val())));$("#play_payout").html("Folded");$("#total_payout").html(formatTotalAmount(net_win));$("#total_payout").css("color","red");$("#m").html(formatTotalAmount(PLAYER.bank_roll));$("#payout").delay(150).show("drop",{},350);var a="";for(var d=0;d<player.length;d++){a+=player[d]+" "}var b="";for(var d=0;d<dealer.length;d++){b+=dealer[d]+" "}update_stats($("#ante").val(),0,($("#jackpot").attr("checked")?1:0),0,game_result,net_win,PLAYER.bank_roll,a,b,player_val)}else{pay_bets()}}function pay_bets(){net_win=0;var f=parseInt($("#ante").val());var c=parseInt($("#raise").val());if(dealerQualifies()){if(game_result=="L"){f*=-1;c*=-1}else{PLAYER.bank_roll+=(f+c);if(game_result=="W"){c=pay_raise(c);PLAYER.bank_roll+=(f+c)}else{f=0;c=0}}}else{winner="Dealer Doesn't Qualify";PLAYER.bank_roll+=((f*2)+c);c=0}net_win+=f;net_win+=c;var g=$("#jackpot").attr("checked")?1:0;var e=pay_jackpot(g);net_win+=e;if(e>0){PLAYER.bank_roll+=(g+e)}if(net_win<0){$("#total_payout").html(formatTotalAmount(net_win));$("#total_payout").css("color","#d23838")}else{$("#total_payout").html("+$"+formatTotalNumber(net_win));$("#total_payout").css("color","#029666")}$("#payout").delay(150).show("drop",{},350);$("#m").html(formatTotalAmount(PLAYER.bank_roll));var a="";for(var d=0;d<player.length;d++){a+=player[d]+" "}var b="";for(var d=0;d<dealer.length;d++){b+=dealer[d]+" "}update_stats($("#ante").val(),$("#raise").val(),g,Math.max(0,e),game_result,net_win,PLAYER.bank_roll,a,b,player_val);$("#ante_payout").html(formatTotalAmount(f));if(dealerQualifies()){$("#play_payout").html(formatTotalAmount(c))}else{$("#play_payout").html("Dealer Doesn't Qualify")}if(game_result=="W"&&dealerQualifies()){$("#payout_outline").css("top",(534+(Math.min(23-player_val,8)*18))+"px").show()}if(game_result=="W"&&player_val>18){$("#jackpot_payout_outline").css("top",(306+((23-player_val)*18))+"px").show()}if(player_val>21){$("#jackpot_payout").html("Calculating Jackpot...")}else{if($("#jackpot").attr("checked")){$("#jackpot_payout").html(formatTotalAmount(e))}else{$("#jackpot_payout").html("--")}}}function pay_raise(b){var a=0;switch(player_val){case 23:a=(b*100);break;case 22:a=(b*50);break;case 21:a=(b*20);break;case 20:a=(b*7);break;case 19:a=(b*5);break;case 18:a=(b*4);break;case 17:a=(b*3);break;case 16:a=(b*2);break;default:a=b;break}return a}function pay_jackpot(b){var a=0;switch(player_val){case 23:break;case 22:break;case 21:a=(b*500);break;case 20:a=(b*100);break;case 19:a=(b*50);break;default:a=-b;break}return a}function show_card(b,c){if(c=="player"){if(b==0){deal_player()}$("#p"+b).attr("src",player_cards[b])}else{if(b!=4){$("#d"+b).attr("src",dealer_cards[b])}}if(b==4){if(c=="player"){$("#play").attr("class","button2");$("#fold").attr("class","button2");setTimeout("deal_dealer();",500);setTimeout("show_eval('player');",800*speed)}else{setTimeout("show_eval('dealer');",600*speed);return}}else{var a=speed;if(folded&&c=="dealer"){a=folded_speed}setTimeout("show_card("+(b+1)+", '"+c+"');",500*a)}if(folded==false){play_sound("deal")}}function show_eval(a){if(a=="player"){$("#p").html(hand_names[player_val]);$("#p").show();if(player_val>16){play_sound("big_win")}}else{$("#d").html(hand_names[dealer_val]);$("#d").show();setTimeout("show_winner();",350*speed)}}function show_winner(){calc_winner();$("#w").html(winner);$("#jackpot").removeAttr("disabled");$("#ante").removeAttr("readonly");$("#raise").removeAttr("readonly");$("#play").attr("class","buttonDis2");$("#fold").attr("class","buttonDis2");$("#deal").attr("class","button2");$("#ante_bg").attr("class","bet_input")}function calc_hand(c){var b=0;var f=0;var a=0;var k=4;var e=0,d=0;for(e=0;e<c.length;e++){var h=new Array(4);var g=0;for(d=0;d<c.length;d++){if(d!=k){h[g]=c[d];g++}}a=eval_hand(h);if(a>f){f=a;b=h}k--}return b}function eval_hand(a){if(isRoyalFlush(a)>0){return 23}if(isStraightFlush(a)>0){return 22}if(isFourOfKind(a)>0){return 21}if(isFullHouse(a)>0){return 20}if(isFlush(a)>0){return 19}if(isStraight(a)>0){return 18}if(isThreeOfKind(a)>0){return 17}if(isTwoPair(a)>0){return 16}if(isPair(a)>0){return 15}return highCard(a)}function break_tie(c,b,a){switch(a){case 23:return isRoyalFlush(c)-isRoyalFlush(b);case 22:return isStraightFlush(c)-isStraightFlush(b);case 21:return isFourOfKind(c)-isFourOfKind(b);case 20:return isFullHouse(c)-isFullHouse(b);case 19:return isFlush(c)-isFlush(b);case 18:return isStraight(c)-isStraight(b);case 17:return isThreeOfKind(c)-isThreeOfKind(b);case 16:return isTwoPair(c)-isTwoPair(b);case 15:return isPair(c)-isPair(b);default:return isHighCard(c)-isHighCard(b)}}function isRoyalFlush(a){var b=isStraightFlush(a);if(b==14){return 1}return -1}function isStraightFlush(b){var a=isFlush(b);var c=isStraight(b);if(a>0&&c>0){return c}return -1}function isFourOfKind(a){if(get_rank(a[0])==get_rank(a[3])){return get_rank(a[0])}if(get_rank(a[1])==get_rank(a[4])){return get_rank(a[1])}return -1}function isFullHouse(a){var f=get_rank(a[0]);var e=get_rank(a[1]);var d=get_rank(a[2]);var c=get_rank(a[3]);var b=get_rank(a[4]);if(f==d&&c==b){return getCardsValue(a,[0,3])}if(d==b&&f==e){return getCardsValue(a,[2,0])}return -1}function isFlush(a){var c=get_suit(a[0]);for(var b=1;b<a.length;b++){if(c!=get_suit(a[b])){return -1}}return getCardsValue(a,[0,1,2,3,4])}function isStraight(b){var e=get_rank(b[0]);var a=e;var d=false;if(e==14){d=true}var c=0;for(c=1;c<b.length;c++){if(d&&c==1&&get_rank(b[c])==b.length){a=b.length}else{if(e!=get_rank(b[c])+1){return -1}}e=get_rank(b[c])}return a}function isThreeOfKind(a){if(get_rank(a[0])==get_rank(a[2])){return getCardsValue(a,[0,3,4])}if(get_rank(a[1])==get_rank(a[3])){return getCardsValue(a,[1,0,4])}if(get_rank(a[2])==get_rank(a[4])){return getCardsValue(a,[2,0,1])}return -1}function isTwoPair(a){var f=get_rank(a[0]);var e=get_rank(a[1]);var d=get_rank(a[2]);var c=get_rank(a[3]);var b=get_rank(a[4]);if(f==e&&d==c){return getCardsValue(a,[0,2,4])}if(f==e&&c==b){return getCardsValue(a,[0,3,2])}if(e==d&&c==b){return getCardsValue(a,[1,3,0])}return -1}function isPair(a){if(get_rank(a[0])==get_rank(a[1])){return getCardsValue(a,[0,2,3,4])}else{if(get_rank(a[1])==get_rank(a[2])){return getCardsValue(a,[1,0,3,4])}else{if(get_rank(a[2])==get_rank(a[3])){return getCardsValue(a,[2,0,1,4])}else{if(get_rank(a[3])==get_rank(a[4])){return getCardsValue(a,[3,0,1,2])}}}}return -1}function isHighCard(a){return getCardsValue(a,[0,1,2,3,4])}function getCardsValue(a,d){var c=0,e=1,b;for(b=(d.length-1);b>=0;b--){c+=get_rank(a[d[b]])*e;e*=100}return c}function highCard(a){return get_rank(a[0])}function get_suit(a){return Math.floor(a/100)}function get_rank(a){return a%100}function generate_hand(b){var a=new Array(5);var d=0;var e=0,c=0;var f=false;for(e=0;e<5;e++){f=false;d=generate_card();if(cardIn(b,d)){f=true}else{for(c=0;c<e;c++){if(a[c]==d){f=true;break}}}if(f){e--}else{a[e]=d}}return a}function dealerQualifies(){if(dealer_val>=15){return true}if(highCard(dealer)==14&&get_rank(dealer[1])==13){return true}return false};
