#!/usr/bin/perl

;# ショッピングバスケットver 1.22 <Freeware>for Japanese
;#
;# Copyright (C)1997-2001 CGI-RESCUE,All rights reserved


#初期設定

$reload = 'http://sv112.wadax-sv.jp/yamc.com/cgi-bin/kago/cargo.cgi';

$tyumon = 'https://sv112.wadax-sv.jp/yamc.com/cgi-bin/kago/tyumon.cgi';

$title = '山小酒店ショッピングバスケット';

$homepage = 'http://www.yamc.com/index.htm';

$body = '<body bgcolor=#ffffff>';

require 'http://sv112.wadax-sv.jp/yamc.com/cgi-bin/jcode-211.pl';

$taxrate = 0;

#--

read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); # 標準入力に限定
if ($ENV{'QUERY_STRING'} ne "") { &error("不正な入力を検知しました"); }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {

	($name, $value) = split(/=/, $pair);
	$name =~ tr/+/ /;
	$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

	# 記録するデータはsjisに統一
	&jcode'convert(*name,'sjis');
	&jcode'convert(*value,'sjis');

	$value =~ s/</&lt;/g;
	$value =~ s/>/&gt;/g;
	$value =~ s/://g;
	$value =~ s/,//g;

	$FORM{$name} = $value;
}

# クッキー読込

$cookies = $ENV{'HTTP_COOKIE'};

@cookie_pairs = split(/;/,$cookies);
foreach $cookie_pair (@cookie_pairs) {

	($name, $value) = split(/=/, $cookie_pair);
	$name =~ s/ //g;
	$DUMMY{$name} = $value;
}

$goods_next = 0;
foreach $goods_num (1 .. $#cookie_pairs + 1) {

	$cookie_name = 'CARGO_'.$goods_num;
	if ($DUMMY{$cookie_name} =~ /^goods:/ || $DUMMY{$cookie_name} =~ /^removed/) { $GOODS[$goods_num] = $DUMMY{$cookie_name}; $goods_next = $goods_num + 1; }
}

# 分岐

if ($FORM{'action'} eq 'regist') { &regist; }
elsif ($FORM{'action'} eq 'remove') { &remove; }
else { &html; }

