#!/usr/bin/perl -w

#=========================================================#
# 履歴                                                    #
#---------------------------------------------------------#
# 2008.03.31 作成.                                        #
#---------------------------------------------------------#
# Copyright (C) 2008 MANIFEST Ltd. All Rights Reserved.   #
#=========================================================#

#=========================================================#
# 初期設定                                                #
#=========================================================#

#------------------#
# sendmailへのパス #
#------------------#
$sendmail = '/usr/sbin/sendmail';

#--------------------#
# ライブラリへのパス #
#--------------------#
$jcode = '../../cgi-bin/jcode.pl';
$mimew = '../../cgi-bin/mimew.pl';

#--------#
# 送付先 #
#--------#
$to = 'mitumori@mani-fest.com';

#------#
# 題名 #
#------#
$subject = '引越見積もり問い合わせ';

#------------#
# 確認ページ #
#------------#
$step1html = "skin_step1.html";
$step2html = "skin_step2.html";
$step3html = "skin_step3.html";

#---------------------------#
# 呼出し元チェックURLを指定 #
#---------------------------#
$ref_step1html = 'http://www.mani-fest.com/mitumori/script/skin_step1.html';
$ref_step2html = 'http://www.mani-fest.com/mitumori/script/skin_step2.html';

#====================#
# ライブラリのロード #
#====================#
require $jcode;
require $mimew;

#============#
# FORMの表示 #
#============#
if ($ENV{'REQUEST_METHOD'} eq "GET") {
    print "Location: $step1html\n\n";

    #------#
    # EXIT #
    #------#
    exit 0;

    #-----------------#
    # 診断（DEBUG用） #
    #-----------------#
    print "Content-type: text/html; charset=Shift_JIS\n";
    print "\n";
    print "<html>\n";
    print "<head>\n";
    print "<title>WwwMail自己診断</title>\n";
    print "</head>\n";
    print "<body>\n";
    print "<p>CGIは正常に動作しています。</p>\n";
    unless (-f $sendmail) {
        print "<p>$sendmail がありません。</p>\n";
    }
    unless (-x $sendmail) {
        print "<p>$sendmail が実行可能ではありません。</p>\n";
    }
    unless (-f $jcode) {
        print "<p>jcode.pl がありません。</p>\n";
    }
    unless (-f $mimew) {
        print "<p>mimew.pl がありません。</p>\n";
    }
    print "</body>\n";
    print "</html>\n";

    #------#
    # EXIT #
    #------#
    exit 0;
}

#============#
# FORMの送信 #
#============#

#================#
# 呼出し元の確認 #
#================#
if(!($ref_step1html eq $ENV{HTTP_REFERER})){
    &error_exit("呼出し元が不正です。");
}

#===============#
# QUERY復元処理 #
#===============#
if($ENV{REQUEST_METHOD} eq "POST"){
    read(STDIN,$input,$ENV{CONTENT_LENGTH});
} else {
    $input = $ENV{QUERY_STRING};
}

foreach ( split('&', $input ) ){
    ($name, $value) = split('=',$_,2);
    $value =~ s/\+/ /g;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
    $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
    $html{$name} = $query{$name} = $value;
}

