
   var vpwcookie = "vpwallet";
   var yourname = getplayer();
   var dwallet = 200;
   var wallet = getwallet();
   var cardback = "card-back";
   var bet = 0;
   var cardvals = new Array();
   var ipos = 0;
   for ( var i=0; i<4; i++ ) {
      for ( var j=1; j<14; j++ ) {
         cardvals[ipos] = i*100+j;
         ipos++;
      }
   }
   var deck = new Array();

   var winmess = new Array();
   winmess = [
              "", 
              "Jacks or Better",
              "Two Pair",
              "Three of a Kind",
              "Straight",
              "Flush",
              "Full House",
              "Four of a Kind",
              "Straight Flush",
              "Royal Flush"
              ];

   var winpay = new Array();
   winpay = [0, 1, 2, 3, 4, 5, 7, 20, 50, 250];

   var curcard=0
   var delt=0
   var rows = new Array();
   var discards = new Array();
   for ( var i=0; i < 5; i++ ) {
      rows[i] = 0;
   }

   function shuffle() {
      var i, j, rndcard, tmpcard;

      for ( i=0; i < 52; i++ ) {
         deck[i] = cardvals[i];
      }
      for ( j=0; j < 3; j++ ) {
      for ( i=0; i < 52; i++ ) {
         rndcard = Math.random() * 52;
         rndcard = Math.floor ( rndcard );
         tmpcard = deck[i];
         deck[i] = deck[rndcard];
         deck[rndcard] = tmpcard;
      }
      }
      curcard=0;
      for ( var i=0; i < 5; i++ ) {
         rows[i] = 0;
         discards[i] = 1;
      }
   }

   function makebet ( nbet ) {
      if ( nbet <=0 ) {
         return;
      }
      if ( wallet - nbet < 0 ) {
         return;
      }
      if ( bet <= 0 ) {
         for ( var i = 0; i < 5; i++ ) {
            setrowgif ( i, "images/card-none.gif" );
         }
         showpokermess ( "Bet more or deal" );
      }
      showpokermess2 ( 0 );
      document.images.dealbutt.src="images/deal.gif";
      bet = bet + nbet;
      wallet = wallet - nbet;
      showmoneyandbet();
      if ( wallet < 10 ) {
         document.images.bet10.src="images/blank.gif";
      }
      if ( wallet < 5 ) {
         document.images.bet5.src="images/blank.gif";
      }
      if ( wallet <= 0 ) {
         document.images.bet1.src="images/blank.gif";
      }
   }

   function deal() {
      if ( delt > 1 ) {
         return;
      }
      if ( bet <= 0 ) {
         return;
      }
      if ( delt == 0 ) {
         shuffle();
         document.images.bet1.src="images/blank.gif";
         document.images.bet5.src="images/blank.gif";
         document.images.bet10.src="images/blank.gif";
         showpokermess ( "Discard or deal" );
      }
      for ( var i=0; i<5; i++ ) {
         var cardnum = deck[curcard];
         if ( discards[i] ) {
            rows[i] = cardnum;
            setrowgif ( i, cardgifname ( cardnum ) );
            curcard++;
            if ( delt == 0 ) {
               setrowbutt ( i, "images/discard.gif" );
            }
            discards[i] = 0;
         }
      }
      var win = evalhand();
      showpokermess2 ( win );

      if ( delt == 1 ) {
         if ( win ) {
            wallet = wallet + ( bet * winpay[win] );
         }
         savewallet ( wallet );
         bet = 0;
         showmoneyandbet();
         for ( var i=0; i<5; i++ ) {
            setrowbutt ( i, "images/blank.gif" );
         }
         document.images.dealbutt.src="images/blank2.gif";
         if ( wallet > 0 ) {
            document.images.bet1.src="images/bet1.gif";
            document.images.bet5.src="images/bet5.gif";
            document.images.bet10.src="images/bet10.gif";
            showpokermess ( "Place your bet" );
         } else {
            showpokermess ( "Game Over" );
         }
         delt=0;
         return;
      }         

      delt++;
   }
   function discard ( rownum ) {
      if ( delt == 0 || delt >= 2 ) {
         return;
      }
      if ( discards[rownum] ) {
         setrowgif ( rownum, cardgifname ( rows[rownum] ) );
         setrowbutt ( rownum, "images/discard.gif" );
         discards[rownum] = 0;
      } else {
         setrowgif ( rownum, "images/"+cardback+".gif" );
         setrowbutt ( rownum, "images/keep.gif" );
         discards[rownum] = 1;
      }
      showpokermess ( "Discard again or deal" );
   }

   function changeback( back ) {
      var i;
      cardback = back;
      for ( i = 0; i < 5; i++ ) {
         if ( discards[i] )
            setrowgif ( i, "images/"+cardback+".gif" );
      }
   }

   function cardgifname ( cnum ) {
      var cardname;
      if ( cnum < 100 ) {
         if ( cnum < 10 ) {
            cardname = "card00" + cnum
         } else {
            cardname = "card0" + cnum
         }
      } else {
         cardname = "card" + cnum
      }
      return ( "images/" + cardname + ".gif" );
   }
   function setrowgif ( rownum, gifimg ) {
      var imgid = "row"+rownum;
      document.images[imgid].src=gifimg;
      return;
   }
   function setrowbutt ( rownum, gifimg ) {
      var imgid = "rowbutt"+rownum;
      document.images[imgid].src=gifimg;
      return;
   }
   function showpokermess ( outmsg ) {
      document.getElementById("pokermess").innerHTML = outmsg;
      return;
   }
   function showpokermess2 ( msgnum ) {
      var outmsg = "";

      if ( msgnum == 0 ) {
         if ( delt && wallet > 0 ) {
            outmsg = "Sorry... Please play again";
         } else {
            outmsg = "&nbsp;";
         }
      } else {
         if ( delt )
            outmsg = "<font color=\"#FF3F55\">Winner!!</font> ";
         outmsg += winmess[msgnum];
         if ( !delt )
            outmsg += " showing";
      }
      document.getElementById("pokermess2").innerHTML = outmsg;
      return;
   }
   function showmoneyandbet() {
      showmoney ( "youhave", wallet );
      showmoney ( "yourbet", bet );
   }
   function showmoney(mfield,bucks) {
      var outmsg = "";
      if ( mfield == "youhave" ) {
         outmsg = "$";
      }
      outmsg += bucks;
      document.getElementById(mfield).innerHTML = outmsg;
   }
   function getcsuit ( cardval ) {
      return ( Math.floor ( cardval / 100 ) );
   }
   function getcval ( cardval ) {
      return ( cardval - getcsuit ( cardval ) * 100 );
   }


