<html>
<head>
<title>Canvas HTML Element Rummy Game Tutorial ... RJM Programming ... June 2014 ... thanks to http://stackoverflow.com/questions/9880279/how-do-i-add-a-simple-onclick-event-handler-to-a-canvas-element</title>
<script language="JavaScript">
var score = 0.0;
var goes = 0.0;
var realgoes = 0;
var to1 = "";
var to2 = "";

var dhuh = "";

var imgover;
var modeofgame = 0;
var whichmeld = -1;

var meldx = 10;
var meldy = 10;

var discardx = 10;
var discardy = 510;

var stockx = 210;
var stocky = 310;
//var qbit = " ";

var somebodywins = -1;

var stock = [];
var discard = [];
var meld = [];
var p1cards = [];
var p2cards = [];
var p1numin = 0;
var p2numin = 0;

var eventname = 'click';

var ua = navigator.userAgent;
var isiPad = /iPad/i.test(ua) || /iPhone OS 3_1_2/i.test(ua) || /Andrxoid/i.test(ua) || /iPhone OS 3_2_2/i.test(ua);

//if (isiPad) eventname = 'touchdown';

var numcorrect = 0;
var alreadypickedlist = ";";

var to1i = -1;
var to1o = null;
var to1x = 0;
var to1y = 0;

var spareto1x = 0;
var spareto1y = 0;
var sparegoodx = 0;
var sparegoody = 0;
var sparei = 0;
var spareto1o = null;


var playerturn = 0;
var numplayers = 2;


var ptricks = [0, 0];
var pscores = [0, 0];

var story = [];
var chapter = [];
var sparea = [];
var p1numin = 0;
var p2numin = 0;
var winneris = -1;
var genericcontrol = -1;
var p1cards = [];
var p2cards = [];
var gotananswer = 1;
var wq = -1;

function runGame() {
//discard = [];
// alert("dL=" + discard.length);

if (gotananswer == 1 && p1cards.length > 0 && p2cards.length > 0 && eval(wq) >= 0) { // was while
gotananswer = 0;
wq = playAScenario(wq);
}

if (p1cards.length == 0) {
winneris = 0;
dowinner(1, "");
} else if (p2cards.length == 0) {
winneris = 1;
dowinner(2, "");
}

if (eval(winneris) >= 0) gotananswer = 1;

if (eval(winneris) < 0) setTimeout(runGame, 1000);
}

function drawstock() {
stockx = elem.width - imgover.width - 10;
for (var i=0; i<stock.length; i++) {
context.drawImage(imgover, stockx, stocky);
stockx = eval(stockx - (imgover.width / 100));
}
stockx = elem.width - imgover.width - 10;
}

function drawdiscard() {
var ourdiscardy = discardy, animg;
discardx = eval(10.0 + (imgover.width / 3.0) * discard.length);
for (var i=0; i<discard.length; i++) {
ourdiscardy = eval(discardy + (imgover.height * 7.0 / 10.0) * (i % 2));
animg=document.getElementById(discard[i].replace("images/","").replace(".gif",""));
context.drawImage(animg, discardx, ourdiscardy);
//discardx = eval(discardx + (imgover.width / 3));
discardx = eval(discardx - (imgover.width / 3.0));
}
discardx = 10;
}

function drawmeld() {
var ourmeldy = meldy, animg, melda = [];
meldx = 10;
for (var j=0; j<meld.length; j++) {
melda = meld[j].split(",");
for (var i=0; i<melda.length; i++) {
ourmeldy = eval(meldy + (imgover.height * 7.0 / 10.0) * (i % 2));
animg=document.getElementById(melda[i].replace("images/","").replace(".gif",""));
context.drawImage(animg, meldx, ourmeldy);
meldx = eval(meldx + (imgover.width / 5.0));
}
meldx = eval(meldx + imgover.width + (imgover.width / 20.0));
}
meldx = 10;
}

function pieceTogetherTheStory(whichplayerfirst) {
p1cards = [];
p2cards = [];
stock = [];
discard = [];
genericcontrol = -1;
meldx = 10;
meldy = 10;
elem.width = elem.width;
imgover=document.getElementById(defcard.replace("images/","").replace(".gif",""));

discardx = 10;
//discardy = 510;
discardy = elem.height - imgover.height - 10 - (imgover.height * 7.0 / 10.0); //310;

stockx = elem.width - imgover.width - 10;
stocky = elem.height - imgover.height - 10; //310;

for (var ii=0; ii<52; ii++) {
if (eval(ii) >= 20) {
stock[stock.length] = deckcards[ii];
//context.drawImage(imgover, stockx, stocky);
//stockx = eval(stockx - (imgover.width / 100));
} else {
if ((ii % 2) == 0) {
p1cards[p1cards.length] = deckcards[ii];
} else {
p2cards[p2cards.length] = deckcards[ii];
}
}
}
p1cards.sort();
p2cards.sort();
drawstock();
drawdiscard();
drawmeld();
wq = whichplayerfirst;
runGame();
}

function dowinner(wpi, stuff) {
var prefix = stuff;
if (wpi == 1) {
document.getElementById('p1s').innerHTML = 1 + eval(document.getElementById('p1s').innerHTML);
prefix = prefix + "Winner is " + pnames[0] + ". ";
} else if (wpi == 2) {
document.getElementById('p2s').innerHTML = 1 + eval(document.getElementById('p2s').innerHTML);
prefix = prefix + "Winner is " + pnames[1] + ". ";
} else {
document.getElementById('p1s').innerHTML = 1 + eval(document.getElementById('p1s').innerHTML);
document.getElementById('p2s').innerHTML = 1 + eval(document.getElementById('p2s').innerHTML);
prefix = prefix + "It's a tie. ";
}
playerturn = Math.floor((Math.random()*2)+0);
if (playerturn == 1) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
document.getElementById('b2layoff').style.display = 'inline';
document.getElementById('b2meld').style.display = 'inline';
document.getElementById('b1layoff').style.display = 'none';
document.getElementById('b1meld').style.display = 'none';
} else {
playerturn = 0;
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
document.getElementById('b1layoff').style.display = 'inline';
document.getElementById('b1meld').style.display = 'inline';
document.getElementById('b2layoff').style.display = 'none';
document.getElementById('b2meld').style.display = 'none';
}
var pm1 = document.getElementById('p1meld');
var pl1 = document.getElementById('p1layoff');
var pd1 = document.getElementById('p1discard');
var pm2 = document.getElementById('p2meld');
var pl2 = document.getElementById('p2layoff');
var pd2 = document.getElementById('p2discard');
pm2.innerHTML = "<option value=''>Meld cards ...</option>";
pl2.innerHTML = "<option value=''>Lay off cards ...</option>";
pd2.innerHTML = "<option value=''>Discard card ...</option>";
pm1.innerHTML = "<option value=''>Meld cards ...</option>";
pl1.innerHTML = "<option value=''>Lay off cards ...</option>";
pd1.innerHTML = "<option value=''>Discard card ...</option>";
elem.width = elem.width;
alert(prefix + "It's first turn to " + pnames[playerturn] + " for next game.");
//gotananswer = 0;
toggle = 1;
elements = [];
curcard = 0;
deckcards = [];
usedcards = [];
shuffle();
meld = [];
discard = [];
//playerturn = 0;
somebodywins = -1;
chapter = [];
meld = [];
discard = [];
stock = [];
p1cards = [];
p2cards = [];
elem.width = elem.width;
pieceTogetherTheStory(playerturn);
wq = playerturn;
gotananswer = 1;
runGame();
}