#=========================================================#
# 入力データのチェック                                    #
#---------------------------------------------------------#
# 入力データの一覧とID                                    #
#   お名前 : name                                         #
#   電話番号 : denwa                                      #
#   メールアドレス : mail                                 #
#   メールアドレス（確認用） : mail2                      #
#   引越しコース : cose                                   #
#   家族またはオフィス収容人数 : ninzuu                   #
#   間取り : madori                                       #
#   現在の住所 : osumai                                   #
#   引越し先の住所 : hikkosisaki                          #
#   引越し予定希望日 年 : nen                             #
#                    月 : tuki                            #
#                    日 : niti                            #
#   引越ご希望時間 : time                                 #
#   テレビ（大） : tv1                                    #
#   テレビ（中） : tv2                                    #
#   テレビ（小） : tv3                                    #
#   ビデオ : video                                        #
#   デスクトップパソコン : pc1                            #
#   ノートブックパソコン : pc2                            #
#   電子レンジ : densi                                    #
#   洗濯機（大） : sentaku1                               #
#   洗濯機（中） : sentaku2                               #
#   洗濯機（小） : sentaku3                               #
#   エアコン : eakon                                      #
#   扇風機 : eakon2                                       #
#   ストーブ : sutobu                                     #
#   こたつ : sutobu2                                      #
#   乾燥機 : kansou                                       #
#   冷蔵庫（大） : reizouko1                              #
#   冷蔵庫（中） : reizouko2                              #
#   冷蔵庫（小） : reizouko3                              #
#   タンス（大） : tansu1                                 #
#   タンス（中） : tansu2                                 #
#   タンス（小） : tansu3                                 #
#   カラーボックス3以上 : karabox                         #
#   カラーボックス2以上 : karabox2                        #
#   カラーボックス1 : karabox3                            #
#   スチールラック（大） : rakku1                         #
#   スチールラック（中） : rakku2                         #
#   スチールラック（小） : rakku3                         #
#   ドレッサー : doresu                                   #
#   つくえ : desk                                         #
#   ベット（大） : bed1                                   #
#   ベッド（中） : bed2                                   #
#   ベッド（小） : bed3                                   #
#   布団5組以上 : huton                                   #
#   布団2組以上 : huton2                                  #
#   布団 : huton22                                        #
#   カーペット : pet                                      #
#   食器棚（大） : syokki1                                #
#   食器棚（中） : syokki2                                #
#   食器棚（小） : syokki3                                #
#   ダイニングセット６脚以上 : dainin                     #
#   ダイニングセット４脚以上 : dainin2                    #
#   ダイニングセット２脚以上 : dainin3                    #
#   ソファー（大） : sofa1                                #
#   ソファー（中） : sofa2                                #
#   ソファー（小） : sofa3                                #
#   単車 : norimono                                       #
#   原付 : norimono2                                      #
#   自転車 : norimono3                                    #
#   自転車子供用 : norimono4                              #
#   ギター : gakki                                        #
#   ドラム : gakki2                                       #
#   ピアノ : gakki3                                       #
#   ゴルフバック : sonota                                 #
#   水槽 : sonota2                                        #
#   その他（何でも記載可） : message                      #
#=========================================================#

#--------#
# お名前 #
#--------#
if(!$query{name}) {
    &error_exit("お名前が入力されていません。"); 
}

#----------#
# 電話番号 #
#----------#
if(!$query{denwa}) {
    &error_exit("電話番号が入力されていません。"); 
}

#----------------#
# メールアドレス #
#----------------#
if(!$query{mail}) {
    &error_exit("メールアドレスが入力されていません。"); 
}

#--------------------------#
# メールアドレスの形式確認 #
#--------------------------#
if($query{mail} !~ /.+\@.+\..+/ || $query{mail} =~ /,/){
    &error_exit("メールアドレスの書式が不正です"); 
}

#=========================================================#
# 送信・表示データの作成                                  #
#=========================================================#

#--------#
# お名前 #
#--------#
if ($query{name}){
    $mail_body = "\n【お名前】$query{name}\n";
}

#----------#
# 電話番号 #
#----------#
if ($query{denwa}){
    $mail_body .= "【電話番号】$query{denwa}\n";
}

#----------------#
# メールアドレス #
#----------------#
if ($query{mail}){
    $mail_body .= "【メールアドレス】$query{mail}\n";
}

#--------------#
# 引越しコース #
#--------------#
if ($query{cose}){
    $mail_body .= "【引越しコース】$query{cose}\n";
}

#----------------------------#
# 家族またはオフィス収容人数 #
#----------------------------#
if ($query{ninzuu}){
    $mail_body .= "【家族またはオフィス収容人数】$query{ninzuu} 人\n";
}

