#!/usr/bin/perl



$linkfile="./xxx.cgi";

print "Content-type: text/html\n\n";
#----------------------------------------------------------
#日付を取得
&hiduke();
#引数を分解（それぞれのモードを入れる）
&insuu();
#カウント情報取得
if ($jouhou eq "count"){&syoricount();}
#生ログ情報取得
if ($jouhou eq "namalog"){&syorinamalog();}
#リンク元情報取得
if ($jouhou eq "linkmotorank"){&syorilinkmotorank();}
#リモートホスト情報取得
if ($jouhou eq "hostrank"){&syorihostrank();}
#曜日取得処理
$tuki=$inmon;
$tosi=$inyear;
&syoriyoubi();
#カレンダー処理
&syorikarenda();
#情報処理(セルの色変え）
&syorijouhou();
#ページ情報処理(今の情報、期間、時間などの処理　"count"を”アクセス数”へなど）
&syoripegejouhou();
#解析を表示。
&html();
exit;

#----------------------------------------------------------
# 日時を取得
sub hiduke(){

	$ENV{'TZ'} = "JST-9";
	($sec, $min, $hour, $mday, $mon, $year,$wday, $yday, $isdst) = localtime(time());
	@week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
	$year += 1900;
	$mon++;
	$youbi = $week[$wday];
	$rainen=$year+1;
	$kyonen=$year-1;
}
#----------------------------------------------------------
#引数を取得
sub insuu(){

	$insuu=$ENV{'QUERY_STRING'};


	($kikan,$jouhou,$inday,$inmon,$inyear)=split(/&/,$insuu);

	($kikan0,$kikan)=split(/=/,$kikan);
	($jouhou0,$jouhou)=split(/=/,$jouhou);
	($inday0,$inday)=split(/=/,$inday);
	($inmon0,$inmon)=split(/=/,$inmon);
	($inyear0,$inyear)=split(/=/,$inyear);



	# 引数がないときは今の時間を入れる。
	if($kikan eq ""){$kikan="day";}
	if($jouhou eq ""){$jouhou="count";}
	if($inday eq ""){$inday=$mday;}
	if($inmon eq ""){$inmon=$mon;}
	if($inyear eq ""){$inyear=$year;}
}

#----------------------------------------------------------
#カウント情報の処理
sub syoricount(){

	# 総合カウントファイルから読み込み
	open(IN,"./count/all.txt");
	$sougoudata = <IN>;
	close(IN);

	#----------------------------------------------------------
	# (１〜３１）１日カウントファイルから読み込み
	open(IN,"./count/tday/$inmon.txt");
	@tdaydata[1..31] = <IN>;
	close(IN);
	#----------------------------------------------------------
	# (今日）１日カウントファイルから読み込み
	open(IN,"./count/day.txt");
	$daydata = <IN>;
	close(IN);
	#----------------------------------------------------------
	# １ヶ月カウントファイルから読み込み
	open(IN,"./count/mon.txt");
	$mondata = <IN>;
	close(IN);
	#----------------------------------------------------------
	#蓄積１月カウントファイルから読み込み
	open(IN,"./count/tmon.txt");
	#蓄積月ファイル数を初期化
	$tmonkazu=1;	
	while($tmondata[$tmonkazu] = <IN>){
		#蓄積月ファイル数
		$tmonkazu++;
	}
	close(IN);
	#蓄積月ファイル数を調整
	$tmonkazu--;

	#----------------------------------------------------------
	# 総合カウントファイルを分解(総合カウント、１日カウント、日付)
	($sougoucount,$oneday,$zenkaimday) = split(/,/, $sougoudata);
	#----------------------------------------------------------
	
	#カウント日処理
	if ($kikan eq "day"){&syoricountkikanday();}
	#カウント月処理
	if ($kikan eq "mon"){&syoricountkikanmon();}
	#カウント全て処理
	if ($kikan eq "year"){&syoricountkikanyear();}

}