function total(wpi) {
var tot = 0, tis = 0;
var num = eval("p" + wpi + "cards.length");
for (var ii=0; ii<num; ii++) {
if (wpi == 1) {
tis = eval(p1cards[ii].replace("images/0", "").replace("images/", "").replace(".gif", "").replace("h", "").replace("c", "").replace("s", "").replace("d", ""));
if (eval(tis) >= 10) tis = 10
} else if (wpi == 2) {
tis = eval(p2cards[ii].replace("images/0", "").replace("images/", "").replace(".gif", "").replace("h", "").replace("c", "").replace("s", "").replace("d", ""));
}
tot = eval(tis + tot);
}
return tot;
}

function preassess(sin) {
var lallis = "", predot = [], kk, mm, nn, isok = true, small = -1, big = -1, thisis = 0, alld = ";", thisd = "", allis = ";", ihuh = 0, melda = [], ourbig = -1, oursmall = -1, ouralld = ";", ourallis = ";";
var sinval = [];
//alert(200);
whichmeld = -1;
if (sin.id.indexOf("discard") != -1) {
sinval[sinval.length] = sin.value;
} else {
//alert(sin.options.length);


for (var i=0; i<sin.options.length; i++) {
if (sin.options[i].selected) {
//alert("val=" + sin.options[i].value);
lallis = lallis + "," + sin.options[i].value;
thisis = eval(sin.options[i].value.replace("images/0", "").replace("images/", "").replace(".gif", "").replace("h", "").replace("c", "").replace("s", "").replace("d", ""));
//alert("thisis=" + thisis + " " + sin.options[i].value);
predot = sin.options[i].value.split(".");
thisd = predot[0].substring(eval(predot[0].length - 1),predot[0].length);
//alert("thisd=" + thisd);
if (alld.indexOf(";" + thisd + ";") == -1) alld = alld + thisd + ";";
if (small == 1 && big == 1 && eval(thisis) >= 7) {
allis = ";14;";
big = 14;
small = 14;
}
if (eval(thisis) < small || small == -1) small = thisis;
if (eval(thisis) > big) big = thisis;
allis = allis + thisis + ";";
sinval[sinval.length] = sin.options[i].value;
}
}
if (sin.id.indexOf("meld") != -1) {
//alert("allis=" + allis);
//alert(sinval.length);
//alert("alld=" + alld);
//alert("big=" + big + " and small=" + small);
if (eval(sinval.length) < 3) return false;
if (big != small) {
if (eval(alld.length) < 5) {
for (ihuh=small; ihuh<=big; ihuh++) {
if (allis.indexOf(";" + ihuh + ";") == -1) isok = false;
}
} else {
return false;
}
}
}

if (sin.id.indexOf("layoff") != -1) {
isok = false;
ourbig = big;
oursmall = small;
ourallis = allis;
ouralld = alld;
for (var jj=0; jj<meld.length; jj++) {
melda = meld[jj].split(",");
small = -1;
big = -1;
thisis = 0;
alld = ";";
thisd = "";
allis = ";";
for (var ii=0; ii<melda.length; ii++) {
thisis = eval(melda[ii].replace("images/0", "").replace("images/", "").replace(".gif", "").replace("h", "").replace("c", "").replace("s", "").replace("d", ""));
predot = melda[ii].split(".");
thisd = predot[0].substring(eval(predot[0].length - 1),predot[0].length);
if (alld.indexOf(";" + thisd + ";") == -1) alld = alld + thisd + ";";
if (small == 1 && big == 1 && eval(thisis) >= 7) {
allis = ";14;";
big = 14;
small = 14;
}
if (eval(thisis) < small || small == -1) small = thisis;
if (eval(thisis) > big) big = thisis;
allis = allis + thisis + ";";
}
if (alld == ouralld) {
kk = small;
if (eval(oursmall) < kk) kk = oursmall;
mm = big;
if (ourbig == 1) {
mm = eval(14 - 1);
}
if (eval(ourbig) > mm) mm = ourbig;
isok = true;
for (nn=kk; nn<=mm; nn++) {
if (allis.indexOf(";" + nn + ";") == -1 && ourallis.indexOf(";" + nn + ";") == -1) isok = false;
}
if (isok) meld[jj] = meld[jj] + lallis;
if (isok) whichmeld = jj;
if (isok) return true;
isok = false;
} else if (big != small) {
if (alld.length > 3) return false;
for (ihuh=small; ihuh<=big; ihuh++) {
if (allis.indexOf(";" + ihuh + ";") == -1) isok = false;
}
} else if (ourbig == big && oursmall == small) {
whichmeld = jj;
meld[jj] = meld[jj] + lallis;
return true;
} else if (alld == ouralld) {
kk = small;
if (eval(oursmall) < kk) kk = oursmall;
mm = big;
if (ourbig == 1) {
mm = eval(14 - 1);
}
if (eval(ourbig) > mm) mm = ourbig;
isok = true;
for (nn=kk; nn<=mm; nn++) {
if (allis.indexOf(";" + nn + ";") == -1 && ourallis.indexOf(";" + nn + ";") == -1) isok = false;
}
if (isok) meld[jj] = meld[jj] + lallis;
if (isok) whichmeld = jj;
if (isok) return true;
isok = false;
}
}


}




}
return isok;
}

