#!/usr/local/bin/perl

#┌─────────────────────────────
#│ Web Protect
#└─────────────────────────────

# 外部ファイル取り込み
require './chkurl.cgi';
&chkurl;
require './jcode.pl';
require './init.cgi';
require './cook.cgi';
require './conf.pl';
require './reserveinit.cgi';


# 基本処理定義
$buf = &decode;
$idflg = 1;
if ($mode eq "setpass") { &setpass; }
if ($mode eq "idcheck"){&idcheck;}
if (!$buf) { &enter; }
if ($in{'ret'} ne "") { &enter; }
if ($in{'gif'} || $in{'jpeg'} || $in{'pdf'} || $in{'excel'}) { &binOut; }
elsif ($page eq 'top') { &pageTop; }
#elsif ($mode eq "check") { &check; }
#if ($mode eq "pass_check") { &pass_check(in); }
&pwCheck;

#-------------------------------------------------
#  認証処理
#-------------------------------------------------
sub pwCheck {
	local($f,$id,$pw,$tp,$check,$time);
	$logf = 0;
#	# クッキー格納
#	if ($mode eq 'enter') {
#		$time = time;
#		if ($in{'cook'} eq "") { $in{'cook'} = 0; }
#		&set_cookie($in{'cook'}, $time ,$tp);
#	}

	if ($page ne 'top' or (($b_check ne "ezweb" and $b_check ne "mobile") or  $k_check eq "sPhone")) {
	# パスファイルを開く

	if ($in{'id'} =~ /@/) {
		local($f) = 0;
		open(IN,"$prvdir/$memfile") || &error("Open Error: $prvdir/$memfile");
		while (<IN>) {
			($id,$nam,$eml,$tp,$kna,$sex,$bi1,$bi2,$bi3,$tel,$fax,$ptel,$pcd,$ad1,$ad2,$ad3,$ad4,$cmp1,$cmp2,$dis,$poi,$memo) = split(/<>/);
			if ($in{'id'} eq $eml) { $in{'id'} = $id; $f++; last; }
		}
		close(IN);
		if (!$f) {
			open(IN,"$prvdir/$adminfile") || &error("Open Error: $prvdir/$adminfile");
			while (<IN>) {
					($id,$nam,$eml,$tp,$kna,$sex,$bi1,$bi2,$bi3,$tel,$fax,$ptel,$pcd,$ad1,$ad2,$ad3,$ad4,$cmp1,$cmp2,$dis,$poi,$memo) = split(/<>/);
			}
			close(IN);
			if ($in{'id'} eq $eml) { $in{'id'} = $id;}
		}
	}
	$f = 0;
	open(IN,"$prvdir/$pwdfile") || &error("Open Error: $pwdfile",$script);
	while (<IN>) {
		($id,$tp,$pw) = split(/:/);

		if ($in{'id'} eq $id) { $f++; last; }
	}
	close(IN);

	if (!$f) { 
		open(IN,"$prvdir/$adminpfile") || &error("Open Error: $adminpfile",$script);
		while (<IN>) {
			($id,$tp,$pw) = split(/:/);
			
		close(IN);
		if ($in{'id'} ne $id) { &error("認証できません",$script); }
		$logf = 1;
		}
	}
}
	# クッキー格納
	if ($mode eq 'enter') {
		$time = time;
		if ($in{'cook'} eq "") { $in{'cook'} = 0; }
		&set_cookie($in{'cook'}, $time ,$tp);
	}

	# 照合処理
	if ($page ne 'top' or ($b_check ne "ezweb" and $b_check ne "mobile") or $k_check eq "sPhone") {
		$pw =~ s/\n//;
		if ( &decrypt($in{'pw'}, $pw) != 1 ) {
			&error("認証できません",$script);
		}
	}

	if (($b_check eq "ezweb" or $b_check eq "mobile") and $mobile_id ne "" and $k_check ne "sPhone"){
		&idset;
	}

	# 入室記録
	if (($mode eq 'enter' or $mode eq 'pass_check') and $logf != 1) { &record; }

#	if ($mode eq 'top' and ($b_check eq "ezweb" or $b_check eq "mobile")){ &record; }

	# 隠しファイル出力
	if ($k_check eq "sPhone"){
		$b_check = $in{'dspmode'};
	}
	&fileOpen;
	exit;
}

