#!/usr/local/bin/perl

use CGI::Carp qw(fatalsToBrowser);
use CGI;
use DBI;
use MIME::Base64;
use Jcode;

require 'addin.pl';

$q = new CGI;

$name1=$q->param('name1');
$name2=$q->param('name2');
$name3=$q->param('name3');
$name4=$q->param('name4');
$houhou=$q->param('houhou');
$mail=$q->param('mail');
$zip=$q->param('zip');
$addr=$q->param('addr');
$tel1=$q->param('tel1');
$zip2=$q->param('zip2');
$addr2=$q->param('addr2');
$tel2=$q->param('tel2');
$cookiecheck=$q->param('cookiecheck');
$other=$q->param('other');
$submit=$q->param('submit');
$end=$q->param('end');

$breakpoint;
#メインルーチン

$title="精算ページ";
&read_cookie($cookiename);
&check;
unless($breakpoint==1){
if($cookiecheck==1){
 if( $name1 ne ""){
$COOKIE{'name1'}=$name1;
$COOKIE{'name2'}=$name2;
$COOKIE{'name3'}=$name3;
$COOKIE{'name4'}=$name4;
$COOKIE{'houhou'}=$houhou;
$COOKIE{'mail'}=$mail;
$COOKIE{'zip'}=$zip;
$COOKIE{'addr'}=$addr;
$COOKIE{'tel1'}=$tel1;
$COOKIE{'zip2'}=$zip2;
$COOKIE{'addr2'}=$addr2;
$COOKIE{'tel2'}=$tel2;
$COOKIE{'cookiecheck'}=$cookiecheck;
  }
  &set_cookie2($personcookie,@personcookie);
}
&read_cookie($personcookie);
if($submit ne ""){&header;&personal2;&listforpay}
elsif($end ne ""){&date;&personal3}
else{&header;&personal1;&listforpay}
&footer;
}
sub check{
  my $y1;
  my $y2;
  my $tt;
  my $gnum1;
  my $cnum1;
  my $name;
  @gid=split(/\Q^.^\E/,"$COOKIE{'gid'}");
  @title=split(/\Q^.^\E/,"$COOKIE{'title'}");
  @price=split(/\Q^.^\E/,"$COOKIE{'price'}");
  @kazu=split(/\Q^.^\E/,"$COOKIE{'kazu'}");
  @yobi11=split(/\Q^.^\E/,"$COOKIE{'yobi11'}");
  @yobi21=split(/\Q^.^\E/,"$COOKIE{'yobi21'}");
  @yobi1=split(/\Q^.^\E/,"$COOKIE{'yobi1'}");
  @yobi2=split(/\Q^.^\E/,"$COOKIE{'yobi2'}");
  open(FILE,"$file");
  while(<FILE>){
    chomp;
    @tmp1=split(/\Q,\E/);
    foreach $gidtmp(@gid){
      if($tmp1[0] eq $gidtmp){
        if($tmp1[16]<$kazu[$cnum1]){$ischeck[$cnum1]=1;$is[$cnum1]=$tmp1[16];$breakpoint=1}
        @tmpkazu=split(/\Q:\E/,$tmp1[5]);
        $tmpkazu=@tmpkazu;
        if($tmpkazu>0){
          if($yobi1[$cnum1] ne "y"){
            @tmpyobi1=split(/\Q:\E/,$tmp1[3]);
          $tt=0;
            foreach $ty1(@tmpyobi1){
              if($yobi1[$cnum1] eq $ty1){
                $y1=$tt;
                last;
              }
              $tt++;
            }
          }
          $tt=0;
          if($yobi2[$cnum1] ne "y"){
            @tmpyobi2=split(/\Q:\E/,$tmp1[4]);
            $y2num=@tmpyobi2;
            $y2num=$y2num-1;
          $tt1=0;
            foreach $ty2(@tmpyobi2){
              if($yobi2[$cnum1] eq $ty2){
                $y2=$tt1;
                last;
              }
              $tt1++;
            }
          }
          if($yobi1[$cnum1] ne ""){
            if($yobi2[$cnum1] ne ""){$tmpkazunum=($y1-1)*$y2num+$y2-1}
            else{$tmpkazunum=$y1-1}
          }
          else{
            if($yobi2[$cnum1] ne ""){$tmpkazunum=$y2-1}
#            else{$tmpkazunum=0}
          }
          if($tmpkazu[$tmpkazunum]<$kazu[$cnum1]){$ischeck[$cnum1]=2;$is[$cnum1]=$tmpkazu[$tmpkazunum];$breakpoint=1}
        }
      }
      $cnum1++;
    }
    $cnum1=0;
  }
  if($breakpoint==1){
    print <<EP;
Content-type:text/html charset:UTF-8\n\n
<html><head><title>エラー</title></head><body><font color=red>
EP
    foreach(@gid){
      if($ischeck[$gnum1]==1){print "$title[$gnum1]は、お客様の買い物の途中で他のお客様によって買われてしまいました。現在数は$is[$gnum1]です。<br>"}
      if($ischeck[$gnum1]==2){
        if($yobi1[$gnum1] eq "y"){$name=$yobi2[$gnum1]}
        else{
          if($yobi2[$gnum1] eq "y"){$name=$yobi1[$gnum1]}
          else{$name=$yobi1[$gnum1].",".$yobi2[$gnum1]}
        }
        print "$title[$gnum1]($name)は、お客様の買い物の途中で他のお客様によって買われてしまいました。$title[$gnum1]($name)の現在数は$is[$gnum1]です。<br>";
      }
      $gnum1++;
    }
    print "<br><b>お手数ですが、ブラウザの戻るのボタンで前のページに戻って購入数を減らしてください。</b></body></html>";
  }
}
sub personal1{
  if($COOKIE{'name1'} ne ""){
    $name1 = $COOKIE{'name1'};
    $name2 = $COOKIE{'name2'};
    $name3 = $COOKIE{'name3'};
    $name4 = $COOKIE{'name4'};
    $houhou = $COOKIE{'houhou'};
    $zip = $COOKIE{'zip'};
    $addr = $COOKIE{'addr'};
    $tel1 = $COOKIE{'tel1'};
    $zip2 = $COOKIE{'zip2'};
    $addr2 = $COOKIE{'addr2'};
    $tel2 = $COOKIE{'tel2'};
    $mail = $COOKIE{'mail'};
    $cookiecheck=$COOKIE{'cookiecheck'};
  }
  print <<EP;
<font style="font-size:25px;color=$fcolor1">お客様・お届け先の記入</font><br>
お客様とお届け先が同じ場合は、お届け先は空白のままにしてください。<br>
<form method=post id="f1" name="f1">
<table id="paytbl1">
EP
    print <<EP;
<tr><th class="th_pay1">お名前</th><th class="th_pay2"><input type=text name="name1" id="auto_kana_name_1" value="$name1" class="validate[required]"></th><th width=150></th></tr>
<tr><th class="th_pay1">ふりがな</th><th class="th_pay2"><nobr><input type=text name="name2" id="auto_kana_kana_1" value="$name2" ></th><th width=150></th></tr>
EP

  if($houhou eq "代引き"){
  print <<EP;
<tr><th class="th_pay1">お支払い方法</th><th class="th_pay2">
<select name="houhou" class="validate[required]">
<option value="代引き" selected>代引き</option>
<option value="ゆうちょ振込・振替（ゆうちょ銀行）">ゆうちょ振込・振替（ゆうちょ銀行）</option>
<option value="銀行振込（ジャパンネット銀行）">銀行振込（ジャパンネット銀行）</option>
</select><font color=red size="-1">
<br>送料はメールにてお知らせいたします。<br>
また、振込手数料および代金引換手数料はお客様負担となります。
）</font>
</th></tr>
EP
  }
  elsif($houhou eq "銀行振込（ジャパンネット銀行）"){
  print <<EP;
<tr><th  class="th_pay1">お支払い方法</th><th class="th_pay2">
<select name="houhou" class="validate[required]">
<option value="代引き">代引き</option>
<option value="ゆうちょ振込・振替（ゆうちょ銀行）">ゆうちょ振込・振替（ゆうちょ銀行）</option>
<option value="銀行振込（ジャパンネット銀行）" selected>銀行振込（ジャパンネット銀行）</option>
</select><font color=red size="-1">
<br>送料はメールにてお知らせいたします。<br>
また、振込手数料および代金引換手数料はお客様負担となります。
）</font>
</th></tr>
EP
  }
  elsif($houhou eq "ゆうちょ振込・振替（ゆうちょ銀行）"){
  print <<EP;
<tr><th  class="th_pay1">お支払い方法</th><th class="th_pay2">
<select name="houhou" class="validate[required]">
<option value="代引き">代引き</option>
<option value="ゆうちょ振込・振替（ゆうちょ銀行）" selected>ゆうちょ振込・振替（ゆうちょ銀行）</option>
<option value="銀行振込（ジャパンネット銀行）">銀行振込（ジャパンネット銀行）</option>
</select><font color=red size="-1">
<br>送料はメールにてお知らせいたします。<br>
また、振込手数料および代金引換手数料はお客様負担となります。
）</font>
</th></tr>
EP
  }
  else{
  print <<EP;
<tr><th class="th_pay1">お支払い方法</th><th class="th_pay2">
<select name="houhou" class="validate[required]">
<option value="代引き">代引き</option>
<option value="ゆうちょ振込・振替（ゆうちょ銀行）">ゆうちょ振込・振替（ゆうちょ銀行）</option>
<option value="銀行振込（ジャパンネット銀行）">銀行振込（ジャパンネット銀行）</option>
</select><font color=red size="-1">
<br>送料はメールにてお知らせいたします。<br>
また、振込手数料および代金引換手数料はお客様負担となります。
）</font>
</th></tr>
EP
  }

    print <<EP;
<tr><th class="th_pay1">メールアドレス</th><th class="th_pay2"><input type=text name="mail" value="$mail" class="validate[required]"></th></tr>
<tr><th class="th_pay1">郵便番号</th><th class="th_pay2"><input type=text name="zip" id="zip" value="$zip" class="validate[required]"></th></tr>
<tr><th class="th_pay1">ご住所</th><th class="th_pay2"><input type=text name="addr" id="addr" value="$addr" size=50 class="validate[required]"></th></tr>
<tr><th class="th_pay1">電話番号</th><th class="th_pay2"><input type=text name="tel1" value="$tel1"></th></tr>
<tr><th class="th_pay1">お届け先お名前</th><th class="th_pay2"><input type=text name="name3" value="$name3" id="auto_kana_name_2"></th></tr>
<tr><th class="th_pay1">ふりがな</th><th class="th_pay2"><input type=text name="name4" value="$name4" id="auto_kana_kana_2"></th></tr>
<tr><th class="th_pay1">お届け先郵便番号</th><th class="th_pay2"><input type=text value="$zip2" name="zip2" id='zip2'></th></tr>
<tr><th class="th_pay1">お届け先ご住所</th><th class="th_pay2"><input type=text name="addr2" value="$addr2" size=50 id='addr2'></th></tr>
<tr><th class="th_pay1">お届け先電話番号</th><th class="th_pay2"><input type=text name="tel2" value="$tel2"></th></tr>
<tr><th colspan=2 align=center>通信欄（その他の連絡にお使いください）</th></tr>
<tr><th colspan=2 align=left><textarea name="other" cols=80 rows=5></textarea></th>
<tr><th colspan=2 class="th_pay3">ご連絡には、電話、メールのどちらがよろしいでしょうか？<br>
<input type=radio name="access" value="0"  class="validate[required]">メール希望　<input type=radio name="access" value="1" class="validate[required]">電話希望　<input type=radio name="access" value="2" class="validate[required]">どちらでもよい
</th></tr>
EP

  if($cookiecheck==1){
    print <<EP;
<tr><th class="th_pay1">入力データを記憶する<input type=checkbox name="cookiecheck" value=1 checked></th>
EP
  }
  else{
    print <<EP;
<tr><th class="th_pay1">入力データを記憶する<input type=checkbox name="cookiecheck" value=1></th>
EP
  }

  print <<EP;
<th class="th_pay3"><input type=submit value="次へ" name="submit" id="paysubmit" ></th></tr>
</table>
</form>
EP
}

