<!--
///////////////////////////////////////////////////////////////////////////
// 「Black JS」メインモジュール（main.js）	(C)1999 Masahiko.Nitanda

/////////////////////////////////////////////////////////////////////
// バージョンチェック
verCheck = 1;	// バージョンチェックフラグ
if (navigator.appName != "Microsoft Internet Explorer"
	|| parseFloat(navigator.appVersion) < 3){
	alert("「Internet Explorer 4.0以上」をご使用してください！");
	verCheck = 0;	// バージョンチェックフラグセット
}

/////////////////////////////////////////////////////////////////////
// CommonRAM

// スプラッシュタイマー用
SpTID = 0;		// スプラッシュタイマーID
SpInt = 500;		// スプラッシュインターバル
IsL = 0;		// 読込み終了フラグ

// メインＲＡＭ
Cnt = 0;	// カウンタ
Int = 40;	// インターバル
tID = 0;	// タイマー識別子
ON = 1; OFF = 0;	// 定数
// キー配列 (0:左, 1:右, 2:上, 3:下, 4:Z)
ON_KEY = new Array(OFF, OFF, OFF, OFF, OFF);
// メッセージデータ
// ０〜２：タイトル、３〜：ルール説明、１２〜：掛け金、１５〜：ゲームオーバー
// １８〜：ヒット・スタンド、２１〜：ドロー、２４〜：負け、２７〜：勝ち、３０〜：結果報告
GWords = new Array(
	"Welcom to Black JS!", "Select item with cursor(ten key),", "and push Z button.",
	"Get card one by one with me.The pe", "-rson whoes total of number is nearly", "21 win. (JQK cards deal with 10)",
	"But if your total is more 21, you lose.", "And, if your total is equal my total ex", "-cept 21, I win",
	"When you want card, select HIT.", "And when you don't wants card, sele", "-ct STAND.",
	"Make a bet on this game.", "Select bet coins with cursor(ten key),", "and push Z button.",
	"You lose all coins!", "", "Game over.",
	"HIT or STAND?", "", "",
	"Draw.", "", "",
	"You lose.", "", "",
	"You win!", "Do you accept challenge of double u", "-p? If you win, bets is doubled.",
	"", "", ""
);
BtnS = 1;	// ボタン状態
BCnt = 0;	// ボタンカウント
BCMax = 20;	// ボタンアニメタイミング
Coin = 10;	// コイン数
CoinMax = 999999;	// コイン数最大値
CoinSpXo = 265;	// コイン枚数表示基本位置
CoinSpDx = 8;	// コイン枚数表示位置調整用
DUpCnt = 0;	// ダブルアップカウント
IsWin = 0;	// 勝敗フラグ(-1：負け、1：勝ち、0：未対戦)

///////////////////////////////////////////////////////////////////////////
// インプリメンテーション

// スプラッシュタイマー(LMessSp:読込み中メッセージ)
function IntSp()
{
	clearTimeout(SpTID);	// タイマークリア
	
	// 読込み終了チェック
	if (IsL){
		Cnt = 0;	// カウントリセット
		return;
	}
	
	if (Cnt){
		LMessSp.visibility = "visible";
		Cnt = 0;
	}
	else{
		LMessSp.visibility = "hidden";
		Cnt = 1;
	}

	SpTID = setTimeout("IntSp()", SpInt);	// スプラッシュタイマー設定
}

function IKeyDown(kcode)
{
	switch(window.event.keyCode)
	{
	case 100: case 37:	// 4:←
		ON_KEY[0] = ON;
		break;
	case 102: case 39:	// 6:→
		ON_KEY[1] = ON;
		break;
	case 104: case 38:	// 8:↑
		ON_KEY[2] = ON;
		break;
	case 98: case 40:	// 2:↓
		ON_KEY[3] = ON;
		break;
	case 90:		// Z
		ON_KEY[4] = ON;
		break;
	}
}

function IKeyUp(kcode)
{
	switch(window.event.keyCode)
	{
	case 100: case 37:	// 4:←
		ON_KEY[0] = OFF;
		break;
	case 102: case 39:	// 6:→
		ON_KEY[1] = OFF;
		break;
	case 104: case 38:	// 8:↑
		ON_KEY[2] = OFF;
		break;
	case 98: case 40:	// 2:↓
		ON_KEY[3] = OFF;
		break;
	case 90:		// Z
		ON_KEY[4] = OFF;
		break;
	}
}

// onLoadイベント
function IOnL()
{
	IsL = 1;	// 読込み終了
	SW.style.visibility = "hidden";		// スプラッシュ画面非表示
	GW.style.visibility = "visible";	// ゲーム画面表示

	// キー入力イベント取得開始
	document.onkeydown = IKeyDown;
	document.onkeyup = IKeyUp;
	
	// メッセージのセット
	SWords(0);

	// タイトルウィンドウの表示
	WndSp[0].visibility = "visible";

	tID = setTimeout("IntTi()", Int);	// タイトルタイマーセット
}

