#!/usr/bin/perl

use utf8;
use open ":utf8";
use open ":std";

# AMAITORTE
# Custom Form Mail

# 設定ここから

# フォームタグの属性
$setting_formtag = 'action="contact.cgi" method="post"';

# 都道府県
@TodofukenName = (
	'北海道', '青森県', '岩手県', '宮城県', '秋田県',
	'山形県', '福島県', '東京都', '神奈川県', '埼玉県',
	'千葉県', '茨城県', '栃木県', '群馬県', '山梨県',
	'新潟県', '長野県', '富山県', '石川県', '福井県',
	'愛知県', '岐阜県', '静岡県', '三重県', '大阪府',
	'兵庫県', '京都府', '滋賀県', '奈良県', '和歌山県',
	'鳥取県', '島根県', '岡山県', '広島県', '山口県',
	'徳島県', '香川県', '愛媛県', '高知県', '福岡県',
	'佐賀県', '長崎県', '熊本県', '大分県', '宮崎県',
	'鹿児島県', '沖縄県'
);

# 年齢の選択肢
@AgeSelection = ('10代','20代','30代','40代','50代','60代','70代','80代');

# 経験年数の選択肢
@ExpSelection = ('未経験', '1年以内', '3年以内', '5年以上');

# カメラブランドの選択肢
@CameraBrandSelection = ('キヤノン', 'ニコン', 'ソニー', 'オリンパス', 'パナソニック', 'その他');

# お問い合わせメールを受け取る担当者のメールアドレス
@TantoshaMailAddress = ('utsukushi@utsukushi-oam.jp');

# お客様にお送りするお問い合わせ確認メールの差出人として表示するメールアドレス
$setting_remail = 'utsukushi@utsukushi-oam.jp';

# お客様にお送りするお問い合わせ確認メールの件名
$setting_subject = '美ヶ原高原タイムラプスワークショップお問い合わせ';

# お客様にお送りするお問い合わせ確認メールの差出人名
$setting_sender = '美ヶ原高原美術館';

# お客様にお送りするお問い合わせ確認メールの前文（ごあいさつ文など）
$setting_maebun = <<'END_OF_DATA';
この度は「美ヶ原高原タイムラプスワークショップ」にお問い合わせいただき、誠にありがとうございます。

＊このメールは自動返信です。
　後日、担当者よりご連絡さしあげます。
END_OF_DATA

# お客様にお送りするお問い合わせ確認メールの後文（施設名・住所など）
$setting_atobun = <<'END_OF_DATA';
美ヶ原高原美術館
〒386-0507 長野県上田市武石上本入美ヶ原高原
TEL:0268-86-2331（代表）　0268-85-2111（冬季:12月～3月）
END_OF_DATA

# 受付が完了した時にブラウザ画面に表示される文章
$setting_lastmessage = <<'END_OF_DATA';
この度は「美ヶ原高原タイムラプスワークショップ」にお問い合わせいただき、誠にありがとうございます。
後日、担当者よりご連絡さしあげます。

美ヶ原高原美術館
〒386-0507 長野県上田市武石上本入美ヶ原高原
TEL:0268-86-2331（代表）　0268-85-2111（冬季:12月～3月）
END_OF_DATA

# 設定ここまで







require "mod/unit.pl";

# URIパラメータまたはフォーム情報からの入力
%Prof = &AmaitorteUnit::DataQuery;

foreach(keys %Prof){
	$Prof{$_} =~ s/"/”/g;
}
unless($Prof{'mode'}){
	$Prof{'mode'} = 'normal';
}

# エラー処理
@Error = ();
if($Prof{'mode'} eq 'confirm' || $Prof{'mode'} eq 'done'){
	if($Prof{'personname'} eq ''){
		push @Error, "お名前をご入力下さい。";
	}
	if($Prof{'personnamekana'} eq ''){
		push @Error, "お名前（ふりがな）をご入力下さい。";
	}
	if($Prof{'mail'} eq '' || $Prof{'mail2'} eq ''){
		push @Error, "メールアドレスをご入力下さい。";
	}
	if($Prof{'mail'} ne $Prof{'mail2'}){
		push @Error, "確認用メールアドレスが異なります。";
	}
}


print <<'END_OF_DATA';
Content-type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />

<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no" />
<!--[if lt IE 9]><script src="mod/trident.js"></script><![endif]-->

<style>
@import "mod/standard.css";
</style>
<script src="mod/hotcake.min.js"></script>
<script src="mod/shared.js"></script>