#----------------------------------------------------------
sub syoricountkikanday(){
	# 蓄積１日カウントファイルの処理(分割後、本来の配列に入れる。）
	for ($i=1;$i<=31;$i++){
		($dayday,$daysoucount,@daycount[0..23]) = split(/,/, $tdaydata[$i]);

		#もし参照したものと日が同じならループを抜ける。
		if ($dayday==$inday){$i=31;}
		#もし日が違うならデータ破棄
		else{@daycount[0..23]=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);}
	}
	#----------------------------------------------------------
	#今日の日ファイルに何日のものが入っているか調べる。（翌月調査のため）
	($raidayyear,$raidaymon,$raidayday) = split(/,/, $daydata);
	#----------------------------------------------------------
	#もし今日の日ファイルの日と参照した日が同じならそれを入れる。
	if (($inday==$raidayday)&&($inmon==$raidaymon)){

		($dayyear,$daymon,$dayday,$daysoucount,@daycount[0..23]) = split(/,/, $daydata);
	}
	#----------------------------------------------------------
	#日アクセスが””のとき空白を入れる。
	for($i=0;$i<=23;$i++){
		if ($daycount[$i] eq ""){$daycount[$i]="　";}
	}
	#----------------------------------------------------------
	#もし総日カウンターが””のとき０をいれる
	if ($daysoucount eq ""){$daysoucount=0;}
	
	#日のグラフの最大高さを検出
	for($i=0;$i<=23;$i++){
		if ($daygraphsaidai <= $daycount[$i]){
			$daygraphsaidai = $daycount[$i];
		}
	}
	
	#日のグラフの幅を決める(カウントの最大が０以上のときだけ）
	if ($daygraphsaidai>0){
		for($i=0;$i<=23;$i++){
			$daygraph[$i]=$daycount[$i]/$daygraphsaidai*100;
		}
	}

}
#----------------------------------------------------------
#カウント期間１月処理
sub syoricountkikanmon(){

	# 蓄積１ヶ月カウントファイルを処理(分割後、本来の配列に入れる。）
	# ファイルの数だけ調べる
	for ($i=1;$i<=$tmonkazu;$i++){
		#とりあえず分解して年と月を調べる。
		($monyear,$monmon,$monsoucount,@moncount[1..31]) = split(/,/, $tmondata[$i]);
	
		#もし年と月が同じならループを抜ける。
		if (($monyear==$inyear) && ($monmon==$inmon)){$i=$tmonkazu;}
		#もし年と月が違うならデータ破棄
		else{@moncount[1..31]=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);}
	}
	#----------------------------------------------------------
	# もし今月を参照したとき今月の１ヶ月カウントファイル入れる
	if (($inyear==$year)&&($inmon==$mon)){
		($monyear,$monmon,$monsoucount,@moncount[1..31]) = split(/,/, $mondata);
	}
	#----------------------------------------------------------
	#月アクセスが””のとき空白を入れる。
	for($i=1;$i<=31;$i++){
		if ($moncount[$i] eq ""){$moncount[$i]="　";}
	}
	#----------------------------------------------------------
	#もし総月カウンターが””のとき０をいれる
	if ($monsoucount eq ""){$monsoucount=0;}
	#----------------------------------------------------------
	#月のグラフの最大高さを検出
	for($i=1;$i<=31;$i++){
		if ($mongraphsaidai <= $moncount[$i]){
			$mongraphsaidai = $moncount[$i];
		}
	}

	#月のグラフの幅を決める(カウントの最大が０以上のときだけ）
	if ($mongraphsaidai>0){
		for($i=1;$i<=31;$i++){
			$mongraph[$i]=$moncount[$i]/$mongraphsaidai*100;
		}
	}

}
#----------------------------------------------------------
#カウント期間全て処理
sub syoricountkikanyear(){

	# 蓄積１ヶ月カウントファイルを処理(分割後、本来の配列に入れる。）
	# ファイルの数だけ調べる
	for ($i=1;$i<=$tmonkazu;$i++){
		#とりあえず分解して年と月を調べる。
		($yearyear[$i],$yearmon[$i],$yearcount[$i]) = split(/,/, $tmondata[$i]);
	}
	#----------------------------------------------------------
	# 今月の１ヶ月カウントファイルを蓄積の後に入れる

	($yearyear[$i],$yearmon[$i],$yearcount[$i]) = split(/,/, $mondata);

	#----------------------------------------------------------
	#月アクセスが””のとき空白を入れる。
	#for ($i=1;$i<=$tmonkazu+1;$i++){
	#	if ($moncount[$i] eq ""){$moncount[$i]="　";}
	#}
	#----------------------------------------------------------
	#もし総月カウンターが””のとき０をいれる
	#if ($monsoucount eq ""){$monsoucount=0;}
	#----------------------------------------------------------
	#月のグラフの最大高さを検出
	for ($i=1;$i<=$tmonkazu+1;$i++){
		if ($yeargraphsaidai <= $yearcount[$i]){
			$yeargraphsaidai = $yearcount[$i];
		}
	}

	#月のグラフの幅を決める(カウントの最大が０以上のときだけ）
	if ($yeargraphsaidai>0){
		for($i=1;$i<=31;$i++){
			$yeargraph[$i]=$yearcount[$i]/$yeargraphsaidai*100;
		}
	}

}
#----------------------------------------------------------
#生ログ処理
sub syorinamalog(){

	#----------------------------------------------------------

	#生ログ蓄積ファイルから読み込み
	open(IN,"./namalog/$inday.txt");
		#----------------------------------------------------------
		#始めのファイルには日月年が入ってる
		($namalogday,$namalogmon,$namalogyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#年月が同じとき（ログを入れる）
		if (($namalogmon==$inmon) && ($namalogyear==$inyear)){
			#生ログファイル数を初期化
			$namalogkazu=1;	
			while($namalog[$namalogkazu] = <IN>){
				#生ログファイル数
				$namalogkazu++;
			}
		}
	close(IN);
	#----------------------------------------------------------
	#生ログ今ファイルから読み込み
	open(IN,"./namalog/day.txt");

		#始めのファイルには日月年が入ってる。
		($namalogday,$namalogmon,$namalogyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のログが同じ日のときそのログを入れる。
		if (($namalogday == $inday)&& ($namalogmon ==$inmon)&& ($namalogyear==$inyear)){
	
			#生ログファイル数を初期化
			$namalogkazu=1;	
			while($namalog[$namalogkazu] = <IN>){
				#生ログファイル数
				$namalogkazu++;
			}
		#----------------------------------------------------------
		}
	close(IN);
	#----------------------------------------------------------
	#生ログファイル数を調整
	$namalogkazu--;

	#生ログ分割
	for ($i=1;$i<=$namalogkazu;$i++){
		($namalognow[$i],$namaloghost[$i],$namalogaddr[$i],$namaloglinkmono[$i],$namaloguser_agent[$i],$namalogkaisuuday[$i],$namalogkaisuumon[$i],$namalogkaisuuall[$i],$namalogtimemae[$i],$namalogtimehatu[$i],$dami)=split(/,/,$namalog[$i]);
	}

}
#----------------------------------------------------------
#リンク元ランク処理
sub syorilinkmotorank(){
	if ($kikan eq "day"){&syorilinkmotorankday();}
	if ($kikan eq "mon"){&syorilinkmotorankmon();}
	if ($kikan eq "year"){&syorilinkmotorankall();}
}
#リンク元ランク処理（日）
sub syorilinkmotorankday(){
	#----------------------------------------------------------
	#蓄積リンク元ランクファイルから読み込み
	open(IN,"./linkmotorank/$inmon/$inday.txt");
		#----------------------------------------------------------
		#始めのファイルには日月年が入ってる。
		($linkmotorankday,$linkmotorankmon,$linkmotorankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のリンク元ランクが同じ日のときそのデータを入れる。
		if (($linkmotorankday == $inday)&& ($linkmotorankmon ==$inmon)&& ($linkmotorankyear==$inyear)){

			#リンク元ランクファイル数を初期化
			$linkmotorankkazu=1;
			while($linkmotorankdata[$linkmotorankkazu] = <IN>){
				#リンク元ランクファイル数
				$linkmotorankkazu++;
			}
		}
	close(IN);
	#----------------------------------------------------------
	#今のリンク元ランクファイルから読み込み
	open(IN,"./linkmotorank/day.txt");
		#----------------------------------------------------------
		#始めのファイルには日月年が入ってる。
		($linkmotorankday,$linkmotorankmon,$linkmotorankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のリンク元ランクが同じ日のときそのデータを入れる。
		if (($linkmotorankday == $inday)&& ($linkmotorankmon ==$inmon)&& ($linkmotorankyear==$inyear)){
	
			#リンク元ランクファイル数を初期化
			$linkmotorankkazu=1;
			while($linkmotorankdata[$linkmotorankkazu] = <IN>){
				#リンク元ランクファイル数
				$linkmotorankkazu++;
			}
		#----------------------------------------------------------
		}
	close(IN);
	#----------------------------------------------------------
	#リンク元ランクファイル数を調整
	$linkmotorankkazu--;

	#リンク元ランク分割
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		($linkmotoranklink[$i],$linkmotorankkaisuu[$i],$dami)=split(/,/,$linkmotorankdata[$i]);
	}

	#リンク元をランク順位にしに行く。
	&syorilinkmotorankrank();
}
#リンク元ランク処理（月）
sub syorilinkmotorankmon(){
	#----------------------------------------------------------
	#蓄積リンク元ランクファイルから読み込み
	open(IN,"./linkmotorank/$inmon/tmon.txt");
		#----------------------------------------------------------
		#始めのファイルには月年が入ってる。
		($linkmotorankmon,$linkmotorankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のリンク元ランクが同じ日のときそのデータを入れる。
		if (($linkmotorankmon ==$inmon)&& ($linkmotorankyear==$inyear)){

			#リンク元ランクファイル数を初期化
			$linkmotorankkazu=1;
			while($linkmotorankdata[$linkmotorankkazu] = <IN>){
				#リンク元ランクファイル数
				$linkmotorankkazu++;
			}
		}
	close(IN);
	#----------------------------------------------------------
	#今のリンク元ランクファイルから読み込み
	open(IN,"./linkmotorank/mon.txt");
		#----------------------------------------------------------
		#始めのファイルには月年が入ってる。
		($linkmotorankmon,$linkmotorankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月と今のリンク元ランクが同じ日のときそのデータを入れる。
		if (($linkmotorankmon ==$inmon)&& ($linkmotorankyear==$inyear)){
	
			#リンク元ランクファイル数を初期化
			$linkmotorankkazu=1;
			while($linkmotorankdata[$linkmotorankkazu] = <IN>){
				#リンク元ランクファイル数
				$linkmotorankkazu++;
			}
		#----------------------------------------------------------
		}
	close(IN);
	#----------------------------------------------------------
	#リンク元ランクファイル数を調整
	$linkmotorankkazu--;

	#リンク元ランク分割
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		($linkmotoranklink[$i],$linkmotorankkaisuu[$i],$dami)=split(/,/,$linkmotorankdata[$i]);
	}

	#リンク元をランク順位にしに行く。
	&syorilinkmotorankrank();
}
#リンク元ランク処理（all）
sub syorilinkmotorankall(){
	#----------------------------------------------------------
	#リンク元ランクallファイルから読み込み
	open(IN,"./linkmotorank/all.txt");
		#----------------------------------------------------------

			#リンク元ランクファイル数を初期化
			$linkmotorankkazu=1;
			while($linkmotorankdata[$linkmotorankkazu] = <IN>){
				#リンク元ランクファイル数
				$linkmotorankkazu++;
			}

	close(IN);

	#----------------------------------------------------------
	#リンク元ランクファイル数を調整
	$linkmotorankkazu--;

	#リンク元ランク分割
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		($linkmotoranklink[$i],$linkmotorankkaisuu[$i],$dami)=split(/,/,$linkmotorankdata[$i]);
	}

	#リンク元をランク順位にしに行く。
	&syorilinkmotorankrank();
}
#----------------------------------------------------------
#リンク元をランク順位する。
sub syorilinkmotorankrank(){

#最初の１番をそのまま入れる。
$linkmotorankkaisuurank[1] = $linkmotorankkaisuu[1];
$linkmotoranklinkrank[1] = $linkmotoranklink[1];

	for ($i = 2;$i<=$linkmotorankkazu;$i++){
    	#（空白に0の数字を入れる。）
    	$linkmotorankkaisuurank[$i] = 0;
        	for($j = $i;$j>=1;$j--){
            		if ($linkmotorankkaisuurank[$j] <= $linkmotorankkaisuu[$i]){
				#-----------------------------------------------
				#回数を順位順にする。
                		$linkmotorankkaisuurank[$j + 1] =$linkmotorankkaisuurank[$j];
                		$linkmotorankkaisuurank[$j] = $linkmotorankkaisuu[$i];
				#-----------------------------------------------
				#リンク元情報を順位順にする。
                		$linkmotoranklinkrank[$j + 1] =$linkmotoranklinkrank[$j];
                		$linkmotoranklinkrank[$j] = $linkmotoranklink[$i];
			}
		}
	}

}


#----------------------------------------------------------
#ホストランク処理
sub syorihostrank(){
	if ($kikan eq "day"){&syorihostrankday();}
	if ($kikan eq "mon"){&syorihostrankmon();}
	if ($kikan eq "year"){&syorihostrankall();}
}

#ホストランク処理（日）
sub syorihostrankday(){
	#----------------------------------------------------------
	#蓄積ホストランクファイルから読み込み
	open(IN,"./hostrank/$inmon/$inday.txt");
		#----------------------------------------------------------
		#始めのファイルには日月年が入ってる。
		($hostrankday,$hostrankmon,$hostrankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のホストランクが同じ日のときそのデータを入れる。
		if (($hostrankday == $inday)&& ($hostrankmon ==$inmon)&& ($hostrankyear==$inyear)){

			#ホストランクファイル数を初期化
			$hostrankkazu=1;
			while($hostrankdata[$hostrankkazu] = <IN>){
				#ホストランクファイル数
				$hostrankkazu++;
			}
		}
	close(IN);
	#----------------------------------------------------------
	#今のホストランクファイルから読み込み
	open(IN,"./hostrank/day.txt");
		#----------------------------------------------------------
		#始めのファイルには日月年が入ってる。
		($hostrankday,$hostrankmon,$hostrankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のホストランクが同じ日のときそのデータを入れる。
		if (($hostrankday == $inday)&& ($hostrankmon ==$inmon)&& ($hostrankyear==$inyear)){
	
			#ホストランクファイル数を初期化
			$hostrankkazu=1;
			while($hostrankdata[$hostrankkazu] = <IN>){
				#ホストランクファイル数
				$hostrankkazu++;
			}
		#----------------------------------------------------------
		}
	close(IN);
	#----------------------------------------------------------
	#ホストランクファイル数を調整
	$hostrankkazu--;

	#ホストランク分割
	for ($i=1;$i<=$hostrankkazu;$i++){
		($hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],$dami)=split(/,/,$hostrankdata[$i]);
	}

	#ホストをランク順位にしに行く。
	&syorihostrankrank();
}

#ホストランク処理（月）
sub syorihostrankmon(){
	#----------------------------------------------------------
	#蓄積ホストランクファイルから読み込み
	open(IN,"./hostrank/$inmon/tmon.txt");
		#----------------------------------------------------------
		#始めのファイルには月年が入ってる。
		($hostrankmon,$hostrankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のホストランクが同じ日のときそのデータを入れる。
		if (($hostrankmon ==$inmon)&& ($hostrankyear==$inyear)){

			#ホストランクファイル数を初期化
			$hostrankkazu=1;
			while($hostrankdata[$hostrankkazu] = <IN>){
				#ホストランクファイル数
				$hostrankkazu++;
			}
		}
	close(IN);
	#----------------------------------------------------------
	#今のホストランクファイルから読み込み
	open(IN,"./hostrank/mon.txt");
		#----------------------------------------------------------
		#始めのファイルには月年が入ってる。
		($hostrankmon,$hostrankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月と今のホストランクが同じ日のときそのデータを入れる。
		if (($hostrankmon ==$inmon)&& ($hostrankyear==$inyear)){
	
			#ホストランクファイル数を初期化
			$hostrankkazu=1;
			while($hostrankdata[$hostrankkazu] = <IN>){
				#リンク元ランクファイル数
				$hostrankkazu++;
			}
		#----------------------------------------------------------
		}
	close(IN);
	#----------------------------------------------------------
	#ホストランクファイル数を調整
	$hostrankkazu--;

	#ホストランク分割
	for ($i=1;$i<=$hostrankkazu;$i++){
		($hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],$dami)=split(/,/,$hostrankdata[$i]);
	}

	#ホストをランク順位にしに行く。
	&syorihostrankrank();
}
#ホストランク処理（all）
sub syorihostrankall(){
	#----------------------------------------------------------
	#ホストランクallファイルから読み込み
	open(IN,"./hostrank/all.txt");
		#----------------------------------------------------------

			#ホストランクファイル数を初期化
			$hostrankkazu=1;
			while($hostrankdata[$hostrankkazu] = <IN>){
				#ホストランクファイル数
				$hostrankkazu++;
			}

	close(IN);

	#----------------------------------------------------------
	#ホストランクファイル数を調整
	$hostrankkazu--;

	#ホストランク分割
	for ($i=1;$i<=$hostrankkazu;$i++){
		($hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],$dami)=split(/,/,$hostrankdata[$i]);
	}

	#ホストをランク順位にしに行く。
	&syorihostrankrank();
}
#----------------------------------------------------------
#----------------------------------------------------------
#ホストをランク順位する。
sub syorihostrankrank(){

#最初の１番をそのまま入れる。
$hostrankkaisuurank[1] = $hostrankkaisuu[1];
$hostrankhostrank[1] = $hostrankhost[1];

$hostrankmaerank[1] = $hostrankmae[1];
$hostrankhaturank[1] = $hostrankhatu[1];

#----------------------------------------------------------
	for ($i = 2;$i<=$hostrankkazu;$i++){
    	#（空白に0の数字を入れる。）
    	$hostrankkaisuurank[$i] = 0;
        	for($j = $i;$j>=1;$j--){
            		if ($hostrankkaisuurank[$j] <= $hostrankkaisuu[$i]){
				#-----------------------------------------------
				#回数を順位順にする。
                		$hostrankkaisuurank[$j + 1] =$hostrankkaisuurank[$j];
                		$hostrankkaisuurank[$j] = $hostrankkaisuu[$i];
				#-----------------------------------------------
				#ホスト情報を順位順にする。
                		$hostrankhostrank[$j + 1] =$hostrankhostrank[$j];
                		$hostrankhostrank[$j] = $hostrankhost[$i];
				#-----------------------------------------------
				#前訪問を順位順にする。
               			$hostrankmaerank[$j + 1] =$hostrankmaerank[$j];
               			$hostrankmaerank[$j] = $hostrankmae[$i];
				#-----------------------------------------------
				#初訪問を順位順にする。
               			$hostrankhaturank[$j + 1] =$hostrankhaturank[$j];
               			$hostrankhaturank[$j] = $hostrankhatu[$i];

			}
		}
	}

}


#----------------------------------------------------------
# 月の元日の曜日を取得
sub syoriyoubi(){

	@hi[1..12]=(31,28,31,30,31,30,31,31,30,31,30,31);

	if ($tosi % 4 ==0){
		if($tosi % 100 ==0){
			if($tosi %400==0){$hi[2]=29;}
		}
		else{$hi[2]=29;}
	}

	$allhi = 0;
	if ($tuki >= 2){
		for($i = 1;$i<= $tuki - 1;$i++){
			$allhi = $allhi + $hi[$i];
		}
	}

	$youbim1 = $tosi + $allhi;

	$youbim1 = $youbim1 + int($tosi / 4);
	$youbim1 = $youbim1 - int($tosi / 100);
	$youbim1 = $youbim1 + int($tosi / 400);

	if ($hi[2]==29){$youbim1--;}

	$youbim1 = $youbim1 % 7;

}
#----------------------------------------------------------
#カレンダー処理
sub syorikarenda(){

	#先月の年と月を選択
	$beforemon=$inmon-1;
	$beforeyear=$inyear;
	if ($beforemon<1){$beforemon=12;$beforeyear--;}

	#来月の年と月を選択
	$aftermon=$inmon+1;
	$afteryear=$inyear;
	if ($aftermon>12){$aftermon=1;$afteryear++;}

	#上への変数決める(日→月、月→年、年→年）
	if ($kikan eq "day"){$uehe="kaiseki.cgi?kikan=mon&jouhou=$jouhou&inday=$inday&inmon=$inmon&inyear=$inyear";}
	elsif (($kikan eq "mon") ||($kikan eq "year")){$uehe="kaiseki.cgi?kikan=year&jouhou=$jouhou&inday=$inday&inmon=$inmon&inyear=$inyear";}
	

}
#----------------------------------------------------------
#情報処理
sub syorijouhou(){
#指定された情報のテーブルのセルの色を変える
$bgcolorjouhou="33ffff";

#カウント
if ($jouhou eq "count"){$bgcolorcount=$bgcolorjouhou;}
#生ログ
if ($jouhou eq "namalog"){$bgcolornamalog=$bgcolorjouhou;}
#リンク元
if ($jouhou eq "linkmotorank"){$bgcolorlinkmotorank=$bgcolorjouhou;}
#ホスト
if ($jouhou eq "hostrank"){$bgcolorhostrank=$bgcolorjouhou;}
#カレンダー
if ($jouhou eq "karenda"){$bgcolorkarenda=$bgcolorjouhou;}
}
#----------------------------------------------------------
#ページ情報処理（今のページの情報、期間、時などの処理）
sub syoripegejouhou(){
	if($jouhou eq "count"){$htmljouhou="アクセス数";}
	if($jouhou eq "namalog"){$htmljouhou="生ログ";}
	if($jouhou eq "linkrank"){$htmljouhou="リンク元";}
	if($jouhou eq "hostrank"){$htmljouhou="リモートホスト";}
	if($jouhou eq "karenda"){$htmljouhou="カレンダー";}

	if($kikan eq "day"){$htmlkikan="日単位";}
	if($kikan eq "mon"){$htmlkikan="月単位";}
	if($kikan eq "year"){$htmlkikan="全て";}
}
#----------------------------------------------------------
#表示処理
sub html(){

	print"<table border='1'><tbody>";
	print"<tr><td><font size='2'>アクセス解析</font></td><td>";
	#----------------------------------------------------------
	#今のページの情報、期間、時を表示する
	&htmlpegejouhou;
	print"<font size='2'><a href ='../../index.html'>index</a></font>";
	#----------------------------------------------------------
	print"</td></tr>";
	print"<tr><td valign='top'>";
		#----------------------------------------------------------
		#カレンダーを表示しに行く（全てのカレンダー表示しないときだけ）
		if ($jouhou ne "karenda"){&htmlkarenda();}
		#情報を表示しに行く
		&htmljouhou();

		#もし情報がカレンダーのとき（全てのカレンダーの年選択へ行く）
		if($jouhou eq "karenda"){&htmlallkarendatosi();}

		print"</td><td valign='top'>";
		#----------------------------------------------------------
		#解析を表示しに行く
		&htmlkaiseki();
		#----------------------------------------------------------
	print"</td></tr>";
	#----------------------------------------------------------
	print"<tr><td align='right' colspan='2'>";
	#著作権を表示しに行く
	&tyosakuken();
	print"</td></tr>";
	#----------------------------------------------------------
	print"</tbody></table>";
}
#----------------------------------------------------------
#ページ情報を入れる
sub htmlpegejouhou(){
print"<font size='2'>";
print"「情報＝$htmljouhou」　";
print"「期間＝$htmlkikan」　";

print"「$inyear年";
print"$inmon月";
print"$inday日」";
print"</font>";
}
#----------------------------------------------------------
#カレンダーを表示	
sub htmlkarenda(){

	print"<table border='1'><tbody>";
	print"<tr>";
	print"<td><a href='kaiseki.cgi?kikan=$kikan&jouhou=$jouhou&inday=$inday&inmon=$beforemon&inyear=$beforeyear'>←</a></td>";
	print"<td colspan='3'";
	#期間が全てのとき
	if($kikan eq "year"){
		#今見ている年の色を変える。
		print"bgcolor='#99ccff'";
	}
	print">";
	print"<a href='kaiseki.cgi?kikan=year&jouhou=$jouhou&inday=$inday&inmon=$inmon&inyear=$inyear'>$inyear年</a> ";
	print"<td colspan='2'";
	#期間が月か年のとき
	if(($kikan eq "mon")||($kikan eq "year")){
		#今見ている月の色を変える。
		print"bgcolor='#99ccff'";
	}

	print">";
	print"<a href='kaiseki.cgi?kikan=mon&jouhou=$jouhou&inday=$inday&inmon=$inmon&inyear=$year'>$inmon月</a></td>";
	print"<td><a href='kaiseki.cgi?kikan=$kikan&jouhou=$jouhou&inday=$inday&inmon=$aftermon&inyear=$afteryear'>→</a></td>";
	print"</tr>";
	print"<tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr>";
	print"<tr>";

	for ($i=1;$i<=$youbim1;$i++){print"<td>　</td>";}

	for($i=1;$i<=$hi[$inmon];$i++){
		print"<td align='right'";
		#期間が日のとき
		if($kikan eq "day"){
			#今見ている日付の色を変える。
			if ($i==$inday){print"bgcolor='#99ccff'";}
		}
		#期間が月か年のとき
		if(($kikan eq "mon") ||($kikan eq "year")){
			#すべて日付の色を変える。
			print"bgcolor='#99ccff'";
		}
		print"><a href='kaiseki.cgi?kikan=day&jouhou=$jouhou&inday=$i&inmon=$inmon&inyear=$inyear'>$i</a></td>";
		if ((($youbim1 + $i ) % 7) == 0){print"</tr><tr>";}
	}
	print"</tr>";
	print"<tr><td colspan='7'>";
	print"<font size='2'>";
	print"<a href='kaiseki.cgi?kikan=year&jouhou=$jouhou&inday=$day&inmon=$mon&inyear=$year'>全て</a>　";
	print"<a href='kaiseki.cgi?kikan=mon&jouhou=$jouhou&inday=$day&inmon=$mon&inyear=$year'>今月</a>　";
	print"<a href='kaiseki.cgi?kikan=day&jouhou=$jouhou&inday=$day&inmon=$mon&inyear=$year'>今日</a><br>";
	print"<a href='javascript:history.go(-1)'>戻る</A>　";
	print"<a href='$uehe'>上へ</A>";
	print"</font>";
	print"</td></tr>";

	print"</tbody></table>";
}
#----------------------------------------------------------
#情報選択を表示
sub htmljouhou(){
	print"<table border='2'><tbody>";
	print"<tr><td><font size='2'>情報選択</font></td></tr>";
	print"<tr><td bgcolor=$bgcolorcount><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=count&inday=$inday&inmon=$inmon&inyear=$inyear'>アクセス</a></font></td></tr>";
	print"<tr><td bgcolor=$bgcolornamalog><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=namalog&inday=$inday&inmon=$inmon&inyear=$inyear'>生ログ</a></font></td></tr>";
	print"<tr><td bgcolor=$bgcolorlinkmotorank><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=linkmotorank&inday=$inday&inmon=$inmon&inyear=$inyear'>リンク元</a></font></td></tr>";
	print"<tr><td bgcolor=$bgcolorhostrank><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=hostrank&inday=$inday&inmon=$inmon&inyear=$inyear'>リモートホスト</a></font></td></tr>";
	print"<tr><td bgcolor=$bgcolorkarenda><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=karenda&inday=$inday&inmon=$inmon&inyear=$inyear'>万年カレンダー</a></font></td></tr>";
	print"</tbody></table>";
}
#----------------------------------------------------------
#全てのカレンダーの年を選択できるように表示
sub htmlallkarendatosi(){
	print"<table border='1'><tbody>";
	print"<tr><td colspan='3'><font size='2'>カレンダー\表\示年を選択</font></td></tr>";
	print"<tr><td colspan='3'><font size='2'>";
	print"<a href='kaiseki.cgi?kikan=$kikan&jouhou=karenda&inday=$inday&inmon=$inmon&inyear=$kyonen'>去年</a>　";
	print"<a href='kaiseki.cgi?kikan=$kikan&jouhou=karenda&inday=$inday&inmon=$inmon&inyear=$year'>今年</a>　";
	print"<a href='kaiseki.cgi?kikan=$kikan&jouhou=karenda&inday=$inday&inmon=$inmon&inyear=$rainen'>来年</a>　";
	print"</font></td></tr>";
	#----------------------------------------------------------
	#(0から5000まで）
	print"<td width='54' align='right'>";
	for($i=0;$i<=4900;$i+=100){
	print"<font size='2'>";
	print"<a href='kaiseki.cgi?kikan=$kikan&jouhou=karenda&inday=$inday&inmon=$inmon&inyear=$i'>$i年〜</a><br>";
	print"</font>";
	}
	print"</td>";
	#----------------------------------------------------------
	#(年+0から49まで）
	print"<td width='41'>";
	for($j=0;$j<=49;$j++){
		$i=int($inyear/100)*100+$j;
		print"<font size='2'>";
		print"<a href='kaiseki.cgi?kikan=$kikan&jouhou=karenda&inday=$inday&inmon=$inmon&inyear=$i'>$i年</a><br>";
		print"</font>";
	}
	print"</td>";
	#----------------------------------------------------------
	#(年+49から99まで）
	print"<td width='41'>";
	for($j=0;$j<=49;$j++){
		$i=int($inyear/100)*100+$j+50;
		print"<font size='2'>";
		print"<a href='kaiseki.cgi?kikan=$kikan&jouhou=karenda&inday=$inday&inmon=$inmon&inyear=$i'>$i年</a><br>";
		print"</font>";
	}
	print"</td></tr></tbody></table>";
}
#----------------------------------------------------------
#解析を表示
sub htmlkaiseki(){
	if ($jouhou eq "count"){&htmlcount();}
	if ($jouhou eq "namalog"){&htmlnamalog();}
	if ($jouhou eq "linkmotorank"){&htmllinkmotorank();}
	if ($jouhou eq "hostrank"){&htmlhostrank();}
	if ($jouhou eq "karenda"){&htmlallkarenda();}
}
#----------------------------------------------------------
#カウントを表示
sub htmlcount(){
	#期間がdayのとき
	if ($kikan eq "day"){&htmlcountkikanday();}
	if ($kikan eq "mon"){&htmlcountkikanmon();}
	if ($kikan eq "year"){&htmlcountkikanyear();}
}
#----------------------------------------------------------
#期間がdayのとき
sub htmlcountkikanday(){
print <<_HTML;
<table border='1'>
<tbody>
_HTML

print "<tr><td><font size='2'>$inday日</font></td>";
print "<td colspan='2' align='right'><font size='2'>総アクセス$daysoucount</font></td></tr>";
print "<tr><td><font size='2'>時間</font></td>";
print"<td><font size='2'>アクセス</font></td>";
print"<td><font size='2'>グラフ</font></td></tr>";


for($i=0;$i<=23;$i++){
	
	print"<tr><td><font size='2'>$i</font></td>";
	print"<td><font size='2'>$daycount[$i]</font></td>";
	print"<td><img src='./graph.gif' width='$daygraph[$i]' height='6'></td>";
	print"</tr>";
	
}

print <<_HTML;

</tbody>
</table>


_HTML
}
#----------------------------------------------------------
#期間がmonのとき
sub htmlcountkikanmon(){

	print "<table border='1'>";
	print "<tbody>";
	print "<tr><td><font size='2'>$inmon月</font></td>";
	print "<td colspan='2' align='right'><font size='2'>総アクセス$monsoucount</font></td></tr>";
	print "<tr><td><font size='2'>日付</font></td>";
	print"<td><font size='2'>アクセス</font></td>";
	print"<td><font size='2'>グラフ</font></td></tr>";


	for($i=1;$i<=$hi[$inmon];$i++){
		print"<tr><td><font size='2'>";
		#その日のリンク
		print"<a href='kaiseki.cgi?kikan=day&jouhou=count&inday=$i&inmon=$inmon&inyear=$year'>$i</a>";
		print"</font></td>";
		print"<td><font size='2'>$moncount[$i]</font></td>";
		print"<td><img src='./graph.gif' width='$mongraph[$i]' height='6'></td>";
		print"</tr>";
	}
	print "</tbody>";
	print "</table>";

}
#----------------------------------------------------------
#期間がyearのとき
sub htmlcountkikanyear(){

	print "<table border='1'>";
	print "<tbody>";
	print "<tr><td colspan='2'><font size='2'>全て</font></td>";
	print "<td colspan='2' align='right'><font size='2'>総アクセス$sougoucount</font></td></tr>";
	print "<tr><td><font size='2'>年</font></td>";
	print"<td><font size='2'>月</font></td>";
	print"<td><font size='2'>アクセス</font></td>";
	print"<td><font size='2'>グラフ</font></td></tr>";

	for($i=1;$i<=$tmonkazu+1;$i++){
		print"<tr><td><font size='2'>$yearyear[$i]</font></td>";
		print"<td><font size='2'>";
		#その月のリンク
		print"<a href='kaiseki.cgi?kikan=mon&jouhou=count&inday=$inday&inmon=$yearmon[$i]&inyear=$year'>$yearmon[$i]</a>";
		print"</font></td>";
		print"<td><font size='2'>$yearcount[$i]</font></td>";
		print"<td><img src='./graph.gif' width='$yeargraph[$i]' height='6'></td>";

		print"</tr>";
	}
	print "</tbody>";
	print "</table>";

}
#----------------------------------------------------------
#生ログ表示
sub htmlnamalog(){
	#もし期間が日のとき
	if ($kikan eq "day"){
		if ($namalogkazu >=1){
		for ($i=$namalogkazu;$i>=1;$i--){

			$namaloghost[$i]="秘密ホス";
			$namalogaddr[$i]="秘密アド";
			print"<table border='2'><tbody>";
			print"<tr><td width='75'><font size='2'>アクセス時間</font></td><td colspan='3'><font size='2'>$namalognow[$i]</font></td></tr>";

			print"<tr><td><font size='2'>リモートホスト</font></td><td><font size='2'>$namaloghost[$i]</font></td>";
			print"<td><font size='2'>アドレス</font></td><td><font size='2'>$namalogaddr[$i]</font></td></tr>";

			print"<tr><td><font size='2'>リンク元</font></td><td colspan='3'><font size='2'>";
			print"<a href='$linkfile?$namaloglinkmono[$i]' target='_blank'>$namaloglinkmono[$i]</a></font></td></tr>";

			print"<tr><td><font size='2'>ブラウザＯＳ</font></td><td colspan='3'><font size='2'>$namaloguser_agent[$i]</font></td></tr>";

			print"<tr><td><font size='2'>過去訪問回数</font></td>";

			print"<td colspan='3'><table border='1'><tbody>";
			print"<tr><td><font size='2'>今日</font></td><td><font size='2'>$namalogkaisuuday[$i]</font></td>";
			print"<td><font size='2'>今月</font></td><td><font size='2'>$namalogkaisuumon[$i]</font></td>";
			print"<td><font size='2'>今まで</font></td><td><font size='2'>$namalogkaisuuall[$i]</font></td></tr>";
			print"</tbody></table></td></tr>";

			print"<tr><td><font size='2'>前回</font></td><td><font size='2'>$namalogtimemae[$i]</font></td>";
			print"<td><font size='2'>初回</font></td><td><font size='2'>$namalogtimehatu[$i]</font></td></tr>";

			print"</tbody></table>";
		}
		}
		else{
		print"この日のログはありません";
		}
		
	}
	#----------------------------------------------------------
	#もし期間が日以外のとき
	else{
		print"生ログは日単位でしか閲覧できません。";
	}

}
#----------------------------------------------------------

#リンク元ランク表示
sub htmllinkmotorank(){

		#もしファイルにデータがあるとき
		if ($linkmotorankkazu >=1){


			print"<table border='2'><tbody>";
			print"<tr><td><font size='2'>順位</font></td>";
			print"<td><font size='2'>リンク元</font></td>";
			print"<td><font size='2'>回数</font></td></tr>";

			#リンク元のファイルの数だけ繰り返し表示。
			for ($i=1;$i<=$linkmotorankkazu;$i++){
				print"<tr><td><font size='2'>$i</font></td>";
				print"<td><font size='2'>";
				print"<a href='$linkfile?$linkmotoranklinkrank[$i]' target='_blank'>$linkmotoranklinkrank[$i]</a></font></td>";
				print"<td><font size='2'>$linkmotorankkaisuurank[$i]</font></td></tr>";
			}
			print"</tbody></table>";
		
		}
		else{
			#もし期間が日のとき
			if ($kikan eq "day"){print"この日のリンク元はありません";}
			#もし期間が月のとき
			if ($kikan eq "mon"){print"この月のリンク元はありません";}
			#もし期間が全てのとき
			if ($kikan eq "year"){print"リンク元はありません";}

		}

}
#----------------------------------------------------------
#----------------------------------------------------------

#ホストランク表示
sub htmlhostrank(){

		#もしファイルにデータがあるとき
		if ($hostrankkazu >=1){


			print"<table border='2'><tbody>";
			print"<tr><td><font size='2'>順位</font></td>";
			print"<td><font size='2'>リモートホスト</font></td>";
			print"<td><font size='2'>回数</font></td>";
			print"<td><font size='2'>今回訪問時間</font></td>";
			print"<td><font size='2'>初回訪問時間</font></td>";
			
			print"</tr>";
			#ホストのファイルの数だけ繰り返し表示。
			for ($i=1;$i<=$hostrankkazu;$i++){


				$hostrankhostrank[$i]="秘密ホスト$i";
				print"<tr><td><font size='2'>$i</font></td>";
				print"<td><font size='2'>$hostrankhostrank[$i]</font></td>";
				print"<td><font size='2'>$hostrankkaisuurank[$i]</font></td>";
				#----------------------------------------------------------
				print"<td><font size='2'>$hostrankmaerank[$i]</font></td>";
				print"<td><font size='2'>$hostrankhaturank[$i]</font></td>";

				#----------------------------------------------------------
				print"</tr>";
			}
			print"</tbody></table>";
		
		}
		else{
			#もし期間が日のとき
			if ($kikan eq "day"){print"この日のホスト（訪問者）はありません";}
			#もし期間が月のとき
			if ($kikan eq "mon"){print"この月のホスト（訪問者）はありません";}
			#もし期間が全てのとき
			if ($kikan eq "year"){print"ホスト（訪問者）はありません";}

		}

}
#----------------------------------------------------------
#全てのカレンダーを表示
sub htmlallkarenda(){
	print"<table border='1'><tbody><tr><td valign='top'>";
	for($j=1;$j<=12;$j++){
		#----------------------------------------------------------
		#各月の元日の曜日を取得しに行く。
		$tosi=$inyear;
		$tuki=$j;
		&syoriyoubi();
		#----------------------------------------------------------
		print"<table border='1'><tbody>";
		print"<tr>";
		print"<td>　</td>";
		print"<td colspan='3'>";
		print"$inyear年</td>";
		print"<td colspan='2'>";
		print"$j月</td>";
		print"<td>　</td>";
		print"</tr>";
		print"<tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr>";
		print"<tr>";

		for ($i=1;$i<=$youbim1;$i++){print"<td>　</td>";}


		for($i=1;$i<=$hi[$j];$i++){
			print"<td align='right'>";
			print"$i</td>";
			if ((($youbim1 + $i ) % 7) == 0){print"</tr><tr>";}
		}
		print"</tr>";
		print"</tbody></table>";

		print"</td>";
		#----------------------------------------------------------
		#４で割り切れる月のときカレンダーを一段下げる
		if($j % 4 ==0) {print"</tr><tr>";}
		#----------------------------------------------------------
		print"<td valign='top'>";
	}
	print"</td></tr></tbody></table>";

}
#----------------------------------------------------------
#著作権を表示
sub tyosakuken(){
	print"<font size='2'><b>Copyright (C) 2003 <a href='http://www.tok2.com/home2/n0000/top.html'>トライクロス\ソ\フト</a></b></font>";
}