/*
BlackJack version 1.01
Copyright (C) 1997-99 Rob Eisler.  All Rights Reserved.
http://www.robplanet.com/js/blackjack
rob@robplanet.com

Last modified on Jun 7, 1999

Copyright Notice:
Copyright 1999 Robert S. Eisler.  All Rights Reserved.

This code may be used and modified by anyone so long as this header and
copyright information remains intact.  By using this code you agree to 
indemnify Robert S. Eisler from any liability that might arise from its 
use.  You must obtain written consent before selling or redistributing 
this code.

*/

var bet = 1
var credit = 200
var savecredit = 0
var debt = 200
var pcards = 0
var dcards = 0
var ptotal = 0
var dtotal = 0
var pace = false
var dace = false
var blackjack = false
var doubled = false
var gameon = false
var temp = 0
var mnum = 0
player = new Array(10)
dealer = new Array(10)
playervalue = new Array(10)
dealervalue = new Array(10)
cardnumber = new Array(53)
lcardnumber = new Array(53)
number = new Array(10)
message = new Array(5)

numberblank = new Image
numberblank.src = "numberblank.gif"

for(x=0;x<10;x++) {
	player[x] = 0
	dealer[x] = 0
	playervalue[x] = 0
	dealervalue[x] = 0
	number[x]=new Image(23,25)
	number[x].src=eval('"number' + x + '.gif"')
}

cardnumber[0]=new Image(71,96)
cardnumber[0].src="cardback.gif"
lcardnumber[0] = new Image(17,96)
lcardnumber[0].src = "lblank.gif"

for (x=1;x<53;x++) {
	cardnumber[x]=new Image(71,96)
	cardnumber[x].src= eval('"card' + x + '.gif"')
	lcardnumber[x]=new Image(17,96)
	lcardnumber[x].src = eval('"lcard' + x + '.gif"')
}

messageblank = new Image
messageblank.src = "messageblank.gif"

for (x=0;x<5;x++) {
	message[x]=new Image(200,25)
	message[x].src = eval('"message' + x + '.gif"')
}

function playershow(img, imgnum)  {
	if (player[imgnum] == 0) {
		if (imgnum == 0) {
			document[img].src = cardnumber[0].src
		} else {
			document[img].src = lcardnumber[0].src
		}
	} 
	else {
		if (imgnum == 0) {
		        document[img].src = cardnumber[player[imgnum]].src 
		} else {
			document[img].src = lcardnumber[player[imgnum]].src
		}
	}
}

function dealershow(img, imgnum) {
	if (dealer[imgnum] == 0) {
		if (imgnum == 0) {
			document[img].src = cardnumber[0].src
		} else {
			document[img].src = lcardnumber[0].src
		}
	}
	else {
		if (imgnum == 0) {
		        document[img].src = cardnumber[dealer[imgnum]].src 
		} else {
			document[img].src = lcardnumber[dealer[imgnum]].src
		}	
	}
}

function clear() {

	pcards = 0
	dcards = 0
	ptotal = 0
	dtotal = 0
	pace = false
	dace = false
	blackjack = false
	doubled = false

	document['message'].src = messageblank.src

	updatedtotal('dcount1','dcount0')
	updateptotal('pcount1','pcount0')

	for (x=0;x<10;x++) {
		player[x] = 0
		dealer[x] = 0
		playervalue[x] = 0
		dealervalue[x] = 0
		playershow(eval("'player" + x + "'"), x)
		dealershow(eval("'dealer" + x + "'"), x)
	}

}

function draw()  {

	if (!gameon) {

		clear()
		hand = 12
		gameon = true
		credit -= bet
		updatecredit('credita', 'creditb', 'creditc', 'creditd')

		player[0] = Math.floor(52*(Math.random()) + 1)
		player[1] = Math.floor(52*(Math.random()) + 1)
		dealer[0] = Math.floor(52*(Math.random()) + 1)

		playervalue[0] = player[0] - (13*(Math.floor((player[0]-1)/13)))
		playervalue[1] = player[1] - (13*(Math.floor((player[1]-1)/13)))
		dealervalue[0] = dealer[0] - (13*(Math.floor((dealer[0]-1)/13)))

		if ( playervalue[0] == 1 || playervalue[1] == 1) {
			pace = true
		}

		if ( playervalue[0] > 9 ) {
			ptotal += 10
		}
		else {
			ptotal += playervalue[0]
		}
		if ( playervalue[1] > 9 ) {
			ptotal += 10
		}
		else {
			ptotal += playervalue[1]
		}

		if ( dealervalue[0] == 1) {
			dace = true
		}
		if ( dealervalue[0] > 9 ) {
			dtotal += 10
		}
		else {
			dtotal += dealervalue[0]
		}

		playershow('player0', 0)
		playershow('player1', 1)
		dealershow('dealer0', 0)

		pcards = 2
		dcards = 1

		updatedtotal('dcount1','dcount0')
		updateptotal('pcount1','pcount0')

		if ( ( playervalue[0] == 1 && playervalue[1] > 9 ) || ( playervalue[1] == 1 && playervalue[0] > 9 ) ) {
			blackjack = true
			gameon = false
			if (dtotal == 1 || dtotal == 10) {
				dealemup()
			} else {
				blackjackwin()
			}
		}

	}

}