#--------#
# 間取り #
#--------#
if ($query{madori}){
    $mail_body .= "【間取り】$query{madori}\n";
}

#------------#
# 現在の住所 #
#------------#
if ($query{osumai}){
    $mail_body .= "【現在の住所】$query{osumai}\n";
}

#----------------#
# 引越し先の住所 #
#----------------#
if ($query{hikkosisaki}){
    $mail_body .= "【引越し先の住所】$query{hikkosisaki}\n";
}

#------------------#
# 引越し予定希望日 #
#------------------#
if (($query{nen})||($query{tuki})||($query{niti})){
    $mail_body .= "【引越し\予\定\希\望\日】";
    if ($query{nen }){ $mail_body .= "$query{nen }年"; }
    if ($query{tuki}){ $mail_body .= "$query{tuki}月"; }
    if ($query{niti}){ $mail_body .= "$query{niti}日"; }
    $mail_body .= "\n";
}

#----------------#
# 引越ご希望時間 #
#----------------#
if ($query{time}){
    $mail_body .= "【引越ご希望時間】$query{time}\n";
}

#--------#
# テレビ #
#--------#
if (($query{tv1})||($query{tv2})||($query{tv3})){
    $mail_body .= "【テレビ】";
    if ($query{tv1}){ $mail_body .= "大 "; }
    if ($query{tv2}){ $mail_body .= "中 "; }
    if ($query{tv3}){ $mail_body .= "小 "; }
    $mail_body .= "\n";
}

#--------#
# ビデオ #
#--------#
if ($query{video}){
    $mail_body .= "【ビデオ】○\n";
}

#----------#
# パソコン #
#----------#
if (($query{pc1})||($query{pc2})){
    $mail_body .= "【\パ\ソ\コ\ン】";
    if ($query{pc1}){ $mail_body .= "\デ\ス\ク\ト\ッ\プ\パ\ソ\コ\ン "; }
    if ($query{pc2}){ $mail_body .= "\ノ\ー\ト\ブ\ッ\ク\パ\ソ\コ\ン "; }
    $mail_body .= "\n";
}

#------------#
# 電子レンジ #
#------------#
if ($query{densi}){
    $mail_body .= "【電子レンジ】○\n";
}

#--------#
# 洗濯機 #
#--------#
if (($query{sentaku1})||($query{sentaku2})||($query{sentaku3})){
    $mail_body .= "【洗濯機】\n";
    if ($query{sentaku1}) { $mail_body .= "大 "; }
    if ($query{sentaku2}) { $mail_body .= "中 "; }
    if ($query{sentaku3}) { $mail_body .= "小 "; }
    $mail_body .= "\n";
}

#--------#
# 冷房系 #
#--------#
if (($query{eakon})||($query{eakon2})){
    $mail_body .= "【冷房系】";
    if ($query{eakon }) { $mail_body .= "エアコン "; }
    if ($query{eakon2}) { $mail_body .= "扇風機 "; }
    $mail_body .= "\n";
}

#--------#
# 暖房系 #
#--------#
if (($query{sutobu})||($query{sutobu2})){
    $mail_body .= "【暖房系】";
    if ($query{sutobu }) { $mail_body .= "ストーブ "; }
    if ($query{sutobu2}) { $mail_body .= "こたつ "; }
    $mail_body .= "\n";
}

#--------#
# 乾燥機 #
#--------#
if ($query{kansou}){
    $mail_body .= "【乾燥機】○\n";
}

#--------#
# 冷蔵庫 #
#--------#
if (($query{reizouko1})||($query{reizouko2})||($query{reizouko3})){
    $mail_body .= "【冷蔵庫】";
    if ($query{reizouko1}) { $mail_body .= "大 "; }
    if ($query{reizouko2}) { $mail_body .= "中 "; }
    if ($query{reizouko3}) { $mail_body .= "小 "; }
    $mail_body .= "\n";
}