sub html { # 商品一覧

	print "Content-type: text/html; charset=Shift_JIS\n\n";
	print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
        print "<html><head><title>$title</title>\n";
	print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=x-sjis\">\n";
	print "<meta name=\"robots\" content=\"noindex,nofollow\">\n";

	print <<"EOF";
<SCRIPT language="JavaScript">
<!--
SubmitCheck=false;
function Submit() {
	if(SubmitCheck==false){ SubmitCheck=true; document.Order.submit(); }
	else{ bottonAlert(); }
}
function bottonAlert() {
	Check = navigator.userAgent.indexOf(";");
	if(Check != -1 && navigator.userAgent.substring(Check+2,Check+10)=="MSIE 3.0") { alert("ボタンが２度押されましたので,再度実行して下さい"); }
	else { alert("送信中です,お待ち下さい"); }
}
function Kakunin() {

	if(SubmitCheck==false){ Submit(); }
	else { bottonAlert(); }
}
//-->
</SCRIPT>
</head>
EOF
	print "$body\n";
	print "<center>\n";
	print "<h2>$title<hr></h2>\n";

	$zeibetsu_goukei = 0;

	foreach $j (1 .. $#GOODS + 1) {

		if ($GOODS[$j] =~ /^removed/i || $GOODS[$j] eq '') { next; }
		if (!$sonzai) { 

			print "<b>御注文商品一覧</b> ＞ 入力画面 ＞ 最終確認 ＞ 送信完了<br><br>\n";
			print "<h3>現在買い物かごには、次の商品が入っています</h3>\n";
			print "<table border=1>\n";
			print "<tr><th bgcolor=\"#8080ff\">品番、商品名</th><th></th>\n";
			print "<th bgcolor=\"#8080ff\">容量</th><th></th>\n";
			print "<th bgcolor=\"#8080ff\">単価</th><th></th>\n";
			print "<th bgcolor=\"#8080ff\">数量</th><th></th>\n";
			print "<th bgcolor=\"#8080ff\">小計</th><th></th>\n";
			print "<th bgcolor=\"#8080ff\">削除</th></tr>\n";
			$sonzai = 1;
		}

		@pairs = split(/,/,$GOODS[$j]);
		foreach $pair (@pairs) {

			($name, $value) = split(/:/,$pair);
			$COOKIE{$name} = $value;
		}

		$unit = $COOKIE{'unit'};
		1 while $unit =~ s/(.*\d)(\d\d\d)/$1,$2/g;
		$shoukei = $shoukei2 = $COOKIE{'unit'} * $COOKIE{'amount'};
		1 while $shoukei2 =~ s/(.*\d)(\d\d\d)/$1,$2/g;
		$zeibetsu_goukei = $zeibetsu_goukei2 = $zeibetsu_goukei + $shoukei;

if ($shoukei2 eq '0') { &error('申し訳ございません','ご利用の環境に買い物カゴ対応しておりません'); }

		print "<tr>\n";
		print "<th>$COOKIE{'goods'} $COOKIE{'housou'}</th><th></th>\n";
		print "<th>$COOKIE{'rem'}</th><th></th>\n";
		print "<th>$COOKIE{'unit'}円</th><th></th>\n";
		print "<th>$COOKIE{'amount'}</th><th></th>\n";
		print "<th>$shoukei2円</th>\n";

		print "<th><form method=POST action=\"cargo.cgi\">\n";
		print "<input type=hidden name=\"action\" value=\"remove\">\n";
		print "<input type=hidden name=\"goods_num\" value=\"$j\"></th>\n";

		print "<th><input type=submit value=\"削除\"></th></tr></form>\n";

		push(@MAIL,"$COOKIE{'goods'}:$COOKIE{'housou'}:$COOKIE{'amount'}:$COOKIE{'rem'}:$COOKIE{'unit'}:$shoukei2");
	}

	if (!$sonzai) {

		print "<h3>現在買い物かごには何も入っていません.</h3>\n";

	}
	else {

		1 while $zeibetsu_goukei2 =~ s/(.*\d)(\d\d\d)/$1,$2/g;

		if ($taxrate != 0) {

			$tax = int($zeibetsu_goukei * ($taxrate / 100));
			$sougoukei = $zeibetsu_goukei + $tax;
			1 while $sougoukei =~ s/(.*\d)(\d\d\d)/$1,$2/g;
			$zei = '税別';
		}
		else {
			$sougoukei = $zeibetsu_goukei + $tax;
			1 while $sougoukei =~ s/(.*\d)(\d\d\d)/$1,$2/g;
			$zei = '';
		}

		print "<tr><th bgcolor=\"#ffaaaa\" colspan=7>$zei商品合計</th><th></th><th bgcolor=\"#ffaaaa\">$zeibetsu_goukei2円</th><th></th></tr>\n";
		if ($taxrate != 0) {

			print "<tr><th bgcolor=\"#ffaaaa\" colspan=7>消費税$taxrate\%($tax円)込み商品合計</th><th></th><th bgcolor=\"#ffaaaa\">$sougoukei円</th><th></th></tr>\n";
		}

		print "</table><br>\n";

		print "<h3><font color=\"#ff0000\">◆上記の商品合計に、送料等が加算されます◆</font></h3>\n";
		print "<table>\n";
		print "<tr><th align=\"left\">送料、お支払い方法等については、下記より注意事項のページをご覧下さい<br>\n";
		print "<a href=\"http://www.yamc.com/chuipage1.htm\" target=\"_blank\">特商法による表\示（ご注文の前に必ずお読み下さい）</a><br><br>\n";
		print "お買い物を続ける場合は<a href=\"http://www.yamc.com/index.htm\">トップページへ</a>移動して下さい<br>\n";
		print "※かごへの出し入れは延べ２０回までになります</th></tr>\n";
		print "</table><br>\n";

		print "<form method=POST action=\"$tyumon\" name=\"Order\">\n";

		foreach $mail (@MAIL) {

			($A,$B,$C,$D,$E,$F) = split(/:/,$mail,6);
			print "<input type=hidden name=\"注文\" value=\"$A $B($D) $E円 x $C = $F円\">\n";
		}

		if ($taxrate != 0) { print "<input type=hidden name=\"消費税\" value=\"$tax円\">\n"; }
		print "<input type=hidden name=\"商品合計\" value=\"$sougoukei円\">\n";

		print "<table border=1>\n";
		print "<tr><th align=\"left\">ご注文がお決まりになりましたら、特商法による表\示をお読みのうえ、<br>\n";
		print "御承諾後に入力画面へお進み下さい。<br>\n";
		print "入力画面よりSSL対応ページとなります。<br>入力されたデータは暗号化されて送信されるため、<br>\n";
		print "お客様の個人情報を保護いたします。<br><br>\n";
		print "<font color=\"#ff0000\">未成年者の方への酒類の販売はお断りしております<br>\n";
		print "酒類を選択されている場合は２０歳以上の方のみ入力画面へお進み下さい。</font></th></tr>\n";
		print "</table><br>\n";

		print "<input type=hidden name=\"c_copy\" value=\"on\">\n";

		print <<"EOF";
<SCRIPT>
<!--
document.write("<input type=button value='→ 入力画面へ' onClick='Kakunin()'></form><p><br>\\n");
// -->
</SCRIPT>
<NOSCRIPT>
<b>ご利用には,JavaScriptを有効にしてください</b><p>
○ Internet Explorer 5.0 の例<br> 
[ツール]→[インターネットオプション]→[セキュリティ] でゾーンを選択後 [レベルのカスタマイズ]→[スクリプト]→[アクティブスクリプト] を[有効]に設定.<br>
○ Netscape Navigator 4.73 の例<br> 
[編集]→[設定]→[詳細]→[JavaScript を有効にする]<br>
○ その他のブラウザは発売元にお問い合わせください
</NOSCRIPT>
EOF
	}

	print "<h3><a href=\"$homepage\">トップページへ</a></h3>\n";
	print "</center><p><div align=right><hr size=1><br><br>\n";

	print "<font size=-1><a href=\"http://www.rescue.ne.jp/\" target=\"_top\">MiniCARGO</a></font></div><p></body></html>\n";
	exit;
}