function hit() {

	if (gameon) {

		player[pcards] = Math.floor(52*(Math.random()) + 1)
		playershow(eval("'player" + pcards + "'"), pcards)

		playervalue[pcards] = player[pcards] - (13*(Math.floor((player[pcards]-1)/13)))

		if ( playervalue[pcards] == 1 ) {
			pace = true
		}

		if ( playervalue[pcards] > 9 ) {
			ptotal += 10
		}
		else {
			ptotal += playervalue[pcards]
		}

		updateptotal('pcount1','pcount0')
		pcards++

		if ( ptotal == 21 || ( ptotal == 11 && pace ) ) {

			gameon = false
			dealemup()

		}
		else {
			if ( ptotal > 21 ) {
				gameon = false
				lose()
			}
		}

	}
}

function double () {

	if (gameon && pcards == 2 && credit >= bet) {

		credit -= bet
		updatecredit ('credita','creditb','creditc','creditd')
		bet *= 2
		doubled = true

		player[pcards] = Math.floor(52*(Math.random()) + 1)
		playershow(eval("'player" + pcards + "'"), pcards)

		playervalue[pcards] = player[pcards] - (13*(Math.floor((player[pcards]-1)/13)))

		if ( playervalue[pcards] == 1 ) {
			pace = true
		}

		if ( playervalue[pcards] > 9 ) {
			ptotal += 10
		}
		else {
			ptotal += playervalue[pcards]
		}

		updateptotal('pcount1','pcount0')
		pcards++

		gameon = false

		if ( ptotal > 21 ) {
			bet = bet / 2
			lose()
		} else {
			dealemup()
		}

	}
	else {

		if ( pcards > 2 ) {

			alert("You can't double: You have more than 2 cards.")

		} else {
			if ( credit < bet ) {
				alert("You can't double: You don't have enough credits.")
			}
		}
	}

}

function stand() {

	if (gameon) {

		gameon = false
		dealemup()

	}

}

function dealemup() {

	while ( !(dtotal > 16 || ( dtotal > 6 && dtotal < 12 && dace) || (blackjack && dcards > 1)) ) {

		dealer[dcards] = Math.floor(52*(Math.random()) + 1)
		dealershow(eval("'dealer" + dcards + "'"), dcards)

		dealervalue[dcards] = dealer[dcards] - (13*(Math.floor((dealer[dcards]-1)/13)))

		if ( dealervalue[dcards] == 1 ) {
			dace = true
		}

		if ( dealervalue[dcards] > 9 ) {
			dtotal += 10
		}
		else {
			dtotal += dealervalue[dcards]
		}

		updatedtotal('dcount1','dcount0')
		dcards++

	}

	if ( dtotal < 12 ) {
		dtotal += 10
	}

	if ( dtotal > 21 ) {
		win()
	}
	else {
		if ( ptotal < 12 && pace ) {
			ptotal += 10
		}
		if ( dtotal > ptotal ) {
			lose()
		}
		else {
			if ( dtotal == ptotal ) {
				if (blackjack && dcards > 2) {
					blackjackwin()
				} else {
					if (dtotal == 21 && dcards == 2 && pcards > 2) {
						lose()
					} else {
						tie()
					}
				}
			}
			else {
				if (blackjack) {
					blackjackwin()
				} else {
					win()
				}
			}
		}
	}

}

function lose() {

	if (doubled) {
		bet = bet / 2
	}
	updatemessage('message',4)

}

function win() {

	credit += 2 * bet
	updatecredit('credita', 'creditb', 'creditc', 'creditd')

	if (doubled) {
		bet = bet / 2
	}
	updatemessage('message',3)

}

function tie() {

	credit += bet
	updatecredit('credita', 'creditb', 'creditc', 'creditd')
	if (doubled) {
		bet = bet / 2
	}
	updatemessage('message',2)

}