<title>Sacred Place of Time Lapse　タイムラプスの聖地 美ヶ原高原 - ワークショップ - お問い合わせ</title>
</head>
<body>

<header id="SharedHeader">
	<div>
		<h1><a href="./"><img src="mod/nav/0.png" data-srcs="mod/nav/0_2x.png 142h" alt="Sacred Place of Time Lapse　タイムラプスの聖地 美ヶ原高原" /></a></h1>
		<nav>
			<ul id="GlobalNav">
				<li><a href="./"><img src="mod/nav/1.png" data-srcs="mod/nav/1_2x.png 142h" alt="ホーム" /></a></li>
				<li><a href="workshop.html"><img src="mod/nav/2.png" data-srcs="mod/nav/2_2x.png 142h" alt="ワークショップ" /></a></li>
				<li><a href="moviecontest.html"><img src="mod/nav/3.png" data-srcs="mod/nav/3_2x.png 142h" alt="ムービーコンテスト" /></a></li>
			</ul>
		</nav>
	</div>
</header>

<div class="white">
	<div>
		<h1 id="WorkshopSankaFormTitle">ワークショップに関するお問い合わせ</h1>
END_OF_DATA






if($Error[0]){
	print <<END_OF_DATA;
	<section id="ErrorList">
		<p>
			フォームを送信できませんでした。<br />
			申し訳ありませんが、以下の点をご確認下さい。
		</p>
		<ul>
END_OF_DATA

	foreach(@Error){
		print "<li>$_</li>\n";
	}
	
	print <<END_OF_DATA;
		</ul>
	</section>
END_OF_DATA
	
	$Prof{'mode'} = 'normal';
}




