#!/usr/bin/perl
$version='2.24';
#------------------------------------------------
#ファイル名:index.cgi
#
#説明:クイズのページのメニューページとなるページです。
#------------------------------------------------
require 'jcode.pl';
require 'function.cgi';
&main;



#************************************************
# ヘッダ表示処理
#
#_HTML_と_HTML_とのあいだに
#クイズのページのヘッダー部分のHTMLを記入してください。
#普通のHTML表記でかまいません。
#
#************************************************
sub header_html {
	
	if($SYS{top_back_color} eq ''){$SYS{top_back_color}='#ddddff';}
	if($SYS{main_title} eq ''){$SYS{main_title}='無題';}
	if($SYS{top_wall} ne ''){$wall_paper = " background='$SYS{top_wall}'"}
	if($SYS{top_text_color} ne ''){$text=" text='$SYS{top_text_color}'";}
	if($SYS{top_link_color} ne ''){$link=" link='$SYS{top_link_color}'";}
	if($SYS{top_vlink_color} ne ''){$vlink=" vlink='$SYS{top_vlink_color}'";}
	
	
	$SYS{header}=~ s/\$title/$SYS{main_title}/g;
	$SYS{header}=~ s/\$top/\[<a href="$SYS{top_url}">$_top<\/a>\] /g;
	$SYS{header}=~ s/\$quiz_op/\[<a href="$quiz_op_cgi">管理人室<\/a>\] /g;
	$SYS{header}=~ s/\$imode/\[<a href="$index_cgi?j=1">$_imode<\/a>\] /g;
	
	
	$header_html=<<"_HTML_";
<html>
<head>
<STYLE Type="text/css">$style</STYLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=$charset">
_HTML_
	if($SYS{nocache} ne '0'){
		$header_html.=<<"_HTML_";
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache">
<META http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT"> 
_HTML_
	}
	$header_html.=<<"_HTML_";
<title>$SYS{main_title}</title>
</head>
<BODY$text$link$vlink bgcolor="$SYS{top_back_color}"$wall_paper>
$SYS{header}<br><br>
_HTML_

	$header_i_html=<<"_HTML_";
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=$charset">
_HTML_
	if($SYS{nocache} ne '0'){
		$header_i_html.=<<"_HTML_";
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache">
<META http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT"> 
_HTML_
	}
	$header_i_html.=<<"_HTML_";
<title>$SYS{main_title}</title></head>
<body$text$link$vlink  bgcolor="$SYS{top_back_color}"$wall_paper>
_HTML_
}








########################以下の部分はプログラム本体です。変更する場合は慎重におねがいします。#############################







#************************************************
# メインプログラム
#************************************************
sub main{
	&setup;
	if(&ch_sys_lock){&busy_html;}
	elsif(&ch_guard_ip){&guard_html;}
	else{
		my($buf)=&buf_read;
		&sys_read;
		&all_design_read;
		&all_genre_read;
		$DSN{com_color}=$SYS{top_info_color};
		&get_cookie;
		if(!$buf){
			if($FORM{type} eq 'cont'){
				&contribute;
				&footer_html;
				&output;
			}elsif(($FORM{ck} eq 1)||($FORM{ck} eq 0)){
				$COOKIE{ck}=$FORM{ck};
				&set_cookie;
			}elsif($FORM{ck} eq 2){
				undef %COOKIE;
				$COOKIE{ck}=1;
				&set_cookie;
			}elsif(($FORM{bgm} eq 1)||($FORM{bgm} eq 0)){
				$COOKIE{bgm}=$FORM{bgm};
				&set_cookie;
			}
		}
		&header_html;
		&top_html;
		&top_i_html;
		&footer_html;
		$footer_i_html=<<"_HTML_";
<br><a href=$index_cgi?&j=1>一覧</a><br>
</body></html>
_HTML_

	}
	if($imode eq 'mb'){&output_i;}
	else{&output;}
}

