var ntaku=4;           // ｎ択
var NUM=20;               // 問題数
var snum=5;             // 出題数
var tate=0;              // 選択肢の並べ方 0:横  1:縦
var shuffle=1;           // 問題の順番をランダムに 1:する、0:しない
var seigo_button=0;      // 正誤ボタン 1:あり 0:なし
var kaisetsu_type=0;     // 0:解説なし, 1:解説一覧のみ, 2:各問いに解説ボタンあり

var refresh=0;           // 試行ごとに refresh する:1 しない:0
var gokaku=80;           // 合格点（次の問題に進める）
var page_fwd=0;          // 1:合格点に達したら次に進む  0:何もしない
var nextfile=".html";       // 次のページのファイル名
var tbl_width=600;         // 問題欄の幅

// 変数初期化
var flg_kWin0=false;     // 結果window 開いているか
var flg_kWin1=false;     // 解説window
var flg_kWin2=false;     // 解説一覧window
var flg_try=false;       // 採点ボタンを押したか


// １次元配列作成
function MakeArray(n){
	this.length=n;
}

// ２次元配列作成
function DIM(dimx,dimy){
	var i;
	var myArray = new Array(dimy);
	for (i=0; i<=dimx; i++) myArray[i] = new Array(dimx);
	return myArray;
}

var q=new MakeArray(NUM);  // 問題文データ配列
var s=new DIM(NUM,ntaku);      // 選択肢データ配列
var v=new DIM(NUM,ntaku);      // 選択肢値　正解=1  不正解=0 
var c=new MakeArray(NUM);  // 選択したかどうかのチェック
var kd=new MakeArray(NUM); // 解説カードデータ配列

// 問題データ  q:問題文, s[][]:選択肢, v[][]:値(1 or 0)
q[1]="机场";
s[1][1]="jīchǎng";
s[1][2]="jíchǎng";
s[1][3]="jīcháng";
s[1][4]="qīchǎng";

q[2]="飞机";
s[2][1]="fēijī";
s[2][2]="hēijī";
s[2][3]="héijī";
s[2][4]="féijī";

q[3]="行李";
s[3][1]="xíngli";
s[3][2]="xīngli";
s[3][3]="xínli";
s[3][4]="hángli";

q[4]="座位";
s[4][1]="zuòwèi";
s[4][2]="zuōwèi";
s[4][3]="zuòwēi";
s[4][4]="zuówèi";

q[5]="海关";
s[5][1]="hǎiguān";
s[5][2]="hǎiguāng";
s[5][3]="háiguān";
s[5][4]="hàiguān";

q[6]="银行";
s[6][1]="yínháng";
s[6][2]="yíngháng";
s[6][3]="yínhán";
s[6][4]="yínghán";

q[7]="汽车";
s[7][1]="qìchē";
s[7][2]="chìchē";
s[7][3]="qīchē";
s[7][4]="qìchè";

q[8]="车站";
s[8][1]="chēzhàn";
s[8][2]="chézhàn";
s[8][3]="chēzhān";
s[8][4]="chēzhàng";

q[9]="硬卧";
s[9][1]="yìngwò";
s[9][2]="yìnwò";
s[9][3]="yīngwò";
s[9][4]="yīngwō";

q[10]="软座";
s[10][1]="ruǎnzuò";
s[10][2]="ruānzuò";
s[10][3]="ruǎnzuō";
s[10][4]="ruǎncuò";

q[11]="宾馆";
s[11][1]="bīnguǎn";
s[11][2]="pīnguǎn";
s[11][3]="bīnguān";
s[11][4]="bīngguǎn";

q[12]="酒店";
s[12][1]="jiǔdiàn";
s[12][2]="jǔdiàn";
s[12][3]="qiǔdiàn";
s[12][4]="jiūdiàn";

q[13]="押金";
s[13][1]="yājīn";
s[13][2]="yájīn";
s[13][3]="yàjīn";
s[13][4]="yājìn";

q[14]="房间";
s[14][1]="fángjiān";
s[14][2]="fāngjiān";
s[14][3]="fángjiàn";
s[14][4]="fánjiān";

q[15]="手纸";
s[15][1]="shǒuzhǐ";
s[15][2]="shōuzhǐ";
s[15][3]="shòuzhǐ";
s[15][4]="shǒuzhī";

q[16]="毛巾";
s[16][1]="máojīn";
s[16][2]="māojīn";
s[16][3]="màojīn";
s[16][4]="máoqīn";

q[17]="牙膏";
s[17][1]="yágāo";
s[17][2]="yàgāo";
s[17][3]="yāgāo";
s[17][4]="yāgáo";

q[18]="沙发";
s[18][1]="shāfā";
s[18][2]="shāfà";
s[18][3]="shàfā";
s[18][4]="sōufā";

q[19]="香皂";
s[19][1]="xiāngzào";
s[19][2]="xiángzào";
s[19][3]="xiāngzāo";
s[19][4]="xiàngzáo";

