#!/usr/bin/perl

#リンク先のファイル
$linkfile="./xxx.cgi";

#すべてのデータディレクトリ
$filedata="./data";

#ホスト、アドレスをモザイク化するときは１。しないときは０。
$domozaiku=1;

#指定された情報のテーブルのセルの色
$bgcolorjouhou="7fffd4";

#指定されたカレンダーのテーブルのセルの色
$bgcolorkarenda="7fffd4";

#タイトル
$title="アクセス解析";


#----------------------------------------------------------
#基本設定はここまで
#----------------------------------------------------------
#バージョン
$version="1.00";

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();
#情報処理(セルの色変え）
&syorijouhou();
#カレンダー処理
&syorikarenda();
#ページ情報処理(今の情報、期間、時間などの処理　"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(){

	$env=$ENV{'QUERY_STRING'};


	($kikan,$jouhou,$inday,$inmon,$inyear)=split(/&/,$env);

	($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,"$filedata/count/all.txt");
	$allcountdata = <IN>;
	close(IN);

	#----------------------------------------------------------
	# (１〜３１）１日カウントファイルから読み込み
	open(IN,"$filedata/count/tday/$inmon.txt");
	@tdaydata[1..31] = <IN>;
	close(IN);
	#----------------------------------------------------------
	# (今日）１日カウントファイルから読み込み
	open(IN,"$filedata/count/day.txt");
	$daydata = <IN>;
	close(IN);
	#----------------------------------------------------------
	# １ヶ月カウントファイルから読み込み
	open(IN,"$filedata/count/mon.txt");
	$mondata = <IN>;
	close(IN);
	#----------------------------------------------------------
	#蓄積１月カウントファイルから読み込み
	open(IN,"$filedata/count/tmon.txt");
	#蓄積月ファイル数を初期化
	$tmonkazu=1;	
	while($tmondata[$tmonkazu] = <IN>){
		#蓄積月ファイル数
		$tmonkazu++;
	}
	close(IN);
	#蓄積月ファイル数を調整
	$tmonkazu--;

	#----------------------------------------------------------
	# 総合カウントファイルを分解(総合カウント、１日カウント、日付)
	($allcountall,$allcountkyou,$allcountkinou,$allcountkongetu,$allcountsengetu) = split(/,/, $allcountdata);
	#----------------------------------------------------------
	
	#カウント日処理
	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;
		}
	}
	#日カウンタの時間別のパーセントを決める(今日の総カウントが０以上のとき）
	if ($daysoucount>0){
		for($i=0;$i<=23;$i++){
			$dayparcent[$i]=int($daycount[$i]/$daysoucount*100*100)/100;
		}
	}else{
		for($i=0;$i<=23;$i++){
			$dayparcent[$i]=0;
		}
	}

}
#----------------------------------------------------------
#カウント期間１月処理
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;
		}
	}
	#月カウンタの日別のパーセントを決める(今月の総カウントが０以上のとき）
	if ($monsoucount>0){
		for($i=1;$i<=31;$i++){
			$monparcent[$i]=int($moncount[$i]/$monsoucount*100*100)/100;
		}
	}else{
		for($i=1;$i<=31;$i++){
			$monparcent[$i]=0;
		}
	}
}
#----------------------------------------------------------
#カウント期間全て処理
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++){

		#$yearyear[$i]が過去じゃないとき
		if ($yearyear[$i] ne '過去'){
			if ($yeargraphsaidai <= $yearcount[$i]){
				$yeargraphsaidai = $yearcount[$i];
			}
		}
	}

	#月のグラフの幅を決める(カウントの最大が０以上のときだけ）
	if ($yeargraphsaidai>0){
		for($i=1;$i<=31;$i++){
			$yeargraph[$i]=$yearcount[$i]/$yeargraphsaidai*100;
		}
	}
	#すべてのカウンタの月別のパーセントを決める(総カウントが０以上のとき）
	if ($allcountall>0){
		for($i=1;$i<=31;$i++){
			$yearparcent[$i]=int($yearcount[$i]/$allcountall*100*100)/100;
		}
	}else{
		for($i=1;$i<=31;$i++){
			$yearparcent[$i]=0;
		}
	}

}
#----------------------------------------------------------
#生ログ処理
sub syorinamalog(){

	#----------------------------------------------------------

	#生ログ蓄積ファイルから読み込み
	open(IN,"$filedata/namalog/$inday.txt");
		#----------------------------------------------------------
		#始めのファイルには日月年が入ってる
		($namalogday,$namalogmon,$namalogyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#年月が同じとき（ログを入れる）
		if (($namalogmon==$inmon) && ($namalogyear==$inyear)){
			#生ログファイル数を初期化
			$namalogkazu=1;	
			while($namalog[$namalogkazu] = <IN>){
				#生ログファイル数
				$namalogkazu++;
			}
		}
	close(IN);
	#----------------------------------------------------------
	#生ログ今ファイルから読み込み
	open(IN,"$filedata/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,"$filedata/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,"$filedata/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,"$filedata/linkmotorank/$inmon/tmon.txt");
		#----------------------------------------------------------
		#始めのファイルには月年が入ってる。
		($linkmotorankmon,$linkmotorankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のリンク元ランクが同じ日のときそのデータを入れる。
		if (($linkmotorankmon ==$inmon)&& ($linkmotorankyear==$inyear)){

			#リンク元ランクファイル数を初期化
			$linkmotorankkazu=1;
			while($linkmotorankdata[$linkmotorankkazu] = <IN>){
				#リンク元ランクファイル数
				$linkmotorankkazu++;
			}
		}
	close(IN);
	#----------------------------------------------------------
	#今のリンク元ランクファイルから読み込み
	open(IN,"$filedata/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,"$filedata/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,"$filedata/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,"$filedata/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,"$filedata/hostrank/$inmon/tmon.txt");
		#----------------------------------------------------------
		#始めのファイルには月年が入ってる。
		($hostrankmon,$hostrankyear)=split(/,/,<IN>);
		#----------------------------------------------------------
		#参照年月日と今のホストランクが同じ日のときそのデータを入れる。
		if (($hostrankmon ==$inmon)&& ($hostrankyear==$inyear)){

			#ホストランクファイル数を初期化
			$hostrankkazu=1;
			while($hostrankdata[$hostrankkazu] = <IN>){
				#ホストランクファイル数
				$hostrankkazu++;
			}
		}
	close(IN);
	#----------------------------------------------------------
	#今のホストランクファイルから読み込み
	open(IN,"$filedata/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,"$filedata/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 syorijouhou(){

#カウント
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"){$bgcolormanenkarenda=$bgcolorjouhou;}
#カウンタタグ
if ($jouhou eq "kauntatagu"){$bgcolorkauntatagu=$bgcolorjouhou;}
}
#----------------------------------------------------------
#カレンダー処理
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 syoripegejouhou(){
	if($jouhou eq "count"){$htmljouhou="アクセス数";}
	if($jouhou eq "namalog"){$htmljouhou="生ログ";}
	if($jouhou eq "linkmotorank"){$htmljouhou="リンク元";}
	if($jouhou eq "hostrank"){$htmljouhou="リモートホスト";}
	if($jouhou eq "karenda"){$htmljouhou="カレンダー";}
	if($jouhou eq "kauntatagu"){$htmljouhou="カウンタタグ";}

	if($kikan eq "day"){$htmlkikan="日単位";}
	if($kikan eq "mon"){$htmlkikan="月単位";}
	if($kikan eq "year"){$htmlkikan="全て";}
}
#----------------------------------------------------------
#表示処理
sub html(){
	print"<html><head>";
	#ロボット回避
	print"<META NAME='ROBOTS' CONTENT='NOINDEX, NOFOLLOW'>";
	print"<title>$title</title>";
	print"</head>";
	print"<body>";
	#スタイルシートによるリンクカラー設定
	&stylecolor();

	print"<table border='1'><tbody>";
	print"<tr><td><font size='2'>$title</font></td><td>";
	#----------------------------------------------------------
	#今のページの情報、期間、時を表示する
	&htmlpegejouhou;
	print"<font size='2'><a href ='./index.html'>index</a></font>";
	#----------------------------------------------------------
	print"</td></tr>";
	print"<tr><td valign='top'>";
		#----------------------------------------------------------
		#情報を表示しに行く
		&htmljouhou();

		#カレンダーを表示しに行く（全てのカレンダー表示しないときだけ）
		if ($jouhou ne "karenda"){&htmlkarenda();}
		
		#もし情報がカレンダーのとき（全てのカレンダーの年選択へ行く）
		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>";
	print"</body></html>";
}
#----------------------------------------------------------
#スタイルカラー情報を取得
sub stylecolor(){
print"<STYLE type='text/css'>";
print"<!--";
print"A{color=#0000ff;text-decoration:underline ;}";
print"A:visited{ color:#555555;}";
print"a:hover{color=00ff00;text-decoration:undeline }";
print"-->";
print"</STYLE>";
}
#----------------------------------------------------------
#ページ情報を入れる
sub htmlpegejouhou(){
print"<font size='2'>";
print"「情報＝$htmljouhou」　";
print"「期間＝$htmlkikan」　";

print"「$inyear年";
print"$inmon月";
print"$inday日」";
print"</font>";
}
#----------------------------------------------------------
#情報選択を表示
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=$bgcolormanenkarenda><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=karenda&inday=$inday&inmon=$inmon&inyear=$inyear'>万年カレンダー</a></font></td></tr>";
       #print"<tr><td bgcolor=$bgcolorkauntatagu><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=kauntatagu&inday=$inday&inmon=$inmon&inyear=$inyear'>カウンタタグ</a></font></td></tr>";
	print"</tbody></table>";

}
#----------------------------------------------------------
#カレンダーを表示	
sub htmlkarenda(){

	print"<table border='1'><tbody>";
	print"<tr>";
	print"<td><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=$jouhou&inday=$inday&inmon=$beforemon&inyear=$beforeyear'>←</a></font></td>";
	print"<td colspan='3'";
	#期間が全てのとき
	if($kikan eq "year"){
		#今見ている年の色を変える。
		print"bgcolor=$bgcolorkarenda";
	}
	print">";
	print"<font size='2'><a href='kaiseki.cgi?kikan=year&jouhou=$jouhou&inday=$inday&inmon=$inmon&inyear=$inyear'>$inyear年</a></font></td>";
	print"<td colspan='2'";
	#期間が月か年のとき
	if(($kikan eq "mon")||($kikan eq "year")){
		#今見ている月の色を変える。
		print"bgcolor=$bgcolorkarenda";
	}

	print">";
	print"<font size='2'><a href='kaiseki.cgi?kikan=mon&jouhou=$jouhou&inday=$inday&inmon=$inmon&inyear=$year'>$inmon月</a></font></td>";
	print"<td><font size='2'><a href='kaiseki.cgi?kikan=$kikan&jouhou=$jouhou&inday=$inday&inmon=$aftermon&inyear=$afteryear'>→</a></font></td>";
	print"</tr>";
	print"<tr>";
	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"<td><font size='2'>木</font></td>";
	print"<td><font size='2'>金</font></td>";
	print"<td><font size='2'>土</font></td>";
	print"</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=$bgcolorkarenda";}
		}
		#期間が月か年のとき
		if(($kikan eq "mon") ||($kikan eq "year")){
			#すべて日付の色を変える。
			print"bgcolor=$bgcolorkarenda";
		}
		print"><font size='2'><a href='kaiseki.cgi?kikan=day&jouhou=$jouhou&inday=$i&inmon=$inmon&inyear=$inyear'>$i</a></font></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='javascript:history.go(1)'>進む</A>　";
	print"<a href='$uehe'>上へ</A>";
	print"</font>";
	print"</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();}
	if ($jouhou eq "kauntatagu"){&htmlkauntatagu();}
}
#----------------------------------------------------------
#カウントを表示
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'>";
	#パーセントを表示
	print"<font size='2'> $dayparcent[$i]%</font></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'>";
		#パーセントを表示
		print"<font size='2'> $monparcent[$i]%</font></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'>総アクセス数$allcountall</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++){

	#$yearyear[$i]が2003とかのとき（過去でないとき）
		if($yearyear[$i] ne '過去'){
			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'>";
			#パーセントを表示
			print"<font size='2'> $yearparcent[$i]%</font></td>";
		}
		#----------------------------------------------------------
		#$yearyear[$i]が過去のとき
		else{
			print"<tr><td colspan='2'><font size='2'>$yearyear[$i]</font></td>";
			print"<td><font size='2'>$yearcount[$i]</font></td>";
			print"<td>";
			#パーセントを表示
			print"<font size='2'> $yearparcent[$i]%</font></td>";
		}
		#----------------------------------------------------------
		print"</tr>";
	}
	print "</tbody>";
	print "</table>";

}
#----------------------------------------------------------
#生ログ表示
sub htmlnamalog(){
	#もし期間が日のとき
	if ($kikan eq "day"){
		if ($namalogkazu >=1){
		for ($i=$namalogkazu;$i>=1;$i--){

			#もしモザイクするとき
			if($domozaiku==1){
				$namaloghost[$i]=mozaiku("$namaloghost[$i]");
				$namalogaddr[$i]=mozaiku("$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>";
			#----------------------------------------------------------
			#日単位のとき
			if ($kikan eq "day"){
				print"<td><font size='2'>本日初訪問時間</font></td>";
			}
			#----------------------------------------------------------
			#月単位のとき
			if ($kikan eq "mon"){
				print"<td><font size='2'>本月初訪問時間</font></td>";
			}
			#----------------------------------------------------------
			#全てのとき
			if ($kikan eq "year"){
				print"<td><font size='2'>初回訪問時間</font></td>";
			}

			print"</tr>";
			#ホストのファイルの数だけ繰り返し表示。
			for ($i=1;$i<=$hostrankkazu;$i++){

				#もしモザイクするとき
				if($domozaiku==1){
					$hostrankhostrank[$i]=mozaiku("$hostrankhostrank[$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><font size='2'>　</font></td>";
		print"<td colspan='3'>";
		print"<font size='2'>$inyear年</font></td>";
		print"<td colspan='2'>";
		print"<font size='2'>$j月</font></td>";
		print"<td><font size='2'>　</font></td>";
		print"</tr>";
		print"<tr>";
		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"<td><font size='2'>木</font></td>";
		print"<td><font size='2'>金</font></td>";
		print"<td><font size='2'>土</font></td>";
		print"</tr>";
		print"<tr>";

		for ($i=1;$i<=$youbim1;$i++){print"<td>　</td>";}


		for($i=1;$i<=$hi[$j];$i++){
			print"<td align='right'><font size='2'>";
			print"$i</font></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 htmlkauntatagu(){

	print"<script language='javascript'>";
	$location="document.write(window.location)";
	print"</script>";

	#----------------------------------------------------------
	print"<font size='2'>総合カウンタ(必ず設置してください)</font><br>";

	print"<textarea rows='12' cols='80'>";

	print"&ltscript type='text/javascript'&gt\n";
	print"&lt!--\n";
	print"xx = document.referrer;\n";
	print"yy = '';\n";
	print"for (i = 0; i &lt xx.length; i++) {\n";
	print"    zz = xx.charAt(i);\n";
	print"    yy += (zz == '+') ? '%2B' : zz;\n";
	print"}\n";
	print"if (xx != ''){xx='&'+xx;}\n";
	print"document.write('&ltimg src=\"$location?all',xx,'\"&gt');\n";

	print"// --&gt\n";
	print"&lt/script&gt";

	print"</textarea><br><br>";
	#----------------------------------------------------------
	print"<font size='2'>今日カウンタ</font><br>";

	print"<textarea rows='1' cols='80'>";
	print"&ltimg src=\"$location?kyou\"&gt";
	print"</textarea><br><br>";
	#----------------------------------------------------------
	print"<font size='2'>昨日カウンタ</font><br>";

	print"<textarea rows='1' cols='80'>";
	print"&ltimg src=\"$location?kinou\"&gt";
	print"</textarea><br><br>";
	#----------------------------------------------------------
	print"<font size='2'>今月カウンタ</font><br>";

	print"<textarea rows='1' cols='80'>";
	print"&ltimg src=\"$location?kongetu\"&gt";
	print"</textarea><br><br>";
	#----------------------------------------------------------
	print"<font size='2'>先月カウンタ</font><br>";

	print"<textarea rows='1' cols='80'>";
	print"&ltimg src=\"$location?sengetu\"&gt";
	print"</textarea><br><br>";
	#----------------------------------------------------------
	print"<font size='2'>１時間カウンタ</font><br>";

	print"<textarea rows='1' cols='80'>";
	print"&ltimg src=\"$location?itijikan\"&gt";
	print"</textarea><br><br>";
	#----------------------------------------------------------


}
#----------------------------------------------------------
#モザイク処理
sub mozaiku(){
	$mojiretu=$_[0];
	$lenmojiretu=length($_[0]);
	$sinmojiretu="";

	for($_=0;$_<=$lenmojiretu;$_++){
	if ($_ % 3 == 0){$sinmojiretu="$sinmojiretu*";}
	else{
		$sinmojiretusub=substr("$mojiretu",$_,1);
		$sinmojiretu="$sinmojiretu$sinmojiretusub";
	}
}
return("$sinmojiretu");
}
#----------------------------------------------------------
#著作権を表示
sub tyosakuken(){

	print"<font size='2'><b>tccnt $version Copyright (C) 2003 <a href='http://www.tok2.com/home2/n0000/top.html'>トライクロス\ソ\フト</a></b></font>";
}