//  0 = loser
//  1 = pair of jacks or better
//  2 = two pair
//  3 = three of a kind
//  4 = straight
//  5 = flush
//  6 = full house
//  7 = four of a kind
//  8 = straight flush
//  9 = royal flush

   function evalhand () {
      var tmprow = new Array();
      var i;
      for ( i = 0; i < 5; i++ ) {
         tmprow[i] = rows[i];
      }
      var sorted = 1;
      var tmpcard;
      for ( i = 3; i >= 0; i-- ) {
         for ( j = 0; j <= i; j++ ) {
            if ( getcval ( tmprow[j] ) > getcval ( tmprow[j+1] ) ) {
               tmpcard = tmprow[j];
               tmprow[j] = tmprow[j+1];
               tmprow[j+1] = tmpcard;
               sorted = 0;
            }
         }
         if ( sorted ) {
            break;
         }
      }
      var flush = 0;
      var straight = 0;
      if ( getcsuit ( tmprow[0] ) == getcsuit ( tmprow[1] ) &&
           getcsuit ( tmprow[0] ) == getcsuit ( tmprow[2] ) &&
           getcsuit ( tmprow[0] ) == getcsuit ( tmprow[3] ) &&
           getcsuit ( tmprow[0] ) == getcsuit ( tmprow[4] ) ) {
         flush = 1;
      }
      if ( getcval ( tmprow[0] ) < 10 &&
           getcval ( tmprow[0] ) + 1 == getcval ( tmprow[1] ) &&
           getcval ( tmprow[1] ) + 1 == getcval ( tmprow[2] ) &&
           getcval ( tmprow[2] ) + 1 == getcval ( tmprow[3] ) &&
           getcval ( tmprow[3] ) + 1 == getcval ( tmprow[4] ) ) {
         straight = 1;
      }
      if ( getcval ( tmprow[0] ) == 1 &&
           getcval ( tmprow[1] ) == 10 &&
           getcval ( tmprow[2] ) == 11 &&
           getcval ( tmprow[3] ) == 12 &&
           getcval ( tmprow[4] ) == 13 ) {
         straight = 2;
      }
      if ( flush && straight == 2 ) {
         return ( 9 );
      }
      if ( flush && straight == 1 ) {
         return ( 8 );
      }
      if ( ( getcval ( tmprow[0] ) == getcval ( tmprow[1] ) &&
             getcval ( tmprow[0] ) == getcval ( tmprow[2] ) &&
             getcval ( tmprow[0] ) == getcval ( tmprow[3] ) ) ||
           ( getcval ( tmprow[1] ) == getcval ( tmprow[2] ) &&
             getcval ( tmprow[1] ) == getcval ( tmprow[3] ) &&
             getcval ( tmprow[1] ) == getcval ( tmprow[4] ) ) ) {
         return ( 7 );
      }
      if ( ( getcval ( tmprow[0] ) == getcval ( tmprow[1] ) &&
             getcval ( tmprow[0] ) == getcval ( tmprow[2] ) &&
             getcval ( tmprow[3] ) == getcval ( tmprow[4] ) ) ||
           ( getcval ( tmprow[0] ) == getcval ( tmprow[1] ) &&
             getcval ( tmprow[2] ) == getcval ( tmprow[3] ) &&
             getcval ( tmprow[2] ) == getcval ( tmprow[4] ) ) ) {
         return ( 6 );
      }
      if ( flush ) {
         return ( 5 );
      }
      if ( straight ) {
         return ( 4 );
      }
      for ( i = 0; i < 3; i++ ) {
         if ( getcval ( tmprow[i] ) == getcval ( tmprow[i+1] ) &&
              getcval ( tmprow[i] ) == getcval ( tmprow[i+2] ) ) {
            return ( 3 );
         }
      }
      var pairs = 0;
      var hpair = 0;
      for ( i = 0; i < 4; i++ ) {
         if ( getcval ( tmprow[i] ) == getcval ( tmprow[i+1] ) ) {
            pairs++;
            if ( getcval ( tmprow[i] ) == 1 ||
                 getcval ( tmprow[i] ) > hpair ) {
               hpair = getcval ( tmprow[i] );
            }
         }
      }
      if ( pairs == 2 ) {
         return ( 2 );
      }
      if ( pairs && ( hpair == 1 || hpair > 10 ) ) {
         return ( 1 );
      }
      return ( 0 );
   }

   function setcookie ( name, val ) {
      document.cookie = name + "=" + val +
                        ";expires=Thu, 31-Dec-2020 23:59:59;path=/";
   }

   function savewallet(money) {
      setcookie ( vpwcookie + yourname, money);
   }

   function getwallet() {
      var dcookies = new String ( document.cookie );
//      document.write ( dcookies + "<br>" );
      var acookie;
      var money = 0;
      clist = dcookies.split ( "; " );
      for ( var i = 0; i < clist.length; i++ ) {
         acookie = new String ( clist[i] );
         nvlist = acookie.split ( "=" );
         if ( nvlist[0] == vpwcookie + yourname ) {
            money = nvlist[1];
         }
      }
      if ( money <= 0 ) {
         money = dwallet;
      }
      return ( money );
   }

   function resetgame() {
      if ( wallet <= 0 ||
           confirm ( "Are you sure you want to reset the game?", "Hi" ) ) {
      }
      wallet = dwallet;
      bet = 0;
      delt = 0;
      savewallet ( wallet );
   }

   function setplayer() {
      wallet = getwallet();
      bet = 0;
      delt = 0;
      return false;
   }

   function getplayer() {
      var query = new String ( window.location.search );
      var len = query.length;
      if ( query ) {
         query = query.substr ( 1, len-1 );
         qlist = query.split ( "&" );
         for ( var i = 0; i < qlist.length; i++ ) {
            qitem = new String ( qlist[i] );
            qnv = qitem.split ( "=" );
            if ( qnv[0] == "player" ) {
               if ( qnv[1] )
                  return ( qnv[1] );
               break;
            }
         }
      }
      return ( "You" );
   }