sub personal1old{
  if($COOKIE{'name1'} ne ""){
    $name1 = $COOKIE{'name1'};
    $name2 = $COOKIE{'name2'};
    $name3 = $COOKIE{'name3'};
    $name4 = $COOKIE{'name4'};
    $houhou = $COOKIE{'houhou'};
    $zip = $COOKIE{'zip'};
    $addr = $COOKIE{'addr'};
    $tel1 = $COOKIE{'tel1'};
    $zip2 = $COOKIE{'zip2'};
    $addr2 = $COOKIE{'addr2'};
    $tel2 = $COOKIE{'tel2'};
    $mail = $COOKIE{'mail'};
    $cookiecheck=$COOKIE{'cookiecheck'};
  }
  print <<EP;
<font style="font-size:25px;color=$fcolor1">お客様・お届け先の記入</font><br>
お客様とお届け先が同じ場合は、お届け先は空白のままにしてください。<br>
<form method=post id="f1" name="f1">
<table width=800 cellpadding=10>
EP
  if($name1 eq ""){
    print <<EP;
<tr><th width=250 align=left>お名前</th><th width=400 align=left><nobr>氏<input type=text name="name1" id="auto_kana_name_1">名<input type=text name="name2" id="auto_kana_name_2"></nobr></th><th width=150></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th width=250 align=left>お名前</th><th width=400 align=left><nobr>氏<input type=text name="name1" value="$name1">名<input type=text name="name2" value="$name2"></nobr></th><th width=150></th></tr>
EP
  }
  if($name3 eq ""){
    print <<EP;
<tr><th width=250 align=left>ふりがな</th><th width=400 align=left><nobr>氏<input type=text name="name3" id="auto_kana_kana_1">名<input type=text name="name4"  id="auto_kana_kana_2"></nobr></th><th width=150></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th width=250 align=left>ふりがな</th><th width=400 align=left><nobr>氏<input type=text name="name3" value="$name3">名<input type=text name="name4" value="$name4"></nobr></th><th width=150></th></tr>
EP
  }

  if($houhou eq "代引き"){
  print <<EP;
<tr><th width=250 align=left>お支払い方法</th><th width=400 align=left>
<select name="houhou">
<option value="代引き" selected>代引き</option>
<option value="ゆうちょ振込・振替（ゆうちょ銀行）">ゆうちょ振込・振替（ゆうちょ銀行）</option>
<option value="銀行振込（ジャパンネット銀行）">銀行振込（ジャパンネット銀行）</option>
</select><font color=red size="-1">
<br>送料はメールにてお知らせいたします。<br>
また、振込手数料および代金引換手数料はお客様負担となります。
）</font>
</th></tr>
EP
  }
  elsif($houhou eq "銀行振込（ジャパンネット銀行）"){
  print <<EP;
<tr><th width=250 align=left>お支払い方法</th><th width=400 align=left>
<select name="houhou">
<option value="代引き">代引き</option>
<option value="ゆうちょ振込・振替（ゆうちょ銀行）">ゆうちょ振込・振替（ゆうちょ銀行）</option>
<option value="銀行振込（ジャパンネット銀行）" selected>銀行振込（ジャパンネット銀行）</option>
</select><font color=red size="-1">
<br>送料はメールにてお知らせいたします。<br>
また、振込手数料および代金引換手数料はお客様負担となります。
）</font>
</th></tr>
EP
  }
  elsif($houhou eq "ゆうちょ振込・振替（ゆうちょ銀行）"){
  print <<EP;
<tr><th width=250 align=left>お支払い方法</th><th width=400 align=left>
<select name="houhou">
<option value="代引き">代引き</option>
<option value="ゆうちょ振込・振替（ゆうちょ銀行）" selected>ゆうちょ振込・振替（ゆうちょ銀行）</option>
<option value="銀行振込（ジャパンネット銀行）">銀行振込（ジャパンネット銀行）</option>
</select><font color=red size="-1">
<br>送料はメールにてお知らせいたします。<br>
また、振込手数料および代金引換手数料はお客様負担となります。
）</font>
</th></tr>
EP
  }
  else{
  print <<EP;
<tr><th width=250 align=left>お支払い方法</th><th width=400 align=left>
<select name="houhou">
<option value="代引き">代引き</option>
<option value="ゆうちょ振込・振替（ゆうちょ銀行）">ゆうちょ振込・振替（ゆうちょ銀行）</option>
<option value="銀行振込（ジャパンネット銀行）">銀行振込（ジャパンネット銀行）</option>
</select><font color=red size="-1">
<br>送料はメールにてお知らせいたします。<br>
また、振込手数料および代金引換手数料はお客様負担となります。
）</font>
</th></tr>
EP
  }

  if(mail eq ""){
    print <<EP;
<tr><th align=left>メールアドレス</th><th align=left><input type=text name="mail" class="validate[required]"></th><th align=left></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th align=left>メールアドレス</th><th align=left><input type=text value="$mail" name="mail" class="validate[required]"></th><th align=left></th></tr>
EP
  }
  if($zip eq ""){
    print <<EP;
<tr><th align=left>郵便番号</th><th align=left><input type=text name="zip" id="zip" value="" class="validate[required]"></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th align=left>郵便番号</th><th align=left><input type=text value="$zip" name="zip" id="zip" class="validate[required]"></th></tr>
EP
  }
  if($addr eq ""){
    print <<EP;
<tr><th align=left>ご住所</th><th align=left><input type=text name="addr" id="addr" size=50 value="" class="validate[required]"></th><th align=left></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th align=left>ご住所</th><th align=left><input type=text name="addr" id="addr" value="$addr" class="validate[required]" size=50></th><th align=left></th></tr>
EP
  }
  if($tel1 eq ""){
    print <<EP;
<tr><th align=left>電話番号</th><th align=left><input type=text name="tel1"></th><th align=left></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th align=left>電話番号</th><th align=left><input type=text name="tel1" value="$tel1"></th><th align=left></th></tr>
EP
  }
  if($name5 eq ""){
    print <<EP;
<tr><th width=250 align=left>お届け先お名前</th><th width=400 align=left><nobr>氏<input type=text name="name5" id="auto_kana_name_3">名<input type=text name="name6" id="auto_kana_name_4"></nobr></th><th width=150></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th width=250 align=left>お届け先お名前</th><th width=400 align=left><nobr>氏<input type=text name="name5" value="$name5">名<input type=text name="name6" value="$name6"></nobr></th><th width=150></th></tr>
EP
  }
  if($name7 eq ""){
    print <<EP;
<tr><th width=250 align=left>ふりがな</th><th width=400 align=left><nobr>氏<input type=text name="name7" id="auto_kana_kana_3">名<input type=text name="name8" id="auto_kana_kana_4"></nobr></th><th width=150></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th width=250 align=left>ふりがな</th><th width=400 align=left><nobr>氏<input type=text name="name7" value="$name7">名<input type=text name="name8" value="$name8"></nobr></th><th width=150></th></tr>
EP
  }


  if($zip2 eq ""){
    print <<EP;
<tr><th align=left>お届け先郵便番号</th><th align=left><input type=text name="zip2" id='zip2'></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th align=left>お届け先郵便番号</th><th align=left><input type=text value="$zip2" name="zip2" id='zip2'></th></tr>
EP
  }
  if($addr2 eq ""){
    print <<EP;
<tr><th align=left>お届け先ご住所</th><th align=left><input type=text name="addr2" id ='addr2' size=50></th><th align=left></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th align=left>お届け先ご住所</th><th align=left><input type=text name="addr2" value="$addr2" size=50 id='addr2'></th><th align=left></th></tr>
EP
  }
  if($tel2 eq ""){
    print <<EP;
<tr><th align=left>お届け先電話番号</th><th align=left><input type=text name="tel2"></th><th align=left></th></tr>
EP
  }
  else{
    print <<EP;
<tr><th align=left>お届け先電話番号</th><th align=left><input type=text name="tel2" value="$tel2"></th><th align=left></th></tr>
EP
  }
  print <<EP;
<tr><th align=center colspan=2>ご連絡には、電話、メールのどちらがよろしいでしょうか？<br>
<input type=radio name="access" value="0">メール希望　<input type=radio name="access" value="1">電話希望　<input type=radio name="access" value="2">どちらでもよい
</th></tr>
<tr><th colspan=2 align=center>通信欄（その他の連絡にお使いください）</th></tr>
<tr><th colspan=2 align=left><textarea name="other" cols=80 rows=5></textarea></th>
EP
  if($cookiecheck==1){
    print <<EP;
<tr><th align=left>入力データを記憶する<input type=checkbox name="cookiecheck" value=1 checked></th>
EP
  }
  else{
    print <<EP;
<tr><th align=left>入力データを記憶する<input type=checkbox name="cookiecheck" value=1></th>
EP
  }
  print <<EP;
<th align=left><input type=submit value="次へ" name="submit" style="background-color:#bbbbff;color:navy;font-size:20px"></th></tr></table>
</form>
EP
}


