<!-- Begin to Hide Script
//   Aztec's JavaScript One Player BlackJack Game, copyright 1999

var cardvalues = new Array( "ace", 2, 3, 4, 5, 6, 7, 8, 9, 10, "jack", "queen", "king");  //*** Holds all 13 values of cards
var deck = new Array(52);                                                                 //*** Holds the shuffled deck
var masterdeck = new Array(52);                                                           //*** Initializes card values and suits
   for( i = 0; i <= 51; i++) {
      deck[i] = cardvalues[(i % 13)];
      if ( i < 13) {
         deck[i] = "hearts_" + deck[i] + ".gif";
      } else if ( i >= 13 && i < 26) {
         deck[i] = "diamonds_" + deck[i] + ".gif";
      } else if ( i >= 26 && i < 39) {
         deck[i] = "club_" + deck[i] + ".gif";
      } else if ( i >= 39 && i < 52) {
         deck[i] = "spades_" + deck[i] + ".gif";
      } else {
         deck[i] = "back.gif";
      }
   }
var gameinprogress = 0;          //*** Keeps track of position in deck
var card = 0;                    //*** Keeps track of position in deck
var bet = 0;                     //*** Tracks amount bet
var dealerhand = new Array(11);  //*** Maximum of 11 cards before 21 is reached
var dealerpos = 0;               //*** Keeps track of position in dealer hand
var dealertot = 0;               //*** Keeps track of dealer's total
var dealerace = 0;               //*** Does dealer have an ace? Needed for total calculation
var playerhand = new Array(11);  //*** Maximum of 11 cards before 21 is reached
var playerpos = 0;               //*** Keeps track of position in dealer hand
var playertot = 0;               //*** Keeps track of dealer's total
var playerace = 0;               //*** Does player have an ace? Needed for total calculation
var playermoney = 500;           //*** Original amount of money to bet with

function deal () {
   for (i = 0; i < 11; i++) {    //*** Resets dealer and player's hands
      dealerhand[i] = "blank.gif";
      playerhand[i] = "blank.gif";
   }
   playerpos = 0;
   playerace = 0;
   dealerpos = 0;
   dealerace = 0;

   clear();                      //*** Clears form fields
   shuffle();

   playerhand[playerpos++] = deck[card++];   //*** Deals cards, increment position in deck and hand
   dealerhand[dealerpos++] = deck[card++];
   playerhand[playerpos++] = deck[card++];
   dealerhand[dealerpos++] = deck[card++];
   placebet();
   checkbj();                                //*** Check for player blackjack
   updateplayer();
   updatedealer( 0 );                        //*** Displays dealer's show card, ( 1 ) shows all cards
   gameinprogress = 1;
}


   //*** Shuffles deck
function shuffle () {
   card = 0;
   var numcards = deck.length;
   swaps = numcards *21;
   while(swaps-- > 0) {
   var a = Math.floor(Math.random() * numcards);
   var b = Math.floor(Math.random() * numcards);
   c = deck[a];
   deck[a] = deck[b];
   deck[b] = c;
   }
}

   //*** Deals player one card
function hit () {
   playerhand[playerpos++] = deck[card++];
   updateplayer();
}

   //*** Updates display of player's cards
function updateplayer () {
   for (i = 8; i <= 15; i++){
      if ( playerhand[(i-10)] == "blank.gif") {
      } else {
         document.images[i].src = playerhand[(i-8)];
      }
   }
   updateplayertot();
}

   //*** Calculates player's total (with or without ace)
function updateplayertot() {
   playertot = 0;
   for (i = 0; i < 11; i++) {
      var dvar = playerhand[i];
      compare = dvar.indexOf("_a");
      if( compare != -1) {
         if(playerace) {
            playertot += 1;
         } else {
            playertot += 11;
         }
      } else if( (dvar.indexOf("_j") > -1 ) || (dvar.indexOf("_q") > -1 ) || (dvar.indexOf("_k") > -1 ) || (dvar.indexOf("_10") > -1 )) {
         playertot += 10;
      } else if(dvar.indexOf("_2") > -1 ) {
         playertot += 2;
      } else if(dvar.indexOf("_3") > -1 ) {
         playertot += 3;
      } else if(dvar.indexOf("_4") > -1 ) {
         playertot += 4;
      } else if(dvar.indexOf("_5") > -1 ) {
         playertot += 5;
      } else if(dvar.indexOf("_6") > -1 ) {
         playertot += 6;
      } else if(dvar.indexOf("_7") > -1 ) {
         playertot += 7;
      } else if(dvar.indexOf("_8") > -1 ) {
         playertot += 8;
      } else if(dvar.indexOf("_9") > -1 ) {
         playertot += 9;
      } 
   }

   if (playertot > 21) {
      if(playerace) {
         document.forms[0].elements[1].value = "Busted";
         stand();
      } else {
         playerace = 1;
         updateplayertot();
      }
   } else {
      document.forms[0].elements[1].value = playertot;
   }
}

   //*** Can display dealer's show card or all of dealer's cards