#--------#
# タンス #
#--------#
if (($query{tansu1})||($query{tansu2})||($query{tansu3})){
    $mail_body .= "【タンス】";
    if ($query{tansu1}) { $mail_body .= "大 "; }
    if ($query{tansu2}) { $mail_body .= "中 "; }
    if ($query{tansu3}) { $mail_body .= "小 "; }
    $mail_body .= "\n";
}

#----------------#
# カラーボックス #
#----------------#
if (($query{karabox1})||($query{karabox2})||($query{karabox3})){
    $mail_body .= "【カラーボックス】";
    if ($query{karabox1}) { $mail_body .= "3以上"; }
    if ($query{karabox2}) { $mail_body .= "2以上"; }
    if ($query{karabox3}) { $mail_body .= "1"; }
    $mail_body .= "\n";
}

#----------------#
# スチールラック #
#----------------#
if (($query{rakku1})||($query{rakku2})||($query{rakku3})){
    $mail_body .= "【スチールラック】";
    if ($query{tansu1}) { $mail_body .= "大 "; }
    if ($query{tansu2}) { $mail_body .= "中 "; }
    if ($query{tansu3}) { $mail_body .= "小 "; }
    $mail_body .= "\n";
}

#------------#
# ドレッサー #
#------------#
if ($query{doresu}){
    $mail_body .= "【ドレッサー】○\n";
}

#--------#
# つくえ #
#--------#
if ($query{desk}){
    $mail_body .= "【つくえ】○\n";
}

#--------#
# ベット #
#--------#
if (($query{bed1})||($query{bed2})||($query{bed3})){
    $mail_body .= "【ベット】";
    if ($query{bed1}) { $mail_body .= "大 "; }
    if ($query{bed2}) { $mail_body .= "中 "; }
    if ($query{bed3}) { $mail_body .= "小 "; }
    $mail_body .= "\n";
}

#   布団5組以上 : huton                                   #
#   布団2組以上 : huton2                                  #
#   布団 : huton22                                        #
#----------#
# 布団 #
#----------#
if (($query{huton})||($query{huton2})||($query{huton22})){
    $mail_body .= "【布団】";
    if ($query{karabox1}) { $mail_body .= "5組以上"; }
    if ($query{karabox2}) { $mail_body .= "2組以上"; }
    if ($query{karabox3}) { $mail_body .= "1組"; }
    $mail_body .= "\n";
}

#------------#
# カーペット #
#------------#
if ($query{pet}){
    $mail_body .= "【カーペット】○\n";
}

#--------#
# 食器棚 #
#--------#
if (($query{syokki1})||($query{syokki2})||($query{syokki3})){
    $mail_body .= "【食器棚】";
    if ($query{syokki1}) { $mail_body .= "大 "; }
    if ($query{syokki2}) { $mail_body .= "中 "; }
    if ($query{syokki3}) { $mail_body .= "小 "; }
    $mail_body .= "\n";
}

#------------------#
# ダイニングセット #
#------------------#
if (($query{dainin1})||($query{dainin2})||($query{dainin3})){
    $mail_body .= "【ダイニングセット】";
    if ($query{dainin1}) { $mail_body .= "６脚以上"; }
    if ($query{dainin2}) { $mail_body .= "４脚以上"; }
    if ($query{dainin3}) { $mail_body .= "２脚以上"; }
    $mail_body .= "\n";
}

#----------#
# ソファー #
#----------#
if (($query{sofa1})||($query{sofa2})||($query{sofa3})){
    $mail_body .= "【\ソ\フ\ァ\ー】";
    if ($query{sofa1}) { $mail_body .= "大 "; }
    if ($query{sofa2}) { $mail_body .= "中 "; }
    if ($query{sofa3}) { $mail_body .= "小 "; }
    $mail_body .= "\n";
}