sub personal2{

  if($name3 eq ""){$name3=$name1}
  if($name4 eq ""){$name4=$name2}
  if($addr2 eq ""){$addr2=$addr}
  if($zip2 eq ""){$zip2 = $zip}
  if($tel2 eq ""){$tel2 =$tel1}
  
  
  if($zip2 eq ""){$zipcode2=$zipcode1}
  if($address2 eq ""){$address2=$address1}
  if($tel2 eq ""){$tel2=$tel1}
  $zipcode1=~s/\Q－\E/\-/g;
  $zip2=~s/\Q－\E/\-/g;
  $tel1=~s/\Q－\E/\-/g;
  $tel2=~s/\Q－\E/\-/g;
  $zip=~s/０/0/g;
  $zip=~s/１/1/g;
  $zip=~s/２/2/g;
  $zip=~s/３/3/g;
  $zip=~s/４/4/g;
  $zip=~s/５/5/g;
  $zip=~s/６/6/g;
  $zip=~s/７/7/g;
  $zip=~s/８/8/g;
  $zip=~s/９/9/g;
  $zip2=~s/０/0/g;
  $zip2=~s/１/1/g;
  $zip2=~s/２/2/g;
  $zip2=~s/３/3/g;
  $zip2=~s/４/4/g;
  $zip2=~s/５/5/g;
  $zip2=~s/６/6/g;
  $zip2=~s/７/7/g;
  $zip2=~s/８/8/g;
  $zip2=~s/９/9/g;
  $tel1=~s/０/0/g;
  $tel1=~s/１/1/g;
  $tel1=~s/２/2/g;
  $tel1=~s/３/3/g;
  $tel1=~s/４/4/g;
  $tel1=~s/５/5/g;
  $tel1=~s/６/6/g;
  $tel1=~s/７/7/g;
  $tel1=~s/８/8/g;
  $tel1=~s/９/9/g;
  $tel2=~s/０/0/g;
  $tel2=~s/１/1/g;
  $tel2=~s/２/2/g;
  $tel2=~s/３/3/g;
  $tel2=~s/４/4/g;
  $tel2=~s/５/5/g;
  $tel2=~s/６/6/g;
  $tel2=~s/７/7/g;
  $tel2=~s/８/8/g;
  $tel2=~s/９/9/g;
  $other=~s/\r\n/\n/g;
  $other=~s/\r/\n/g;
  $other=~s/\Q,\E/、/g;
  $other=~s/\Q.\E/。/g;
  $other=~s/\n/<br>/g;#改行コード
  print <<EP;
<table width=800 style="font-size:$fsize2" cellpadding=10>
<tr><th colspan=2 align=left>誤記や記入漏れがないかチェックしてしてください。内容が正しければ、送信を押してください。</th></tr>
<tr><th colspan=2>お客様・お届け先情報</th></tr>
<tr><th align=left width=200>お名前</th><th align=left width=650>$name1</th></tr>
<tr><th align=left width=200>ふりがな</th><th align=left width=650>$name2</th></tr>
<tr><th align=left>お支払方法</th><th align=left>$houhou</th></tr>
<tr><th align=left>メールアドレス</th><th align=left>$mail</th></tr>
<tr><th align=left>郵便番号</th><th align=left>$zip</th></tr>
<tr><th align=left>ご住所</th><th align=left>$addr</th></tr>
<tr><th align=left>電話番号</th><th align=left>$tel1</th></tr>
<tr><th align=left width=250>お届け先お名前</th><th align=left>$name3</th></tr>
<tr><th align=left width=250>ふりがな</th><th align=left>$name4</th></tr>
<tr><th align=left>お届け先郵便番号</th><th align=left>$zip2</th></tr>
<tr><th align=left>お届け先ご住所</th><th align=left>$addr2</th></tr>
<tr><th align=left>お届け先電話番号</th><th align=left>$tel2</th></tr>
<tr><th align=left>ご連絡</th><th align=left><font color=red><b><u>$access[access]</font></u></b></th></tr>
<tr><th align=left>通信欄</th><th align=left>$other</th></tr>
</table>
<form method=post>
<input type=hidden name="name1" value="$name1">
<input type=hidden name="name2" value="$name2">
<input type=hidden name="name3" value="$name3">
<input type=hidden name="name4" value="$name4">
<input type=hidden name="houhou" value="$houhou">
<input type=hidden name="mail" value="$mail">
<input type=hidden name="addr" value="$addr">
<input type=hidden name="tel1" value="$tel1">
<input type=hidden name="zip" value="$zip">
<input type=hidden name="address2" value="$addr2">
<input type=hidden name="tel2" value="$tel2">
<input type=hidden name="zipcode2" value="$zip">
<input type=hidden name="other" value="$other">
<input type=hidden name="access" value="$access">
EP
}