// メッセージのセット
function SWords(w)
{
	for (i = 0; i < 3; i++) WordsSp[i + 3].innerText = GWords[w + i];
}

// メッセージウィンドウ内のボタン表示関数
// V == 0のとき非表示
function CBtn(v)
{
	if (v){
		if (!BCnt){
			BtnSp[BtnS].visibility = "hidden";
			if (BtnS == 1) BtnS = 0;
			else BtnS = 1;
			BtnSp[BtnS].visibility = "visible";
		}
		
		if (BCnt >= BCMax) BCnt = 0;
		else BCnt++;
	}
	else BtnSp[BtnS].visibility = "hidden";
}

// IMGタグ生成(i:ID, s:src, l:left, t:top)
function WITAG(i, s, l, t)
{
	document.write("<img id='" + i + "' src='" + s
		+ "' style='position:absolute;left:" + l
		+ ";top:" + t + ";visibility:hidden;'>");
}

// DIVタグ生成(i:ID, l:left, t:top, s:font-size, f:font-family)
function WDTAG(i, l, t, s, f)
{
	document.write("<DIV id='" + i
		+ "' style='position:absolute;left:" + l
		+ ";top:" + t + ";font-size:" + s
		+ "pt;font-family:" + f + ";'></DIV>");
}

// 桁数計算(nは0以上とする)
function CFigures(n)
{
	fig = 1;	// 桁数
	range = 10;
	
	while (1){
		if (n < range) break;
		range *= 10;
		fig++;
	}
	
	return fig;
}

// 掛け金ウィンドウ切替処理
function CBetWnd()
{
	SWords(12);			// メッセージのセット
	// コイン増減
	if (IsWin == 1) Coin += BCoin[BCurP] * Math.pow(2, DUpCnt);
	else if (IsWin == -1) Coin -= BCoin[BCurP];
	if (Coin > CoinMax) Coin = CoinMax;
	CoinSp[1].innerText = Coin;	// コイン枚数のセット
	IsWin = 0;

	// 掛け金ウィンドウの表示
	WndSp[1].visibility = "visible";
	CoinSp[0].left = CoinSpXo - CoinSpDx * CFigures(Coin);	// 表示位置微調整
	CoinSp[0].visibility = "visible";	// コイン枚数
	SWndSp[0].visibility = "visible";
	BCurP = 0;
	BCurSp.top = 0;
	BCurSp.visibility = "visible";
	
	// 無効カバー表示
	for (i = 0; i < 4; i++){ if (BCoin[i] > Coin) break; }
	BCPMax = i - 1;
	for (;i < 4; i++) InvSp[i].visibility = "visible";
	
	// ゲームオーバー処理
	if (!Coin){
		SWords(15);
		Cnt = 0;
		tID = setTimeout("IntGOver()", Int);	// ゲームオーバータイマーセット

		return;
	}

	tID = setTimeout("IntBet()", Int);	// 掛け金タイマーセット
}

// プレイウィンドウ切替処理
function CPlWnd()
{
	SWords(18);	// メッセージのセット
	DUpCnt = 0;	// ダブルアップカウント
	IsWin = 0;	// 勝敗フラグ

	// プレイウィンドウの表示
	TPSp[1].innerText = "?";	// ディーラーの合計値
	TPSp[0].visibility = "visible";
	TBSp[0].visibility = "visible";
	SHWndSp[0].visibility = "visible";
	WndSp[2].visibility = "visible";

	tID = setTimeout("IntPl()", Int);	// プレイタイマーセット
}

// ゲームオーバータイマー
function IntGOver()
{
	clearTimeout(tID);

	if (Cnt < 20){
		// ゲームオーバーアニメ
		w = 500 - Cnt * 12;
		GOverSp.left = 150 - w / 2;
		GOverSp.width = w;
		GOverSp.height = 48;

		if (!Cnt) GOverSp.visibility = "visible";
		Cnt++;
	}
	else{
		CBtn(1);
		if (ON_KEY[4]){
			ON_KEY[4] = OFF;

			// タイトルに戻る
			CBtn(0);	// ボタン消去
			GOverSp.visibility = "hidden";
			CoinSp[0].visibility = "hidden";
			SWndSp[0].visibility = SWndSp[1].visibility = "hidden";
			BCurSp.visibility = "hidden";
			for (i = 0; i < 4; i++) InvSp[i].visibility = "hidden";
			WndSp[1].visibility = "hidden";

			// タイトルウィンドウ表示
			SWords(0);
			HCurSp.visibility = "visible";
			WndSp[0].visibility = "visible";
			tID = setTimeout("IntTi()", Int);	// タイトルタイマーセット
			return;
		}
	}

	tID = setTimeout("IntGOver()", Int);	// ゲームオーバータイマー
}

// -->