#-------------------------------------------------
#  認証画面
#-------------------------------------------------
sub enter {
	open(IN,"$prvdir/$pwdfile") || &setup;
	close(IN);
	$input_mode = "pass_check";
	if (($b_check ne "ezweb" and $b_check ne "mobile") or $k_check eq "sPhone"){
		$input_mode = "enter";
		# クッキー取得
		($cid,$cpw,$ctp,$cck,$ctm,$dspmode) = &get_cookie();
		if ($dspmode ne "PC"){$dspmode = "mobile";}
		$checked = 'checked';
		if ($cck eq '0') {
			$cid = $cpw = '';
			$checked = '';
		}
		$check_tag ="<input tabindex=\"3\" type=\"checkbox\" name=\"cook\" value=\"1\"  $checked>次回から自動的にログイン<br>\n";

	}

	if ($b_check eq "ezweb" or $b_check eq "mobile"){

	&header;
	$headflag = 3;
	&headern;
if ($reservedinfo){
print <<EOM;
<div align=center>｜<a href='#reservedinfo' accesskey='1'>1\予\約状況確認</a>｜<a href='$cgi_adr/newadmin.cgi' accesskey='2'>2新規会員登録</a>｜</div>
EOM
}
if ($idflg and $k_check ne "sPhone"){
print <<EOM;
<form action="$script" method="" utn>
<input type="hidden" name="mode" value="idcheck">
<input type="submit" value="かんたんﾛｸﾞｲﾝ"><br>
</form>
<hr color="#000000">
EOM
} else {
print <<EOM;
会員の方はIDとﾊﾟｽﾜｰﾄﾞを入力した後、ENTERﾎﾞﾀﾝを押して下さい。<br>
初めてご利用の方は、会員登録をお願い致します。<br>
<form action="$script" method="" utn>
<input type="hidden" name="mode" value="$input_mode">
<input type="hidden" name="dspmode" value="$dspmode">
<input type="hidden" name="ret_data" value="$in{'ret'}">
ID(E-mail)
<input type="text" name="id" size="15" value="$cid" istyle="3" MODE="alphabet"><br>
パスワード
<input type="password" name="pw" size="15" value="$cpw" istyle="3" MODE="alphabet"><br>
$check_tag
<input type="submit" value="ENTER"><input type="reset" value="RESET"><br>
</form>
EOM
}
print <<EOM;
<form action="$cgi_adr/newadmin.cgi" method="">
<a href="$cgi_adr/remind.cgi?mode=id">IDとﾊﾟｽﾜｰﾄﾞを忘れた方</a><br>
<a href="$cgi_adr/remind.cgi?mode=password">ﾊﾟｽﾜｰﾄﾞだけを忘れた方</a><br>
<hr color="#000000">
<input type="hidden" name="page" value="top">
<input type="submit" value="新規会員登録へ">
</form>
<hr color="#000000">
<img src="http://shinryoo.jp/acc/acclog.cgi?guid=ON&url=$cgi_adr/protect.cgi">
EOM

if ($reservedinfo){
	print "<a name=\"reservedinfo\"></a>";
	$login = "";
	&weekdsplay;
	print "$login";
	print "<hr>";
}
if ($idflg and $k_check ne "sPhone"){
print <<EOM;
会員の方はIDとﾊﾟｽﾜｰﾄﾞを入力した後、ENTERﾎﾞﾀﾝを押して下さい。<br>
<form action="$script" method="" utn>
<input type="hidden" name="mode" value="$input_mode">
<input type="hidden" name="ret_data" value="$in{'ret'}">
ID(E-mail)
<input type="text" name="id" size="15" value="$cid" istyle="3" MODE="alphabet"><br>
パスワード
<input type="password" name="pw" size="15" value="$cpw" istyle="3" MODE="alphabet"><br>
$check_tag
<input type="submit" value="ENTER"><input type="reset" value="RESET"><br>
</form>
EOM
}

print <<EOM;
</body>\n</html>
EOM

	}
	else {
if (!$advertise) {

$java ='<script language="JavaScript">'."\n";
$java .=' function check() {'."\n";
$java .='    if (document.loginform.id.value.length==0) {'."\n";
$java .='       document.loginform.id.focus();'."\n";
$java .='       alert("ログインID又はE-mailを入力して下さい");return;'."\n";
$java .='    }'."\n";
$java .='    if (document.loginform.pw.value.length==0) {'."\n";
$java .='       document.loginform.pw.focus();'."\n";
$java .='       alert("パスワードを入力して下さい");return;'."\n";
$java .='    }'."\n";
$java .='    document.loginform.submit();'."\n";
$java .=' }'."\n";
$java .='  function CheckKey()'."\n";
$java .='{'."\n";
$java .=' key=event.keyCode;'."\n";
$java .=' if (key==13)'."\n";
$java .=' {'."\n";
$java .='  document.loginform.submit()'."\n";
$java .=' }'."\n";
$java .='}'."\n";
$java .='</script>'."\n";

$login ='						<h1 class="yjM">'.$title.'</h1>'."\n";
$login .='						<h1 class="yjM">ログインしてください</h1>'."\n";
$login .='				<fieldset id="loginfs">'."\n";
$login .='				<legend>ログインフォーム</legend>'."\n";
$login .='				<form name="loginform" action="'.$script.'" method="post">'."\n";
$login .='				<input type="hidden" name="mode" value="enter">'."\n";
$login .='				<input type="hidden" name="return" value="">'."\n";
$login .='				<table id="yregloginfield" summary="フォーム:ログイン情報を入力する">'."\n";
$login .='				<tbody>'."\n";
$login .='					<tr class="yjid">'."\n";
$login .='						<td><label for="username" class="yjM">ログインID(E-Mail)</label><br />'."\n";
$login .='						<input type="Text" name="id" id="username" class="yreg_ipt yjM" value="'.$cid.'" style="ime-mode:inactive"></td>'."\n";
$login .='					</tr>'."\n";
$login .='					<tr class="yjpw yjM">'."\n";
$login .='						<td><label for="passwd" class="yjM">パスワード</label><br />'."\n";
$login .='						<input type="password" name="pw" size="30" maxlength="30" id="passwd" value="'.$cpw.'" class="yreg_ipt yjM"></td>'."\n";
$login .='					</tr>'."\n";
$login .='				'."\n";
$login .='				</tbody>'."\n";
$login .='				</table>	'."\n";
$login .='                                <div class="persistency yjSt"><input type="checkbox" id="persistent" name="cook" value="1" '.$checked.'> <label for="persistent">次回からIDの入力を省略</label><br>'."\n";
$login .='<p class="persistency">'."\n";
$login .='共用パソコンではチェックを外してください。</p></div>'."\n";
$login .='					<div align="center"><input id=".save" type="button" value="ログイン" class="btnLogin yjM" onclick="check()"></div>'."\n";
$login .='				</form>	'."\n";
$login .='				</fieldset>'."\n";
$login .='				<ul class="links yjS">'."\n";
$login .='<div align=center>'."\n";
$login .='<form action="'.$cgi_adr.'/newadmin.cgi" method="POST">'."\n";
$login .='<a href="'.$cgi_adr.'/remind.cgi?mode=id">ﾛｸﾞｲﾝIDとﾊﾟｽﾜｰﾄﾞを忘れた方はここから</a><br>'."\n";
$login .='<a href="'.$cgi_adr.'/remind.cgi?mode=password">ﾊﾟｽﾜｰﾄﾞだけを忘れた方はここから</a><br><br>'."\n";
$login .='<li class="getYid yjM">'."\n";
$login .='<input type="hidden" name="page" value="top">'."\n";
$login .='<input type="submit" value="新規会員登録へ">'."\n";
$login .='</form>'."\n";
$login .='</span>'."\n";
$login .='</div>'."\n";
$login .='				</ul>'."\n";


@pr1 = &advertiseset(1);
@pr2 = &advertiseset(2);


if ($reservedinfo){ &weekdsplay;}



		open(IN,"../advertise/login.html") || &error("Open Error: login.html",$script);
		print "Content-type: text/html\n\n";
#		$script =~ /\/(.*)$/; $temp = $1;
		while (<IN>) {

			# リンク部及び画像にID/PASS情報付加
			s/\%java%/$java/g;
			s/\%pagetitle%/ログイン − $title/g;
			s/\%title%/$title/g;
			s/\%script%/$script/g;
			s/\%pr1%/@pr1/g;
			s/\%pr2%/@pr2/g;
			s/\%login%/$login/g;

			print;
		}
	
} else {
	$headflag = 2;
	&header;
print <<EOM;
</style>
<script language="JavaScript">
 function check() {
    if (document.loginform.id.value.length==0) {
       document.loginform.id.focus();
       alert("ログインID又はE-mailを入力して下さい");return;
    }
    if (document.loginform.pw.value.length==0) {
       document.loginform.pw.focus();
       alert("パスワードを入力して下さい");return;
    }
    document.loginform.submit();
 }
  function CheckKey()
{
 key=event.keyCode;
 if (key==13)
 {
  document.loginform.submit()
 }
}
</script>
EOM
	$headflag = 3;
	&headern;
	print <<EOM;
<BR><BR>
<div align="center">
<form name="loginform" action="$script" method="post">
<input type="hidden" name="mode" value="enter">
<input type="hidden" name="return" value="$in{'ret'}">
<b>こんにちは、$titleへようこそ！</b><br>
<BR>
<td><b>会員の方はIDとパスワードを入力した後、確認ボタンを押して下さい。</b><br>
<BR>
<td><b>初めてご利用の方は、会員登録をお願い致します。</b><br>
<BR>
<table width="570" border="0" cellspacing="0" cellpadding="0">
	<table border="0" cellpadding="0" cellspacing="0" width="100%" >
<tr>
<td align=center>

        <table cellpadding=0 cellspacing=0 border=0>
        <tr>
<td rowspan=4><img src="$image_url/member_join_01.gif" width=16 height=135 border=0></td>
<td colspan=2 width=268 background="$image_url/member_join_01back.gif"><img src="$image_url/member_join_011.gif" border=0></td>
<td rowspan=4><img src="$image_url/member_join_012.gif" width=16 height=135 border=0></td>
</tr>
<tr>
<td class="woong" height=29 background="$image_url/member_join_back.gif" align=right>
        <table width="100%" border=0 style="font-size:12pt;">
        <tr><td class=woong align=right><b>ID(E-mail):</b></td><td class=woong><input type="Text" name="id" size="30" maxlength="30" value="$cid" style=\"ime-mode:inactive\"></td></tr>
        <tr><td class=woong><div align="right"><b>パスワード :</b></div></td><td class=woong><input type="password" name="pw" size="30" maxlength="30"  value="$cpw"></td></tr>
	<tr>
		<td></td>
		<td><input type="checkbox" name="cook" value="1" $checked>
		パスワードを記憶する</td>
	</tr>
        </table>
</td>
<td class="line" background="$image_url/member_join_back.gif" valign=bottom><a href="JavaScript:check()"><img src="$image_url/member_join_login.gif" border=0></a></td>
</tr>

        <tr>
        <td height=17 background="$image_url/member_join_01back1.gif" colspan=2></td></tr>
        </table>
</td>
</tr>
</table>
</table>
</form>
</div>
<div align=center>
<form action="$cgi_adr/newadmin.cgi" method="POST">
<a href="$cgi_adr/remind.cgi?mode=id">IDとパスワードを忘れた方はここから</a><br>
<a href="$cgi_adr/remind.cgi?mode=password">パスワードだけを忘れた方はここから</a><br><br>
<input type="hidden" name="page" value="top">
<input type="submit" value="新規会員登録へ">
</form>
</span>
EOM

if ($reservedinfo){ &weekdsplay;print $login;}

print <<EOM;
</div>
<script type="text/javascript">
document.write("<img src='http://shinryoo.jp/acc/acclog.cgi?");
document.write("referrer="+document.referrer+"&");
document.write("width="+screen.width+"&");
document.write("height="+screen.height+"&");
document.write("color="+screen.colorDepth+"'>");
</script> 
</body>
</html>
EOM

	}

	}
	exit;
}