sub personal3{
  @gid=split(/\Q^.^\E/,"$COOKIE{'gid'}");
  @title=split(/\Q^.^\E/,"$COOKIE{'title'}");
  @price=split(/\Q^.^\E/,"$COOKIE{'price'}");
  @kazu=split(/\Q^.^\E/,"$COOKIE{'kazu'}");
  @yobi11=split(/\Q^.^\E/,"$COOKIE{'yobi11'}");
  @yobi21=split(/\Q^.^\E/,"$COOKIE{'yobi21'}");
  @yobi1=split(/\Q^.^\E/,"$COOKIE{'yobi1'}");
  @yobi2=split(/\Q^.^\E/,"$COOKIE{'yobi2'}");
  $other=~s/\n/[改行]/g;
  $num=@title;
  &lock($lock1);
  open(FILE,"$file");
  while(<FILE>){
    chomp;
    $line[$in1]=$_;
    $in1++;
  }
  &unlock($lock1);
  $ln=@line;
  for($s=0;$s<$num;$s++){
    for($p=0;$p<$ln;$p++){
      chomp($line[$p]);
      if($line[$p]=~/^$gid[$s],/){
        @data=split(/,/,$line[$p]);
        $data[16]=$data[16]-$kazu[$s];
        if($data[5] ne ""){
          @yobi3a=split(/\Q:\E/,"$data[5]");
          @yobi1a=split(/\Q:\E/,"$data[3]");
          $numyobi1=@yobi1a;
          foreach(@yobi1a){
            if(/\Q$yobi1[$s]\E/){last}
            $c1[$s]++;
          }
          @yobi2a=split(/\Q:\E/,"$data[4]");
          $numyobi2=@yobi2a;
          foreach(@yobi2a){
            if(/\Q$yobi2[$s]\E/){last}
            $c2[$s]++;
          }
          if(($data[3] ne "")&&($data[4] ne "")){$yob3num=($numyobi2-1)*($c1[$s]-1)+$c2[$s]-1}
          elsif(($data[3] ne "")&&($data[4] eq "")){$yob3num=$c1[$s]-1}
          else{$yob3num=$c2[$s]-1}
          $yobi3a[$yob3num]=$yobi3a[$yob3num]-$kazu[$s];
          $data[5]=join(":",@yobi3a);
        }
        $line[$p]=join(",",@data);
        last;
      }
    }
    if($yobi11[$s] eq "y"){$yobi11[$s] =""}
    if($yobi21[$s] eq "y"){$yobi21[$s] =""}
    if($yobi1[$s] eq "y"){$yobi1[$s] =""}
    if($yobi2[$s] eq "y"){$yobi2[$s] =""}
    $goods[$s]="$gid[$s],$title[$s],$price[$s],$kazu[$s],$yobi11[$s],$yobi1[$s],$yobi21[$s],$yobi2[$s]";
    $goukei=$goukei+($price[$s]*$kazu[$s]);
  }
#  $tax=int($goukei*($taxrate/100));
  if($goukei<$transfarlimit){$transfar=$transfarfee;$transfarcomment1=""}
  else{$transfar=0;$transfarcomment1=$transfarcomment}
#  $soukei=$goukei+$tax+$transfar;
  if($transfar=~/[^0-9]/){$soukei=$goukei}
  else{$soukei=$goukei+$transfar}
  $other=~s/\n//g;
  $other=~s/\015\012//g;
  $other=~s/\012//g;
  $other=~s/\015//g;
  
  if($name5 eq ""){$name5 = $name1}
  if($name6 eq ""){$name6 = $name2}
  if($name7 eq ""){$name7 = $name3}
  if($name8 eq ""){$name8 = $name4}
  if($addr2 eq ""){$addr2 = $addr}
  if($zip2 eq ""){$zip2 = $zip}
  
  
  
  open(NOTE,">>$note");
  for($s=0;$s<$num;$s++){
    print NOTE <<EP;
$tt,$goods[$s],$goukei,$tax,$soukei,$name1,$name2,$name3,$name4,$houhou,$mail,$zip,$addr,$tel1,$name5,$name6,$name7,$name8,$zip2,$addr2,$tel2,$other,$date1,$tt,$ENV{'REMOTE_HOST'},$ENV{'REMOTE_ADDR'},$access
EP
  }
  close(NOTE);
  open(NOTE2,">>$note2");
  for($s=0;$s<$num;$s++){
    print NOTE2 <<EP;
$tt,$goods[$s],$goukei,$tax,$soukei,$name1,$name2,$name3,$name4,$houhou,$mail,$zip,$addr,$tel1,$name5,$name6,$name7,$name8,$zip2,$addr2,$tel2,$other,$date1,$tt,$ENV{'REMOTE_HOST'},$ENV{'REMOTE_ADDR'},$access
EP
  }
  close(NOTE2);
  open(FILE,">$file");
  foreach(@line){
    chomp;
    print FILE <<EP;
$_
EP
  }
  close(FILE);
#  open(CK,">ck.txt");
#  print CK "1";
#  close(CK);
  if($soukei<$transfarlimit){$souryou2="(及び送料)"}
  else{$souryou2="(及び送料)"}

#手動による買い物内容書き込みのための工夫（$name1がnomailならメールを出さない）
($body1,$body2)=&mailbody2;#mailbody1のやり方だと変数が展開されない
unless($name1 eq "nomail"){
  &sendmail1;
 &sendmail2($companymail);
}
else{
  &sendmail2($enginearmail);
}

#買い物内容を消す
undef %COOKIE;
&set_cookie2($cookiename,@cookiekeys);

  print <<EP;
Content-type:text/html charset:UTF-8\n\n
<html>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=UTF-8">
<head><meta http-equiv="refresh" content="3; url=$maincgi">
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<div id="thanksmessage">
お買い上げありがとうございました。<br>
(3秒後、自動的にHOMEにジャンプします)
</div></body></html>
EP
}

