- // ==UserScript==
- // @name Poker Prover
- // @namespace BvS-ZeConster
- // @description BvS Poker: hotkeys and determines if you can Prove a win
- // @include http*://*animecubed.com/billy/bvs/shop-pokerplay.html
- // @include http*://*animecubedgaming.com/billy/bvs/shop-pokerplay.html
- // @version 1.15
- // @history 1.15 New domain - animecubedgaming.com - Channel28
- // @history 1.14 Now https compatible (Updated by Channel28)
- // @history 1.13 Replaced contains() with includes(). Thanks Takumi.
- // @grant none
- // ==/UserScript==
-
- //possible states:
- //1: discard: 1/2/3/4/5/d, determine hand, determine checkboxes for discarding
- //2: check/showdown/prove: c/s/p, determine hand, calculate prover
- //3: fold/cAll: f/a
- var allownumbersandd = false;
- var allowcsp = false;
- var allowfa = false;
- var discardcheckboxes = new Array();
- var mycards = new Array();
- for (var i = 0; i < 5; i++) { mycards[i] = 1; }
- var remaining = new Array();
- for (var i = 0; i < 52; i++) { remaining[i] = 1; }
- var remainingpersuit = new Array();
- for (var i = 0; i < 4; i++) { remainingpersuit[i] = 13; }
- var remainingpervalue = new Array();
- for (var i = 0; i < 13; i++) { remainingpervalue[i] = 4; }
- var thisbutton = null;
- var proveitbackup = null;
-
- if (document.documentElement.innerHTML.includes("discard1.gif") || document.documentElement.innerHTML.includes("discard0.gif")) {
- allownumbersandd = true;
- determineHandDiscard();
- for (var i = 0; i < 5; i++) {
- discardcheckboxes[i] = document.getElementsByName("cardx"+mycards[i])[0];
- }
- } else if (document.documentElement.innerHTML.includes("cardfold.gif")) {
- //check this first, since the "Showdown!" will also be there now
- allowfa = true;
- determineHandOther();
- findNondiscarded();
- var maxenemyvalue = calculateValue(remaining,remainingpersuit,remainingpervalue,true);
-
- //step 1: prepare an empty hand
- var fourcardhands = new Array();
- var fourcardpersuit = new Array();
- var fourcardpervalue = new Array();
- for (var hand = 5; hand < 6; hand++) {
- fourcardhands[hand] = new Array();
- fourcardpersuit[hand] = new Array();
- fourcardpervalue[hand] = new Array();
- for (var i = 0; i < 52; i++) { fourcardhands[hand][i] = 0; }
- for (var i = 0; i < 4; i++) { fourcardpersuit[hand][i] = 0; }
- for (var i = 0; i < 13; i++) { fourcardpervalue[hand][i] = 0; }
- }
-
- //step 2: only use index 5, which is for your actual hand
- for (var i = 0; i < 5; i++) {
- var num0to51 = mycards[i];
- var value = (num0to51 - num0to51%4)/4;
- var suit = num0to51%4;
- for (var hand = 5; hand < 6; hand++) {
- fourcardhands[hand][num0to51] = fourcardhands[hand][num0to51] + 1;
- fourcardpersuit[hand][suit] = fourcardpersuit[hand][suit] + 1;
- fourcardpervalue[hand][value] = fourcardpervalue[hand][value] + 1;
- }
- }
- var mycurrentscore = calculateValue(fourcardhands[5],fourcardpersuit[5],fourcardpervalue[5],true);
- //alert(maxenemyvalue+","+mybestscore);
-
- //step 4: translate the best enemy score and own 4-card score back into words
- var enemystr = translateScore(maxenemyvalue,true);
- var mycurrentstr = translateScore(mycurrentscore,true);
- var addthistext = "<br>"+mycurrentscore + " = current score ("+mycurrentstr+")";
- addthistext = addthistext + "<br>"+maxenemyvalue + " = current best enemy score ("+enemystr+")";
- if (mycurrentscore == maxenemyvalue) {
- addthistext = addthistext + "<br>Worst case, you will <b>tie</b> this hand: calling is safe";
- } else if (mycurrentscore > maxenemyvalue) {
- addthistext = addthistext + "<br>You'll <b>win</b> this! Call!";
- } else {
- addthistext = addthistext + "<br>You may <b>lose</b> if you Call now.";
- }
- var breakhere = document.documentElement.innerHTML.indexOf("<hr>");
- var part1 = document.documentElement.innerHTML.substring(0,breakhere);
- var part2 = document.documentElement.innerHTML.substring(breakhere);
- document.documentElement.innerHTML = part1+addthistext+part2;
- } else if (document.documentElement.innerHTML.includes("cardshow.gif")) {
- allowcsp = true;
- determineHandOther();
- findNondiscarded();
- //debug();
- var maxenemyvalue = calculateValue(remaining,remainingpersuit,remainingpervalue,true);
-
- //step 1: prepare the 5 potential 4-card hands
- var fourcardhands = new Array();
- var fourcardpersuit = new Array();
- var fourcardpervalue = new Array();
- for (var hand = 0; hand < 6; hand++) {
- fourcardhands[hand] = new Array();
- fourcardpersuit[hand] = new Array();
- fourcardpervalue[hand] = new Array();
- for (var i = 0; i < 52; i++) { fourcardhands[hand][i] = 0; }
- for (var i = 0; i < 4; i++) { fourcardpersuit[hand][i] = 0; }
- for (var i = 0; i < 13; i++) { fourcardpervalue[hand][i] = 0; }
- }
-
- //step 2: load 4 of the 5 cards into each potential 4-card hand; index 5 is for your actual hand
- for (var i = 0; i < 5; i++) {
- var num0to51 = mycards[i];
- var value = (num0to51 - num0to51%4)/4;
- var suit = num0to51%4;
- for (var hand = 0; hand < 6; hand++) {
- if (i != hand) {
- fourcardhands[hand][num0to51] = fourcardhands[hand][num0to51] + 1;
- fourcardpersuit[hand][suit] = fourcardpersuit[hand][suit] + 1;
- fourcardpervalue[hand][value] = fourcardpervalue[hand][value] + 1;
- }
- }
- }
-
- //step 3: compare each of the hands and take the best
- var scores = new Array();
- for (var hand = 0; hand < 5; hand++) {
- scores[hand] = calculateValue(fourcardhands[hand],fourcardpersuit[hand],fourcardpervalue[hand],false);
- }
- var mybestscore = Math.max(scores[0],scores[1],scores[2],scores[3],scores[4]);
- var mycurrentscore = calculateValue(fourcardhands[5],fourcardpersuit[5],fourcardpervalue[5],true);
- //alert(maxenemyvalue+","+mybestscore);
-
- //step 4: translate the best enemy score and own 4-card score back into words
- var enemystr = translateScore(maxenemyvalue,true);
- var mybeststr = translateScore(mybestscore,false);
- var mycurrentstr = translateScore(mycurrentscore,true);
- var addthistext = "<br>"+mycurrentscore + " = current score ("+mycurrentstr+")";
- addthistext = addthistext + "<br>"+mybestscore + " = current best 4-card score ("+mybeststr+")";
- addthistext = addthistext + "<br>"+maxenemyvalue + " = current best enemy score ("+enemystr+")";
- if (mybestscore == maxenemyvalue) {
- addthistext = addthistext + "<br>You will <b>tie</b> if you Prove now!";
- } else if (mybestscore > maxenemyvalue) {
- addthistext = addthistext + "<br>You will <b>win</b> if you Prove now!";
- } else {
- // if (document.getElementById("show3") != null) {
- // document.getElementById("show3").disabled = true;
- // }
- if (document.forms.namedItem("redraw3") != null) {
- proveitbackup = document.forms.namedItem("redraw3").innerHTML;
- document.forms.namedItem("redraw3").innerHTML = "Prove Disabled (hit e to enable)";
- }
- addthistext = addthistext + "<br>You will <b>lose</b> if you Prove now!";
- if (mycurrentscore == maxenemyvalue) {
- addthistext = addthistext + "<br>Worst case, you will <b>tie</b> this hand: Showdown is safe";
- } else if (mycurrentscore > maxenemyvalue) {
- addthistext = addthistext + "<br>You will always <b>win</b> if you Showdown and they call";
- } else {
- addthistext = addthistext + "<br>You may <b>lose</b> if you Showdown and they call";
- }
- }
- var breakhere = document.documentElement.innerHTML.indexOf("<hr>");
- var part1 = document.documentElement.innerHTML.substring(0,breakhere);
- var part2 = document.documentElement.innerHTML.substring(breakhere);
- document.documentElement.innerHTML = part1+addthistext+part2;
- }
-
-
- function determineHandOther() {
- // this doesn't work properly for discard checkboxes since the cards aren't in proper order per value
- var handno = 0;
- for (var value = 12; value > -1 && handno < 6; value--) {
- for (var suit = 0; suit < 4 && handno < 6; suit++) {
- var i = value*4+suit;
- var str = "/card"+i+".gif";
- if (document.documentElement.innerHTML.includes(str)) {
- mycards[handno] = i;
- remaining[i] = 0;
- remainingpervalue[value] = remainingpervalue[value] - 1;
- remainingpersuit[suit] = remainingpersuit[suit] - 1;
- handno = handno + 1;
- }
- }
- }
- //alert(mycards[0]+","+mycards[1]+","+mycards[2]+","+mycards[3]+","+mycards[4]);
- //debug();
- }
-
- function determineHandDiscard() {
- var str = document.documentElement.innerHTML;
- for (var handno = 0; handno < 5; handno++) {
- var index1 = str.indexOf("cardx")+5;
- str = str.substring(index1);
- var index2 = str.indexOf("\"");
- i = str.substring(0,index2);
- var suit = i%4;
- var value = (i-suit)/4;
- mycards[handno] = i;
- remaining[i] = 0;
- remainingpervalue[value] = remainingpervalue[value] - 1;
- remainingpersuit[suit] = remainingpersuit[suit] - 1;
- }
- }
- function findNondiscarded() {
- var alltables = document.getElementsByTagName("table");
- var thistable = 0;
- for (var i = 0; i < alltables.length; i++) {
- if (alltables[i] != null && alltables[i].innerHTML.includes("Clubs<br>Diamonds")) {
- thistable = i;
- }
- }
- var tablediscards = document.getElementsByTagName("table")[thistable];
- for (var value = 0; value < 13; value++) {
- var thiscolumn = tablediscards.getElementsByTagName("tr")[0].getElementsByTagName("td")[value+1];
- //lists all 2s, 3s, etc.: [font color="000000"] if discarded, [font color=999999"] otherwise
- //alert(thiscolumn.innerHTML);
- var tempstrings = new Array();
- tempstrings[0] = thiscolumn.innerHTML;
- var index1 = tempstrings[0].indexOf("font color=")+12;
- tempstrings[1] = tempstrings[0].substring(index1);
- var index2 = tempstrings[1].indexOf("font color=")+12;
- tempstrings[2] = tempstrings[1].substring(index2);
- var index3 = tempstrings[2].indexOf("font color=")+12;
- tempstrings[3] = tempstrings[2].substring(index3);
- var index4 = tempstrings[3].indexOf("font color=")+12;
- tempstrings[4] = tempstrings[3].substring(index4,index4+6);
- tempstrings[1] = tempstrings[1].substring(0,6);
- tempstrings[2] = tempstrings[2].substring(0,6);
- tempstrings[3] = tempstrings[3].substring(0,6);
- //now we're down to 4 values of either "000000" or "999999"
- for (var suit = 0; suit < 4; suit++) {
- var num0to51 = suit + value*4;
- if (tempstrings[suit+1].includes("000000")) { //this card has been discarded
- remaining[num0to51] = 0;
- remainingpersuit[suit] = remainingpersuit[suit] - 1;
- remainingpervalue[value] = remainingpervalue[value] - 1;
- }
- }
- }
- //debug();
- }
-
- function calculateValue(allcards, persuit, pervalue, handsof5allowed) {
- //note: use 0-12, and high card for straights
- var bstrflush = false; var bflush = false; var bstraight = false; var bfullhouse = false;
- var bquads = false; var btrips = false; var bonepair = false; var btwopair = false;
- for (var value = 0; value < 13; value++) {
- if (pervalue[value] == 4) { bquads = true; btrips = true; bonepair = true; }
- if (pervalue[value] == 3) { btrips = true; bonepair = true; }
- if (pervalue[value] == 2) { bonepair = true; }
- }
- //for two pairs and full house, go over things twice, I guess
- for (var value1 = 0; value1 < 13; value1++) {
- for (var value2 = value1+1; value2 < 13; value2++) {
- if (pervalue[value1] >= 2 && pervalue[value2] >= 2) {
- btwopair = true;
- if (handsof5allowed && pervalue[value1]+pervalue[value2] >= 5) {
- bfullhouse = true;
- }
- }
- }
- }
- var higheststraighthighcard = -1; var higheststraightflushhighcard = -1;
- if (handsof5allowed) {
- for (var suit = 0; suit < 4; suit++) { if (persuit[suit] >= 5) { bflush = true; } }
- for (var value = -1; value < 9; value++) {
- var newvalue = value; if (value == -1) { newvalue = 12; }
- if (pervalue[newvalue] != 0 && pervalue[value+1] != 0 && pervalue[value+2] != 0 && pervalue[value+3] != 0 && pervalue[value+4] != 0) {
- bstraight = true; higheststraighthighcard = value+4;
- //check for straight flush, with [12],[0],[1],[2],[3] for aces-low
- var suit0 = allcards[newvalue*4+0] + allcards[(value+1)*4+0] + allcards[(value+2)*4+0] + allcards[(value+3)*4+0] + allcards[(value+4)*4+0];
- var suit1 = allcards[newvalue*4+1] + allcards[(value+1)*4+1] + allcards[(value+2)*4+1] + allcards[(value+3)*4+1] + allcards[(value+4)*4+1];
- var suit2 = allcards[newvalue*4+2] + allcards[(value+1)*4+2] + allcards[(value+2)*4+2] + allcards[(value+3)*4+2] + allcards[(value+4)*4+2];
- var suit3 = allcards[newvalue*4+3] + allcards[(value+1)*4+3] + allcards[(value+2)*4+3] + allcards[(value+3)*4+3] + allcards[(value+4)*4+3];
- if (suit0 == 5 || suit1 == 5 || suit2 == 5 || suit3 == 5) { //5 sequential cards remain,
- bstrflush = true; higheststraightflushhighcard = value+4;
- }
- }
- }
- }
- //different values of each kind:
- //straight flush: 10 (ace low - 10 low) *4 = 40
- //four of a kind: 13 *48 = 624
- //full house: 156 (13 trips, 12 pair) *24 = 3744
- //flush: 1277 (13!/8!/5!, -10 for straight flushes) *4 = 5108
- //straight: 10 (ace low - 10 low) *(4^5-4) = 10200 (no flushes)
- //three of a kind: 858 (13 trips, 12*11/2 kickers) *4*4*4 = 54912
- //two pair: 858 (12+11+..+2+1 pairs, 11 kickers) *6*6*4 = 123552
- //one pair: 2860 (13 pair, 12*11*10/6 kickers) *6*4*4*4 = 1098240
- //scum: 1277 (13!/8!/5!, -10 for straights) *(4^5-4) = 1302540 (no flushes)
-
- //values to be used (without taking disappeared values into account, except for the highest value):
- //0 scum: 368713 (12*13^4+11*13^3+10*13^2+9*13+7) AKQJ9
- //400k one pair: 28362 (12*13^3+11*13^2+10*13 +9) AAKQJ
- //450k two pair: 2181 (12*13^2+11*13 +10) AAKKQ
- //475k trips: 12 AAA--
- //500k straight: 12 AKQJT
- //525k flush: 368713 (12*13^4+11*13^3+10*13^2+9*13+7) AKQJ9
- //925k full house: 167 (12*13+11) AAAKK
- //950k 4 of a kind: 12 AAAA-
- //975k straight flush: 12 AKQJT
- //NOTE: for 4-of-a-kind and 3-of-a-kind the kickers don't matter
- //alert(bstrflush+","+bflush+","+bstraight+","+bfullhouse+"\n"+bquads+","+btrips+","+btwopair+","+bonepair+"\n"+higheststraighthighcard+","+higheststraightflushhighcard);
- var besthandvalue = -1;
- if (bstrflush) {
- besthandvalue = 975000+higheststraightflushhighcard;
- } else if (bquads) {
- for (var value = 12; value > -1; value--) {
- if (pervalue[value] == 4) {
- besthandvalue = 950000+value;
- value = -1;
- }
- }
- } else if (bfullhouse) {
- for (var value1 = 12; value1 > -1; value1--) {
- if (pervalue[value1] == 3) {
- for (var value2 = 12; value2 > -1; value2--) {
- if (value2 != value1 && pervalue[value2] >= 2) {
- besthandvalue = 925000+13*value1+value2;
- value1 = -1; value2 = -1;
- }
- }
- }
- }
- } else if (bflush) {
- var suitvalues = new Array();
- suitvalues[0] = 0; suitvalues[1] = 0; suitvalues[2] = 0; suitvalues[3] = 0;
- for (var suit = 0; suit < 4; suit++) {
- if (persuit[suit] >= 5) {
- for (var v1 = 12; v1 > 3; v1--) {
- if (allcards[v1*4+suit] == 1) {
- for (var v2 = v1 - 1; v2 > 2; v2--) {
- if (allcards[v2*4+suit] == 1) {
- for (var v3 = v2 - 1; v3 > 1; v3--) {
- if (allcards[v3*4+suit] == 1) {
- for (var v4 = v3 - 1; v4 > 0; v4--) {
- if (allcards[v4*4+suit] == 1) {
- for (var v5 = v4 - 1; v5 > -1; v5--) {
- if (allcards[v5*4+suit] == 1) {
- suitvalues[suit] = v1*169*169 + v2*169*13 + v3*169 + v4*13 + v5;
- v1 = -1; v2 = -1; v3 = -1; v4 = -1; v5 = -1;
- } }
- } }
- } }
- } }
- } }
- }
- }
- besthandvalue = 525000+Math.max(suitvalues[0],suitvalues[1],suitvalues[2],suitvalues[3]);
- } else if (bstraight) {
- besthandvalue = 500000+higheststraighthighcard;
- } else if (btrips) {
- for (var value = 12; value > -1; value--) {
- if (pervalue[value] == 3) {
- besthandvalue = 475000 + value;
- value = -1;
- }
- }
- } else if (btwopair) {
- for (var value1 = 12; value1 > -1; value1--) {
- if (pervalue[value1] == 2) {
- for (var value2 = value1-1; value2 > -1; value2--) {
- if (pervalue[value2] == 2) {
- if (handsof5allowed) {
- for (var value3 = 12; value3 > -1; value3--) {
- if (pervalue[value3] == 1) {
- besthandvalue = 450000 + value1*13*13 + value2*13 + value3;
- value1 = -1; value2 = -1; value3 = -1;
- } }
- } else {
- besthandvalue = 450000 + value1*13*13 + value2*13;
- value1 = -1; value2 = -1;
- }
- } }
- } }
- } else if (bonepair) {
- for (var value1 = 12; value1 > -1; value1--) {
- if (pervalue[value1] == 2) {
- for (var value2 = 12; value2 > -1; value2--) {
- if (pervalue[value2] == 1) {
- for (var value3 = value2-1; value3 > -1; value3--) {
- if (pervalue[value3] == 1) {
- if (handsof5allowed) {
- for (var value4 = value3-1; value4 > -1; value4--) {
- if (pervalue[value4] == 1) {
- besthandvalue = 400000 + value1*13*13*13 + value2*13*13 + value3*13 + value4;
- value1 = -1; value2 = -1; value3 = -1; value4 = -1;
- } }
- } else {
- besthandvalue = 400000 + value1*13*13*13 + value2*13*13 + value3*13;
- value1 = -1; value2 = -1; value3 = -1;
- }
- } }
- } }
- } }
- } else { //scum
- for (var v1 = 12; v1 > -1; v1--) {
- if (pervalue[v1] == 1) {
- for (var v2 = v1-1; v2 > -1; v2--) {
- if (pervalue[v2] == 1) {
- for (var v3 = v2-1; v3 > -1; v3--) {
- if (pervalue[v3] == 1) {
- for (var v4 = v3-1; v4 > -1; v4--) {
- if (pervalue[v4] == 1) {
- if (handsof5allowed) {
- for (var v5 = v4-1; v5 > -1; v5--) {
- if (pervalue[v5] == 1) {
- besthandvalue = v1*169*169 + v2*169*13 + v3*169 + v4*13 + v5;
- v1 = -1; v2 = -1; v3 = -1; v4 = -1; v5 = -1;
- } }
- } else {
- besthandvalue = v1*169*169 + v2*169*13 + v3*169 + v4*13;
- v1 = -1; v2 = -1; v3 = -1; v4 = -1;
- }
- } }
- } }
- } }
- } }
- }
- return besthandvalue;
- //0 scum: 371293 (13^5)
- //400k one pair: 28561 (13^4)
- //450k two pair: 2197 (13^3)
- //475k trips: 2197 (13^3)
- //500k straight: 10
-
- //allcards, persuit, pervalue
- }
-
- function translateScore(numerical,handsof5allowed) {
- var description = "";
- if (numerical >= 975000) {
- var highcard = numerical-975000;
- description = "Straight Flush, " + translateCardToEnglish(highcard) + " high";
- } else if (numerical >= 950000) {
- var quads = numerical-950000;
- description = "4 of a Kind: " + translateCardToEnglish(quads);
- } else if (numerical >= 925000) {
- var cards = numerical - 925000;
- var pair = cards%13;
- var trips = (cards - pair)/13;
- description = "Full House: " + translateCardToEnglish(trips) + " over " + translateCardToEnglish(pair);
- } else if (numerical >= 525000) {
- var cards = numerical - 525000;
- var c5 = cards%13; cards = (cards - c5)/13;
- var c4 = cards%13; cards = (cards - c4)/13;
- var c3 = cards%13; cards = (cards - c3)/13;
- var c2 = cards%13; cards = (cards - c2)/13;
- var c1 = cards;
- description = "Flush: " + translateCardToEnglish(c1) + "/" + translateCardToEnglish(c2) + "/" + translateCardToEnglish(c3) + "/" + translateCardToEnglish(c4) + "/" + translateCardToEnglish(c5);
- } else if (numerical >= 500000) {
- var highcard = numerical-500000;
- description = "Straight: " + translateCardToEnglish(highcard) + " high";
- } else if (numerical >= 475000) {
- var trips = numerical-475000;
- description = "3 of a Kind: " + translateCardToEnglish(trips);
- } else if (numerical >= 450000) {
- var cards = numerical - 450000;
- var kicker = cards%13; cards = (cards-kicker)/13;
- var hipair = cards%13; cards = (cards-hipair)/13;
- var lopair = cards;
- if (handsof5allowed) {
- description = "Two pair: " + translateCardToEnglish(hipair) + " and " + translateCardToEnglish(lopair) + ", with " + translateCardToEnglish(kicker);
- } else {
- description = "Two pair: " + translateCardToEnglish(hipair) + " and " + translateCardToEnglish(lopair);
- }
- } else if (numerical >= 400000) {
- var cards = numerical - 400000;
- var c3 = cards%13; cards = (cards - c3)/13;
- var c2 = cards%13; cards = (cards - c2)/13;
- var c1 = cards%13; cards = (cards - c1)/13;
- var pair = cards;
- if (handsof5allowed) {
- description = "Pair: " + translateCardToEnglish(pair) + ", with " + translateCardToEnglish(c1) + "/" + translateCardToEnglish(c2) + "/" + translateCardToEnglish(c3);
- } else {
- description = "Pair: " + translateCardToEnglish(pair) + ", with " + translateCardToEnglish(c1) + "/" + translateCardToEnglish(c2);
- }
- } else {
- var cards = numerical;
- var c5 = cards%13; cards = (cards - c5)/13;
- var c4 = cards%13; cards = (cards - c4)/13;
- var c3 = cards%13; cards = (cards - c3)/13;
- var c2 = cards%13; cards = (cards - c2)/13;
- var c1 = cards;
- if (handsof5allowed) {
- description = "High card " + translateCardToEnglish(c1) + ", with " + translateCardToEnglish(c2) + "/" + translateCardToEnglish(c3) + "/" + translateCardToEnglish(c4) + "/" + translateCardToEnglish(c5);
- } else {
- description = "High card " + translateCardToEnglish(c1) + ", with " + translateCardToEnglish(c2) + "/" + translateCardToEnglish(c3) + "/" + translateCardToEnglish(c4);
- }
- }
- return description;
- }
-
- function translateCardToEnglish(value) {
- var strvalue = "";
- if (value == 12) {
- strvalue = "Ace";
- } else if (value == 11) {
- strvalue = "King";
- } else if (value == 10) {
- strvalue = "Queen";
- } else if (value == 9) {
- strvalue = "Jack";
- } else {
- strvalue = (value+2);
- }
- return strvalue;
- }
-
- function process_event(event) {
- if (event.keyCode == 49) { //1
- if (allownumbersandd == true) {
- discardcheckboxes[0].checked = !(discardcheckboxes[0].checked);
- }
- } else if (event.keyCode == 50) { //2
- if (allownumbersandd == true) {
- discardcheckboxes[1].checked = !(discardcheckboxes[1].checked);
- }
- } else if (event.keyCode == 51) { //3
- if (allownumbersandd == true) {
- discardcheckboxes[2].checked = !(discardcheckboxes[2].checked);
- }
- } else if (event.keyCode == 52) { //4
- if (allownumbersandd == true) {
- discardcheckboxes[3].checked = !(discardcheckboxes[3].checked);
- }
- } else if (event.keyCode == 53) { //5
- if (allownumbersandd == true) {
- discardcheckboxes[4].checked = !(discardcheckboxes[4].checked);
- }
- } else if (event.keyCode == 68) { //d: "discard"
- if (allownumbersandd == true) {
- thisbutton = document.forms.namedItem("redraw");
- clickButton();
- }
- } else if (event.keyCode == 67) { //c: "check"
- if (allowcsp == true) {
- thisbutton = document.forms.namedItem("redraw1");
- clickButton();
- }
- } else if (event.keyCode == 83) { //s: "showdown!"
- if (allowcsp == true) {
- thisbutton = document.forms.namedItem("redraw2");
- clickButton();
- }
- } else if (event.keyCode == 80) { //p: "prove"
- if (allowcsp == true) {
- if (document.forms.namedItem("redraw3") != null) {
- thisbutton = document.forms.namedItem("redraw3");
- clickButton();
- }
- }
- //alert(event.keyCode);
- } else if (event.keyCode == 70) { //f: "fold"
- if (allowfa == true) {
- thisbutton = document.forms.namedItem("redraw1");
- clickButton();
- }
- } else if (event.keyCode == 65) { //a: "cAll"
- if (allowfa == true) {
- thisbutton = document.forms.namedItem("redraw2");
- clickButton();
- }
- } else if (event.keyCode == 69) { //e: "escape"
- allownumbersandd = false;
- allowcsp = false;
- allowfa = false;
- if (document.forms.namedItem("redraw3") != null) {
- document.forms.namedItem("redraw3").innerHTML = proveitbackup;
- }
- alert("hotkeys disabled until next pageload, Prove It button re-enabled");
- }
- }
-
- function clickButton() {
- thisbutton.submit(); //comment this out to disable auto-clicking completely
- }
-
- function debug() {
- var dbgstr = new Array();
- dbgstr[0] = "";
- dbgstr[1] = "";
- dbgstr[2] = "";
- dbgstr[3] = "";
- dbgstr[4] = "";
- dbgstr[5] = "";
- for (var i = 0; i < 13; i++) {
- for (var j = 0; j < 4; j++) {
- if (remaining[i*4+j] == 1) {
- dbgstr[j] = dbgstr[j]+"x";
- } else {
- dbgstr[j] = dbgstr[j]+"-";
- }
- }
- }
- for (var i = 0; i < 4; i++) { dbgstr[4] = dbgstr[4]+remainingpersuit[i]+" "; }
- for (var i = 0; i < 13; i++) { dbgstr[5] = dbgstr[5]+remainingpervalue[i]+" "; }
- alert(dbgstr[0]+"\n"+dbgstr[1]+"\n"+dbgstr[2]+"\n"+dbgstr[3]+"\n"+dbgstr[4]+"\n"+dbgstr[5]);
- }
-
- document.documentElement.addEventListener("keyup", process_event, true);