q[20]="电梯";
s[20][1]="diàntī";
s[20][2]="diàntì";
s[20][3]="diāntī";
s[20][4]="diàntí";


v[1][1]=1; v[1][2]=0; v[1][3]=0; v[1][4]=0; 
v[2][1]=1; v[2][2]=0; v[2][3]=0; v[2][4]=0; 
v[3][1]=1; v[3][2]=0; v[3][3]=0; v[3][4]=0; 
v[4][1]=1; v[4][2]=0; v[4][3]=0; v[4][4]=0; 
v[5][1]=1; v[5][2]=0; v[5][3]=0; v[5][4]=0; 
v[6][1]=1; v[6][2]=0; v[6][3]=0; v[6][4]=0; 
v[7][1]=1; v[7][2]=0; v[7][3]=0; v[7][4]=0; 
v[8][1]=1; v[8][2]=0; v[8][3]=0; v[8][4]=0; 
v[9][1]=1; v[9][2]=0; v[9][3]=0; v[9][4]=0; 
v[10][1]=1; v[10][2]=0; v[10][3]=0; v[10][4]=0; 
v[11][1]=1; v[11][2]=0; v[11][3]=0; v[11][4]=0; 
v[12][1]=1; v[12][2]=0; v[12][3]=0; v[12][4]=0; 
v[13][1]=1; v[13][2]=0; v[13][3]=0; v[13][4]=0; 
v[14][1]=1; v[14][2]=0; v[14][3]=0; v[14][4]=0; 
v[15][1]=1; v[15][2]=0; v[15][3]=0; v[15][4]=0; 
v[16][1]=1; v[16][2]=0; v[16][3]=0; v[16][4]=0; 
v[17][1]=1; v[17][2]=0; v[17][3]=0; v[17][4]=0; 
v[18][1]=1; v[18][2]=0; v[18][3]=0; v[18][4]=0; 
v[19][1]=1; v[19][2]=0; v[19][3]=0; v[19][4]=0; 
v[20][1]=1; v[20][2]=0; v[20][3]=0; v[20][4]=0; 


// 解説カードデータ


// n までの整数をランダムに発生  戻り値 x[]
function ransu(n) {
	var k=1, l,  bingo;
	var x=new MakeArray(snum);

	x[k] = Math.floor(n * Math.random())+1;
	k++;
	while ( k<=n ) {
    	x[k] = Math.floor(n * Math.random())+1;
	    bingo = 0;
	    for (l=1; l<k; l++) {  // すでに同じ数字がないかチェック
	        if ( x[k] == x[l] ) { bingo=1; break; }
	    }
	    if (bingo==0) k++;  	// 同じ数字がなければ k++
	}
	return x;
}


// 正解数カウント用配列 a[] 初期化
var a=new MakeArray(NUM);
for (i=1;i<=NUM;i++) { a[i]=0; }

// radio button が押されたかどうかチェック用配列 c[] 初期化
for (i=1;i<=NUM;i++) {
    c[i] = false;
}

// radio button が選択されたときの処理
function radio1(parts) { c[1]=true; a[1]=parts.value; }
function radio2(parts) { c[2]=true; a[2]=parts.value; }
function radio3(parts) { c[3]=true; a[3]=parts.value; }
function radio4(parts) { c[4]=true; a[4]=parts.value; }
function radio5(parts) { c[5]=true; a[5]=parts.value; }
function radio6(parts) { c[6]=true; a[6]=parts.value; }
function radio7(parts) { c[7]=true; a[7]=parts.value; }
function radio8(parts) { c[8]=true; a[8]=parts.value; }
function radio9(parts) { c[9]=true; a[9]=parts.value; }
function radio10(parts) { c[10]=true; a[10]=parts.value; }
function radio11(parts) { c[11]=true; a[11]=parts.value; }
function radio12(parts) { c[12]=true; a[12]=parts.value; }
function radio13(parts) { c[13]=true; a[13]=parts.value; }
function radio14(parts) { c[14]=true; a[14]=parts.value; }
function radio15(parts) { c[15]=true; a[15]=parts.value; }
function radio16(parts) { c[16]=true; a[16]=parts.value; }
function radio17(parts) { c[17]=true; a[17]=parts.value; }
function radio18(parts) { c[18]=true; a[18]=parts.value; }
function radio19(parts) { c[19]=true; a[19]=parts.value; }
function radio20(parts) { c[20]=true; a[20]=parts.value; }