sub ziptoaddress{
  my ($code)=@_;
  $code=~s/\-//g;
  open(ZIP,"zipcode.csv");
  while(<ZIP>){
    if(/^$code,/){
      @zips=split(/,/);
      last;
    }
  }
  if($zip1 ne ""){$address1=$zips[1]}
  if($zip2 ne ""){$address =$zips[1]}
}


sub listforpay{
  @gid=split(/\Q^.^\E/,"$COOKIE{'gid'}");
  @title=split(/\Q^.^\E/,"$COOKIE{'title'}");
  @price=split(/\Q^.^\E/,"$COOKIE{'price'}");
  @kazu=split(/\Q^.^\E/,"$COOKIE{'kazu'}");
  @yobi11=split(/\Q^.^\E/,"$COOKIE{'yobi11'}");
  @yobi21=split(/\Q^.^\E/,"$COOKIE{'yobi21'}");
  @yobi1=split(/\Q^.^\E/,"$COOKIE{'yobi1'}");
  @yobi2=split(/\Q^.^\E/,"$COOKIE{'yobi2'}");
  $num=@title;
  if($num>0){
    print <<EP;
<table border=1 style="font-size:15px">
<tr><th align=left colspan=5>お買い物カゴの内容</th></tr>
<tr><th align=left>商品名</th><th align=left>価格</th><th align=left>数量</th><th align=left>金額</th><th align=left>備考</th></tr>
EP
    for($f=0;$f<$num;$f++){
      $kingaku=$price[$f] * $kazu[$f];
      if($yobi1[$f] ne ""){$bikou1=$yobi11[$f]."：".$yobi1[$f]}
      if($yobi2[$f] ne ""){$bikou2=$yobi21[$f]."：".$yobi2[$f]}
      if($bikou1 eq "y：y"){$bikou1=""}
      if($bikou2 eq "y：y"){$bikou2=""}
      if(($bikou1 ne "")&&($bikou2 ne "")){$bikoujoint="  "}
      $bikou=$bikou1.$bikoujoint.$bikou2;
      print <<EP;
<tr><td>$title[$f]</td><td>$price[$f]</td><td>$kazu[$f]</td><td>$kingaku</td><td>$bikou</td></tr>
EP
      $amount=$amount+$kingaku;
    }
use integer;
#    $tax=$amount * $taxrate / 100;
    if($amount<$transfarlimit){$transfar=$transfarfee;$transfarcomment1=$transfarcomment}
    else{$transfar=0;$transfarcomment1=$transfarcomment}
#    $kei=$amount + $tax + $transfar;#外税の場合、下をこの行に変える。下記の表示部も改訂。メール部も改訂。
  if($transfar=~/[^0-9]/){$kei=$amount;$transfar1=$transfar}
  else{$kei=$amount+$transfar;$transfar1=$transfar."円"}
   #内税の場合、上をこの行に変える。下記の表示部も改訂。メール部も改訂。
no integer;
    print <<EP;
</table>
<table width=700>
<tr><th align=left width=100>金額合計</th><th align=left>$amount円</th></tr>
<tr><th align=left valign=top>送　料</th><th align=left>$transfar1</th></tr>
<tr><th align=left colspan=2>$transfarcomment1</th></tr>
<tr><th align=left>総　計</th><th align=left>$kei円</th></tr>
</table>
EP
    if($submit ne ""){
    print <<EP;
<table align=center>
<tr><td><input type=submit value="送信" name="end" style="background-color:#bbbbff;color:navy;font-size:20px"></td></tr></table>
</form>
EP
    }
  }
  else{
    print <<EP;
現在カゴには何も入っていません。
EP
  }
}
sub sendmail1{
$subject=$subject1;
Jcode::convert(\$subject,'jis');
$subject = jcode($subject)->mime_encode;

open(SENDMAIL,"|$sendmail -t $mail")||die "can not send mail";

  print SENDMAIL<<End_of_Mail;
From:$companymail
Reply:$companymail
To:$mail;
Subject:$subject
MIME-Version: 1.0
Content-Type:text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding:7bit
$body1
End_of_Mail
}