#-------------------------------------------------
#  認証後表示
#-------------------------------------------------
sub fileOpen {

local($id,$nam,$eml,$tp,$kna,$sex,$bi1,$bi2,$bi3,$tel,$fax,$ptel,$pcd,$ad1,$ad2,$ad3,$ad4,$cmp1,$cmp2,$dis,$poi,$memo);
local($f) = 0;
open(IN,"$prvdir/$memfile") || &error("Open Error: $prvdir/$memfile",$script);
while (<IN>) {
	($id,$nam,$eml,$tp,$kna,$sex,$bi1,$bi2,$bi3,$tel,$fax,$ptel,$pcd,$ad1,$ad2,$ad3,$ad4,$cmp1,$cmp2,$dis,$poi,$memo) = split(/<>/);
	if ($in{'id'} eq $id) { $f++; last; }
}
close(IN);
if (!$f) {
		open(IN,"$prvdir/$adminfile") || &error("Open Error: $prvdir/$adminfile",$script);
		while (<IN>) {
				($id,$nam,$eml,$tp,$kna,$sex,$bi1,$bi2,$bi3,$tel,$fax,$ptel,$pcd,$ad1,$ad2,$ad3,$ad4,$cmp1,$cmp2,$dis,$poi,$memo) = split(/<>/);
		}
		close(IN);
		if ($in{'id'} ne $id) { &error("該当のID情報が見当たりません",$script); }
}
$hcmp1 = $cmp1;
$hcmp2 = $cmp2;

	local($target,$temp);
#$b_check = "ezweb";
	if ($b_check ne "ezweb" and $b_check ne "mobile"){
#		if ($in{'ret_data'} ne ""){
#			$in{'ret_data'} =~s/\!/\?/g;
#			$in{'ret_data'} =~s/\|/\&/g;
#			$in{'ret_data'} =~s/\_/\=/g;
		if ($in{'return'} ne ""){

			print "Location: $cgi_adr/$in{'return'}.cgi\n\n";
			exit;
		}
	}
	if ($page eq '' or $page eq 'top') { 
		if($b_check eq "ezweb" or $b_check eq "mobile") {
			if($b_check eq "ezweb") {
				$bookmark1 = "<A HREF=\"device:home/bookmark?url=$script?id%3d$in{'id'}%26pw%3d$in{'pw'}&title=$title\">お気に入りリストに登録</A>";
				$bookmark2 = "";
			} else {
				$bookmark1 = "";
				$bookmark2 = "この画面をお気に入りに登録してください。";
			}
			if ($tp == 3){
				 $target = $secret3_mobile;
			} else {
				 $target = $secret_mobile; 
			}

		} else {
			if ($secretselect != 0){
				$target = $secret[$secretselect];
				$page = $secretselect;
			} else {
				if ($tp eq "0"){ $target = $secret[0]; }
				if ($tp eq "1"){ $target = $secret1; }
				if ($tp eq "2"){ $target = $secret2; }
				if ($tp eq "3"){ $target = $secret3; }
				if ($tp eq "4"){ $target = $secret4; }
			}
		}
        }
	else { $target = $secret[$page]; }


	# CGIファイル移動
	if ($target =~ m|http://|) {

		# IISサーバ対応
		if ($ENV{'PERLXS'} eq "PerlIS") {
			print "HTTP/1.0 302 Temporary Redirection\r\n";
			print "Content-type: text/html\n";
		}

		if (($b_check eq "ezweb" or $b_check eq "mobile") and $k_check ne "sPhone"){
			print "Location: $target?id=$in{'id'}&pw=$in{'pw'}\n\n";
		} else {
			print "Location: $target?\n\n";
		}
		exit;

	# HTMLファイル移動
	} else {

		if (!$advertise) {
			@pr6 = "<center>".&advertiseset(6)."</center>";
			@pr7 = "</center>".&advertiseset(7)."</center>";

		}
		if ($k_check ne "sPhone"){
			$idpw = "id=$in{'id'}&pw=$in{'pw'}";
			$sphone_meta = "";
		} else {
			$idpw = "id=$in{'id'}&pw=$in{'pw'}";
			$sphone_meta = "<meta name=\"viewport\" content=\"width=320,maximum-scale=1.0,user-scalable=no\">\n<meta name=\"format-detection\" content=\"telephone=no\">\n<meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />\n<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n<link rel=\"apple-touch-icon\" href=\"yoyaku.png\" />\n<style type=\"text/css\"><!--body{font-size:16px;}--></style>\n";
		}
		open(IN,"$prvdir/$target") || &error("Open Error: $target",$script);
		if($b_check eq "ezweb" or $b_check eq "mobile"){
			print "Content-type: text/html; charset=Shift_JIS\n\n";
		} else {
			print "Content-type: text/html\n\n";
		}
		$script =~ /\/(.*)$/; $temp = $1;
		if ($k_check eq "sPhone"){
			$sphone_select = "<div align=\"center\">";
			$sphone_select .= "<table width=\"200\" height=\"35\" border=\"1\" cellspacing=\"0\" style=\"font-size:12pt;\">\n";
			$sphone_select .= "<tr align=\"center\">";
			if ($b_check eq "PC"){
				$sphone_select .= "<td>\表\示：<a href=\"$script?mode=enter&id=$in{'id'}&pw=$in{'pw'}&cook=$in{'cook'}&dspmode=mobile\">モバイル</a>｜パ\ソ\コン</td></tr></table>\n";
			} else {
				$sphone_select .= "<td>\表\示：モバイル｜<a href=\"$script?mode=enter&id=$in{'id'}&pw=$in{'pw'}&cook=$in{'cook'}&dspmode=PC\">パ\ソ\コン</a></td></tr></table>\n";
			}
			$sphone_select .= "</div>";
		}
		
		while (<IN>) {

			# リンク部及び画像にID/PASS情報付加
			s/\%pr6%/@pr6/g;
			s/\%pr7%/@pr7/g;
			s/\$sphone_select/$sphone_select/g;
			s/\$sphone_meta/$sphone_meta/g;
			s/\$bookmark1/$bookmark1/g;
			s/\$bookmark2/$bookmark2/g;
			s/\$body/$body/g;
			s/\$body/$body/g;
			s/\$mobileformcolor/$mobileformcolor/g;
			s/\$title/$title/g;
			s/\$messagetext/$messagetext/g;
			s/\$id/$id/g;
			s/\$poi/$poi/g;
			s/\$nam/$nam/g;
			s/\$cmp1/$cmp1/g;
			s/\$cmp2/$cmp2/g;
			s/\$script/$script/g;
			s/\$ad/$ad1$ad2$ad3$ad4/g;
			s/\?page=/\?$idpw&page=/g;
			s/\?gif=/\?$idpw&gif=/g;
			s/\?jpeg=/\?$idpw&jpeg=/g;
			s/\?excel=/\?$idpw&excel=/g;
			s/\?pdf=/\?$idpw&pdf=/g;
			s/<form([^>]*$temp[^>]*)?>/<form $1>\n<input type=hidden name=id value=\"$in{'id'}\">\n<input type=hidden name=pw value=\"$in{'pw'}\">/ig;

			print;
		}
		close(IN);
	}
}

#-------------------------------------------------
#  認証トップ戻り
#-------------------------------------------------
sub pageTop {
	local($cck,$ctm);
	local($ctp,$cid,$cpw) = &cookCheck();

	if ($in{'return'} ne ""){ print "Location: $cgi_adr/$in{'return'}.cgi\n\n";}
	# トップページ表示
	$in{'id'} = $cid;
	$in{'pw'} = $cpw;
	$in{'tp'} = $ctp;
	&fileOpen;
	exit;
}
sub pageTopa {
	local($f,$id,$pw,$tp,$check);

	if ($b_check eq "ezweb" or $b_check eq "mobile"){

		$cid = $in{'id'};
		$cpw = $in{'pw'};

	} else {
		# クッキー取得
		local($cid,$cpw,$ctp,$cck,$ctm,$b_check) = &get_cookie();

		# 取得失敗
		if ($cid eq "" || $cpw eq "") { &error("クッキー取得に失敗しました"); }
	}
	# パスファイルを開く
	$f = 0;
	open(IN,"$prvdir/$pwdfile") || &error("Open Error: $pwdfile");
	while (<IN>) {
		($id,$tp,$pw) = split(/:/);

		if ($cid eq $id) { $f++; last; }
	}
	close(IN);

	if (!$f) { 
		open(IN,"$prvdir/$adminpfile") || &error("Open Error: $adminpfile");
		while (<IN>) {
			($id,$tp,$pw) = split(/:/);
		close(IN);
		if ($in{'id'} ne $id) { &error("認証できません",$script); }
		}
	}

	# 照合
	$pw =~ s/\n//;
	if ( &decrypt($cpw, $pw) != 1 ) {
		&error("認証できません",$script);
	}


	if ($in{'return'} ne ""){ print "Location: $cgi_adr/$in{'return'}.cgi\n\n";}
	# トップページ表示
	$in{'id'} = $cid;
	$in{'pw'} = $cpw;
	$in{'tp'} = $tp;
	&fileOpen;
	exit;
}