function blackjackwin() {

	credit += Math.floor ( (5/2) * bet )
	updatecredit('credita','creditb','creditc','creditd')
	updatemessage('message',1)

}

function updatebet(aaa, bbb)  {
	if (bet == 10)  {
		document [aaa].src = number[1].src
		document [bbb].src = number[0].src
	}
	else  {
		document [bbb].src = numberblank.src
		document [aaa].src = number[bet].src
	}
}

function updatecredit(aaa, bbb, ccc, ddd)  {
	savecredit = credit

	if (credit > 999)  {
		document [aaa].src = number[Math.floor(credit/1000)].src
		credit -= (Math.floor(credit/1000)*1000)
		document [bbb].src = number[Math.floor(credit/100)].src
		credit -= (Math.floor(credit/100)*100)
		document [ccc].src = number[Math.floor(credit/10)].src
		credit -= (Math.floor(credit/10)*10)
		document [ddd].src = number[credit].src
	}
	else if (credit > 99)  {
		document [ddd].src = numberblank.src
		document [aaa].src = number[Math.floor(credit/100)].src
		credit -= (Math.floor(credit/100)*100)
		document [bbb].src = number[Math.floor(credit/10)].src
		credit -= (Math.floor(credit/10)*10)
		document [ccc].src = number[credit].src
	}
	else if (credit > 9)  {
		document [ddd].src = numberblank.src
		document [ccc].src = numberblank.src
		document [aaa].src = number[Math.floor(credit/10)].src
		credit -= (Math.floor(credit/10)*10)
		document [bbb].src = number[credit].src
	}
	else  {
		document [ddd].src = numberblank.src
		document [ccc].src = numberblank.src
		document [bbb].src = numberblank.src
		document [aaa].src = number[credit].src
	}
	credit = savecredit
}

function updatedtotal(aaa,bbb) {

	if (dace && dtotal < 12) {
		showthis = dtotal + 10
	} else {
		showthis = dtotal
	}

	if (showthis > 29) {
		document [aaa].src = number[3].src
		document [bbb].src = number[showthis-30].src
	}
	else {
		if (showthis > 19) {
			document [aaa].src = number[2].src
			document [bbb].src = number[showthis-20].src
		}
		else {
			if (showthis > 9) {
				document [aaa].src = number[1].src
				document [bbb].src = number[showthis-10].src
			} else {
				document [aaa].src = number[0].src
				document [bbb].src = number[showthis].src
			}
		}
	}

}

function updateptotal(aaa,bbb) {

	if (pace && ptotal < 12) {
		showthis = ptotal + 10
	} else {
		showthis = ptotal
	}

	if (showthis > 19) {
		document [aaa].src = number[2].src
		document [bbb].src = number[showthis-20].src
	}
	else {
		if (showthis > 9) {
			document [aaa].src = number[1].src
			document [bbb].src = number[showthis-10].src
		} else {
			document [aaa].src = number[0].src
			document [bbb].src = number[showthis].src
		}
	}

}

function updatemessage(aaa,mnum)  {
	document [aaa].src = message[mnum].src
}

function odds()  {
	open("odds.html", "odds", "width=250,height=270,scrollbars,resizable"); 
}

function rules()  {
	open("rules.html", "rules", "width=500,height=225,scrollbars,resizable"); 
}

function about()  {
	alert("JScript BlackJack v1.01\n" +
		"Copyright (C) 1997-99 Robert Eisler\n" +
		"http://www.robplanet.com/js/blackjack\n" +
		"rob@robplanet.com")
}

function betup()  {
	if (!gameon && credit>bet && bet<10)  {
		bet++
		updatebet('beta', 'betb')
	}
}

function betdown()  {
	if (!gameon && bet>1)  {
		bet--
		updatebet('beta', 'betb')
	}
}

function betone()  {
	if (!gameon) {
		bet=1
		updatebet('beta', 'betb')
	}
}

function betten()  {
	if (!gameon && bet<10 && credit>9)  {
		bet=10
		updatebet('beta', 'betb')
	}
}

function bankmachine()  {
	debt += 200
	hand = 11
	for (x=0;x<201;x+=5)  {
		credit = x	
		updatecredit('credita', 'creditb', 'creditc', 'creditd')
	}
}

function total()  {
	if (credit > debt)  alert("You made $" + (credit-debt) + " today.  Congratulations!")
	else if (credit == debt)  alert("You broke even today.  Not bad.")
	else alert("You lost $" + (debt-credit) + " today.  Better luck next time!")
	debt = 200
	credit = 200
	besthand = 1
	updatecredit('credita', 'creditb', 'creditc', 'creditd')
}