sub sendmail2{
#お店に
my ($frommail)=@_;
$subject=$subject2;
Jcode::convert(\$subject,'jis');
$subject = jcode($subject)->mime_encode;

open(SENDMAIL,"|$sendmail -t $frommail")||die "can not send mail";
print SENDMAIL<<End_of_Mail;
From:$frommail
Reply:$frommail
To:$frommail;
Subject:$subject
MIME-Version: 1.0
Content-Type:text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding:7bit
$body2
End_of_Mail
}

sub mailbody2{
  my ($body);
  
  $other=~s/<br>/\n/g;
  
  open(UPLT,"$upperletterfl");
  while(<UPLT>){
    $upperletter .= $_;
  }
  close(UPLT);
  open(UNLT,"$underletterfl");
  while(<UNLT>){
    $underletter .= $_;
  }
  close(UNLT);
  
$body .= "*受付番号：$tt\n";
$body .= "*お名前：$name1\n";
$body .= "*ふりがな：$name2\n";
$body .= "*お支払い方法：$houhou\n";
$body .= "*メールアドレス：$mail\n";
$body .= "*郵便番号：$zip\n";
$body .= "*ご住所：$addr\n";
$body .= "*お電話番号：$tel1\n";
$body .= "*****************************\n";
$body .= "*****************************\n";
$body .= "*お届け先お名前：$name3\n";
$body .= "*ふりがな：$name4\n";
$body .= "*お届け先郵便番号：$zip2\n";
$body .= "*お届け先ご住所：$addr2\n";
$body .= "*お届け先電話番号：$tel2\n";
$body .= "*連絡手段:$access[$access]\n";
$body .= "*その他の通信\n";
$body .= "$other\n";


  $goodsnum=1;
  foreach $goods(@goods){
    $goods=~s/\Qy：y\E//g;
    @goods1=split(/\Q,\E/,"$goods");
    if($goods1[4] ne ""){$goods4="$goods1[4]:$goods1[5]  $goods1[6]:$goods1[7]"}
    else{$goods4=""}
$body.="$goodsnum.商品名(商品コード)  $goods1[1]($goods1[0])\n";
$body.="          単価                $goods1[2]\n";
$body.="          数量                $goods1[3]\n";
$body.="          備考                $goods4\n";


    undef @goods1;
    $goodsnum++;
  }
$transfarcomment=~s/<br>/\n/g;
if($transfar=~/[^0-9]/){$transfar2=$transfar}
else{$transfar2="￥".$transfar}

$body.="*合計：￥$goukei\n";
$body.="*送料：$transfar2\n";
$body.="$transfarcomment\n";
$body.="*総計：￥$soukei $souryou2\n";

$body1="松司軒webshopからの自動返信です。\n\n";
$body1.="$upperletter\n";
$body1.=$body;
$body1.=$underletter;

$body2="松司軒webshopからの自動返信です。\n\n";
$body2.= "下記のお買い物がありました。\n";
$body2.= "サーバー上のファイルに書き込みました。\n\n";
$body2.=$body;
  
  Jcode::convert(\$body1,'jis');
  Jcode::convert(\$body2,'jis');
  
=pod#テストのためのファイル書き込みをした
  open(FILE,">test1.txt");
  print FILE $body1;
  print FILE $body2;
  close(FILE);
=cut
  
  @ans=($body1,$body2);

  return @ans;
}