#--------#
# 乗り物 #
#--------#
if (($query{norimono})||($query{norimono2})||($query{norimono3})||($query{norimono4})){
    $mail_body .= "【乗り物】";
    if ($query{norimono }) { $mail_body .= "単車 "; }
    if ($query{norimono2}) { $mail_body .= "原付 "; }
    if ($query{norimono3}) { $mail_body .= "自転車 "; }
    if ($query{norimono4}) { $mail_body .= "自転車子供用 "; }
    $mail_body .= "\n";
}

#------#
# 楽器 #
#------#
if (($query{gakki})||($query{gakki2})||($query{gakki3})){
    $mail_body .= "【楽器】";
    if ($query{gakki }) { $mail_body .= "ギター "; }
    if ($query{gakki2}) { $mail_body .= "ドラム "; }
    if ($query{gakki3}) { $mail_body .= "ピアノ "; }
    $mail_body .= "\n";
}

#--------#
# その他 #
#--------#
if (($query{sonota})||($query{sonota2})){
    $mail_body .= "【その他】";
    if ($query{sonota }){ $mail_body .= "ゴルフバック"; }
    if ($query{sonota2}){ $mail_body .= "水槽"; }
    $mail_body .= "\n";
}

#------------------------#
# その他（何でも記載可） #
#------------------------#
if ($query{message}){
    $mail_body .= "【その他（何でも記載可）】\n    $query{message}\n";
}

#------------------------------#
# ピリオド１つだけの行を無くす #
#------------------------------#
$mail_body =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
#$mail_body =~ s/(\n)\.(\n)/\1\.\.\2/g;

#=========================================================#
# MAIL送信                                                #
#=========================================================#

#------------#
# コード変換 #
#------------#
&jcode'convert(*mail_body,'jis');
&jcode'convert(*subject,'jis');

#------#
# OPEN #
#------#
open(MAIL,"| $sendmail -t") || &error_exit("sendmailの起動に失敗しました");

#--------#
# ヘッダ #
#--------#
print MAIL "To: $to\n";
print MAIL "From: $query{mail}\n";
print MAIL "Subject: $subject\n";

#------#
# 本文 #
#------#
print MAIL "$mail_body\n";

#-------#
# CLOSE #
#-------#
close(MAIL) || &error_exit("メールの送信に失敗しました");

#================#
# 送信結果の表示 #
#================#
if(!$step3html){
    #------#
    # EXIT #
    #------#
    exit 0;
}

#--------------------#
# HTMLファイルのOPEN #
#--------------------#
open(FH,"<$step3html");

#------#
# 置換 #
#------#
print "Content-type: text/html; charset=Shift_JIS\n";
print "\n";
while(<FH>){
    $data = $_;
    $data =~ s/\/\?name\?\//$query{name}/g;
    print $data;
}

#-------#
# CLOSE #
#-------#
close FH;

#------#
# EXIT #
#------#
exit 0;

#=========================================================#
# エラーメッセージの出力                                  #
#=========================================================#
sub error_exit {
    print "Content-type: text/html\n\n";
    print '<HTML><HEAD>'."\n";
    print '<TITLE>ご確認をお願いいたします！</TITLE>'."\n";
    print '</HEAD><BODY>'."\n";
    print '<P>'."\n";
    print '<CENTER><H2>'.$_[0].'</H2></CENTER>'."\n";
    print '</P>'."\n";
    print '<DIV ALIGN="right"><H3>';
    print '<A HREF="javascript:history.back()">戻る</A>';
    print '</H3></DIV>'."\n";
    print '</BODY></HTML>'."\n";
    exit;
}

#=========================================================#
# デコード                                                #
#=========================================================#
sub decode {
    $tmp = shift;
    foreach $key ( keys( %$tmp ) ) {
        $$tmp{$key} =~ s/\&/\&amp;/g;
        $$tmp{$key} =~ s/</\&lt;/g;
        $$tmp{$key} =~ s/>/\&gt;/g;
        $$tmp{$key} =~ s/"/\&quote;/g;
        $$tmp{$key} =~ s/\x0D\x0A|\x0D|\x0A/<BR>/g;
    }
}