if($Prof{'mode'} eq 'normal'){
	# ステップ1
	
	# プルダウンメニューの作成
	# 都道府県
	my $tempTodofukenHTML = '<option value="">選択して下さい...</option>';
	foreach(@TodofukenName){
		if($Prof{'todofuken'} eq $_){
			$tempTodofukenHTML .= "<option value=\"$_\" selected>$_</option>";
		}else{
			$tempTodofukenHTML .= "<option value=\"$_\">$_</option>";
		}
	}
	
	# 年齢
	my $tempAgeHTML = '<option value="">選択して下さい...</option>';
	foreach(@AgeSelection){
		if($Prof{'age'} eq $_){
			$tempAgeHTML .= "<option value=\"$_\" selected>$_</option>";
		}else{
			$tempAgeHTML .= "<option value=\"$_\">$_</option>";
		}
	}
	
	# 星景写真撮影経験年数
	my $tempPhotoShootExpHTML = '<option value="">選択して下さい...</option>';
	foreach(@ExpSelection){
		if($Prof{'photoshootexp'} eq $_){
			$tempPhotoShootExpHTML .= "<option value=\"$_\" selected>$_</option>";
		}else{
			$tempPhotoShootExpHTML .= "<option value=\"$_\">$_</option>";
		}
	}
	
	# タイムラプス撮影経験撮影経験年数
	my $tempTimeLapseShootExpHTML = '<option value="">選択して下さい...</option>';
	foreach(@ExpSelection){
		if($Prof{'timelapseshootexp'} eq $_){
			$tempTimeLapseShootExpHTML .= "<option value=\"$_\" selected>$_</option>";
		}else{
			$tempTimeLapseShootExpHTML .= "<option value=\"$_\">$_</option>";
		}
	}
	
	# カメラメーカー名
	my $tempCameraBrandHTML = '<option value="">選択して下さい...</option>';
	foreach(@CameraBrandSelection){
		if($Prof{'camerabrand'} eq $_){
			$tempCameraBrandHTML .= "<option value=\"$_\" selected>$_</option>";
		}else{
			$tempCameraBrandHTML .= "<option value=\"$_\">$_</option>";
		}
	}
	
	#ラジオボタンとチェックボックスの作成
	%tempChecked = ();
	$tempChecked{"gender $Prof{'gender'}"} = ' checked';
	$tempChecked{"timertyperelease $Prof{'timertyperelease'}"} = ' checked';
	$tempChecked{"notebookpc $Prof{'notebookpc'}"} = ' checked';
	$tempChecked{"agreement $Prof{'agreement'}"} = ' checked';

	print <<END_OF_DATA;
			<form ${setting_formtag}>
				<input type="hidden" name="mode" value="confirm" />
				<table class="adresstable">
					<tr>
						<th>お名前</th>
						<td>
							<input type="text" name="personname" value="$Prof{'personname'}" />
						</td>
					</tr>
					<tr>
						<th>お名前（ふりがな）</th>
						<td>
							<input type="text" name="personnamekana" value="$Prof{'personnamekana'}" />
						</td>
					</tr>
					<tr>
						<th>メールアドレス</th>
						<td>
							<input type="email" name="mail" value="$Prof{'mail'}" />
						</td>
					</tr>
					<tr>
						<th>メールアドレス確認用</th>
						<td>
							<input type="email" name="mail2" value="$Prof{'mail2'}" />
						</td>
					</tr>
					<tr>
						<th>お問い合わせ内容</th>
						<td>
							<textarea name="contents">$Prof{'contents'}</textarea>
						</td>
					</tr>
				</table>
				
				<p id="NextButton">
					<button type="submit">送信内容を確認する</button>
				</p>
			</form>
END_OF_DATA




}elsif($Prof{'mode'} eq 'confirm'){
	print <<END_OF_DATA;
			<form ${setting_formtag}>
				<input type="hidden" name="mode" value="done" />
				<table class="adresstable">
					<tr>
						<th>お名前</th>
						<td>$Prof{'personname'}</td>
					</tr>
					<tr>
						<th>お名前（ふりがな）</th>
						<td>$Prof{'personnamekana'}</td>
					</tr>
					<tr>
						<th>メールアドレス</th>
						<td>$Prof{'mail'}</td>
					</tr>
					<tr>
						<th>お問い合わせ内容</th>
						<td>
							<textarea name="contents">$Prof{'contents'}</textarea>
						</td>
					</tr>
				</table>
				
				<input type="hidden" name="postcode" value="$Prof{'postcode'}" />
				<input type="hidden" name="todofuken" value="$Prof{'todofuken'}" />
				<input type="hidden" name="adress1" value="$Prof{'adress1'}" />
				<input type="hidden" name="adress2" value="$Prof{'adress2'}" />
				<input type="hidden" name="adress3" value="$Prof{'adress3'}" />
				<input type="hidden" name="personname" value="$Prof{'personname'}" />
				<input type="hidden" name="personnamekana" value="$Prof{'personnamekana'}" />
				<input type="hidden" name="age" value="$Prof{'age'}" />
				<input type="hidden" name="gender" value="$Prof{'gender'}" />
				<input type="hidden" name="mail" value="$Prof{'mail'}" />
				<input type="hidden" name="mail2" value="$Prof{'mail2'}" />
				<input type="hidden" name="photoshootexp" value="$Prof{'photoshootexp'}" />
				<input type="hidden" name="timelapseshootexp" value="$Prof{'timelapseshootexp'}" />
				<input type="hidden" name="camerabrand" value="$Prof{'camerabrand'}" />
				<input type="hidden" name="cameratype" value="$Prof{'cameratype'}" />
				<input type="hidden" name="lenstype" value="$Prof{'lenstype'}" />
				<input type="hidden" name="timertyperelease" value="$Prof{'timertyperelease'}" />
				<input type="hidden" name="timertypereleasetype" value="$Prof{'timertypereleasetype'}" />
				<input type="hidden" name="notebookpc" value="$Prof{'notebookpc'}" />
				<input type="hidden" name="notebookpctype" value="$Prof{'notebookpctype'}" />
				<input type="hidden" name="agreement" value="$Prof{'agreement'}" />
				
				<p id="NextButton">
					<button type="submit">この内容で送信する</button>
				</p>
			</form>
END_OF_DATA


}elsif($Prof{'mode'} eq 'done'){
	my @time = localtime(time);
	$time[5]+= 1900;
	$time[4]++;
	foreach($time[2],$time[1],$time[0]){
		if($_ < 10){
			$_ = '0'.$_;
		}
	}
	my $dateTime = "$time[5]年$time[4]月$time[3]日  $time[2]:$time[1]:$time[0]";
	
	# 共通のテキスト
	my $standardText = <<END_OF_DATA;
【送信日時】
${dateTime}

【お名前】
$Prof{'personname'}

【お名前（ふりがな）】
$Prof{'personnamekana'}

【メールアドレス】
$Prof{'mail'}

【お問い合わせ内容】
$Prof{'contents'}
END_OF_DATA

	# メール担当者へ +++++++++++++++++++++++++++++
	foreach my $mailthis (@TantoshaMailAddress){
		unless($mailthis){
			next;
		}
		
		my $sendingmailtext = <<END_OF_DATA;
美ヶ原高原タイムラプスワークショップお問い合わせ

${standardText}
END_OF_DATA
		
		&SubmitEmail(
			$setting_remail,
			$mailthis,
			$Prof{'personname'},
			$Prof{'mail'},
			"担当者",
			"美ヶ原高原タイムラプスワークショップお問い合わせ",
			$sendingmailtext
		);
	}
	# メール担当者へここまで +++++++++++++++++++++++++++++
	
	
	# 確認メール ++++++++++++++++++++++++++++
	my $sendingmailtext = <<END_OF_DATA;
$Prof{'personname'} 様

${setting_maebun}

入力された内容
―――――――――――――――――――――――――――――
${standardText}
―――――――――――――――――――――――――――――

${setting_atobun}
END_OF_DATA
	&SubmitEmail(
		$setting_remail,
		$Prof{'mail'},
		"$Prof{'personname'} 様",
		$setting_remail,
		$setting_sender,
		$setting_subject,
		$sendingmailtext
	);
	# 確認メールここまで +++++++++++++++++++++++++++++
	
	
	
	$setting_lastmessage =~ s|\n|<br />|g;
	print <<END_OF_DATA;
	<h2>送信が完了しました</h1>
	<p>${setting_lastmessage}</p>
	<p style="font-size:1.7em"><a href="./">戻る</a></p>
END_OF_DATA
}