###　HTMLの最初##########################
sub header{
  print <<EP;
Content-type:text/html charset:UTF-8\n\n
<html>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=UTF-8">
<META name="CHTML" content="yes">
<head>
<link rel="stylesheet" href="./css/style.css">
<link rel="stylesheet" href="./css/validationEngine.jquery.css" type="text/css"/>
<script src="./js/jquery.min.js"></script>
<script src="http://zipaddr.com/js/zipaddr7.js" charset="UTF-8"></script>
<script type="text/javascript" src="./js/prototype.js"></script>
<script type="text/javascript" src="./js/autoKana.js"></script>
<script src="./js/jquery.validationEngine-ja.js" type="text/javascript" charset="utf-8"></script>
<script src="./js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"></script>
<title>$title</title>
</head>
<body>
EP
}
###　HTMLの最後###########################
sub footer{
  print <<EP;
<hr color=black size=1>
</body>
<script type="text/javascript">
    var auto_kana_1 = new AutoKana('auto_kana_name_1', 'auto_kana_kana_1', {katakana:false, toggle:false});
    var auto_kana_2 = new AutoKana('auto_kana_name_2', 'auto_kana_kana_2', {katakana:false, toggle:false});
  jQuery(document).ready(function(){
    jQuery("#f1").validationEngine();
  });
</script>
</html>
EP
}
###########################################