function updatedealer ( anum ) {
   if( anum ) {
      for (i = 0; i <= 7; i++){
         if( dealerhand[(i)] == "blank.gif") {
         } else {
            document.images[i].src = dealerhand[(i)];
         }
      }
      updatedealertot();
   } else {
      document.images[0].src = "back.gif";
      document.images[1].src = dealerhand[1];
   }
}

   //*** Calculates dealer's total (with or without ace)
function updatedealertot() {
   dealertot = 0;
   for (i = 0; i < 11; i++) {
      var dvar = dealerhand[i];
      compare = dvar.indexOf("_a");
      if( compare != -1) {
         if(dealerace) {
            dealertot += 1;
         } else {
            dealertot += 11;
         }
      } else if( (dvar.indexOf("_j") > -1 ) || (dvar.indexOf("_q") > -1 ) || (dvar.indexOf("_k") > -1 ) || (dvar.indexOf("_10") > -1 )) {
         dealertot += 10;
      } else if(dvar.indexOf("_2") > -1 ) {
         dealertot += 2;
      } else if(dvar.indexOf("_3") > -1 ) {
         dealertot += 3;
      } else if(dvar.indexOf("_4") > -1 ) {
         dealertot += 4;
      } else if(dvar.indexOf("_5") > -1 ) {
         dealertot += 5;
      } else if(dvar.indexOf("_6") > -1 ) {
         dealertot += 6;
      } else if(dvar.indexOf("_7") > -1 ) {
         dealertot += 7;
      } else if(dvar.indexOf("_8") > -1 ) {
         dealertot += 8;
      } else if(dvar.indexOf("_9") > -1 ) {
         dealertot += 9;
      } 
   }

   if (dealertot > 21) {
      if(dealerace) {
         document.forms[0].elements[0].value = "Busted";
      } else {
         dealerace = 1;
         updatedealertot();
      }
   } else {
   document.forms[0].elements[0].value = dealertot;
   }
}

   //*** Clears all form fields
function clear () {
   for (i = 0; i < 16; i++){
	  document.images[i].src = "blank.gif";
   }
   for (i = 0; i <= 2; i++){
      document.forms[0].elements[i].value = " ";
   }
   updatemoney();
}

   //*** Ends player's turn and starts dealer run
function stand () {
   if (gameinprogress) {
       updatedealer( 1 );
       while (dealertot < 17) {
          dealerhand[dealerpos++] = deck[card++];
          updatedealer( 1 );
       }
       winnings();
       gameinprogress = 0;
   }
}

   //*** Alters the amount of money bet
function changebet ( stake ) {
   if (!gameinprogress) {
       bet += stake;
       document.forms[1].elements[0].value = bet;
   }
}

   //*** Places bet and updates money
function placebet () {
   playermoney -= bet;
   updatemoney();
}

   //*** Calculates winnings or losings in all cases except blackjack
function winnings() {
   if ((dealertot > 21 && playertot > 21) || dealertot == playertot) {
      playermoney += bet;
      declarewinner( "Push" );
   } else if ((dealertot < playertot && playertot <= 21 ) || dealertot > 21) {
      playermoney += bet * 2;
      declarewinner( "Player" );
   } else {
      declarewinner( "House" );
   }
   updatemoney();
}

   //*** Updates player money fields and bet fields
function updatemoney () {
   document.forms[1].elements[0].value = bet;
   document.forms[1].elements[1].value = playermoney;
}

   //*** Checks for player blackjack and updates winnings if there is one
function checkbj () {
   playertot = 0;
   for (i = 0; i < 2; i++) {
      var avar = playerhand[i];
      var compare = avar.indexOf("_a");
      if( compare != -1) {
         playertot += 11;
      }
      if( (avar.indexOf("_j") != -1) || (avar.indexOf("_q") != -1) || (avar.indexOf("_k") != -1) || (avar.indexOf("_10") != -1)) {
         playertot += 10;
      }
   }

   if (playertot == 21) {
      playermoney += bet * 2.5;
      declarewinner( "BlackJack" );
      updatemoney();
   }
}

function declarewinner( str ) {
   document.forms[0].elements[2].value = str;
}