print <<'END_OF_DATA';
</div>

<footer id="SharedFooter">
	<div>
		<ul>
			<li><a href="javascript:ShareTwitter()"><img src="mod/footer/twitter.png" alt="Twitterでツイート" /></a></li>
			<li><a href="javascript:ShareFacebook()"><img src="mod/footer/facebook.png" alt="Facebookでシェア" /></a></li>
		</ul>
		<p><small>Copyright © 美ヶ原高原タイムラプス実行委員会 All Rights Reserved.</small></p>
	</div>
</footer>

</body>
</html>
END_OF_DATA














sub SubmitEmail{
	my $returnAdress = shift;
	my $toAdress = shift;
	my $toName = shift;
	my $fromAddress = shift;
	my $fromName = shift;
	my $subject = shift;
	my $text = shift;
	
	my $emaildata = &DataOfSubmitEmail(
		$returnAdress,
		$toAdress,
		$toName,
		$fromAddress,
		$fromName,
		$subject,
		$text
	);
	
	&SendEmailOfData($returnAdress, $emaildata);
}
sub DataOfSubmitEmail{
	my $returnAdress = shift;
	my $toAdress = shift;
	my $toName = shift;
	my $fromAddress = shift;
	my $fromName = shift;
	my $subject = shift;
	my $text = shift;
	
	$returnAdress = &ToHankaku($returnAdress);
	$toAdress = &ToHankaku($toAdress);
	$fromAddress = &ToHankaku($fromAddress);
	
	my $EncodedToName = &MEncode($toName);
	my $EncodedFromName = &MEncode($fromName);
	my $EncodedSubject = &MEncode($subject);
	
	my $tempForReturn = '';
	
	$tempForReturn .= "Content-Type: text/plain; charset=UTF-8\n";
	$tempForReturn .= "Content-Transfer-Encoding: base64\n";
	
	$tempForReturn .= "To: ${EncodedToName} <${toAdress}>\n";
	$tempForReturn .= "From: ${EncodedFromName} <${fromAddress}>\n";
	$tempForReturn .= "Subject: ${EncodedSubject}\n";
	
	$tempForReturn .= "\n";
	
	$tempForReturn .= &MEncodeLong($text);
}
sub SendEmailOfData{
	my $returnAdress = shift;
	my $data = shift;
	
	open SENTMAIL,"| /usr/sbin/sendmail -t -oi -f${returnAdress}";
	
	print SENTMAIL "Date: " . &EmailDateFormatte(time) . "\n";
	
	print SENTMAIL $data;
	
	close SENTMAIL;
}

sub EmailDateFormatte{
	my $input = shift;
	my @Days = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
	my @Months = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	
	@times = gmtime $input;
	
	$times[5] += 1900;
	for(my $i = 0; $i < 5; $i++){
		if($times[$i] < 10){
			$times[$i] = '0' . $times[$i];
		}
	}
	
	$times[6] = $Days[$times[6]];
	$times[4] = $Months[$times[4]];
	
	return "$times[6], $times[3] $times[4] $times[5] $times[2]:$times[1]:$times[0] +0000";
}