#-------------------------------------------------
#  バイナリ出力
#-------------------------------------------------
sub binOut {
	local($f,$check,$id,$pw,$file,$head);

	# パスチェック
	$f = 0;
	open(IN,"$prvdir/$pwdfile") || &error("Open Error: $pwdfile",$script);
	while (<IN>) {
		($id,$tp,$pw) = split(/:/);

		if ($in{'id'} eq $id) { $f++; last; }
	}
	close(IN);

	if (!$f) { die "ID not found"; }

	# 照合
	$pw =~ s/\n//;
	if ( &decrypt($in{'pw'}, $pw) != 1 ) { die "PASSWORD ERROR"; }

	# ファイル名&出力ヘッダ定義
	if ($in{'gif'}) {
		$in{'gif'} =~ s/\W//g;
		$file = "$in{'gif'}\.gif";
		$head = "image/gif";

	} elsif ($in{'jpeg'}) {
		$in{'jpeg'} =~ s/\W//g;
		$file = "$in{'jpeg'}\.jpg";
		$head = "image/jpeg";

	} elsif ($in{'pdf'}) {
		$in{'pdf'} =~ s/\W//g;
		$file = "$in{'pdf'}\.pdf";
		$head = "application/pdf";

	} elsif ($in{'excel'}) {
		$in{'excel'} =~ s/\W//g;
		$file = "$in{'excel'}\.xls";
		$head = "application/ms-excel";

	} else {
		die "No Data";
	}

	# 画像出力
	open(IN,"$prvdir/$file");
	print "Content-type: $head\n\n";
	binmode(IN);
	binmode(STDOUT);
	print <IN>;
	close(IN);

	exit;
}

#-------------------------------------------------
#  ログ記録
#-------------------------------------------------
sub record {
	local($date,$time,$agent,@data);

	# 時間&ホスト取得
	$date = &get_time;
	$time = time;
	&get_host;

	# ロック開始
	&lock if ($lockkey);

	# ログファイルの読み込み
	open(IN,"$prvdir/$logfile") || &error("Open Error: $logfile",$script);
	@data = <IN>;
	close(IN);

	# ブラウザ情報
	$agent = $ENV{'HTTP_USER_AGENT'};
	$agent =~ s/&/&amp;/g;
	$agent =~ s/</&lt;/g;
	$agent =~ s/>/&gt;/g;
	$agent =~ s/"/&quot;/g;

	# ログ更新
	while ($max <= @data) { pop(@data); }
	unshift(@data,"$in{'id'}<>$date<>$host<>$agent<>$time<>\n");
	open(OUT,">$prvdir/$logfile") || &error("Write Error: $logfile",$script);
	print OUT @data;
	close(OUT);

	# ロック解除
	&unlock if ($lockkey);
}

#-------------------------------------------------
#  クッキー発行
#-------------------------------------------------
sub set_cookie {
	local($job, $time,$tp) = @_;
	local($gmt, $cook, @t, @m, @w);

	@t = gmtime(time + 60*24*60*60);
	@m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	@w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

	# 国際標準時を定義
	$gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",
			$w[$t[6]], $t[3], $m[$t[4]], $t[5]+1900, $t[2], $t[1], $t[0]);

	# 保存データ
	$cook = "$in{'id'}<>$in{'pw'}<>$tp<>$job<>$time<>$in{'dspmode'}<>";

	# 格納
	print "Set-Cookie: wprotect=$cook; expires=$gmt\n";
}

#-------------------------------------------------
#  クッキー取得
#-------------------------------------------------
sub get_cookie {
	local($key, $val, *cook);

	# クッキーを取得
	$cook = $ENV{'HTTP_COOKIE'};

	# 該当IDを取り出す
	foreach ( split(/;/, $cook) ) {
		($key, $val) = split(/=/);
		$key =~ s/\s//g;
		$cook{$key} = $val;
	}

	return ( split(/<>/, $cook{'wprotect'}) );
}

#-------------------------------------------------
sub setup {
	$headflag = 2;
	&header;
	print <<EOM;

	table	{ font-size: 12px; }
	a:hover { color: red;}
	a		{ font-size: 12px; }
	form	{ font-size: 12px; }
	div	{ font-size: 12px; }
	img	{ vertical-align: middle;}
	.size1	{ font-size: 8px }
	.size2	{ font-size: 10px }
	.size3	{ font-size: 12px }
	.size4	{ font-size: 14px }
	.size5	{ font-size: 18px }
	.size6	{ font-size: 20px }
	.size7	{ font-size: 24px }
</style>
EOM
	$headflag = 3;
	&headern;
	print <<EOM;
<center>

<table border="0" width="400"><tr><td>


<center>
<table border="0"><tr align="center">
  <td><div class="size4"><font color="#555533">■ $title ■</font><br><br></div></td>
  </tr><tr align="center">
  <td>これから、初めてお使いになる管理者様の初期設定を行います。<br><br></td>
  </tr><tr align="center">
  <td><div class="size4"><font color="#555533">■ 管理者用パスワード設定 ■</font></div></td></tr>   
</table>
<br>
<table border="0"></tr>
<tr>
<td>管理メニューにログインするためのユーザ名とログインID、パスワードを指定してください。
<br>ログインID、パスワードに指定できる文字は、半角の英数、ハイフン、アンダースコアで、４〜８文字で入力して下さい。</td>
</tr></table>

<form method="POST" action="$script">
<input type="hidden" name="mode" value="setpass">

<table border="0" cellspacing="1" cellpadding="1"><tr><td bgcolor="#444422">
  <table border="0" cellspacing="1" cellpadding="2">
    <tr>
      <td nowrap bgcolor="#F5F5DC">ユーザー名</td>
      <td nowrap bgcolor="#F8F8FF"><input name="nam" size="20" value="管理者"></td>
    </tr>
    <tr>
      <td nowrap bgcolor="#F5F5DC">ログインID</td>
      <td nowrap bgcolor="#F8F8FF"><input name="id" size="20" style="ime-mode:disabled"></td>
    </tr>
    <tr>
      <td nowrap bgcolor="#D5D5BC">パスワード</td>
      <td nowrap bgcolor="#D8D8DF"><input type="password" name="pw" size="20"></td>
    </tr>
    <tr>
      <td class="ListHeader" nowrap bgcolor="#D5D5BC">パスワード再入力</td>
      <td bgcolor="#D8D8DF" nowrap><input type="password" name="pw1" size="20"></td>
    </tr>
  </table>
</td></tr></table>


<p>
<input type="submit" value="　設　　定　" name="setup">
</p>

</form>
<hr>
</center>

</td></tr></table>
</center>
</body>
</html>

EOM
exit;

}