sub regist {

	if ($FORM{'amount'} =~ /\D/ || $FORM{'amount'} == 0) { &error('入力エラー','数量を英数半角で入力して下さい'); }

	$sales = "goods:$FORM{'goods'},housou:$FORM{'housou'},amount:$FORM{'amount'},unit:$FORM{'unit'},rem:$FORM{'rem'},";
	push(@REG,$sales);

	if ($goods_next == 0) { $goods_next = 1; }
	if ($goods_next == 20) { &error('バスケット満杯','メモリがありません.<br>注文内容を削除しても復活はできません.<br>一旦ブラウザを閉じればメモリ復活することができます.'); }

	foreach $reg (@REG) {

		$cookie_name = "CARGO_$goods_next";

		$GOODS[$goods_next] = $reg;
		print "Set-Cookie: $cookie_name=$GOODS[$goods_next];\n";
		$goods_next++;
	}

	print "Location: $reload" . '?' . "\n\n";
	exit;
}

sub remove {

	if ($FORM{'goods_num'} eq '') { &error('処理エラー','削除処理に失敗しました.<br>ブラウザを閉じれば選択したすべての商品を空にできます.'); }
	$cookie_name = "CARGO_$FORM{'goods_num'}";
	$GOODS[$FORM{'goods_num'}] = "removed";
	print "Set-Cookie: $cookie_name=$GOODS[$FORM{'goods_num'}];\n";
	print "Location: $reload" . '?' . "\n\n";
	exit;
}

sub error {

	print "Content-type: text/html; charset=Shift_JIS\n\n";
	print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
        print "<html><head><title>$title</title>\n";
	print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=x-sjis\"></head>\n";
        print "$body\n";
        print "<h1>$_[0]</h1>\n";
	print "<h3>$_[1]</h3>\n";
	print "ブラウザの[戻る]ボタンを押して前の画面に移動して下さい\n";
        print "</body></html>\n";
        exit;
}