function assess(sin, wpx) {
var sinval = [], jj, meldc = ";", melda = [], chuh = "";
if (sin.id.indexOf("discard") != -1) {
discard[discard.length] = sin.value;
sinval[sinval.length] = sin.value;
meldc = meldc + sin.value + ";";
sparea = [];
for (jj=0; jj<eval("p" + wpx + "cards.length"); jj++) {
chuh = eval("p" + wpx + "cards[" + jj + "]");
if (meldc.indexOf(";" + chuh + ";") == -1) {
sparea[sparea.length] = chuh;
}
}
eval("p" + wpx + "cards = []");
for (jj=0; jj<sparea.length; jj++) {
eval("p" + wpx + "cards[" + jj + "] = sparea[" + jj + "]");
}
} else {
for (var i=0; i<sin.options.length; i++) {
if (sin.options[i].selected) {
sinval[sinval.length] = sin.options[i].value;
}
}
if (sin.id.indexOf("meld") != -1) {
whichmeld = meld.length;
meld[meld.length] = sinval[0];
for (jj=1; jj<sinval.length; jj++) {
meld[meld.length - 1] = meld[meld.length - 1] + "," + sinval[jj];
}
} else if (eval(whichmeld) >= 0) {
for (jj=1; jj<sinval.length; jj++) {
meld[whichmeld] = meld[whichmeld] + "," + sinval[jj];
}
}
melda = meld[whichmeld].split(",");
for (jj=0; jj<melda.length; jj++) {
meldc = meldc + melda[jj] + ";";
}
sparea = [];
for (jj=0; jj<eval("p" + wpx + "cards.length"); jj++) {
chuh = eval("p" + wpx + "cards[" + jj + "]");
if (meldc.indexOf(";" + chuh + ";") == -1) {
sparea[sparea.length] = chuh;
}
}
eval("p" + wpx + "cards = []");
for (jj=0; jj<sparea.length; jj++) {
eval("p" + wpx + "cards[" + jj + "] = sparea[" + jj + "]");
}

}
var pm1 = document.getElementById('p1meld');
var pl1 = document.getElementById('p1layoff');
var pd1 = document.getElementById('p1discard');
var pm2 = document.getElementById('p2meld');
var pl2 = document.getElementById('p2layoff');
var pd2 = document.getElementById('p2discard');
pm2.innerHTML = "<option value=''>Meld cards ...</option>";
pl2.innerHTML = "<option value=''>Lay off cards ...</option>";
pd2.innerHTML = "<option value=''>Discard card ...</option>";
pm1.innerHTML = "<option value=''>Meld cards ...</option>";
pl1.innerHTML = "<option value=''>Lay off cards ...</option>";
pd1.innerHTML = "<option value=''>Discard card ...</option>";

elem.width = elem.width;
var r = Math.floor((Math.random()*256)+0);
var g = Math.floor((Math.random()*256)+0);
var b = Math.floor((Math.random()*256)+0);
var thiscol ='#' + arr[(r-(r % 16)) / 16] + arr[r % 16] + arr[(g-(g % 16)) / 16] + arr[g % 16] + arr[(b-(b % 16)) / 16] + arr[b % 16];

elem.style.backgroundColor = thiscol;

drawstock();
drawdiscard();
drawmeld();

if (sin.id.indexOf("discard") == -1 && wpx == 2) {
//alert("pm2.innerHTML");
for (var ii=0; ii<p2cards.length; ii++) {
pm2.innerHTML = pm2.innerHTML + "<option value='" + p2cards[ii] + "'>" + longname(p2cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
pl2.innerHTML = pl2.innerHTML + "<option value='" + p2cards[ii] + "'>" + longname(p2cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
pd2.innerHTML = pd2.innerHTML + "<option value='" + p2cards[ii] + "'>" + longname(p2cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
}
//alert(pm2.innerHTML);
}
if (sin.id.indexOf("discard") == -1 && wpx == 1) {
//alert("pm1.innerHTML");
for (var ii=0; ii<p1cards.length; ii++) {
pm1.innerHTML = pm1.innerHTML + "<option value='" + p1cards[ii] + "'>" + longname(p1cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
pl1.innerHTML = pl1.innerHTML + "<option value='" + p1cards[ii] + "'>" + longname(p1cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
pd1.innerHTML = pd1.innerHTML + "<option value='" + p1cards[ii] + "'>" + longname(p1cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
}
//alert(pm1.innerHTML);
}

document.getElementById('sp1t').innerHTML = p1cards.length;
document.getElementById('sp2t').innerHTML = p2cards.length;

if (sin.id.indexOf("discard") != -1) gotananswer = 1;
//alert(sin.id);
}

function bitOfWhatHappened(thebitis) {
var okaytochange = 1;
var prefix = "", pprefix = "";
if (eval(genericcontrol) >= 0) thebitis = genericcontrol;
if (eval(genericcontrol) < 0) genericcontrol = thebitis;
if (eval(genericcontrol) >= chapter.length) genericcontrol = eval(chapter.length - 1);
elem.width = elem.width;
var r = Math.floor((Math.random()*256)+0);
var g = Math.floor((Math.random()*256)+0);
var b = Math.floor((Math.random()*256)+0);
var thiscol ='#' + arr[(r-(r % 16)) / 16] + arr[r % 16] + arr[(g-(g % 16)) / 16] + arr[g % 16] + arr[(b-(b % 16)) / 16] + arr[b % 16];

elem.style.backgroundColor = thiscol;
myx = 10;
myy = 200;
bigthings = chapter[genericcontrol].split(";");
var ia = bigthings[3].split(",");
pprefix = "Rummy game exchange number " + eval(genericcontrol + 1) + " of " + eval(chapter.length) + " involves " + eval(ia.length) + " cards started by " + pnames[eval(bigthings[0])] + " and won by " + pnames[eval(bigthings[4])] + ". ";

document.getElementById('p1t').innerHTML = bigthings[1];
document.getElementById('p2t').innerHTML = bigthings[2];
if (bigthings[0] == 1) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
document.getElementById('b2layoff').style.display = 'inline';
document.getElementById('b2meld').style.display = 'inline';
document.getElementById('b1layoff').style.display = 'none';
document.getElementById('b1meld').style.display = 'none';
} else {
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
document.getElementById('b1layoff').style.display = 'inline';
document.getElementById('b1meld').style.display = 'inline';
document.getElementById('b2layoff').style.display = 'none';
document.getElementById('b2meld').style.display = 'none';
}
for (var ij0=0; ij0<bigthings[1]; ij0++) {
context.drawImage(imgover, myx, myy);
myx = eval(myx + imgover.width / 100);
}
myx = eval(elem.width - imgover.width - 10);
for (var ij0=0; ij0<bigthings[2]; ij0++) {
context.drawImage(imgover, myx, myy);
myx = eval(myx - imgover.width / 100);
}

if (modeofgame == 0) {
modeofgame = modeofgame;
} else {
modeofgame = prompt(pprefix + "Change to zero to stop interruptions (or bigger number to jump to that exchange number (negative such number stops subsequent prompting))", modeofgame);
if (eval(modeofgame) > 1) {
okaytochange = 0;
genericcontrol = eval(modeofgame);
modeofgame = 1;
} else if (eval(modeofgame) <= -1) {
okaytochange = 0;
genericcontrol = eval(Math.abs(modeofgame));
modeofgame = 0;
}
}
document.getElementById('p1t').innerHTML = bigthings[5];
document.getElementById('p2t').innerHTML = bigthings[6];
if (bigthings[4] == 1) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
document.getElementById('b2layoff').style.display = 'inline';
document.getElementById('b2meld').style.display = 'inline';
document.getElementById('b1layoff').style.display = 'none';
document.getElementById('b1meld').style.display = 'none';
} else {
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
document.getElementById('b1layoff').style.display = 'inline';
document.getElementById('b1meld').style.display = 'inline';
document.getElementById('b2layoff').style.display = 'none';
document.getElementById('b2meld').style.display = 'none';
}

var animg, newmyy, fval, wpf, hasthewoodon = -1;
myx = eval((elem.width / 2) - 350);
if (bigthings[0] == 0) {
newmyy = eval(myy);
} else {
newmyy = eval(myy + (imgover.height * 7.0 / 10.0));
}
wpf = eval(bigthings[0]);
for (var jia=0; jia<ia.length; jia++) {
animg=document.getElementById(ia[jia].replace("images/","").replace(".gif",""));
context.drawImage(animg, myx, newmyy);
myx = eval(myx + imgover.width / 3);
fval = eval(ia[jia].replace('images/0', '').replace('images/', '').replace("d", "").replace("h", "").replace("s", "").replace("c", "").replace(".gif", ""));
if (fval == 1) {
hasthewoodon = 4;
wpf = eval(1 - wpf);
} else if (fval >= 11) {
hasthewoodon = eval((fval % 10));
wpf = eval(1 - wpf);
} else if (hasthewoodon == 1) {
hasthewoodon = 0;
} else if (hasthewoodon > 1) {
hasthewoodon = eval(hasthewoodon - 1);
} else {
wpf = eval(1 - wpf);
}
newmyy = eval(myy + (wpf * (imgover.height * 7.0 / 10.0)));

}

//alert("here");

if (bigthings[5] == 0 || bigthings[6] == 0) {
//genericcontrol = -1;
document.getElementById('p1t').innerHTML = bigthings[5];
document.getElementById('p2t').innerHTML = bigthings[6];
myx = 210;
myy = 200;
for (var ij0=0; ij0<bigthings[5]; ij0++) {
context.drawImage(imgover, myx, myy);
myx = eval(myx + imgover.width / 100);
}
myx = eval(elem.width - 210);
for (var ij0=0; ij0<bigthings[6]; ij0++) {
context.drawImage(imgover, myx, myy);
myx = eval(myx - imgover.width / 100);
}
if (somebodywins == 0) {
document.getElementById('p1s').innerHTML = 1 + eval(document.getElementById('p1s').innerHTML);
document.getElementById('p1t').innerHTML = "0";
document.getElementById('p2t').innerHTML = "0";
//alert("And the winner is " + pnames[0] + ". ");
prefix = "And the winner is " + pnames[0] + ". ";
p1cards = [];
p2cards = [];
p1numin = 0;
p2numin = 0;
winneris = -1;
//genericcontrol = -1;
playerturn = Math.floor((Math.random()*2)+0);
if (playerturn == 1) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
document.getElementById('b2layoff').style.display = 'inline';
document.getElementById('b2meld').style.display = 'inline';
document.getElementById('b1layoff').style.display = 'none';
document.getElementById('b1meld').style.display = 'none';
} else {
playerturn = 0;
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
document.getElementById('b1layoff').style.display = 'inline';
document.getElementById('b1meld').style.display = 'inline';
document.getElementById('b2layoff').style.display = 'none';
document.getElementById('b2meld').style.display = 'none';
}
alert(prefix + "It's first turn to " + pnames[playerturn] + " for next game.");
toggle = 1;
elem.width = elem.width;
elements = [];
curcard = 0;
deckcards = [];
usedcards = [];
shuffle();
//playerturn = 0;
somebodywins = -1;
chapter = [];
pieceTogetherTheStory(playerturn);
} else if (somebodywins == 1) {
document.getElementById('p2s').innerHTML = 1 + eval(document.getElementById('p2s').innerHTML);
document.getElementById('p1t').innerHTML = "0";
document.getElementById('p2t').innerHTML = "0";
//alert("And the winner is " + pnames[1] + ". ");
prefix = "And the winner is " + pnames[1] + ". ";
p1cards = [];
p2cards = [];
p1numin = 0;
p2numin = 0;
winneris = -1;
//genericcontrol = -1;
playerturn = Math.floor((Math.random()*2)+0);
if (playerturn == 1) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
document.getElementById('b2layoff').style.display = 'inline';
document.getElementById('b2meld').style.display = 'inline';
document.getElementById('b1layoff').style.display = 'none';
document.getElementById('b1meld').style.display = 'none';
} else {
playerturn = 0;
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
document.getElementById('b1layoff').style.display = 'inline';
document.getElementById('b1meld').style.display = 'inline';
document.getElementById('b2layoff').style.display = 'none';
document.getElementById('b2meld').style.display = 'none';
}
alert(prefix + "It's first turn to " + pnames[playerturn] + " for next game.");
toggle = 1;
elem.width = elem.width;
elements = [];
curcard = 0;
deckcards = [];
usedcards = [];
shuffle();
//playerturn = 0;
somebodywins = -1;
chapter = [];
pieceTogetherTheStory(playerturn);
}

} else {
if (okaytochange == 1) {
//elem.width = elem.width;
if (eval(genericcontrol) < 0) {
genericcontrol = eval(thebitis + 1);
} else {
genericcontrol = eval(genericcontrol + 1);
}
}
//alert(genericcontrol);
setTimeout(bitOfWhatHappened, 3000);
}
}

function takeFromDiscard(wpl) {
var jj, kk = 1;
kk = eval(1 + wpl);
sparea = [];
sparea[sparea.length] = discard[discard.length - 1];
for (jj=0; jj<eval("p" + kk + "cards.length"); jj++) {
eval("sparea[sparea.length] = p" + kk + "cards[" + jj + "]");
}
eval("p" + kk + "cards = []");
for (jj=0; jj<sparea.length; jj++) {
eval("p" + kk + "cards[" + jj + "] = sparea[" + jj + "]");
}
sparea = [];
for (jj=0; jj<(eval(discard.length - 1)); jj++) {
sparea[sparea.length] = discard[jj];
}
discard = [];
for (jj=0; jj<sparea.length; jj++) {
discard[discard.length] = sparea[jj];
}
}

function takeFromStock(wpl) {
var jj, kk = 1;
//alert(601);
kk = eval(1 + wpl);
sparea = [];
sparea[sparea.length] = stock[stock.length - 1];
for (jj=0; jj<eval("p" + kk + "cards.length"); jj++) {
//alert("sparea[sparea.length] = p" + kk + "cards[" + jj + "]");
eval("sparea[sparea.length] = p" + kk + "cards[" + jj + "]");
}
//alert(600);
eval("p" + kk + "cards = []");
for (jj=0; jj<sparea.length; jj++) {
//alert("p" + kk + "cards[" + jj + "] = sparea[" + jj + "]");
eval("p" + kk + "cards[" + jj + "] = sparea[" + jj + "]");
}
//alert(599);
sparea = [];
for (jj=0; jj<(eval(stock.length - 1)); jj++) {
sparea[sparea.length] = stock[jj];
}
//alert(598);
stock = [];
for (jj=0; jj<sparea.length; jj++) {
stock[stock.length] = sparea[jj];
}
//alert(597);
}

function showForPlayer(wp, pcf) {
var ii, orignum = 0, nextnum, jj;
//alert(111);
jj = eval(wp + 1);
eval("orignum = p" + jj + "cards.length");
nextnum = orignum;
if (pcf != "") nextnum = eval(orignum + 1);
var pt1 = document.getElementById('sp1t');
var pm1 = document.getElementById('p1meld');
var pl1 = document.getElementById('p1layoff');
var pd1 = document.getElementById('p1discard');
var pt2 = document.getElementById('sp2t');
var pm2 = document.getElementById('p2meld');
var pl2 = document.getElementById('p2layoff');
var pd2 = document.getElementById('p2discard');
pm2.innerHTML = "<option value=''>Meld cards ...</option>";
pl2.innerHTML = "<option value=''>Lay off cards ...</option>";
pd2.innerHTML = "<option value=''>Discard card ...</option>";
pm1.innerHTML = "<option value=''>Meld cards ...</option>";
pl1.innerHTML = "<option value=''>Lay off cards ...</option>";
pd1.innerHTML = "<option value=''>Discard card ...</option>";



if (wp == 0) {
p1cards.sort();
if (pcf != "") {
if (((pcf + " ").substring(0,1) == "D" || (pcf + " ").substring(0,1) == "d") && discard.length > 0) {
takeFromDiscard(wp);
} else {
takeFromStock(wp);
}
}
for (ii=0; ii<p1cards.length; ii++) {
pm1.innerHTML = pm1.innerHTML + "<option value='" + p1cards[ii] + "'>" + longname(p1cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
pl1.innerHTML = pl1.innerHTML + "<option value='" + p1cards[ii] + "'>" + longname(p1cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
pd1.innerHTML = pd1.innerHTML + "<option value='" + p1cards[ii] + "'>" + longname(p1cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
}
//alert(pm1.innerHTML);
} else {
p2cards.sort();
if (pcf != "") {
if (((pcf + " ").substring(0,1) == "D" || (pcf + " ").substring(0,1) == "d") && discard.length > 0) {
takeFromDiscard(wp);
} else {
takeFromStock(wp);
}
}
for (ii=0; ii<p2cards.length; ii++) {
pm2.innerHTML = pm2.innerHTML + "<option value='" + p2cards[ii] + "'>" + longname(p2cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
pl2.innerHTML = pl2.innerHTML + "<option value='" + p2cards[ii] + "'>" + longname(p2cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
pd2.innerHTML = pd2.innerHTML + "<option value='" + p2cards[ii] + "'>" + longname(p2cards[ii].replace('images/', '').replace(".gif", "")) + "</option>";
}
//alert(pm2.innerHTML);
}
//alert("pt" + jj + ".innerHTML = '" + nextnum + "'");
eval("pt" + jj + ".innerHTML = '" + nextnum + "'");
}

function playAScenario(wpf) {
if (wpf == 1) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
document.getElementById('b2layoff').style.display = 'inline';
document.getElementById('b2meld').style.display = 'inline';
document.getElementById('b1layoff').style.display = 'none';
document.getElementById('b1meld').style.display = 'none';
} else {
playerturn = 0;
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
document.getElementById('b1layoff').style.display = 'inline';
document.getElementById('b1meld').style.display = 'inline';
document.getElementById('b2layoff').style.display = 'none';
document.getElementById('b2meld').style.display = 'none';
}
//if (qbit == ", ?=Peak at your cards") qbit = "";
if (eval(stock.length) == 0) {
var kkk=0;
stock = [];
for (kkk=0; kkk<eval(discard.length); kkk++) {
stock[kkk] = discard[kkk];
}
discard = [];
alert("=dl=" + discard.length);
}
if (eval(discard.length) > 0) {
dhuh = ", D=Discard (face up)";
}
var pcfrom = prompt("It is your turn, " + pnames[wpf] + ". Please make sure " + pnames[eval(1 - wpf)] + " is not looking. Okay? Now, which pile do you want to take a card from ... S=Stock (face down)" + dhuh + ", ?=See your cards before deciding", "S");
//if (qbit == " ") qbit = ", ?=Peak at your cards";
if (pcfrom == null) pcfrom = "";
while (pcfrom == "?" || pcfrom == "" || (discard.length == 0 && (pcfrom.substring(0,1) == "D" || pcfrom.substring(0,1) == "d"))) {
showForPlayer(wpf, "");
pcfrom = prompt("It is your turn, " + pnames[wpf] + ". Please make sure " + pnames[eval(1 - wpf)] + " is not looking. Okay? Now, which pile do you want to take a card from ... S=Stock (face down)" + dhuh, "S");
if (pcfrom == null) pcfrom = "";
}
showForPlayer(wpf, pcfrom);
elem.width = elem.width;
p1cards.sort();
p2cards.sort();
drawstock();
drawdiscard();
drawmeld();

if (1 == 2) {
var facingcard, hasthewoodon = -1, fval, ii, jj, kk;
var thisskirmish = [];
var spare = [];
somebodywins = -1;
chapter[chapter.length] = wpf + ";" + p1cards.length + ";" + p2cards.length + ";";
p1numin = 0;
p2numin = 0;
//story[story.length] = wpf;
while (somebodywins < 0) {
if (wpf == 0) {
if (somebodywins < 0 && p1numin >= p1cards.length) {
somebodywins = 1;
hasthewoodon = 0;
} else {
facingcard = p1cards[p1numin];
thisskirmish[thisskirmish.length] = facingcard;
fval = eval(facingcard.replace('images/0', '').replace('images/', '').replace("d", "").replace("h", "").replace("s", "").replace("c", "").replace(".gif", ""));
p1numin = eval(1 + p1numin);
//alert("p1=" + facingcard);
if (fval == 1) {
hasthewoodon = 4;
wpf = eval(1 - wpf);
} else if (fval >= 11) {
hasthewoodon = eval((fval % 10));
wpf = eval(1 - wpf);
} else if (hasthewoodon == 1) {
hasthewoodon = 0;
somebodywins = 1;
} else if (hasthewoodon > 1) {
hasthewoodon = eval(hasthewoodon - 1);
} else {
wpf = eval(1 - wpf);
}
if (somebodywins < 0 && p1numin >= p1cards.length && hasthewoodon < 0) {
somebodywins = 1;
hasthewoodon = 0;
}
}
} else {
if (somebodywins < 0 && p2numin >= p2cards.length) {
somebodywins = 0;
hasthewoodon = 0;
} else {
facingcard = p2cards[p2numin];
thisskirmish[thisskirmish.length] = facingcard;
fval = eval(facingcard.replace('images/0', '').replace('images/', '').replace("d", "").replace("h", "").replace("s", "").replace("c", "").replace(".gif", ""));
p2numin = eval(1 + p2numin);
//alert("p2=" + facingcard);
if (fval == 1) {
hasthewoodon = 4;
wpf = eval(1 - wpf);
} else if (fval >= 11) {
hasthewoodon = eval((fval % 10));
wpf = eval(1 - wpf);
} else if (hasthewoodon == 1) {
hasthewoodon = 0;
somebodywins = 0;
} else if (hasthewoodon > 1) {
hasthewoodon = eval(hasthewoodon - 1);
} else {
wpf = eval(1 - wpf);
}
if (somebodywins < 0 && p2numin >= p2cards.length && hasthewoodon < 0) {
somebodywins = 0;
hasthewoodon = 0;
}
}
}
}
wpf = somebodywins;
if (wpf == 0) {
spare = [];
if (p1cards.length > p1numin) {
for (ii=eval(p1numin); ii<p1cards.length; ii++) {
spare[spare.length] = p1cards[ii];
}
for (ii=0; ii<thisskirmish.length; ii++) {
spare[spare.length] = thisskirmish[ii];
}
}
p1cards = [];
for (ii=0; ii<spare.length; ii++) {
p1cards[p1cards.length] = spare[ii];
}
spare = [];
if (p2cards.length > p2numin) {
for (ii=eval(p2numin); ii<p2cards.length; ii++) {
spare[spare.length] = p2cards[ii];
}
}
p2cards = [];
for (ii=0; ii<spare.length; ii++) {
p2cards[p2cards.length] = spare[ii];
}

} else {
spare = [];
if (p2cards.length > p2numin) {
for (ii=eval(p2numin); ii<p2cards.length; ii++) {
spare[spare.length] = p2cards[ii];
}
for (ii=0; ii<thisskirmish.length; ii++) {
spare[spare.length] = thisskirmish[ii];
}
}
p2cards = [];
for (ii=0; ii<spare.length; ii++) {
p2cards[p2cards.length] = spare[ii];
}
spare = [];
if (p1cards.length > p1numin) {
for (ii=eval(p1numin); ii<p1cards.length; ii++) {
spare[spare.length] = p1cards[ii];
}
}
p1cards = [];
for (ii=0; ii<spare.length; ii++) {
p1cards[p1cards.length] = spare[ii];
}
}

chapter[chapter.length - 1] = chapter[chapter.length - 1] + thisskirmish[0];
for (ii=1; ii<thisskirmish.length; ii++) {
chapter[chapter.length - 1] = chapter[chapter.length - 1] + "," + thisskirmish[ii];
}
chapter[chapter.length - 1] = chapter[chapter.length - 1] + ";" + wpf + ";" + p1cards.length + ";" + p2cards.length + ";";
//alert("winner is " + wpf + " and s.length=" + thisskirmish.length + " and p1cards.length=" + p1cards.length + " and p2cards.length=" + p2cards.length);

}

return eval(1 - wpf); //wpf;
}


function andthen() {
if (isiPad) {
context.drawImage(spareto1o, spareto1x, spareto1y);
context.drawImage(imgsover[sparei], sparegoodx, sparegoody);
}
}

function alertmaybe(txt) {
if (isiPad && 1 == 2) {
document.getElementById('myh1').innerHTML = txt;
if (txt.indexOf("Bad luck") != -1) {
setTimeout(andthen, 1000);
}
} else {
alert(txt);
}
}


</script>
</head>
<body align='center'>
<h1 align='center' id='myh1'>Select player names & click anywhere on card to shuffle & start the <a target=_blank href='http://www.pagat.com/rummy/rummy.html' title='Rummy rules ... thanks'>Rummy</a> card game.</h1>
<div id='oldidea' style='display:none;' align='center'>
<p>Score <span style='color:green;' id="score">0</span> achieved via <span style='color:red;' id="goes">0</span> goes and your current card criteria guess is <select style='background-color: pink;' id="guess"><option value="">Your guess selection ...</option><option value="hdr.">Red</option><option value="h">&nbsp;Hearts</option><option value="d">&nbsp;Diamonds</option><option value="csb.">Black</option><option value="s">&nbsp;Spades</option><option value="c">&nbsp;Clubs</option><option value="01">&nbsp;&nbsp;Ace</option><option value="02">&nbsp;&nbsp;2</option><option value="03">&nbsp;&nbsp;3</option><option value="04">&nbsp;&nbsp;4</option><option value="05">&nbsp;&nbsp;5</option><option value="06">&nbsp;&nbsp;6</option><option value="07">&nbsp;&nbsp;7</option><option value="08">&nbsp;&nbsp;8</option><option value="09">&nbsp;&nbsp;9</option><option value="10">&nbsp;&nbsp;10</option><option value="11">&nbsp;&nbsp;Jack</option><option value="12">&nbsp;&nbsp;Queen</option><option value="13">&nbsp;&nbsp;King</option></select></p>
</div>
<div id='pnames' align='center' >
<table border=2 cellpadding=5 cellspacing=5 align='center' style=" margin-top: 20px; ">
<tr style="background-color: pink;" id='trh'>
<th>Player1 Name</th><th>Player1 Number of Cards</th><th>Player1 Games Won</th><th> ... Vs ...</th><th>Player2 Name</th><th>Player2 Number of Cards</th><th>Player2 Games Won</th>
</tr>
<tr id='trd'>
<td><input id='i0' type="text" onchange=" pnames[0] = this.value; " value="Player1" style=' background-color: white;'></input><br><br>

<input id='b1meld' type="button" onclick=" if (preassess(document.getElementById('p1meld'))) { assess(document.getElementById('p1meld'),1); } else { alert('Try again'); } " value="Meld" style=' background-color: orange;'></input>
<input id='b1layoff' type="button" onclick=" if (preassess(document.getElementById('p1layoff'))) { assess(document.getElementById('p1layoff'),1); } else { alert('Try again'); } " value="Lay Off" style=' background-color: pink;'></input>


</td><td id='p1t'><span id='sp1t'>10</span>&nbsp;<select style="background-color:orange;" id='p1meld' size=12 multiple required><option value=''>Meld cards ...</option></select>&nbsp;<select style="background-color:pink;" id='p1layoff' size=12 multiple required><option value=''>Lay off cards ...</option></select>&nbsp;<select style="background-color:lightgray;" onchange='assess(this,1);' id='p1discard' size=12><option value=''>Discard card ...</option></select></td><td id='p1s'>0</td><td> ... Vs ...</td><td><input id='i1' type="text" onchange=" pnames[1] = this.value; " value="Player2" style=' background-color: white;'></input><br><br>

<input id='b2meld' type="button" onclick=" if (preassess(document.getElementById('p2meld'))) { assess(document.getElementById('p2meld'),2); } else { alert('Try again'); } " value="Meld" style=' background-color: orange;'></input>
<input id='b2layoff' type="button" onclick=" if (preassess(document.getElementById('p2layoff'))) { assess(document.getElementById('p2layoff'),2); } else { alert('Try again'); } " value="Lay Off" style=' background-color: pink;'></input>


</td><td id='p2t'><span id='sp2t'>10</span>&nbsp;<select style="background-color:orange;" id='p2meld' multiple size=12 required><option value=''>Meld cards ...</option></select>&nbsp;<select style="background-color:pink;" id='p2layoff' multiple size=12 required><option value=''>Lay off cards ...</option></select>&nbsp;<select style="background-color:lightgray;" onchange='assess(this,2);' id='p2discard' size=12><option value=''>Discard card ...</option></select></td><td id='p2s'>0</td><td id="status" style="display:none;"></td>
</tr
</table>
</div>
<div id='myc' align='center'>
<br>
<canvas align='center' style='border: 5px solid green; background: url("images/back01.gif") #ffffff repeat; opacity: 0.3;' title='Select player names & click anywhere on card table to shuffle the cards & start the Rummy card game.' id="canvaselement" width="1350" height="370" style="border: 1px solid green;" />
</div>
<script language="JavaScript">

var toggle = 1;
var goodx = 10;
var goody = 10;
var inidone = 0;
var curcard = 0;



var imgs = new Array(52);
var imgsover = new Array(52);


var worthof = new Array(0.0, 4.0, 13.0, 52.0, 2.0);

var scoretoget = 200;
var guessvalue = 0.0;
var usedcards = [];
var deckcards = [];
var sdeckcards = [];
var defcard = "images/back01.gif";
var mypictures = new Array("images/01c.gif",
"images/01d.gif",
"images/01h.gif",
"images/01s.gif",
"images/02c.gif",
"images/02d.gif",
"images/02h.gif",
"images/02s.gif",
"images/03c.gif",
"images/03d.gif",
"images/03h.gif",
"images/03s.gif",
"images/04c.gif",
"images/04d.gif",
"images/04h.gif",
"images/04s.gif",
"images/05c.gif",
"images/05d.gif",
"images/05h.gif",
"images/05s.gif",
"images/06c.gif",
"images/06d.gif",
"images/06h.gif",
"images/06s.gif",
"images/07c.gif",
"images/07d.gif",
"images/07h.gif",
"images/07s.gif",
"images/08c.gif",
"images/08d.gif",
"images/08h.gif",
"images/08s.gif",
"images/09c.gif",
"images/09d.gif",
"images/09h.gif",
"images/09s.gif",
"images/10c.gif",
"images/10d.gif",
"images/10h.gif",
"images/10s.gif",
"images/11c.gif",
"images/11d.gif",
"images/11h.gif",
"images/11s.gif",
"images/12c.gif",
"images/12d.gif",
"images/12h.gif",
"images/12s.gif",
"images/13c.gif",
"images/13d.gif",
"images/13h.gif",
"images/13s.gif"
);
var thispicture = 0;

var elem = document.getElementById('canvaselement');
var elemLeft = elem.offsetLeft;
var elemTop = elem.offsetTop;
var context = elem.getContext('2d');
var elements = [];
var arr=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
var pnames = ["Player1", "Player2"];

//alert(91);
shuffle();
//alert(92);
somebodywins = -1;
if (1 == 2) {
//alert(eval(somebodywins));
//alert(93);
playerturn = Math.floor((Math.random()*2)+0);
//alert(94);
if (playerturn == 1) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
document.getElementById('b2layoff').style.display = 'inline';
document.getElementById('b2meld').style.display = 'inline';
document.getElementById('b1layoff').style.display = 'none';
document.getElementById('b1meld').style.display = 'none';
} else {
playerturn = 0;
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
document.getElementById('b1layoff').style.display = 'inline';
document.getElementById('b1meld').style.display = 'inline';
document.getElementById('b2layoff').style.display = 'none';
document.getElementById('b2meld').style.display = 'none';
}
//alert(playerturn);
alert("It's first turn to " + pnames[playerturn]);
//alert(80);
pieceTogetherTheStory(playerturn);
//alert(79);
}

// Add event listener for `click` events.
elem.addEventListener(eventname, function(event) {
//alert(99);
if (eval(p1cards.length) > 0 && eval(p2cards.length) > 0) {

if (eval(total(1)) > eval(total(2))) {
//alert("Winner is " + pnames[1] + " with " + eval(total(2)) + " versus " + eval(total(1)) + " points left in the hand.");
dowinner(2, "Winner is " + pnames[1] + " with " + eval(total(2)) + " versus " + eval(total(1)) + " points left in the hand. ");
//p2cards = [];
} else if (eval(total(2)) > eval(total(1))) {
//alert("Winner is " + pnames[0] + " with " + eval(total(1)) + " versus " + eval(total(2)) + " points left in the hand.");
dowinner(1, "Winner is " + pnames[0] + " with " + eval(total(1)) + " versus " + eval(total(2)) + " points left in the hand. ");
//p1cards = [];
} else {
alert("It is a tie with " + eval(total(1)) + " versus " + eval(total(2)) + " points left in the hand.");
dowinner(0, "It is a tie with " + eval(total(1)) + " versus " + eval(total(2)) + " points left in the hand. ");
}
} else {

elem.style.backgroundImage = "none";
elem.style.opacity = 1.0;
var x = event.pageX - elemLeft;
var y = event.pageY - elemTop;


if (toggle == 0) {
curcard = -99;
for (var iijk=0; iijk<imgsover.length; iijk++) {
if (curcard == -99 && alreadypickedlist.indexOf(";" + iijk + ";") == -1) {
//alert("iijk=" + iijk + " goodx+=" + (goodx + imgsover[iijk].width) + " goody+=" + (goody + imgsover[iijk].height) + " x=" + x + " y=" + y);
if (iijk != to1i && (x >= goodx && x <= eval(goodx + imgsover[iijk].width)) && (y >= goody && y <= eval(goody + imgsover[iijk].height))) {
curcard = eval(0 - iijk);
context.drawImage(imgs[iijk],goodx,goody);
//alert(sdeckcards[iijk]);
if (to1 == "") {
to1o = imgsover[iijk];
to1 = sdeckcards[iijk];
to1x = goodx;
to1y = goody;
to1i = iijk;
} else if (to2 == "") {
if (to1.substring(0,2) == sdeckcards[iijk].substring(0,2)) { // is a match
if (playerturn == 0) {
document.getElementById('p1t').innerHTML = 1 + eval(document.getElementById('p1t').innerHTML);
} else {
document.getElementById('p2t').innerHTML = 1 + eval(document.getElementById('p2t').innerHTML);
}
alreadypickedlist = alreadypickedlist + iijk + ";" + to1i + ";";
alertmaybe("Great, " + pnames[playerturn] + "! Still your go.");
to1 = "";
to1i = -98;
numcorrect = eval(numcorrect + 2);
if (numcorrect >= 52) {
if (eval(document.getElementById('p1t').innerHTML) > eval(document.getElementById('p2t').innerHTML)) {
document.getElementById('p1s').innerHTML = 1 + eval(document.getElementById('p1s').innerHTML);
alertmaybe("And the winner is " + pnames[0]);
} else if (eval(document.getElementById('p2t').innerHTML) > eval(document.getElementById('p1t').innerHTML)) {
document.getElementById('p2s').innerHTML = 1 + eval(document.getElementById('p2s').innerHTML);
alertmaybe("And the winner is " + pnames[1]);
} else {
document.getElementById('p1s').innerHTML = 1 + eval(document.getElementById('p1s').innerHTML);
document.getElementById('p2s').innerHTML = 1 + eval(document.getElementById('p2s').innerHTML);
alertmaybe("And the winners are " + pnames[0] + " and " + pnames[1]);
}
document.getElementById('p1t').innerHTML = "0";
document.getElementById('p2t').innerHTML = "0";
alreadypickedlist = ";";
toggle = 1;
elem.width = elem.width;
elements = [];
curcard = 0;
deckcards = [];
usedcards = [];
shuffle();
playerturn = 0;
}
} else {
if (playerturn == 0) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
document.getElementById('b2layoff').style.display = 'inline';
document.getElementById('b2meld').style.display = 'inline';
document.getElementById('b1layoff').style.display = 'none';
document.getElementById('b1meld').style.display = 'none';
playerturn = 1;
} else {
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
document.getElementById('b1layoff').style.display = 'inline';
document.getElementById('b1meld').style.display = 'inline';
document.getElementById('b2layoff').style.display = 'none';
document.getElementById('b2meld').style.display = 'none';
playerturn = 0;
}
if (isiPad) {
spareto1o = to1o;
spareto1x = to1x;
spareto1y = to1y;
sparei = iijk;
sparegoodx = goodx;
sparegoody = goody;
}
alertmaybe("Bad luck, " + pnames[eval(1 - playerturn)] + "! Now it's " + pnames[playerturn] + "'s go.");
if (!isiPad) {
context.drawImage(to1o, to1x, to1y);
context.drawImage(imgsover[iijk], goodx, goody);
}
to1 = "";
to1i = -97;
}
}
}
}

if ((goodx + imgsover[iijk].width + imgsover[iijk].width + 10) > 1150) {
goodx = 10;
goody = goody + imgsover[iijk].height + 10;
} else {
goodx = goodx + imgsover[iijk].width + 10;
}
}

}

if (curcard != -99) {

x = goodx;
y = goody;

var r = Math.floor((Math.random()*256)+0);
var g = Math.floor((Math.random()*256)+0);
var b = Math.floor((Math.random()*256)+0);
var thiscol ='#' + arr[(r-(r % 16)) / 16] + arr[r % 16] + arr[(g-(g % 16)) / 16] + arr[g % 16] + arr[(b-(b % 16)) / 16] + arr[b % 16];

elem.style.backgroundColor = thiscol;

var img=document.getElementById(deckcards[curcard].replace("images/","").replace(".gif",""));
imgover=document.getElementById(defcard.replace("images/","").replace(".gif",""));

for (var kji=0; kji<52; kji++) imgsover[kji] = imgover;

imgs[0] = img;
sdeckcards[0] = deckcards[curcard].replace("images/","").replace(".gif","");
var sofar = ";" + curcard + ";";
var rd = Math.floor((Math.random()*52)+0);
for (var kjki=1; kjki<52; kjki++) {
while (sofar.indexOf(";" + rd + ";") != -1) {
rd = Math.floor((Math.random()*52)+0);
}
imgs[kjki] = document.getElementById(deckcards[rd].replace("images/","").replace(".gif",""));
sdeckcards[kjki] = deckcards[rd].replace("images/","").replace(".gif","");
sofar = sofar + rd + ";";
}

if (toggle == 0) {
document.getElementById('myh1').innerHTML = 'Select player names & click anywhere on card to shuffle & start the Rummy card game ... ';
//context.drawImage(imgover,x,y);
} else {
document.getElementById('myh1').innerHTML = 'Click card table to call it quits here for your game of Rummy.';
//goes = goes + 1.0;
//realgoes = realgoes + 1.0;
//score = score + assess(curcard);
//updatescore();
//if (score >= 200) {
// alert('Congratulations! You got there in ' + goes + ' goes. Is this your best?');
// elem.width = elem.width;
// elements = [];
// curcard = 0;
// deckcards = [];
// usedcards = [];
// window.location = './rummy.html';
//}

if (1 == 2) {
// Add card
context.drawImage(img,x,y);

if ((goodx + img.width + img.width + 10) > 1150) {
goodx = 10;
goody = goody + img.height + 10;
} else {
goodx = goodx + img.width + 10;
}
} else {
for (var ijk=0; ijk<imgsover.length; ijk++) {
//alert("imgsover.length=" + imgsover.length + " and ijk=" + ijk);
// Add card
context.drawImage(imgsover[ijk],x,y);
//context.drawImage(imgs[ijk],x,y);

if ((goodx + imgsover[ijk].width + imgsover[ijk].width + 10) > 1150) {
goodx = 10;
goody = goody + imgsover[ijk].height + 10;
} else {
goodx = goodx + imgsover[ijk].width + 10;
}
x = goodx;
y = goody;
}
}


goodx = 10;
goody = 10;
playerturn = Math.floor((Math.random()*2)+0);
if (playerturn == 1) {
document.getElementById('i0').style.backgroundColor = 'white';
document.getElementById('i1').style.backgroundColor = 'yellow';
} else {
playerturn = 0;
document.getElementById('i1').style.backgroundColor = 'white';
document.getElementById('i0').style.backgroundColor = 'yellow';
}

if (isiPad && 1 == 2) {
if (document.getElementById('trh').innerHTML.indexOf('thstatus') == -1) {
document.getElementById('trh').innerHTML = document.getElementById('trh').innerHTML + "<th id='thstatus'> ... and ... Status</th>";
document.getElementById('trd').innerHTML = document.getElementById('trd').innerHTML + "<td id='status'></td>";
}
}
alert("It's first turn to " + pnames[playerturn]);
pieceTogetherTheStory(playerturn);

usedcards[curcard] = deckcards[curcard];

curcard = curcard + 1;
if (curcard >= 52) {
elem.width = elem.width;
elements = [];
curcard = 0;
deckcards = [];
usedcards = [];
var wl='';
if (score.toString().indexOf(".") == -1) {
if (goes.toString().indexOf(".") == -1) {
wl = wl + './rummy.html?score=' + score + '.0&goes=' + goes + '.0';
} else {
wl = wl + './rummy.html?score=' + score + '.0&goes=' + goes;
}
} else {
if (goes.toString().indexOf(".") == -1) {
wl = wl + './rummy.html?score=' + score + '&goes=' + goes + '.0';
} else {
wl = wl + './rummy.html?score=' + score + '&goes=' + goes;
}
}
window.location = wl;
}
}
if (curcard >= 0) toggle = 1 - toggle;
}


goodx = 10;
goody = 10;
}


}, false);


function longname(inn) {
var outn=inn;
outn = outn.replace("s", " Spades");
outn = outn.replace("h", " Hearts");
outn = outn.replace("c", " Clubs");
if (outn.length <= 3) outn = outn.replace("d", " Diamonds");
outn = outn.replace("01", "Ace");
outn = outn.replace("02", "Two");
outn = outn.replace("03", "Three");
outn = outn.replace("04", "Four");
outn = outn.replace("05", "Five");
outn = outn.replace("06", "Six");
outn = outn.replace("07", "Seven");
outn = outn.replace("08", "Eight");
outn = outn.replace("09", "Nine");
outn = outn.replace("10", "Ten");
outn = outn.replace("11", "Jack");
outn = outn.replace("12", "Queen");
outn = outn.replace("13", "King");
return outn;
}

function shuffle() {
// Shuffle cards
var ii, jj, kk=0, mm, found;
var ourgs = document.getElementById('guess');

for (ii=0; ii<52; ii++) {
found = true;
while (found) {
mm = Math.floor((Math.random()*52)+0);
found = false;
for (jj=0; jj<usedcards.length; jj++) {
if (usedcards[jj] == mypictures[mm]) found = true;
}
}
deckcards[kk] = mypictures[mm];
usedcards[kk] = mypictures[mm];
if (inidone == 0) {
ourgs.innerHTML = ourgs.innerHTML + '<option value="' + mypictures[ii].replace("images/","").replace(".gif","") + '">&nbsp;&nbsp;&nbsp;' + longname(mypictures[ii].replace("images/","").replace(".gif","")) + '</option>';
document.write('<img src="' + mypictures[mm] + '" id="' + mypictures[mm].replace("images/","").replace(".gif","") + '" style="display:none;" title="' + mypictures[mm].replace("images/","").replace(".gif","") + '"></img>');
}
kk = kk+1;
}
usedcards = [];
if (inidone == 0) document.write('<img src="' + defcard + '" id="' + defcard.replace("images/","").replace(".gif","") + '" style="display:none;" title="' + defcard.replace("images/","").replace(".gif","") + '"></img>');

inidone = 1;
}

//updatescore();
</script>

</body>
</html>