#-------------------------------------------------
#  チェックモード
#-------------------------------------------------
sub setpass {
		# チェック
		if ($in{'id'} eq "") { &error("ユーザIDが未入力です",$script); }
		if ($in{'pw'} eq "") { &error("パスワードが未入力です",$script); }
		if ($in{'pw1'} eq "") { &error("再度入力のパスワードが入力モレです",$script); }
		if ($in{'pw'} ne $in{'pw1'}) {
			&error("パスワードで再度入力分が異なります",$script);
		}
                 $tp = 3;

		# IDの重複チェック
		local($f);

		# PWを暗号化
		local($pwd) = &encrypt($in{'pw'});
		local($pwduser) = &encrypt('user');

		# ロック開始
		&lock if ($lockkey);

		open(OUT,">$prvdir/$pwdfile") || &error("Write Error: $prvdir/$pwdfile",$script);
		print OUT "$in{'id'}:$tp:$pwd\n";
		print OUT "user:0:$pwduser\n";
		close(OUT);

		unshift(@file,"$in{'id'}<>$in{'nam'}<>$master<>$tp<><><><><><><><><><><><><><><><><><><>\n");
		unshift(@file,"user<>お客<><>0<><><><><><><><><><><><><><><><><><><>\n");
		open(OUT,">$prvdir/$memfile") || &error("Write Error: $prvdir/$memfile",$script);
		print OUT @file;
		close(OUT);

		# ロック解除
		&unlock if ($lockkey);

		# クッキー格納
		$time = time;
		$in{'cook'} = 1;
		&set_cookie($in{'cook'}, $time ,$tp);

		&record;

	# 時間取得
	$date = &get_time;

	# メール本文
	$mbody = <<EOM;
$in{'nam'}様

「$title」へのご登録をありがとうございます。
以下のとおりログインIDとパスワードを発行しました。

※パスワードはご自分で自由に変更可能\ですので、覚えやすいものに
  変更しておくことができます。

▼登録内容
登録日時   : $date
ホスト情報 : $host
お名前     : $in{'nam'}
E-mail     : $master

▼ログイン情報
ログインID : $in{'id'}
パスワード : $in{'pw'}

---
  $productiontitle管理人 <$production>
EOM

	# 題名をBASE64化
	local($msub) = &base64("登録の御案内");

	# sendmail送信
	open(MAIL,"| $sendmail -t") || &error("メール送信失敗",$script);
	print MAIL "To: $master\n";
	print MAIL "From: $production\n";
	print MAIL "Cc: $production\n";
	if ($bccmailaddress ne ""){
		print MAIL "Bcc: $bccmailaddress\n";
	}
	print MAIL "Subject: $msub\n";
	print MAIL "MIME-Version: 1.0\n";
	print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
	print MAIL "Content-Transfer-Encoding: 7bit\n";
	foreach ( split(/\n/, $mbody) ) {
		&jcode'convert(*_, 'jis', 'sjis');
		print MAIL $_, "\n";
	}
	close(MAIL);

	        print "Location: $cgi_adr/confeagy.cgi?setmode=setpass&pw=$in{'pw'}\n\n";


}
#-------------------------------------------------
#  チェックモード
#-------------------------------------------------
sub check {
	local($k,$v,%log);

	&header;
	&headern;
	print <<EOM;
<h3>Check Mode</h3>
<ul>
EOM

	%log = (
		'パスファイル', $pwdfile,
		'ログファイル', $logfile,
		'管理ログ', $admfile,
		'会員ファイル', $memfile,
	);

	while ( ($k, $v) = each %log ) {
		if (-e "$prvdir/$v") {
			print "<li>$kのパスOK!\n";
			if (-r "$prvdir/$v" && -w "$prvdir/$v") {
				print "<li>$kのパーミッションOK!\n";
			} else {
				print "<li>$kのパーミッションNG → $v\n";
			}
		} else {
			print "<li>$kのパスNG → $v\n";
		}
	}

	# sendmail
	if (-e $sendmail) {
		print "<li>sendmailパスOK!\n";
	} else {
		print "<li>sendmailパスNG! → $sendmail<br>
		(sendmailを使用しない場合は気にしなくてよい)\n";
	}

	# ロックディレクトリ
	print "<li>ロック形式 → ";
	if ($lockkey == 0) { print "設定なし\n"; }
	else {
		if ($lockkey == 1) { print "symlink\n"; }
		else { print "mkdir\n"; }

		local($lockdir) = $lockfile =~ /(.*)[\\\/].*$/;
		print "<li>ロックディレクトリ → $lockdir\n";

		if (-d $lockdir) {
			print "<li>ロックディレクトリパスOK!\n";
			if (-r $lockdir && -w $lockdir && -x $lockdir) {
				print "<li>ロックディレクトリパーミッションOK!\n";
			} else {
				print "<li>ロックディレクトリパーミッションNG! → $lockdir\n";
			}
		} else {
			print "<li>ロックディレクトリNG! → $lockdir\n";
		}
	}

	exit;
}

#---------------------------------------------------#

sub reservescheck{

  my($ftp) = @_;
	local($titexth,$titexta);
	$sttime = int($workstarttime);
	$edtime = $workendtime - 0.5;
	if ($breakstarttime ne "なし"){
		$brflg = 1;
		$brsttime = int($breakstarttime);
		$bredtime = $breakendtime - 0.5;
		$bredmin = ($breakendtime - int($breakendtime)) * 60;
		foreach $mckn ($brsttime..$bredtime){
			if($mckn == $brsttime) {$stmi = ($breakstarttime-$brsttime) * 60;} else {$stmi = 0;}
			if($mckn == $bredtime and $bredmin != 0){$edmin = $bredmin;} else {$edmin = 60;}
			for($tlp=$stmi; $tlp<$edmin; $tlp=$tlp+$seltime){
				foreach $lp (0..$rnum){
					foreach $lpn ( 0..$disposenumber){
						$timefn = sprintf("%01d%01d%02d%02d", $lp,$lpn,$mckn,$tlp);
						$timef{$timefn} = "-1";
					}
				}
#print "timefn=". $timefn . " timef=" . $timef{$timefn} ." timemode=" . $timestat{$timefn} . " timetext=" . $timetext{$timefn} . " sttimef=" . $sttimef . " stminf=" . $stminf . " edtimef=" . $edtimef ." edminf=" . $edminf,"\n";
			}
		}
	} else {
		$brflg = 0;
	}
	$stmon = sprintf("%04d/%02d/%02d", $year,$mon,$in{'day'});
	local(@lines) = "";
	local($linflg) = 0;
	open(IN,"$fn_reserve") || &error("Open Error: $fn_reserve");
	while (<IN>) {
		local($rd0,$rd1,$rd2,$rd3,$rd4,$rd5,$rd6,$rd7,$rd8,$rd9,$rd10,$rd11,$rd12,$rd13,$rd14,$rd15,$rd16,$rd17,$rd18,$rd19,$rd20) = split(/,/);
		if ($stmon eq $rd5) {
			push(@lines,$_);
			$linflg ++;
		}
	}
	close(IN);
	@sorted = map{ $_->[0] }
		 sort{
			$a->[1] cmp $b->[1] 
				||
			$a->[2] cmp $b->[2] 
				||
			$a->[3] cmp $b->[3] 
				||
			$a->[4] cmp $b->[4] 
		}
		map { [ $_, (split ",",$_)[5,4,6,7] ] }
		        @lines;
	local($setdayf) = "";
	local($edtimef) = "";
	foreach (@sorted){
		($rd0,$rd1,$rd2,$rd3,$rd4,$rd5,$rd6,$rd7,$rd8,$rd9,$rd10,$rd11,$rd12,$rd13,$rd14,$rd15,$rd16,$rd17,$rd18,$rd19,$rd20) = split(/,/);
		$rd19 =~ s/\n//;
		$rd20 =~ s/\n//;
		($sttimef,$stminf) = split(/:/,$rd6);
		($edtimef,$edminf) = split(/:/,$rd7);
		$lpf = 0;
		if ($rd11 != 1){
			$rd11p = "×".$rd11.$countcomment;
		} else {
			$rd11p = "";
		}
		if ($ftp != 3 and $rd3 ne $hid) {
			$lpf = 1;
		}
		if ($lpf != 1){
			$lpf = (($edtimef * 60) + $edminf - ($sttimef * 60) - $stminf) / $seltime;
		}
		if ($htp != 3 and $hid ne $rd3){ $rd10 = -1;}
		if($edminf == 0){$edtimef--;}
		foreach $mckn ($sttimef..$edtimef){
			if($mckn == $sttimef) {$stmi = $stminf;} else {$stmi = 0;}
			if($mckn == $edtimef and $edminf != 0){$edmin = $edminf;} else {$edmin = 60;}
			for($tlp=$stmi; $tlp<$edmin; $tlp=$tlp+$seltime){
				$timefn = sprintf("%01d%01d%02d%02d", $rd4,$rd8,$mckn,$tlp);
				$timef{$timefn} = $lpf;
				$timestat{$timefn} = $rd10;
				$timemode{$timefn} = $rd19;
				$timeid{$timefn} = $rd3;
				$timersvid{$timefn} = $rd0;
				$timetel{$timefn} = "";
				if ($reservedline == 0){
					if ($htp == 3){ 
						if ($rd10 eq "-1"){
							$timetext{$timefn} = $rd9;
						} else {
							$timetext{$timefn} = $rd2 . "様<br>".$rd9.$rd11p;
							&telread;
						}
					} else {
						$timetext{$timefn} = $rd9.$rd11p;
					}
				} else {
					if ($rd10 eq "-1"){
						$timetext{$timefn} = $rd9;
					} else {
						$timetext{$timefn} = $rd2 . "様";
						if ($htp == 3){&telread;}
					}
				}
				if ($disposenumber > 1 and $htp != 3 and ($rd8 != 1 or $hid eq $rd3)){
					$timefn = $rd4."A".sprintf("%02d%02d", $mckn,$tlp);
					$timef{$timefn} = $lpf;
					$timestat{$timefn} = $rd10;
					$timemode{$timefn} = $rd19;
					$timeid{$timefn} = $rd3;
					$timersvid{$timefn} = $rd0;
					if ($reservedline == 0){
						$timetext{$timefn} = $rd9.$rd11p;
					} else {
						if ($rd10 eq "-1"){
							$timetext{$timefn} = $rd9;
						} else {
							$timetext{$timefn} = $rd2 . "様";
							&telread;
						}
					}
#print "timefn=". $timefn . " timef=" . $timef{$timefn} ." timemode=" . $timestat{$timefn} . " timetext=" . $timetext{$timefn} . " sttimef=" . $sttimef . " stminf=" . $stminf . " edtimef=" . $edtimef ." edminf=" . $edminf,"\n";
				}
#print "timefn=". $timefn . " timef=" . $timef{$timefn} ." timemode=" . $timestat{$timefn} . " timetext=" . $timetext{$timefn} . " sttimef=" . $sttimef . " stminf=" . $stminf . " edtimef=" . $edtimef ." edminf=" . $edminf,"\n";
			}
		}

	}

	if ($linflg > 0 and $ftp != 3 and $disposenumber > 1){

		foreach $lp (0..$rnum){
			foreach $mckn ($sttime..$edtime){
				for($tlp=0; $tlp<60; $tlp=$tlp+$seltime) {
					$clp = 0;
					$chour = sprintf("%02d",$mckn);
					$cmin = sprintf("%02d",$tlp);
					foreach $dlp (1..$disposenumber){
						$timefn = $lp . $dlp . $chour . $cmin;
						if($timef{$timefn} > 0){
							if ($timeid{$timefn} eq $hid){
								$clp = $disposenumber;
							} else {
								$clp ++;
							}
						}
					}
#print "lp=$lp chour=$chour cmin=$cmin clp=$clp<br>\n";
					if ($clp > 0 and $clp < $disposenumber){
						$timef{$lp . "A" . $chour . $cmin} = 0;
					}
				}
			}
		}
	}
}