sub MEncode{
	#use URI::Escape;
	use Encode;
	use MIME::Base64;
	
	my $text = shift;
	$text = Encode::is_utf8($text) ? encode_utf8($text) : $text;
	return '=?utf-8?B?' . encode_base64($text, '') . '?=';
}

sub MEncodeLong{
	use Encode;
	use MIME::Base64;
	
	my $text = shift;
	$text = Encode::is_utf8($text) ? encode_utf8($text) : $text;
	return encode_base64($text);
}

sub ToHankaku{
	$in = $_[0];
	
	$in =~ s/Ａ/A/g;
	$in =~ s/Ｂ/B/g;
	$in =~ s/Ｃ/C/g;
	$in =~ s/Ｄ/D/g;
	$in =~ s/Ｅ/E/g;
	$in =~ s/Ｆ/F/g;
	$in =~ s/Ｇ/G/g;
	$in =~ s/Ｈ/H/g;
	$in =~ s/Ｉ/I/g;
	$in =~ s/Ｊ/J/g;
	$in =~ s/Ｋ/K/g;
	$in =~ s/Ｌ/L/g;
	$in =~ s/Ｍ/M/g;
	$in =~ s/Ｎ/N/g;
	$in =~ s/Ｏ/O/g;
	$in =~ s/Ｐ/P/g;
	$in =~ s/Ｑ/Q/g;
	$in =~ s/Ｒ/R/g;
	$in =~ s/Ｓ/S/g;
	$in =~ s/Ｔ/T/g;
	$in =~ s/Ｕ/U/g;
	$in =~ s/Ｖ/V/g;
	$in =~ s/Ｗ/W/g;
	$in =~ s/Ｘ/X/g;
	$in =~ s/Ｙ/Y/g;
	$in =~ s/Ｚ/Z/g;

	$in =~ s/ａ/a/g;
	$in =~ s/ｂ/b/g;
	$in =~ s/ｃ/c/g;
	$in =~ s/ｄ/d/g;
	$in =~ s/ｅ/e/g;
	$in =~ s/ｆ/f/g;
	$in =~ s/ｇ/g/g;
	$in =~ s/ｈ/h/g;
	$in =~ s/ｉ/i/g;
	$in =~ s/ｊ/j/g;
	$in =~ s/ｋ/k/g;
	$in =~ s/ｌ/l/g;
	$in =~ s/ｍ/m/g;
	$in =~ s/ｎ/n/g;
	$in =~ s/ｏ/o/g;
	$in =~ s/ｐ/p/g;
	$in =~ s/ｑ/q/g;
	$in =~ s/ｒ/r/g;
	$in =~ s/ｓ/s/g;
	$in =~ s/ｔ/t/g;
	$in =~ s/ｕ/u/g;
	$in =~ s/ｖ/v/g;
	$in =~ s/ｗ/w/g;
	$in =~ s/ｘ/x/g;
	$in =~ s/ｙ/y/g;
	$in =~ s/ｚ/z/g;

	$in =~ s/０/0/g;
	$in =~ s/１/1/g;
	$in =~ s/２/2/g;
	$in =~ s/３/3/g;
	$in =~ s/４/4/g;
	$in =~ s/５/5/g;
	$in =~ s/６/6/g;
	$in =~ s/７/7/g;
	$in =~ s/８/8/g;
	$in =~ s/９/9/g;

	$in =~ s/．/\./g;
	$in =~ s/ー/\-/g;
	$in =~ s/＠/\@/g;
	
	$in =~ s/！/!/g;
	$in =~ s/＃/\#/g;
	$in =~ s/＄/\$/g;
	$in =~ s/％/\%/g;
	$in =~ s/＆/\&/g;
	$in =~ s/’/\'/g;
	$in =~ s/＊/\*/g;
	$in =~ s/＋/\+/g;
	$in =~ s/−/\-/g;
	$in =~ s/／/\//g;
	$in =~ s/＝/=/g;
	$in =~ s/？/\?/g;
	$in =~ s/＾/\^/g;
	$in =~ s/＿/_/g;
	$in =~ s/｀/\`/g;
	$in =~ s/｛/\{/g;
	$in =~ s/｜/\|/g;
	$in =~ s/｝/\}/g;
	$in =~ s/〜/~/g;
	
	

	
	return $in;
}

exit;