#************************************************
# ジャンル表示
#************************************************
sub top_html{
	local($i);
	$i=0;@out=();
	$all_play_num=0;$all_play_win=0;$all_mindai=0;$play_rate=0;
	if($#GENRE_DIR_AVAILABLE <0){&error(681);return;}
	
	$main_html="";
	
	#####個人成績・効果音ボタン
	$main_html.=&personal_button_html();
	$all_flag=0;
	if($SYS{easy} eq 1 || $SYS{easy} eq 0){
		foreach $dir(@GENRE_DIR_ALL){
			if($GENRE_LST{$dir}{mondai_cgi} ne '.'){&cal_genre_pal($dir);}
		}
	}
	#####一覧形式表示の場合
	if($SYS{easy} ne 0 && $SYS{easy} ne 1 && $SYS{easy} ne 2){
		&listup_html();
	#####表形式表示の場合
	}else{
		foreach $dir(@GENRE_DIR_AVAILABLE){
			&lineup_html($dir);
		}
		$main_html.=<<"_HTML_";
<table border=0>
<tr><td>$_try</td><td>:</td><td>チャレンジコード不要</td></tr>
<tr><td>$_try☆</td><td>:</td><td>チャレンジコード要</td></tr>
<tr><td>$_try★</td><td>:</td><td>チャレンジコード登録済</td></tr>
</table>
_HTML_
	}
	
	
	#####メニューページのメッセージの表示(総問題数計算のためcal_genre_palの後に呼ぶ)
	if($SYS{top_message} ne ''){
		local($all_qnum,$qnum,$dir);
		$all_qnum=0;
		foreach $dir(keys (%ALL_QUIZ_NUM)){
			$all_qnum=$all_qnum + $ALL_QUIZ_NUM{$dir};
		}
		$SYS{top_message} =~ s/\$all_mondai_num/$all_qnum/g;
		if($SYS{top_table} ne ''){
			$main_html=<<"_HTML_";
<table width="$SYS{tblw}" border=0 cellpadding=0 cellspacing=0 bgcolor="$SYS{top_border_color}"><tr><td>
<table $top_tbl_opt><tr><td$nowrap bgcolor="$SYS{top_info_color}">
<small>$walign1$SYS{top_message}$walign2</small>
</td></tr></table></td></tr></table><br><hr>
$main_html
_HTML_
		}else{$main_html="<small>$SYS{top_message}</small><hr>$main_html";}
	}


}
	
#************************************************
# ジャンル表示(携帯用)
#************************************************
sub top_i_html{
	#####携帯用出力
	if($FORM{d} eq ''){
		$main_i_html="□$SYS{main_title}□<br><br>";
		foreach(@GENRE_DIR_AVAILABLE){
			if($GENRE_LST{$_}{1}{bundle} eq 1 && $GENRE_LST{$_}{2}{bundle} eq 1 ){next;}
			my($challenge_code);
			if($GENRE_LST{$_}{challenge_code} ne ''){
				if($COOKIE{"CCD_$dir"} ne 1){
					$challenge_code="☆";
				}else{
					$challenge_code="★";
				}
			}
			$main_i_html.="<a href=$index_cgi?d=$_&j=1>$GENRE_LST{$_}{title}</a>$challenge_code<br>";
		}
	}elsif($FORM{m} eq ''){
		$main_i_html="○$GENRE_LST{$FORM{d}}{title}○<br><br>";
		if($GENRE_LST{$FORM{d}}{1}{bundle} ne 1){
			$main_i_html.="<a href=$quiz_cgi?d=$FORM{d}\&m=1&j=1>$GENRE_LST{$FORM{d}}{1}{mode_name}</a><br>";
		}
		if(($GENRE_LST{$FORM{d}}{2}{mode_name} ne '') && ($GENRE_LST{$FORM{d}}{2}{bundle} ne 1)){
			$main_i_html.= "<a href=$quiz_cgi?d=$FORM{d}\&m=2&j=1>$GENRE_LST{$FORM{d}}{2}{mode_name}</a><br>";
		}
		if(($GENRE_LST{$FORM{d}}{1}{num_limit} ne '0') && ($GENRE_LST{$FORM{d}}{1}{day_limit} ne '0') && ($GENRE_LST{$FORM{d}}{1}{bundle} ne 1)){
			$main_i_html.= "<br><a href=$quiz_cgi?d=$FORM{d}\&m=1&j=1&h=1>$GENRE_LST{$FORM{d}}{1}{mode_name}高成績者</a><br>";
		}
		if(($GENRE_LST{$FORM{d}}{2}{mode_name} ne '') && ($GENRE_LST{$FORM{d}}{1}{num_limit} ne '0') && ($GENRE_LST{$FORM{d}}{1}{day_limit} ne '0') && ($GENRE_LST{$FORM{d}}{2}{bundle} ne 1)){
			$main_i_html.= "<a href=$quiz_cgi?d=$FORM{d}\&m=2&j=1&h=1>$GENRE_LST{$FORM{d}}{2}{mode_name}高成績者</a><br>";
		}
	}

}
#************************************************
# ジャンルの設定などを計算し、%GENRE_CALに格納
#************************************************
sub cal_genre_pal{
	$dir=$_[0];
	if($GENRE_LST{$dir}{mente} ne 1){next;}
	&refresh_quiz;
	&quiz_read($dir);
	$mondai=$#mondai+1;
	$ALL_QUIZ_NUM{$dir}=$mondai;
	($mass1,$clear1,$clear_per1,$ave1,$high1,$quiz_max1,$play_max1,$lose_max1)=&cal($dir,$GENRE_LST{$dir}{1}{scorehst_cgi},$GENRE_LST{$dir}{1}{high_cgi},$GENRE_LST{$dir}{1}{play_max},$GENRE_LST{$dir}{1}{lose_max},$GENRE_LST{$dir}{1}{high_border},$GENRE_LST{$dir}{1}{quiz_max},$mondai);
	($mass2,$clear2,$clear_per2,$ave2,$high2,$quiz_max2,$play_max2,$lose_max2)=&cal($dir,$GENRE_LST{$dir}{2}{scorehst_cgi},$GENRE_LST{$dir}{2}{high_cgi},$GENRE_LST{$dir}{2}{play_max},$GENRE_LST{$dir}{2}{lose_max},$GENRE_LST{$dir}{2}{high_border},$GENRE_LST{$dir}{2}{quiz_max},$mondai);
	$play_num=0;$play_win=0;$play_rate=0;
	if($play_max1>$play_max2){$play_max=$play_max1;}
	else{$play_max=$play_max2;}
	if($SYS{easy} eq 0){
		for($quiz_index=0;$quiz_index<$play_max;$quiz_index++){
			if(open(DB,"$dir/$quiz_header$quiz_index\.cgi")){
				@new= <DB>;close(DB);
				@qu=(0,0,0,0,0);
				@qu = split(/\t/, $new[0]);
				@qu2= split(/\t/, $new[1]);
				foreach $qu(@qu){$play_num{$dir}[$quiz_index]=$play_num{$dir}[$quiz_index]+$qu;$i++;}
				if(@qu2[1]>$play_num{$dir}[$quiz_index]){$play_num{$dir}[$quiz_index]=@qu2[1];}
				$play_win{$dir}[$quiz_index]=$play_win{$dir}[$quiz_index]+$qu[0];
			}
		}
	}
	$GENRE_CAL{$dir}=join("\t",$mondai,$mass1,$clear1,$clear_per1,$ave1,$high1,$quiz_max1,$play_max1,$lose_max1,$mass2,$clear2,$clear_per2,$ave2,$high2,$quiz_max2,$play_max2,$lose_max2);
}

#************************************************
# ジャンルの設定などを計算し、%GENRE_CALに格納
#************************************************
sub lineup_html{
	$dir=$_[0];
	@dir=();
	undef %quiz_num;
	if($GENRE_LST{$dir}{mondai_cgi} eq '.'){
		foreach(@GENRE_DIR_ALL){if($GENRE_LST{$_}{mondai_cgi} ne '.'){push(@dir,$_);}}
	}elsif($GENRE_LST{$dir}{mondai_cgi} =~ /\//){
		@mondai_dat=split(/\t/,$GENRE_LST{$dir}{mondai_cgi});
		foreach(@mondai_dat){
			local($d,$val)=split(/\//,$_);
			push(@dir,$d);
			if($val eq 'all'){$val ='';}
			$quiz_num{$d}=$val;
		}
	}else{@dir=($dir);}
	
	($all_play_num,$all_play_win,$all_mondai)=();
	foreach(@dir){
		($mondai,$mass1,$clear1,$clear_per1,$ave1,$high1,$quiz_max1,$play_max1,$lose_max1,$mass2,$clear2,$clear_per2,$ave2,$high2,$quiz_max2,$play_max2,$lose_max2)=split(/\t/,$GENRE_CAL{$_});
		if(($mondai > $quiz_num{$_})&&($quiz_num{$_} ne '')){$mondai = $quiz_num{$_};}
		$all_mondai=$all_mondai+$mondai;
		for($i=0;$i<$mondai;$i++){
			$all_play_num=$all_play_num+$play_num{$_}[$i];
			$all_play_win=$all_play_win+$play_win{$_}[$i];
		}
	}
	($mass1,$clear1,$clear_per1,$ave1,$high1,$quiz_max1,$play_max1,$lose_max1)=&cal($dir,$GENRE_LST{$dir}{1}{scorehst_cgi},$GENRE_LST{$dir}{1}{high_cgi},$GENRE_LST{$dir}{1}{play_max},$GENRE_LST{$dir}{1}{lose_max},$GENRE_LST{$dir}{1}{high_border},$GENRE_LST{$dir}{1}{quiz_max},$all_mondai);
	($mass2,$clear2,$clear_per2,$ave2,$high2,$quiz_max2,$play_max2,$lose_max2)=&cal($dir,$GENRE_LST{$dir}{2}{scorehst_cgi},$GENRE_LST{$dir}{2}{high_cgi},$GENRE_LST{$dir}{2}{play_max},$GENRE_LST{$dir}{2}{lose_max},$GENRE_LST{$dir}{2}{high_border},$GENRE_LST{$dir}{2}{quiz_max},$all_mondai);

	$COOKIE{"S1$dir"}=$COOKIE{"S1$dir"}+0;$COOKIE{"S2$dir"}=$COOKIE{"S2$dir"}+0;
	$COOKIE{"E1$dir"}=$COOKIE{"E1$dir"}+0;$COOKIE{"E2$dir"}=$COOKIE{"E2$dir"}+0;
	$COOKIE{"H1$dir"}=$COOKIE{"H1$dir"}+0;$COOKIE{"H2$dir"}=$COOKIE{"H2$dir"}+0;
	$COOKIE{"A1$dir"}=$COOKIE{"A1$dir"}+0;$COOKIE{"A2$dir"}=$COOKIE{"A2$dir"}+0;
	$cook_a1=&point($COOKIE{"A1$dir"},1);
	$cook_a2=&point($COOKIE{"A2$dir"},1);
	$iplay_max1=$COOKIE{"W1$dir"}+$COOKIE{"L1$dir"};
	$iplay_max2=$COOKIE{"W2$dir"}+$COOKIE{"L2$dir"};
	if($iplay_max1 > 0){$iave1=&point($COOKIE{"W1$dir"}/$iplay_max1*100,1);}else{$iave1='0.0';}
	if($iplay_max2 > 0){$iave2=&point($COOKIE{"W2$dir"}/$iplay_max2*100,1);}else{$iave2='0.0';}
	
	if(!mygrep($dir,@GENRE_DIR_ORIGN) || $GENRE_LST{$dir}{cont} ne 1){
		$add_link='';
	}else{
		$add_link="[<a href=$quiz_cgi?d=$dir\&add=1>$_add</a>]";
	}
	if($GENRE_LST{$dir}{challenge_code} ne ''){
		if($COOKIE{"CCD_$dir"} ne 1){
			$challenge_code="☆";
		}else{
			$challenge_code="★";
		}
	}else{
		$challenge_code="";
	}
	if($all_play_num eq ''){$all_play_num=0;}
	if($all_play_win eq ''){$all_play_win=0;}
	if($all_play_num > 0){$play_rate=&point($all_play_win*100/$all_play_num,1);}
	else{$play_rate=&point(0,1);}
	if(($quiz_max1 eq 0)&&($SYS{easy} eq 0 || $SYS{easy} eq 1)){$chalenge1="\[$_underconst\]";}
	else{$chalenge1="\[<a href=$quiz_cgi?d=$dir\&m=1>$_try$challenge_code</a>\]";}
	if(($quiz_max2 eq 0)&&($SYS{easy} eq 0 || $SYS{easy} eq 1)){$chalenge2="\[$_underconst\]";}
	else{$chalenge2="\[<a href=$quiz_cgi?d=$dir\&m=2>$_try$challenge_code</a>\]";}
	
	#####ジャンル2が存在せず、ジャンルコメントが存在しない場合の場合分け
	if($GENRE_LST{$dir}{2}{mode_name} eq '' && $GENRE_LST{$dir}{top_comment} eq ''){
		$top_colspan=' colspan=2';
	}else{
		$top_colspan=' colspan=4';
	}
	
	$main_html.=<<"_HTML_";
<table width="$SYS{tblw}" border=0 cellpadding=0 cellspacing=0 bgcolor="$SYS{top_border_color}"><tr><td>
<table $top_tbl_opt>
<tr><td$top_colspan bgcolor="$SYS{top_genre_color}">
<table border=0 width="100%" cellpadding=0 cellspacing=0>
<tr><td$nowrap><b><span>$GENRE_LST{$dir}{title}</span></b></td>
_HTML_
	if($SYS{easy} eq 0){$main_html.="<td nowrap><small>総出題数 : $all_play_num 問 正答率 : $play_rate %</small></td>";}
	$main_html.="<td align=right><small>$add_link\[<a href=$quiz_cgi?d=$dir\&s=1>$_score</a>\]</small></td>";

	#####モード2が存在する場合
	if($GENRE_LST{$dir}{2}{mode_name} ne ''){
		$main_html.=<<"_HTML_";
</tr></table></td></tr>
${if($GENRE_LST{$dir}{top_comment} ne ''){$ret="<tr><td colspan=4 bgcolor='$SYS{top_com_color}'$nowrap>$walign1<small>$GENRE_LST{$dir}{top_comment}</small>$walign2</td></tr>";}else{$ret='';}}$ret
<tr><td colspan=2 bgcolor="$SYS{top_table_color}"$nowrap>$walign1<small>$GENRE_LST{$dir}{1}{mode_name}</small>$walign2</td><td colspan=2 bgcolor="$SYS{top_table_color}"$nowrap>$walign1<small>$GENRE_LST{$dir}{2}{mode_name}</small>$walign2</td></tr>
<tr><td colspan=2 bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>$chalenge1\[<a href=$quiz_cgi?h=1&d=$dir&m=1>$_high</a>][<a href=$quiz_cgi?d=$dir&g=1&m=1>$_graph</a>]</small>$walign2</td>
<td colspan=2 bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>$chalenge2\[<a href=$quiz_cgi?h=1&d=$dir&m=2>$_high</a>][<a href=$quiz_cgi?d=$dir&g=1&m=2>$_graph</a>]</small>$walign2</td></tr>
_HTML_
		#####トップページが簡易バージョンでない場合
		if($SYS{easy} eq 0 || $SYS{easy} eq 1){
			$main_html.=<<"_HTML_";
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>問題数 : $quiz_max1 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>挑戦者 : $mass1 人</small>$walign2</td>
<td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>問題数 : $quiz_max2 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>挑戦者 : $mass2 人</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>出題数 : $play_max1 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格者 : $clear1 人</small>$walign2</td>
<td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>出題数 : $play_max2 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格者 : $clear2 人</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>終了条件 : $lose_max1 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格率 : $clear_per1 %</small>$walign2</td>
<td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>終了条件 : $lose_max2 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格率 : $clear_per2 %</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格基準 : $GENRE_LST{$dir}{1}{high_border} %</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>平均点 : $ave1 問</small>$walign2</td>
<td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格基準 : $GENRE_LST{$dir}{2}{high_border} %</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>平均点 : $ave2 問</small>$walign2</td></tr>
<tr>$high1$high2</tr>
_HTML_
		}
		#####個人成績を表示の表示
		if($COOKIE{ck} > 0){
			$main_html.=<<"_HTML_";
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人挑戦 : $COOKIE{"S1$dir"}回</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人完走 : $COOKIE{"E1$dir"}回</small>$walign2</td>
<td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人挑戦 : $COOKIE{"S2$dir"}回</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人完走 : $COOKIE{"E2$dir"}回</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人出題 : $iplay_max1問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人最高 : $COOKIE{"H1$dir"}問</small>$walign2</td>
<td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人出題 : $iplay_max2問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人最高 : $COOKIE{"H2$dir"}問</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人正解率 : $iave1%</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人平均 : $cook_a1問</small>$walign2</td>
<td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人正解率 : $iave2%</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人平均 : $cook_a2問</small>$walign2</td></tr>
_HTML_
		}
		$main_html.='</table></td></tr></table><br><br>';
	}else{	#####モード2が存在しない場合
		#####個人成績を表示しない場合
		if($COOKIE{ck} > 0){$rowspan=10;}else{$rowspan=7;}
		#####ジャンルコメントが存在しない場合の場合分け
		if($GENRE_LST{$dir}{top_comment} ne ''){
			$top_com="<td nowrap colspan=2 rowspan='$rowspan' width=50% bgcolor='$SYS{top_com_color}'>$walign12$GENRE_LST{$dir}{top_comment}$walign2</td>";
		}else{
			$top_com='';
		}
	
	$main_html.=<<"_HTML_";
</tr></table></td></tr>
<tr><td colspan=2 bgcolor="$SYS{top_table_color}" nowrap>$walign1$GENRE_LST{$dir}{1}{mode_name}$walign2</td>
$top_com
</tr>
<tr><td colspan=2 bgcolor="$SYS{top_table_color}" nowrap>$walign1$chalenge1\[<a href=$quiz_cgi?h=1&d=$dir&m=1>$_high</a>][<a href=$quiz_cgi?d=$dir&g=1&m=1>$_graph</a>]$walign2</td></tr>
_HTML_
		#####トップページ簡易バージョンでない場合
		if($SYS{easy} eq 0 || $SYS{easy} eq 1){
			$main_html.=<<"_HTML_";
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>問題数 : $quiz_max1 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>挑戦者 : $mass1 人</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>出題数 : $play_max1 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格者 : $clear1 人</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>終了条件 : $lose_max1 問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格率 : $clear_per1 %</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>合格基準 : $GENRE_LST{$dir}{1}{high_border} %</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>平均点 : $ave1 問</small>$walign2</td></tr>
<tr>$high1</tr>
_HTML_
		}
		#####個人成績の表示
		if($COOKIE{ck} > 0){
			$main_html.=<<"_HTML_";
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人挑戦 : $COOKIE{"S1$dir"}回</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人完走 : $COOKIE{"E1$dir"}回</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人出題 : $iplay_max1問</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人最高 : $COOKIE{"H1$dir"}問</small>$walign2</td></tr>
<tr><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人正解率 : $iave1%</small>$walign2</td><td bgcolor="$SYS{top_table_color}" nowrap>$walign1<small>個人平均 : $cook_a1問</small>$walign2</td></tr>
_HTML_
		}
		$main_html.='</table></td></tr></table><br><br>';
	}
}

#************************************************
# 一覧形式メニューの表示
#************************************************
sub listup_html{
	local(%list_title,%list_mode1,%list_mode2,%list_com,$mode2_flg,$com_flg);
	foreach $dir(@GENRE_DIR_AVAILABLE){
		$list_mode1{$dir}="\[<a href=$quiz_cgi?d=$dir\&m=1>$GENRE_LST{$dir}{1}{mode_name}</a>]";
		if($GENRE_LST{$dir}{2}{mode_name} eq ''){
			$list_mode2{$dir}=' ';
		}else{
			$mode2_flg=1;
			$list_mode2{$dir}="\[<a href=$quiz_cgi?d=$dir\&m=2>$GENRE_LST{$dir}{2}{mode_name}</a>]";
		}
		if($GENRE_LST{$dir}{top_comment} eq ''){
			$list_com{$dir}=' ';
		}else{
			$com_flg=1;
			$list_com{$dir}=$GENRE_LST{$dir}{top_comment};
		}
	}
		$main_html.=<<"_HTML_";
<table width="$SYS{tblw}" border=0 cellpadding=0 cellspacing=0 bgcolor="$SYS{top_border_color}"><tr><td>
<table $top_tbl_opt>
_HTML_
	foreach $dir(@GENRE_DIR_AVAILABLE){
		$main_html.=<<"_HTML_";
	<tr>
	<td$nowrap bgcolor="$SYS{top_genre_color}"><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><b><span>$GENRE_LST{$dir}{title}</span></td>
	<td align=right><small>\[<a href=$quiz_cgi?d=$dir\&s=1>$_score</a>\]</small></b></td></tr></table></td>
	<td$nowrap bgcolor="$SYS{top_table_color}"><span>$list_mode1{$dir}</span></td>
_HTML_
	if($mode2_flg eq 1){
		$main_html.="<td$nowrap bgcolor=\"$SYS{top_table_color}\"><span>$list_mode2{$dir}</span></td>";
	}
	if($com_flg eq 1){
		$main_html.="<td$nowrap bgcolor=\"$SYS{top_table_color}\"><span>$list_com{$dir}</span></td>";
	}
	$main_html.='</tr>';
	_HTML_
	}
	$main_html.='</table></td></tr></table><br><br>';
}
#************************************************
# 個人成績表示ボタン
#************************************************
sub personal_button_html{
	local($ret);
	$ret=<<"_HTML_";
<table border=0 cellpadding=0 cellspacing=0 bgcolor="$SYS{top_border_color}"><tr><td>
<table $top_tbl_opt>
<form method="$method" action="$index_cgi">
<td bgcolor="$SYS{top_table_color}">
_HTML_
	if($COOKIE{bgm} > 0){
		$ret.=<<"_HTML_";
<input type=hidden name=bgm value=0>
<input type=submit value='効果音無'></td></form>
_HTML_
	}else{
		$ret.=<<"_HTML_";
<input type=hidden name=bgm value=1>
<input type=submit value='効果音付'>
_HTML_
	}
	$ret.='</td></form>';

	$ret.="<form method='$method' action='$index_cgi'><td bgcolor='$SYS{top_table_color}'>";
	if($COOKIE{ck} > 0){
		$ret.=<<"_HTML_";
<input type=hidden name=ck value=0>
<input type=submit value='個人記録非表\示'></td></form>
<form method="$method" action="$index_cgi"><td bgcolor="$SYS{top_table_color}">
<input type=hidden name=ck value=2>
<input type=submit value='個人記録消去'>
_HTML_
	}else{
		$ret.=<<"_HTML_";
<input type=hidden name=ck value=1>
<input type=submit value='個人記録表\示'>
_HTML_
	}
	$ret.='</td></form>';
	
	
	$ret.='</tr></table></td></tr></table><br>';
	return $ret;
}

#************************************************
# 各種計算
#************************************************
sub cal{
	local($high,$mass,$clear,$ave);
	local($dir,$scorehst,$highcgi,$play_max,$lose_max,$high_border,$quiz_max,$mondai)=@_;
	if($quiz_max eq ''){$quiz_max = $mondai;}
	elsif($quiz_max > $mondai){$quiz_max = $mondai;}
	if($play_max eq ''){$play_max = $quiz_max;}
	elsif($play_max > $quiz_max){$play_max = $quiz_max;}
	if($lose_max eq ''){$lose_max = $play_max;}
	elsif($lose_max > $play_max){$lose_max = $play_max;}
	open(DB,"$dir/$scorehst\.cgi");local(@list)=<DB>;close(DB);
	local(@score);
	if($list[0]=~ /^date/){@score=@list[1..$#list];}
	else{@score=@list;}
	$mass=0;$clear=0;$ave=0;$per=0;
	foreach ($k=0;$k<=$play_max;$k++){
		$mass=$mass+$score[$k];				#####挑戦者数
		if($play_max >0){
			$syutu=$k+$lose_max;
			if($syutu > $play_max){$syutu=$play_max;}
			if($syutu >0){if($high_border <= $k*100/$syutu){$clear=$clear+$score[$k];}}
			$xxx=$k*100/$syutu;
		}
		$ave=$ave+$score[$k]*$k;
	}
	$clear_per=0;
	if($mass >0){
		$clear_per=&point($clear*100/$mass,1);		#####合格率
		$ave=&point($ave/$mass,1);
	}else{$clear_per=0;$ave=0;}
	$high='';$day='';$name='';
	open(DB,"$dir/$highcgi\.cgi");local(@lines)=<DB>;close(DB);
	if($lines[0]=~ /^date/){($day,$high,$name,$host,$time,$com) = split(/\t/,$lines[1]);}
	else{($day,$high,$name,$host,$time,$com) = split(/\t/,$lines[0]);}
	$day=&time_set($day);
	if($name eq ''){$name='----';}
	if($high eq ''){$high='0';}
	$high="<td colspan=2 bgcolor='$SYS{top_high_color}'>$walign1<small>Top:[$name] $high問正解</small>$walign2</td>";
	
	return ($mass,$clear,$clear_per,$ave,$high,$quiz_max,$play_max,$lose_max);
}