####################################################
# クッキーを読む
####################################################
#$cookiename変数にクッキーの名前を入れる。
sub read_cookie{
  my ($cookiename)=@_;
  @pairs = split(/\;/,$ENV{'HTTP_COOKIE'});
  foreach $pair(@pairs){
    local($name,$value) = split(/\=/,$pair);
  #エンコードしたセパレータ＝を戻す．	
    $name	=~ s/Enc_eq/\=/g;
    $value =~ s/Enc_eq/\=/g;
    $name =~ s/ //g;
    $COOKIES{$name} = $value;
  }
  foreach ( split(/\,/,$COOKIES{$cookiename})){
    local($name,$value) = split(/\:/);
    $COOKIE{$name} = $value;
  }
}

####################################################
# クッキーを書く
####################################################
sub set_cookie{
  my ($cookiename,@cookiekey)=@_;
  my $date;
#セパレータと区別できなくなる＝を事前にEnc_eqに置換
  my $ckeynum=@cookiekey;
  for($num=0;$num<$ckeynum;$num++){
    $cval[$num]=$COOKIE{$cookiekey[$num]};
    $cval[$num]=~ s/\=/Enc_eq/g;
    $set[$num]="$cookiekey[$num]:$cval[$num]";
  }
  $set_cookie_value=join(",",@set);
  print "Set-Cookie: $cookiename=$set_cookie_value; \n";
}

sub set_cookie2{
  my ($cookiename,@cookiekey)=@_;
  my $date;
#セパレータと区別できなくなる＝を事前にEnc_eqに置換
  my $ckeynum=@cookiekey;
  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time + 31536000);
  if ($sec < 10)  { $sec = "0$sec";   }
  if ($min < 10)  { $min = "0$min";   }
  if ($hour < 10) { $hour = "0$hour"; }
  @week=("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
  $youbi = $week[$wday];
  $year=1900+$year;
  @mon=("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
  $date="$youbi $mday-$mon[$mon]-$year $hour:$min:$sec GMT";

  for($num=0;$num<$ckeynum;$num++){
    $cval[$num]=$COOKIE{$cookiekey[$num]};
    $cval[$num]=~ s/\=/Enc_eq/g;
    $set[$num]="$cookiekey[$num]:$cval[$num]";
  }
  $set_cookie_value=join(",",@set);
  print "Set-Cookie: $cookiename=$set_cookie_value; expires=$date;\n";
}

sub date{
  $tt=time;
  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($tt);
  $month = ($mon + 1);
  if ($sec < 10)  { $sec = "0$sec";}
  if ($min < 10)  { $min = "0$min";}
  if ($hour < 10) { $hour = "0$hour";}
  $y0="日"; $y1="月"; $y2="火"; $y3="水"; $y4="木"; $y5="金"; $y6="土";
  $youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6) [(localtime)[6]];
  $year=1900+$year;
  $date="$year/$month/$mday($youbi)";
  $times="$hour:$min:$sec";
  $date1=$date." ".$times;
}

sub lock{
  my ($lockfile)=@_;
  my $retry= 5;
  while (!symlink(".", $lockfile)) {
    if(--$retry <= 0) {&errorjump}
    sleep(1);
  }
}
sub unlock{
  my ($lockfile)=@_;
  if(-e $lockfile){unlink($lockfile)}
}

sub errorjump{
  if ($ENV{PERLXS} eq "PerlIS") { # IIS (PerlIS) サーバ対応
    print "HTTP/1.0 302 Temporary Redirection\r\n";
    print "Content-type:text/html\n";
  }
  print "Location:$errorurl\n\n";
exit;
}
sub errors{
  my ($er2)=@_;
  print <<EP;
<b>$er2が書き込まれていません。</b><br>
EP
}