#---------------------------------------------------#
sub checkmoon {

	if ($disposenumber > 1 or $seltime < 60){

		foreach $mckn ($sttime..$edtime){
			$clp = 0;
			$ftlp = 60 / $seltime;
			$chour = sprintf("%02d",$mckn);
			$timefnn = $lp . "1" . $chour . "00";
			for($tlp=0; $tlp<60; $tlp=$tlp+$seltime) {
				$cmin = sprintf("%02d",$tlp);
				foreach $dlp (1..$disposenumber){
					$timefn = $lp . $dlp . $chour . $cmin;
					if($timef{$timefn} > 0){
						if ($timeid{$timefn} eq $hid){
							$clp = $disposenumber * $ftlp;
							$timeid{$timefnn} = $hid;
							$timef{$timefnn} = 1;
							;
						} else {
							$clp ++;
						}
					}
				}
			}
			if (($clp > 0 and $clp < $disposenumber * $ftlp and $htp != 3)){
				$timef{$lp . "1" . $chour . "00"} = 0;
			}
			if (($clp > 0 and $htp == 3)){
				$timef{$lp . "1" . $chour . "00"} = 1;
			}
#print "$setdayf lp=$lp chour=$chour cmin=$cmin clp=$clp timef{$lp . '1' . $chour . '00'}=$timef{$lp . '1' . $chour . '00'} timeid{$lp . '1' . $chour . '00'}=$timeid{$lp . '1' . $chour . '00'}<br>\n";
		}
	}

	$cday = substr($setdayf,8,2);
	if ($cday < 10){
			$cday = substr($cday,1,1);
	}
	$setchr = "";
	if ($tistart{$cday.$lp} eq ""){
		$tistart{$cday.$lp} = $starttime;
		$tiend{$cday.$lp} = $endtime;
	}
	for ($i = $sttime; $i < $edtime; $i++) {
		$chour = sprintf("%02d",$i);
		if (($i >= $tistart{$cday.$lp} - 0.5) && ($i <= $tiend{$cday.$lp} -0.5) and ($brflg != 1 or $i < $brsttime or $i >= $bredtime) and ($timef{$lp . "1" . $chour . "00"} != -1)){
			if($timef{$lp.'1'.$chour.'00'} >= 1){
				if($timeid{$lp.'1'.$chour.'00'} eq $hid){
					$clr = $colorhim;
					$textclr = $textcolorhim;
				} else {
					$clr = $colornothim;
					$textclr = $textcolornothim;
				}
				if($setchr eq ""){
					$dnamec{$cday.$lp} = "<font style=background:$clr; color=$textclr>";
				} else {
#					if ($setchr ne $emptychr){
						$dnamec{$cday.$lp} = $dnamec{$cday.$lp} . "</font><font style=background:$clr; color=$textclr>";
#					}
				}
				$dnamec{$cday.$lp} = $dnamec{$cday.$lp} . $reservedchr;
				$setchr = $reservedchr;
				

			} else {
				if($setchr eq ""){
					$dnamec{$cday.$lp} = "<font style=background:$coloremptyh; color=$textcoloremptyh>";
				} else {
					if ($setchr ne $emptychr){
						$dnamec{$cday.$lp} = $dnamec{$cday.$lp} . "</font><font style=background:$coloremptyh; color=$textcoloremptyh>";
					}
				}
				$dnamec{$cday.$lp} = $dnamec{$cday.$lp} . $emptychr;
				$setchr = $emptychr;
			}
		} else {
			if($setchr eq ""){
				$dnamec{$cday.$lp} = "<font style=background:$colorholiday;>";
			} else {
				if ($setchr ne $notreservedchr){
					$dnamec{$cday.$lp} = $dnamec{$cday.$lp} . "</font><font style=background:$colorholiday;>";
				}
			}
			$dnamec{$cday.$lp} = $dnamec{$cday.$lp} . $notreservedchr;
			$setchr = $notreservedchr;
		}
	}
}

#---------------------------------------------------#

sub chrset{
	local($st,$ed) = @_;
        local($settext) = '';
	local($setchr) = "";
#	if ($st eq $starttime and $ed eq $endtime){
#        	$settext = $titexta;
#	} else {
		for ($i = $sttime; $i <= $edtime; $i++) {
			if ((($i >= $st - 0.5) && ($i <= $ed -0.5)) and ($brflg != 1 or $i < $brsttime or $i >= $bredtime)){
				if($setchr eq ""){
					$settext = "<font style=background:$coloremptyh; color=$textcoloremptyh>";
				} else {
					if ($setchr ne $emptychr){
						$settext = $settext . "</font><font style=background:$coloremptyh; color=$textcoloremptyh>";
					}
				}
				$settext = $settext . $emptychr;
				$setchr = $emptychr;
			} else {
				if($setchr eq ""){
					$settext = "<font style=background:$colorholiday;>";
				} else {
					if ($setchr ne $notreservedchr){
						$settext = $settext . "</font><font style=background:$colorholiday;>";
					}
				}
				$settext = $settext . $notreservedchr;
				$setchr = $notreservedchr;
			}
		}
		$settext = $settext . "</font>";
#	}
	return($settext);
}


#---------------------------------------------------
#
#---------------------------------------------------