// 採点ボタンが押されたときの処理（結果window）
function kekka(f){
    // refresh モードのときはズルなし
    if (flg_try && refresh) { 
       result = confirm('はじめからやり直さないと採点できません。やり直しますか？');
       if (result) {
          location.reload();
          return;
       } else  return;
    }

    // 未回答の問題があったら確認する
    var kaito=0;
    for (i=1;i<=NUM;i++) { kaito += c[i]; }
    if (kaito != snum) {
        result=confirm("まだ回答していない問題があります。このまま採点しますか？");
        if (!result) return;
    }

    // 結果データ処理
    var data="", seikai=0 ,j, i, yy, score, scb=0;
    flg_try = true;
    data += "<html><head><LINK rel=STYLESHEET href=.\/kaoshi.css type=text\/css>";
    data += "<title>採点結果<\/title><\/head>";
    data += "<bo" + "dy>";
    data += "<P align=center class=size2>採点結果です<\/P>";
    data += "<br><br><table border=0 cellspacing=2 cellpadding=5><tr>";
    for(i=1;i<=snum;i++){
        j=x[i];
        data += "<td width=55 align=center bgcolor=#F0FFF0>問"+i;
        if (!c[j]) {
            data += "<td width=25 align=center bgcolor=white>　<\/font>";
        } else {
            if (a[j]==1) {
                data += "<td width=25 align=center bgcolor=white><font color=blue><b>○<\/b><\/font>";
            } else {
                data += "<td width=25 align=center bgcolor=white><font color=red><b>×<\/b><\/font>";
            }
        }
        if (i%5==0) {data += "<tr>";}
        seikai=seikai+eval(a[j]);      // 正解数をカウント
    }
    data += "<\/table><br>  <table><tr><td width=420><blockquote><b>";
    score = Math.floor(100*seikai/snum+0.5);
    if (score != 100) data += snum+" 問中 "+seikai+" 問正解";
    if (score == 100) data += "全問正解";
    data += "<br>"; 
    if (score < gokaku) data += "<font color=blue> もっと頑張りましょう <\/font>";
    if (score >= gokaku && score < 100) data += "<font color=blue> よくできました <\/font>";
    if (score == 100) data += "<font color=blue> Perfect!! おめでとう！ <\/font>";
    data += "<\/b><\/blockquote><\/td>";
    data += "<td nowrap><u><P class=size3 color=red>" + score + "点<\/P><\/u><\/td>";
    data += "<tr><td align=center colspan=2><br><form>";
    if (score < gokaku && !refresh || score>=gokaku && !page_fwd) data += "<input type=button value='閉じる' onClick='window.close();'>";
    if (score < gokaku && refresh) data += " <input type=button onClick='window.opener.document.location.reload();' value='やり直し'>";
    if (score >= gokaku && page_fwd) data += "<input type=button onClick=window.opener.document.location='" + nextfile + "' value='次に進む'>";
    data += "<\/form><\/table><\/bo" + "dy><\/html>";

    flg_kWin0=1;
    yy=280+35*(Math.floor(snum/5-0.1));
    if (yy > 480) {yy=480; scb=1;}
    kWin0=window.open("","kekkaWin","width=560,height=" + yy + ",toolbar=0,menubar=0,resizable=1,scrollbars=" + scb + ",location=0,directories=0,status=0");
    kWin0.focus();
    kWin0.document.open();
    kWin0.document.write(data);
    kWin0.document.close();
}


// 解説一覧ボタンを押したときの処理
function kaisetsu_view() {
    flg_kWin1=1;
    var data="";
    data += "<html><head><title>解説カード<\/title><\/head>";
    data += "<bo" + "dy bgcolor=lavender text=black>";
    data += "<dl>";
    for(i=1;i<=snum;i++) {
        j = x[i];
        data += "<dt><table cellpadding=3><td bgcolor=pink> 問" + i + "<\/table><dd>" + kd[j] + "<p>";
    }
    data += "<\/dl><br><br>";
    data += "<center><form>";
    data += "<input type=button value='閉じる' onClick='window.close();'>";
    data += "<\/form><\/center><\/bo" + "dy><\/html>";
    kWin1 = window.open("","kWin1","width=500,height=400,scrollbars=1,resizable=1,directoies=0");
    kWin1.focus();
    kWin1.document.open();
    kWin1.document.write(data);
    kWin1.document.close();
}

// 解説ボタンを押した時の処理
function single_kaisetsu(m) {
    flg_kWin2=1;
    var data="";
    data += "<html><head><title>解説<\/title><\/head>";
    data += "<bo" + "dy bgcolor=lavender text=black>";
    data +=  kd[m];
    data += "<center><form>";
    data += "<input type=button value='閉じる' onClick='window.close();'>";
    data += "<\/form><\/center><\/bo" + "dy><\/html>";
    kWin2 = window.open("","kWin2","width=350,height=150,scrollbars=1,resizable=1");
    kWin2.focus();
    kWin2.document.open();
    kWin2.document.write(data);
    kWin2.document.close();
}


// 正誤ボタンを押したときの処理
function seigo(m) {
    if (!c[m]) { alert("答を選択してください");
    } else {
        if (a[m] == 1) { alert("○　正解です　○"); } else { alert("×　違います　×"); }
    }
}


// Unload したとき sub windowを閉じる
function byebye(){
    if (flg_kWin0 && !kWin0.closed) kWin0.close();
    if (flg_kWin1 && !kWin1.closed) kWin1.close(); 
    if (flg_kWin2 && !kWin2.closed) kWin2.close();
}