sub weekdsplay{

$htp = 0;
$rnum = $#reservedname;

$workchr = substr ($workchr,0,2);
$notworkchr = substr ($notworkchr,0,2);
$emptychr = substr ($emptychr,0,2);
$notreservedchr = substr ($notreservedchr,0,2);
$reservedchr = substr ($reservedchr,0,2);
$reservedchr = substr ($reservedchr,0,2);

	($limitmin,$limithour,$limitday,$limitmon,$limityear,$limitwday)=(localtime(time+(($reservedlimitday)*86400)))[1..6];
	$limityear += 1900;
	$limitmon++;


$sttime = int($workstarttime);
$edtime = $workendtime - 0.5;
($min,$hour,$mday,$mon,$year,$wday)=(localtime(time))[1..6];
$wday1 = (localtime(time-(($mday-1)*86400)))[6];
$year += 1900;
$year1 = $year;
$mon++;
$endday = &readday($year,$mon);
$mon0 = $mon;
if ($mon0 == 12){
	$mon1 = 1;
	$year1 = $year + 1;
} else {
	$mon1 = $mon + 1;
	$year1 = $year
}
$endday1 = &readday($year1,$mon1);
if ($mon1 == 12){
	$mon2 = 1;
	$year2 = $year1 + 1;
} else {
	$mon2 = $mon1 + 1;
	$year2 = $year1
}
$endday2 = &readday($year2,$mon2);
if ($mon2 == 12){
	$mon3 = 1;
	$year3 = $year2 + 1;
} else {
	$mon3 = $mon2 + 1;
	$year3 = $year2
}
$endday3 = &readday($year3,$mon3);
if ($mon3 == 12){
	$mon4 = 1;
	$year4 = $year3 + 1;
} else {
	$mon4 = $mon3 + 1;
	$year4 = $year3
}
$endday4 = &readday($year4,$mon4);
if ($mon4 == 12){
	$mon5 = 1;
	$year5 = $year4 + 1;
} else {
	$mon5 = $mon4 + 1;
	$year5 = $year4
}
$endday5 = &readday($year5,$mon5);
if ($in{'mon'} < $mon){
	$year++;
}
$in{'year'} = $year;
if ($in{'mon'} eq '' or $in{'day'} eq '' or ($year <= $limityear and $in{'mon'} <= $limitmon and $in{'day'} < $limitday)){
	$in{'year'} = $limityear;
	$in{'mon'} = $limitmon;
	$in{'day'} = $limitday;
}
$year = $in{'year'};
$day = $in{'day'};
if (($in{'mon'} > 0) and ($in{'mon'} ne $mon)){
	$mon = $in{'mon'};
	$wday1 += $endday;
	$endday = $endday1;
	if ($mon != $mon1){
		$wday1 += $endday;
		$endday = $endday2;
		if ($mon != $mon2){
			$wday1 += $endday;
			$endday = $endday3;
			if ($mon != $mon3){
				$wday1 += $endday;
				$endday = $endday4;
				if ($mon != $mon4){
					$wday1 += $endday;
					$endday = $endday5;
				}
			}
		}
	}
	$wday1 -= int($wday1 / 7) * 7;
}
if ($in{'day'} > $endday){
	$in{'day'} = $endday;
}
if ( -e "./check".$year.$mon.".pl" ) {
	require './check'.$year.$mon.'.pl';
	%dnamec = ();
}else {
	require './holiday.pl';

	&holidayset;
}
if ($breakstarttime ne "なし"){
	$brflg = 1;
	$brsttime = int($breakstarttime);
	$bredtime = $breakendtime;
} else {
	$brflg = 0;
}
$chflg = 0;
foreach $mckn ($sttime..$edtime){
	if ($brflg == 1 and $mckn >= $brsttime and $mckn < $bredtime){
		if ($chflg == 0){
			$titexta =  $titexta . "</font><font style=background:$colorholiday;>";
			$chflg = 1;
		}
			$titexta = $titexta . $notreservedchr;
	} else {
		if ($chflg == 1){
			$titexta =  $titexta . "</font><font style=background:$coloremptyh;  color=$textcoloremptyh>";
			$chflg = 0;
		}
		$titexta = $titexta . $emptychr;
	}
	$titexth = $titexth . $notreservedchr;
}

	$titexth = "<font style=background:$colorholiday;>" . $titexth . "</font>";
	$titexta = "<font style=background:$coloremptyh;  color=$textcoloremptyh>" . $titexta . "</font>";


	$edtimed = int($edtime);
	$login .= "\予\約状況($sttime時〜$edtimed時：1時間単位、";
	$login .= "\予\約可\能\：<font style=background:$coloremptyh;  color=$textcoloremptyh>$emptychr</font>）";
#$login .= "$in{'year'}年$in{'mon'}月$in{'day'}日";
	$login .= "<table>";
local(@lines) = "";
$stmon = sprintf("%04d/%02d", $year,$mon);
#$login .= "$fn_reserve";
open(IN,"$fn_reserve") || &error("Open Error: $fn_reserve");
while (<IN>) {
	local($rd0,$rd1,$rd2,$rd3,$rd4,$rd5,$rd6,$rd7,$rd8,$rd9,$rd10,$rd11,$rd12,$rd13,$rd14,$rd15,$rd16,$rd17,$rd18,$rd19,$rd20) = split(/,/);
	$rd5 = substr($rd5, 0, 7);
	if ($stmon eq $rd5) {
		push(@lines,$_);
	}
}
close(IN);
@sorted = map{ $_->[0] }
	 sort{
		$a->[1] cmp $b->[1] 
			||
		$a->[2] cmp $b->[2] 
			||
		$a->[3] cmp $b->[3] 
			||
		$a->[4] cmp $b->[4] 
	}
	map { [ $_, (split ",",$_)[5,4,6,7] ] }
        @lines;
local($setdayf) = "";
local($edtimef) = "";
local(%timef);
local(%timeid);
%cnamec = ();
%cnamek = ();
foreach (@sorted){
#$login .= "$_<br>";
	($rd0,$rd1,$rd2,$rd3,$rd4,$rd5,$rd6,$rd7,$rd8,$rd9,$rd10,$rd11,$rd12,$rd13,$rd14,$rd15,$rd16,$rd17,$rd18,$rd19,$rd20) = split(/,/);
	($sttimef,$stminf) = split(/:/,$rd6);
#$login .= "\$sttimef=".$sttimef."\$stminf=".$sttimef."<br>";
	$rd19 =~ s/\n//;
	$rd20 =~ s/\n//;

	if ($rd11 != 1){
		$rd11p = "×".$rd11.$countcomment;
	} else {
		$rd11p = "";
	}
	$y1 = substr($rd5, 0, 4);
	$m1 = substr($rd5, 5, 2);
	if (substr($rd5, 8, 1) eq "0"){
		$d1 = substr($rd5, 9, 1);
	} else {
		$d1 = substr($rd5, 8, 2);
	}

#	if ($htp == 3 or $rd3 eq $hid){
#		if ($htp != 3){
#			$rd2p = "";
#		} else {
#			$rd2p = "<td width=12><br></td><td><font size=\"$asize\">$rd2様</font></td>";
#		}
#		if ($rd19 == 1 or $rd9 == 2){
#			$cnamec{$d1} .= "<tr>$rd2p<td><font size=\"$asize\">$rd6 $rd9$rd11p</font></td></tr>\n";
#		}
#		if ($rd19 == 0) {
#			$cnamek{$d1} .= "<tr>$rd2p<td><font size=\"$asize\">$rd6 $rd9$rd11p</font></td></tr>\n";
#		}
#	}
	if (($lp ne $rd4) or ($setdayf ne $rd5)){
		if ($setdayf ne ""){
			&checkmoon;
		}
		$lp = $rd4;
		$setdayf = $rd5;
		%timef = ();
		%timeid = ();
	}
	($sttimef,$stminf) = split(/:/,$rd6);
	($edtimef,$edminf) = split(/:/,$rd7);
	$lpf = 0;
	if ($ftp != 3){
		if ($rd3 eq $hid) {
			if ($rd8 > 1){
				$rd8 = 1;
			}
		} else {
			$lpf = 1;
		}
	}
	if ($lpf != 1){
		$lpf = (($edtimef * 60) + $edminf - ($sttimef * 60) - $stminf) / $seltime;
	}
	if ($htp != 3 and $hid ne $rd3){ $rd10 = -1;}
	if($edminf == 0){$edtimef--;}
	foreach $mckn ($sttimef..$edtimef){
		if($mckn == $sttimef) {$stmi = $stminf;} else {$stmi = 0;}
		if($mckn == $edtimef and $edminf != 0){$edmin = $edminf;} else {$edmin = 60;}
		for($tlp=$stmi; $tlp<$edmin; $tlp=$tlp+$seltime){
			$timefn = sprintf("%01d%01d%02d%02d", $rd4,$rd8,$mckn,$tlp);
			$timef{$timefn} = $lpf;
			$timeid{$timefn} = $rd3;
#$login .= "timefn=". $timefn . " timef=" . $timef{$timefn} ." timemode=" . $timestat{$timefn} . " timetext=" . $timetext{$timefn} . " sttimef=" . $sttimef . " stminf=" . $stminf . " edtimef=" . $edtimef ." edminf=" . $edminf,"\n";
		}
	}
}
&checkmoon;
	$mm = $mon +1;
	$yy = $year +1;
	$wdd = $wday1 + $endday;
	$wdd -= int($wdd / 7) * 7;
	foreach $daylp (0..6){
#$login .= "daylp=$daylp<br>";
		$login .= "<tr>";
		$cday = $in{'day'}+$daylp;
		if ($cday > $endday){
			$mon = $mm;
			if ($mon > 12){
				$year = $yy;
				$mon = 1;
			}
			$cday -= $endday;
			$wday1 = $wdd;
			if ($cday == 1){
				%dname = ();
				%dnamec = ();
				%dayw = ();
				%dayc = ();
				if ( -e "./check".$year.$mon.".pl" ) {
					require './check'.$year.$mon.'.pl';
					%dnamec = ();
				}else {
					require './holiday.pl';

					&holidayset;
				}
#$login .= "$year年$mon月$cday日";
				@lines = ();
				$stmon = sprintf("%04d/%02d", $year,$mon);
#$login .= "$fn_reserve";
				open(IN,"$fn_reserve") || &error("Open Error: $fn_reserve");
				while (<IN>) {
					local($rd0,$rd1,$rd2,$rd3,$rd4,$rd5,$rd6,$rd7,$rd8,$rd9,$rd10,$rd11,$rd12,$rd13,$rd14,$rd15,$rd16,$rd17,$rd18,$rd19,$rd20) = split(/,/);
					$rd5 = substr($rd5, 0, 7);
					if ($stmon eq $rd5) {
						push(@lines,$_);
					}
				}
				close(IN);
				@sorted = map{ $_->[0] }
					 sort{
						$a->[1] cmp $b->[1] 
							||
						$a->[2] cmp $b->[2] 
							||
						$a->[3] cmp $b->[3] 
							||
						$a->[4] cmp $b->[4] 
					}
					map { [ $_, (split ",",$_)[5,4,6,7] ] }
				        @lines;
				local($setdayf) = "";
				local($edtimef) = "";
				local(%timef);
				local(%timeid);
				foreach (@sorted){
#$login .= "$_<br>";
					($rd0,$rd1,$rd2,$rd3,$rd4,$rd5,$rd6,$rd7,$rd8,$rd9,$rd10,$rd11,$rd12,$rd13,$rd14,$rd15,$rd16,$rd17,$rd18,$rd19,$rd20) = split(/,/);
					($sttimef,$stminf) = split(/:/,$rd6);
#$login .= "\$sttimef=".$sttimef."\$stminf=".$sttimef."<br>";
					$rd19 =~ s/\n//;
					$rd20 =~ s/\n//;

					if ($rd11 != 1){
						$rd11p = "×".$rd11.$countcomment;
					} else {
						$rd11p = "";
					}
					$y1 = substr($rd5, 0, 4);
					$m1 = substr($rd5, 5, 2);
					if (substr($rd5, 8, 1) eq "0"){
						$d1 = substr($rd5, 9, 1);
					} else {
						$d1 = substr($rd5, 8, 2);
					}

					if (($lp ne $rd4) or ($setdayf ne $rd5)){
						if ($setdayf ne ""){
							&checkmoon;
						}
						$lp = $rd4;
						$setdayf = $rd5;
						%timef = ();
						%timeid = ();
					}
					($sttimef,$stminf) = split(/:/,$rd6);
					($edtimef,$edminf) = split(/:/,$rd7);
					$lpf = 0;
					if ($ftp != 3){
						if ($rd3 eq $hid) {
							if ($rd8 > 1){
								$rd8 = 1;
							}
						} else {
							$lpf = 1;
						}
					}
					if ($lpf != 1){
						$lpf = (($edtimef * 60) + $edminf - ($sttimef * 60) - $stminf) / $seltime;
					}
					if ($htp != 3 and $hid ne $rd3){ $rd10 = -1;}
					if($edminf == 0){$edtimef--;}
					foreach $mckn ($sttimef..$edtimef){
						if($mckn == $sttimef) {$stmi = $stminf;} else {$stmi = 0;}
						if($mckn == $edtimef and $edminf != 0){$edmin = $edminf;} else {$edmin = 60;}
						for($tlp=$stmi; $tlp<$edmin; $tlp=$tlp+$seltime){
							$timefn = sprintf("%01d%01d%02d%02d", $rd4,$rd8,$mckn,$tlp);
							$timef{$timefn} = $lpf;
							$timeid{$timefn} = $rd3;
#$login .= "timefn=". $timefn . " timef=" . $timef{$timefn} ." timemode=" . $timestat{$timefn} . " timetext=" . $timetext{$timefn} . " sttimef=" . $sttimef . " stminf=" . $stminf . " edtimef=" . $edtimef ." edminf=" . $edminf,"\n";
						}
					}
				}
				&checkmoon;
				$cday = 1;
			}
			
		}
#$login .= "$year年$mon月$cday日";
		if ($mday == $cday and $mon == $mon0){$cr = $colortoday;}
		elsif ($dayw{$cday} == 1){$cr = $colorsat;} 
		elsif ($dayw{$cday} >= 2){$cr = $colorsun;}
		else {$cr = $colorweek;}
		if ($mday == $cday and $mon == $mon0){$bgc = "<td bgcolor=\"$colorbgtoday\">\n";}
		if ($dayc{$cday} ne ""){
			$bgc = "<td bgcolor=\"$colorholiday\">\n";
		} else {
			$bgc = "<td bgcolor=\"$coloreveryday\">\n";
		}
		$dn = $wday1 + $cday - 1;
		$dn -= int($dn / 7) * 7;
		@wek = ("日","月","火","水","木","金","土");
		$login .= "$bgc<font color=\"$cr\">$cday</font><br></td>\n";
		$login .= "$bgc<font color=\"$cr\">$wek[$dn]</font><br></td>\n";
#=pod
		foreach $lp (0..$rnum){
			if ($reservedindication[$lp] eq 'checked'){
			if ($dayc{$cday} ne ""){
				$dname{$cday.$lp} = "checked";
				$dnamec{$cday.$lp} = '休日です。';
			}
			if ($dnamec{$cday.$lp} eq ""){
				if ($dname{$cday.$lp} ne ""){
				$dnamec{$cday.$lp} = $titexth;
				} else {
					if ($tistart{$cday.$lp} eq ""){
						$dnamec{$cday.$lp} = $titexta;
						$tistart{$cday.$lp} = $starttime;
						$tiend{$cday.$lp} = $endtime;
					} else {
						$dnamec{$cday.$lp} = &chrset($tistart{$cday.$lp},$tiend{$cday.$lp});
					}
				}
			}
			if ($dname{$cday.$lp} ne ""){
				$login .= "<td bgcolor=\"$colorholiday\">\n";
			} else {
				$login .= "<td bgcolor=\"$coloreveryday\">\n";
			}
			if ($rnum){
				$login .= "$reservedname[$lp]\n";
			}
			$login .= "$dnamec{$cday.$lp}<br>\n";
			}
		}
#=cut
		$login .= "</td>";

	}
	$login .= "</tr></table>";
#	$login .= "<div align=right>";
	$bday = $in{'day'} -7;
	$bmon = $in{'mon'};
	$byear = $in{'year'};
	if ($bday <= 0){
		$bmon--;
		if ($bmon == 0){
			$byear--;
			$bmon = 12;
		}
		$bendday = &readday($byear,$bmon);
		$bday += $bendday;
	}
#$login .= "$byear年$bmon月$bday日<br>";
#$login .= "$limityear年$limitmon月$limitday日<br>";
	if ($byear < $limityear or ($byear == $limityear and $bmon < $limitmon) or ($byear == $limityear and $bmon == $limitmon and $bday < $limitday)){
		$login .= "＜＜前週";
	} else {
		$login .= "<a href=\"$script?ret=reserved&year=$byear&mon=$bmon&day=$bday\">＜＜前週</a>";
	}
=pod
	if ($reservedlimitday == 0 or $reservedlimitday eq ""){ $tday = '本日';}
	elsif ($reservedlimitday == 1){ $tday = '明日';}
	elsif ($reservedlimitday == 2){ $tday = '明後日';}
	else { $tday = $reservedlimitday.'日後';}
	$login .= "　<a href=\"$script?ret=reserved&year=$limityear&mon=$limitmon&day=$limitday\">$tday</a>";
=cut
	$bday = $in{'day'} +7;
	$bmon = $in{'mon'};
	$byear = $in{'year'};
	if ($bday > $endday){
		$bmon++;
		if ($bmon > 12){
			$byear++;
			$bmon = $bmon - 12;
		}
		$bendday = &readday($byear,$bmon);
		$bday -= $endday;
	}
#	if ($byear <= $year5 and $bmon <= $mon5 and $bday <= $endday5 - 6){
	if ($byear > $year5 or ($byear == $year5 and  $bmon > $mon5)){
		$login .= "　次週＞＞　\n";
	} else {
		$login .= "　<a href=\"$script?ret=reserved&year=$byear&mon=$bmon&day=$bday\">次週＞＞</a>　\n";
	}
#	$login .= "</div>";
#$login .= "$byear年$bmon月$bday日";
	

#	exit;
}

#------------------------------------------

sub idset {

	@lines= ();
	open(IN,"$prvdir/iddata.txt") || &error("Open Error: $prvdir/iddata.txt",$script);
	while (<IN>) {
		($m_id,$id,$pw) = split(/<>/);
		if ($m_id ne $mobile_id) { push(@lines,$_); }
	}
	close(IN);

	unshift(@lines,"$mobile_id<>$in{'id'}<>$in{'pw'}<>\n");
	open(OUT,">$prvdir/iddata.txt") || &error("Write Error: $prvdir/iddata.txt");
	print OUT @lines;
	close(OUT);

}


#------------------------------------------
sub idcheck {

	local($f) = 0;
	open(IN,"$prvdir/iddata.txt") || &error("Open Error: $prvdir/iddata.txt",$script);
	while (<IN>) {
		($m_id,$mid,$mpw) = split(/<>/);
		if ($m_id eq $mobile_id) { $f++; $in{'id'} = $mid; $in{'pw'} = $mpw; }
	}
	close(IN);
	if (!$f) {
		$buf = "";
		$idflg = 0;
	}
}
__END__

