#!/usr/bin/perl
#↑Perlのパスを指定

#----------------------------------------------------------#
#Copyright(C)2000-2008 ohtan. All rights reserved.         #
#CmfFormMail ver6.43                                       #
#Build :2000/04/30                                         #
#Updata:2008/11/28                                         #
#Home  :Counter Material Factory                           #
#       http://cmf.ohtanz.com/                             #
#Mail  :cmf@ohtanz.com                                     #
#----------------------------------------------------------#
#_______________________[ 基本設定 ]_______________________

#[1]送信先メールアドレス-----------------------------------
#(Ex:複数指定する場合('mail1@example.com','mail2@example.com','mail3@example.com'))
@MailAddr   = ('kamo@land.jpn.com','land2827@yahoo.co.jp','land@my.email.ne.jp');
#[2]投稿があった際にFromに名前を入れる
$HeaderFrom = 1; #(0:OFF/1:ON)
#[3]このCGIの名称(通常は変更不要)--------------------------
$MyScript   = 'cmfmail.cgi';
#[4]戻り先URL----------------------------------------------
$ReturnUrl  = 'http://land.jpn.com';
#[5]sendmailのパス-----------------------------------------
$SendMail   = '/usr/sbin/sendmail';
#[6]最大投稿文字数(byte)-----------------------------------
$MaxLength  = 200000;
#[7]アクセスを拒否するIPアドレス---------------------------
@AccLimit   = ();
#[8]フォーム用画像を入れるディレクトリ---------------------
#(通常は変更不要、最後に「/」は入れない、http://でもOK)
$ImageDir   = './images';
#[9]海外サーバー用時差調整(最初の数字を1-24時間で指定)-----
#(Ex:15時間進める場合15*60*60/15時間遅らせる場合-15*60*60)
$TimeDiff   = 0;
#[10]stdio.plのパス----------------------------------------
$LibStdio   = './stdio.pl';
#[11]jcode.plのパス----------------------------------------
$LibJcode   = './jcode.pl';
#[12]fold.plのパス-----------------------------------------
$LibFold    = './fold.pl';

#__________________[ フォーム全体の設定 ]__________________

#[13]フォーム内全体の設定----------------------------------
$FmbgColor  = '#ffffff';      #背景色
$FmbdColor  = '#4275bb';      #ボーダーカラー
$FmbdSize   = 1;              #ボーダーサイズ
$FmftColor  = '#4275bb';      #フォントカラー
$FmftFace   = 'MS UI Gothic'; #フォントの種類
$FmftSize   = '12px';         #フォントサイズ
$FmtbWidth  = 400;            #フォームの幅(%指定は不可)
#[14]フォーム外の背景--------------------------------------
$BackColor  = '#4275bb';      #色
$BackImage  = '';             #画像までのパス(http://でもOK)
$BackFix    = 1;              #画像の固定(0:OFF/1:ON)
#[15]タイトルサイズ/色の設定-------------------------------
$TitleColor = '#ffffff';      #フォントカラー
$TitleSize  = '18px';         #フォントサイズ
#[16]コメントサイズ/色の設定-------------------------------
$CommColor  = '#ffffff';      #フォントカラー
$CommSize   = '14px';         #フォントサイズ
#[17]LINK色の設定------------------------------------------
$LinkNormal = '#4275bb';      #未訪問
$LinkVisit  = '#4275bb';      #訪問済
$LinkHover  = '#4275bb';      #アクティブ
#[18]スクロールバーの色設定--------------------------------
$ScrlArrow  = '#ffffff';      #arrow
$ScrlBase   = '#80BFFF';      #base
$ScrlFace   = '#4275bb';      #face
$ScrlHigh   = '#4275bb';      #highlight
$ScrlShadow = '#4275bb';      #shadow
$ScrlDlight = '#80BFFF';      #3dlight
$ScrlDark   = '#4275bb';      #darkshadow
$ScrlTrack  = '#80BFFF';      #track

#__________________[ 入力フォームの設定 ]__________________

#[19]入力欄全体の設定--------------------------------------
$InputbgCol = '#4275bb';        #背景色
$InputbdCol = '#4275bb';        #ボーダーカラー
$InputbdSiz = 2;                #ボーダーサイズ
$InputftCol = '#ffffff';        #フォントカラー
$InputftFce = 'MS UI Gothic';   #フォントの種類
$InputftSiz = '12px';           #フォントサイズ
#[20]件名入力欄の設定--------------------------------------
$SubFix     = 1;                #入力欄の表示(0:OFF/1:ON)
$SubTtl     = 'ご用件';          #名称
$SubJect    = '';               #入力欄非表示の時の件名
$SubSize    = 50;               #入力欄のサイズ
$SubSurely  = 1;                #入力欄表示の時の入力必須(0:OFF/1:ON)
$SubDef     = '';               #入力欄にデフォルトで入れる文字列
$SubNum     = 4;                #項目全体の中で上から何番目に表示するかを「0」から指定
#[21]名前入力欄の設定--------------------------------------
$NameColumn = 'お名前';           #名称
$NameSize   = 20;               #入力欄のサイズ
$NameSurely = 1;                #入力必須(0:OFF/1:ON)
$NameNum    = 0;                #項目全体の中で上から何番目に表示するかを「0」から指定
#[22]フリガナ入力欄の設定----------------------------------
$KanaFix    = 0;                #入力欄の表示(0:OFF/1:ON)
$KanaColumn = 'Kana';           #名称
$KanaSize   = 20;               #入力欄のサイズ
$KanaSurely = 0;                #入力必須(0:OFF/1:ON)
$KanaNum    = 2;                #項目全体の中で上から何番目に表示するかを「0」から指定
#[23]メールアドレス入力欄の設定----------------------------
$MailColumn = 'E-mail';         #名称
$MailSize   = 40;               #入力欄のサイズ
$MailSurely = 0;                #入力必須(0:OFF/1:ON)
$MailNum    = 3;                #項目全体の中で上から何番目に表示するかを「0」から指定

$MailCheck   = 0;                #メールアドレス確認フォームの表示(0:OFF/1:ON)
$MailColumn2 = 'E-mail(確認)';   #名称
$MailSize2   = 20;               #入力欄のサイズ
$MailNum2    = 4;                #項目全体の中で上から何番目に表示するかを「0」から指定
#[24]メッセージ入力欄の名称--------------------------------
$MessColumn = '内容';        #名称
$MessCols   = 60;               #入力欄の列数
$MessRows   = 5;                #入力欄の行数
$MessSurely = 1;                #入力必須(0:OFF/1:ON)
$MessNum    = 5;               #項目全体の中で上から何番目に表示するかを「0」から指定
#[25]タイトルの設定----------------------------------------
$TitleName  = 'お問い合わせ'; #名称
$TitleImage = '';                  #画像までのパス(http://でもOK)
#[26]コメントの設定----------------------------------------
$CommName   = '全ての項目にご記入ください。';
#[27]送信前確認チェックボックスの名称----------------------
$BeforeName = '送信前に内容を確認';
$BeforeChk  = 1;                      #デフォルトでチェックを入れる(0:OFF/1:ON)
#[28]メールコピーチェックボックスの設定------------------
$CopyFix    = 1;                      #表示(0:OFF/1:ON)
$CopyName   = '自分宛にコピーを送る'; #名称
$CopyChk    = 1;                      #デフォルトでチェックを入れる(0:OFF/1:ON)
#[29]送信ボタンの名称--------------------------------------
$SubmitName = '送信';
#[30]リセットボタンの名称----------------------------------
$ResetName  = 'リセット';
#[31]Homeの設定--------------------------------------------
$ReturnType = 1;      #ボタンのタイプ(0:非表示/1:OPEN BUTTON/2:CLOSE BOTTON/3:LINK)
$ReturnName = 'Home'; #名称
$ReturnTget = '_top'; #$ReturnTypeがLINKの時のtarget属性
#[32]テキストエリア内文字列の自動改行----------------------
$AreaLine   = 1;   #(0:OFF/1:ON)
$AreaByte   = 100; #1行の文字数(byte)

#__________________[ 確認フォームの設定 ]__________________

#[33]タイトルの設定----------------------------------------
$ChktlName  = 'お問い合わせ'; #名称
$ChktlImage = '';                  #画像までのパス(http://でもOK)
#[34]コメントの設定----------------------------------------
$ChkcmmName = '間違いなければ送信を押して下さい';
#[35]送信ボタンの名称--------------------------------------
$ChksubName = '送信';
#[36]Backボタンの名称--------------------------------------
$ChkbntName = '戻る';

#________________[ 送信完了フォームの設定 ]________________

#[37]戻り先LINKの設定--------------------------------------
$RetType    = 3;         #ボタンのタイプ(0:非表示/1:OPEN BUTTON/2:CLOSE BOTTON/3:LINK)
$RetName    = 'TOP';     #名称
$RetTarget  = '_parent'; #$RetTypeがLINKの時のtarget属性
#[38]タイトルの設定----------------------------------------
$EndtlName  = 'お問い合わせありがとうございました'; #名称
$EndtlImage = '';                                 #画像までのパス(http://でもOK)
#[39]コメントの設定----------------------------------------
$EndcmmName = '弊社からご返答いたしますので、お待ちください。';

#_______________[ CSVファイルへの出力設定 ]________________

#[40]CSVファイルへの出力
$CsvUse     = 0;                #出力(0:OFF/1:ON)
$CsvFile    = './csv/data.csv'; #出力先ファイル名

#______________________[ 項目の追加 ]______________________

#[41]一行テキスト------------------------------------------
#[$Addtext]は一行テキストの追加(0:しない/1:する)を指定して下さい
#[turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の項目と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は一行テキスト内にデフォルトで入れたい文字列を指定して下さい
#[size]は一行テキストのサイズ(長さ)を指定して下さい
#[surl]はその項目を入力必須に(yes:する/no:しない)を指定して下さい
#一行テキストの追加が複数ある場合は「@text = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#
#[サンプル]
#$AddText = 1;
#
#@text = (
#{
#'turn' => '5',
#'name' => 'ホームページ',
#'vlue' => 'http://',
#'size' => '40',
#'surl' => 'yes',
#},
#{
#'turn' => '7',
#'name' => '住所',
#'vlue' => '',
#'size' => '50',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------

$AddText = 1;

@text = (
{
'turn' => '2',
'name' => '電話番号',
'vlue' => '',
'size' => '20',
'surl' => 'yes',
},
{
'turn' => '1',
'name' => '住所',
'vlue' => '',
'size' => '60',
'surl' => 'yes',
},
);

#[42]プルダウンの追加--------------------------------------
#[$AddPull]はプルダウンの追加(0:しない/1:する)を指定して下さい
#[turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の項目と重複しないように注意して下さい
#[type]はプルダウン内のメニューの出力方法を指定します
#[type]の種類は下記の4つがあります
#・normal:vlueで指定した任意の文字列
#・date  :西暦年月日の自動出力
#・time  :時分の自動出力
#・pref  :都道府県の自動出力
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は「type」の種類によって指定方法が変わります
#[vlue]の指定方法は下記の3つがあります
#・typeがnormalの時:表示する全てのメニューを「,」で区切って指定します
#・typeがdateの時  :西暦の範囲を「1970-2002」というように指定します
#・typeがtimeの時  :空欄
#・typeがprefの時  :空欄
#[size]は表示されるメニューの行数を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#プルダウンの追加が複数ある場合は「@pull = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#
#[サンプル]
#$AddPull = 1;
#
#@pull = (
#{
#'turn' => '10',
#'type' => 'normal',
#'name' => 'ごようは?',
#'vlue' => '質問,相互LINK,暇つぶし,お願い,冷やかし',
#'size' => '1',
#'surl' => 'yes',
#},
#{
#'turn' => '8',
#'type' => 'date',
#'name' => '生年月日',
#'vlue' => '1970-2002',
#'size' => '1',
#'surl' => 'yes',
#},
#{
#'turn' => '9',
#'type' => 'time',
#'name' => '時間',
#'vlue' => '',
#'size' => '1',
#'surl' => 'yes',
#},
#{
#'turn' => '6',
#'type' => 'pref',
#'name' => '都道府県',
#'vlue' => '',
#'size' => '2',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------

$AddPull = 0;

@pull = (
{
'turn' => '10',
'type' => 'normal',
'name' => 'ごようは?',
'vlue' => '質問,相互LINK,暇つぶし,お願い,冷やかし',
'size' => '1',
'surl' => 'yes',
},
{
'turn' => '8',
'type' => 'date',
'name' => '生年月日',
'vlue' => '1970-2002',
'size' => '1',
'surl' => 'yes',
},
{
'turn' => '9',
'type' => 'time',
'name' => '時間',
'vlue' => '',
'size' => '1',
'surl' => 'yes',
},
{
'turn' => '6',
'type' => 'pref',
'name' => '都道府県',
'vlue' => '',
'size' => '1',
'surl' => 'yes',
},
);

#[43]マルチプルの追加--------------------------------------
#[$AddMult]はマルチプルの追加(0:しない/1:する)を指定して下さい
#[turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の項目と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は表示する全てのメニューを「,」で区切って指定します
#[size]は表示されるメニューの行数を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#マルチプルの追加が複数ある場合は「@mult = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#[サンプル]
#$AddMult = 1;
#
#@mult = (
#{
#'turn' => '11',
#'name' => '趣味は？<br>(複数選択可)',
#'vlue' => '映画鑑賞,テレビ鑑賞,音楽鑑賞,アウトドア,ゲーム,車,バイク,スポーツ,パソコン,読書,インターネット',
#'size' => '5',
#'surl' => 'yes',
#},
#{
#'turn' => '12',
#'name' => '好きな食べ物は？(複数選択可)',
#'vlue' => 'オムライス,お寿司,焼肉,ケーキ,パスタ,カレー,ハンバーグ,ピザ',
#'size' => '3',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------

$AddMult = 0;

@mult = (
{
'turn' => '11',
'name' => '趣味は？<br>(複数選択可)',
'vlue' => '映画鑑賞,テレビ鑑賞,音楽鑑賞,アウトドア,ゲーム,車,バイク,スポーツ,パソコン,読書,インターネット',
'size' => '5',
'surl' => 'yes',
},
{
'turn' => '12',
'name' => '好きな食べ物は？<br>(複数選択可)',
'vlue' => 'オムライス,お寿司,焼肉,ケーキ,パスタ,カレー,ハンバーグ,ピザ',
'size' => '3',
'surl' => 'yes',
},
);

#[44]ラジオボタンの追加------------------------------------
#[$AddRdio]はラジオボタンの追加(0:しない/1:する)を指定して下さい
#[turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の項目と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は表示する全てのメニューを「,」で区切って指定します
#[vlue]メニューが多数あって1行で表示しきれない場合は改行タグ<br>を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#ラジオボタンの追加が複数ある場合は「@rdio = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#[サンプル]
#$AddRdio = 1;
#
#@rdio = (
#{
#'turn' => '13',
#'name' => '年齢は？',
#'vlue' => '10才未満,10代,20代,30代,<br>,40代,50代,60代,70才以上',
#'surl' => 'yes',
#},
#{
#'turn' => '14',
#'name' => 'インターネットの接続環境は？',
#'vlue' => 'ダイアルアップ,ISDN,ADSL,SDSL,CATV,FTTH',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------

$AddRdio = 0;

@rdio = (
{
'turn' => '13',
'name' => '年齢は？',
'vlue' => '10才未満,10代,20代,30代,<br>,40代,50代,60代,70才以上',
'surl' => 'yes',
},
{
'turn' => '14',
'name' => 'インターネットの接続環境は？',
'vlue' => 'ダイアルアップ,ISDN,ADSL,SDSL,CATV,FTTH',
'surl' => 'yes',
},
);

#[45]チェックボックスの追加
#[$AddChek]はチェックボックスの追加(0:しない/1:する)を指定して下さい
#[turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の項目と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は表示する全てのメニューを「,」で区切って指定します
#[vlue]メニューが多数あって1行で表示しきれない場合は改行タグ<br>を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#チェックボックスの追加が複数ある場合は「@chek = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#[サンプル]
#$AddChek = 1;
#
#@chek = (
#{
#'turn' => '15',
#'name' => 'HPのジャンルは？<br>(複数選択可)',
#'vlue' => 'ゲーム,イラスト,音楽,芸能,<br>,素材,写真,旅行,その他',
#'surl' => 'yes',
#},
#{
#'turn' => '16',
#'name' => '配布して欲しいCGIは？<br>(複数選択可)',
#'vlue' => 'チャット,ゲストブック,ゲーム,日記,その他',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------

$AddChek = 1;

@chek = (
{
'turn' => '6',
'name' => 'ご希望連絡方法',
'vlue' => '電話,メール,どちらも可',
'surl' => 'yes',
},
);

#[46]テキストエリアの追加----------------------------------
#[$AddArea]はテキストエリアの追加(0:しない/1:する)を指定して下さい
#[turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の項目と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]はテキストエリア内にデフォルトで入れたい文字列を指定して下さい
#[vlue]テキストエリア内のデフォルト文字列を改行したい時は改行タグ<br>を指定して下さい
#[size]は行数、列数「'size' => '行数,列数',」を指定します
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#テキストエリアの追加が複数ある場合は「@area = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#[サンプル]
#$AddArea = 1;
#
#@area = (
#{
#'turn' => '20',
#'name' => '備考欄1',
#'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
#'size' => '5,60',
#'surl' => 'yes',
#},
#{
#'turn' => '21',
#'name' => '備考欄2',
#'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
#'size' => '5,60',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------

$AddArea = 0;

@area = (
{
'turn' => '20',
'name' => '備考欄1',
'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
'size' => '5,60',
'surl' => 'yes',
},
{
'turn' => '21',
'name' => '備考欄2',
'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
'size' => '5,60',
'surl' => 'yes',
},
);

#[47]添付ファイルフォームの追加----------------------------
#[$AddAttc]は添付ファイルフォームの追加(0:しない/1:する)を指定して下さい
#[$AttcTmp]は添付ファイルを一時的に保管するディレクトリパスを指定して下さい
#[$AttcEnc]は添付ファイルのエンコード形式(0:base64encode/1:uuencode)を指定して下さい
#[turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の項目と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[size]は添付ファイルフォームのサイズ(長さ)を指定して下さい
#[capa]は添付ファイルの最大ファイルサイズ(byte)を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#添付ファイルフォームの追加が複数ある場合は「@attc = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#添付ファイルフォームを追加した場合「temp」ディレクトリを作成してパーミッションを777にする必要があります
#[サンプル]
#$AddAttc = 1;
#$AttcTmp = './temp/';
#$AttcEnc = 0;
#
#@attc = (
#{
#'turn' => '17',
#'name' => '添付ファイル1',
#'size' => '40',
#'capa' => '100000',
#'surl' => 'no',
#},
#{
#'turn' => '18',
#'name' => '添付ファイル2',
#'size' => '40',
#'capa' => '100000',
#'surl' => 'no',
#},
#);
#----------------------------------------------------------

$AddAttc = 0;
$AttcTmp = './temp/';
$AttcEnc = 0;

@attc = (
{
'turn' => '17',
'name' => '添付ファイル1',
'size' => '40',
'capa' => '200000',
'surl' => 'no',
},
{
'turn' => '18',
'name' => '添付ファイル2',
'size' => '40',
'capa' => '200000',
'surl' => 'no',
},
);

#____________________[ その他の設定 ]______________________

#[48]BACKボタンのタイプ(通常は変更不要)--------------------
$BackBtnType = 0; #0:JavaScript/1:CGI

#[49]キャッシュディレクリ(通常は変更不要)------------------
$CacheDir = './cache';

#_______________________[ 設定終了 ]_______________________

$Copyright = 'http://cmf.ohtanz.com/';
$ScriptVer = 'CmfFormMail(ver6.43)';

require "$LibJcode";
require "$LibStdio";
require "$LibFold";

$stdio::max = 1048576;

%CacheData = ();
%in = ();
stdio::getFormData(\%in,1,"sjis",1,"<>","$AttcTmp");

$GetMode    = $in{'GetMode'};
$GetSubject = $in{'GetSubject'};
$GetName    = $in{'GetName'};
$GetKana    = $in{'GetKana'};
$GetEmail   = $in{'GetEmail'};
$GetEmail2  = $in{'GetEmail2'};
$GetMessage = $in{'GetMessage'};
$GetCheck   = $in{'GetCheck'};
$GetCopy    = $in{'GetCopy'};
$GetCacheId = $in{'GetCacheId'};
$GetReturn  = $in{'Return'};
$RemoteAddr = $ENV{'REMOTE_ADDR'};

if ($GetCacheId eq "") {
    $GetCacheId = time() . '.' . $$;
}

if ($AccLimit[0] && $RemoteAddr && grep($RemoteAddr =~ /^$_/,@AccLimit)) {
    &Err("Sorry. You don't have permission to access !!");
}

&CheckCache();

if ($GetMode eq "Send" && $GetReturn eq "") {
    &WriteCache($GetCacheId);

    if ($SubFix && $SubSurely && $GetSubject eq "") {
        &Err("$SubTtlを入力して下さい。");
    }
    elsif ($NameSurely && $GetName eq "") {
        &Err("$NameColumnを入力して下さい。");
    }
    elsif ($KanaFix && $KanaSurely && $GetKana eq "") {
        &Err("$KanaColumnを入力して下さい。");
    }
    elsif ($MailSurely && $GetEmail eq "") {
        &Err("$MailColumnを入力して下さい。");
    }
    elsif ($MailCheck && $MailSurely && $GetEmail2 eq "") {
        &Err("$MailColumn2を入力して下さい。");
    }
    elsif ($MailSurely && $GetEmail !~ /([\w\.\-]+)\@([\w\.\-]+)/) {
        &Err("$MailColumnの書式が正しくありません。");
    }
    elsif ($MailCheck && $MailSurely && $GetEmail2 !~ /([\w\.\-]+)\@([\w\.\-]+)/) {
        &Err("$MailColumn2の書式が正しくありません。");
    }
    elsif ($GetEmail ne "" && $GetEmail !~ /([\w\.\-]+)\@([\w\.\-]+)/) {
        &Err("$MailColumnの書式が正しくありません。");
    }
    elsif ($MailCheck && $GetEmail2 ne "" && $GetEmail2 !~ /([\w\.\-]+)\@([\w\.\-]+)/) {
        &Err("$MailColumn2の書式が正しくありません。");
    }
    elsif ($GetCopy eq "yes" && $GetEmail eq "") {
        &Err("$MailColumnを入力して下さい。");
    }
    elsif ($MailCheck && $GetCopy eq "yes" && $GetEmail2 eq "") {
        &Err("$MailColumn2を入力して下さい。");
    }
    elsif ($MailCheck && $GetEmail ne $GetEmail2) {
        &Err("$MailColumnと$MailColumn2が一致しません。");
    }
    elsif ($MessSurely && $GetMessage eq "") {
        &Err("$MessColumnを入力して下さい。");
    }

    if ($AddText) {
        foreach (0..$#text) {
           my $TextName = $text[$_]{'name'};
           my $TextSurl = $text[$_]{'surl'};
           my $TextVlue = $in{"text$_"};

           if ($TextSurl eq "yes" && $TextVlue eq "") {
               &Err("$TextNameを入力して下さい。");
           }
        }
    }

    if ($AddPull) {
        foreach (0..$#pull) {
           my $PullType = $pull[$_]{'type'};
           my $PullName = $pull[$_]{'name'};
           my $PullSurl = $pull[$_]{'surl'};

           if ($PullSurl eq "yes") {
               if ($PullType eq "date") {
                   my $PullVlue1 = $in{"pull_year$_"};
                   my $PullVlue2 = $in{"pull_month$_"};
                   my $PullVlue3 = $in{"pull_day$_"};

                   if ($PullVlue1 eq "" || $PullVlue2 eq "" || $PullVlue3 eq "") {
                       &Err("$PullNameを選択して下さい。");
                   }
               }
               elsif ($PullType eq "time") {
                   my $PullVlue4 = $in{"pull_hour$_"};
                   my $PullVlue5 = $in{"pull_min$_"};

                   if ($PullVlue4 eq "" || $PullVlue5 eq "") {
                       &Err("$PullNameを選択して下さい。");
                   }
               } else {
                   my $PullVlue = $in{"pull$_"};

                   if ($PullVlue eq "") {
                       &Err("$PullNameを選択して下さい。");
                   }
               }
           }
        }
    }

    if ($AddMult) {
        foreach (0..$#mult) {
           my $MultName = $mult[$_]{'name'};
           my $MultSurl = $mult[$_]{'surl'};
           my @MultVlue = split(/<>/,$in{"mult$_"});

           if ($MultSurl eq "yes" && $MultVlue[0] eq "") {
               &Err("$MultNameを選択して下さい。");
           }
        }
    }

    if ($AddRdio) {
        foreach (0..$#rdio) {
           my $RdioName = $rdio[$_]{'name'};
           my $RdioSurl = $rdio[$_]{'surl'};
           my $RdioVlue = $in{"rdio$_"};

           if ($RdioSurl eq "yes" && $RdioVlue eq "") {
               &Err("$RdioNameを選択して下さい。");
           }
        }
    }

    if ($AddChek) {
        foreach (0..$#chek) {
           my $ChekName = $chek[$_]{'name'};
           my $ChekSurl = $chek[$_]{'surl'};
           my @ChekVlue = split(/<>/,$in{"chek$_"});

           if ($ChekSurl eq "yes" && $ChekVlue[0] eq "") {
               &Err("$ChekNameを選択して下さい。");
           }
        }
    }

    if ($AddArea) {
        foreach (0..$#area) {
           my $AreaName = $area[$_]{'name'};
           my $AreaSurl = $area[$_]{'surl'};
           my $AreaVlue = $in{"area$_"};

           if ($AreaSurl eq "yes" && $AreaVlue eq "") {
               &Err("$AreaNameを入力して下さい。");
           }
        }
    }

    if ($AddAttc) {
        foreach (0..$#attc) {
           my $AttcName = $attc[$_]{'name'};
           my $AttcCapa = $attc[$_]{'capa'};
           my $AttcSurl = $attc[$_]{'surl'};
           my $AttcVlue = $in{"attc$_"};
           my $AttcSize = $in{"attc$_->size"};

           if ($AttcSurl eq "yes" && $AttcVlue eq "") {
               &Err("$AttcNameを指定して下さい。");
           }
           elsif ($AttcVlue ne "" && $AttcCapa < $AttcSize) {
               &Err("$AttcNameのファイルサイズは$AttcCapaバイトまでです。(現在$AttcSizeバイト)");
           }
        }
    }

    if ($GetCheck ne "yes") {

        $len = 0;
        foreach (keys(%in)) {
           $in{$_} =~ s/&amp;/&/g;
           $in{$_} =~ s/&quot;/"/g;
           $in{$_} =~ s/&lt;&gt;/<>/g;
           $in{$_} =~ s/&lt;/</g;
           $in{$_} =~ s/&gt;/>/g;
           $in{$_} =~ s/<br \/>/\n/g;
           $in{$_} =~ s/<br>/\n/g;

           $len += length($in{$_});
        }

        if ($MaxLength < $len) {
            &Err("最大投稿文字数($MaxLength byte)を超えています。(現在$len byte)");
        }

        $GetSubject = $in{'GetSubject'};
        $GetName    = $in{'GetName'};
        $GetKana    = $in{'GetKana'};
        $GetEmail   = $in{'GetEmail'};
        $GetMessage = $in{'GetMessage'};

        $GetEmail   = $MailAddr[0] if !$GetEmail;
        $GetSubject = $SubJect if !$SubFix;

        %CsvSub = ();
        %CsvBdy = ();

        @AddMail = ();

        if ($AddText) {
            foreach (0..$#text) {
               my $TextTurn = $text[$_]{'turn'};
               my $TextName = $text[$_]{'name'};
               my $TextVlue = $in{"text$_"};

               $TextName =~ s/<br>//ig;

               $AddMail[$TextTurn] = "[ $TextName ] $TextVlue\n";

               if ($CsvUse) {
                   $TextName  =~ s/<[a-zA-Z][^>]*>//g;
                   $TextName  =~ s/<\/[a-zA-Z][^>]*>//g;
                   $TextTurn2 = sprintf("%03d",$TextTurn);
                   $CsvSub{$TextTurn2} = $TextName;
                   $CsvBdy{$TextTurn2} = $TextVlue;
               }
            }
        }

        if ($AddPull) {
            foreach (0..$#pull) {
               my $PullType = $pull[$_]{'type'};
               my $PullTurn = $pull[$_]{'turn'};
               my $PullName = $pull[$_]{'name'};

               $PullName =~ s/<br>//ig;

               if ($PullType eq "normal" || $PullType eq "pref") {
                   my $PullVlue = $in{"pull$_"};

                   $AddMail[$PullTurn] = "[ $PullName ] $PullVlue\n";

                   if ($CsvUse) {
                       $PullName  =~ s/<[a-zA-Z][^>]*>//g;
                       $PullName  =~ s/<\/[a-zA-Z][^>]*>//g;
                       $PullTurn2 = sprintf("%03d",$PullTurn);
                       $CsvSub{$PullTurn2} = $PullName;
                       $CsvBdy{$PullTurn2} = $PullVlue;
                   }
               }
               elsif ($PullType eq "date") {
                   my $PullVlue1 = $in{"pull_year$_"};
                   my $PullVlue2 = $in{"pull_month$_"};
                   my $PullVlue3 = $in{"pull_day$_"};

                   $AddMail[$PullTurn] = "[ $PullName ] $PullVlue1年$PullVlue2月$PullVlue3日\n";

                   if ($CsvUse) {
                       $PullName  =~ s/<[a-zA-Z][^>]*>//g;
                       $PullName  =~ s/<\/[a-zA-Z][^>]*>//g;
                       $PullTurn2 = sprintf("%03d",$PullTurn);
                       $CsvSub{$PullTurn2} = $PullName;
                       $CsvBdy{$PullTurn2} = "$PullVlue1年$PullVlue2月$PullVlue3日";
                   }
               }
               elsif ($PullType eq "time") {
                   my $PullVlue4 = $in{"pull_hour$_"};
                   my $PullVlue5 = $in{"pull_min$_"};

                   $AddMail[$PullTurn] = "[ $PullName ] $PullVlue4時$PullVlue5分\n";

                   if ($CsvUse) {
                       $PullName  =~ s/<[a-zA-Z][^>]*>//g;
                       $PullName  =~ s/<\/[a-zA-Z][^>]*>//g;
                       $PullTurn2 = sprintf("%03d",$PullTurn);
                       $CsvSub{$PullTurn2} = $PullName;
                       $CsvBdy{$PullTurn2} = "$PullVlue4時$PullVlue5分";
                   }
               } else {
                   &Err("プルダウンタイプの指定が正しくありません。");
               }
            }
        }

        if ($AddMult) {
            foreach (0..$#mult) {
               my $MultTurn = $mult[$_]{'turn'};
               my $MultName = $mult[$_]{'name'};
               my $MultVlue = $in{"mult$_"};

               $MultName =~ s/<br>//ig;
               $MultVlue =~ s/<>/\//g;

               $AddMail[$MultTurn] = "[ $MultName ] $MultVlue\n";

               if ($CsvUse) {
                   $MultName  =~ s/<[a-zA-Z][^>]*>//g;
                   $MultName  =~ s/<\/[a-zA-Z][^>]*>//g;
                   $MultTurn2 = sprintf("%03d",$MultTurn);
                   $CsvSub{$MultTurn2} = $MultName;
                   $CsvBdy{$MultTurn2} = $MultVlue;
               }
            }
        }

        if ($AddRdio) {
            foreach (0..$#rdio) {
               my $RdioTurn = $rdio[$_]{'turn'};
               my $RdioName = $rdio[$_]{'name'};
               my $RdioVlue = $in{"rdio$_"};

               $RdioName =~ s/<br>//ig;

               $AddMail[$RdioTurn] = "[ $RdioName ] $RdioVlue\n";

               if ($CsvUse) {
                   $RdioName  =~ s/<[a-zA-Z][^>]*>//g;
                   $RdioName  =~ s/<\/[a-zA-Z][^>]*>//g;
                   $RdioTurn2 = sprintf("%03d",$RdioTurn);
                   $CsvSub{$RdioTurn2} = $RdioName;
                   $CsvBdy{$RdioTurn2} = $RdioVlue;
               }
            }
        }

        if ($AddChek) {
            foreach (0..$#chek) {
               my $ChekTurn = $chek[$_]{'turn'};
               my $ChekName = $chek[$_]{'name'};
               my $ChekVlue = $in{"chek$_"};

               $ChekName =~ s/<br>//ig;
               $ChekVlue =~ s/<>/\//g;

               $AddMail[$ChekTurn] = "[ $ChekName ] $ChekVlue\n";

               if ($CsvUse) {
                   $ChekName  =~ s/<[a-zA-Z][^>]*>//g;
                   $ChekName  =~ s/<\/[a-zA-Z][^>]*>//g;
                   $ChekTurn2 = sprintf("%03d",$ChekTurn);
                   $CsvSub{$ChekTurn2} = $ChekName;
                   $CsvBdy{$ChekTurn2} = $ChekVlue;
               }
            }
        }

        if ($AddArea) {
            foreach (0..$#area) {
               my $AreaTurn = $area[$_]{'turn'};
               my $AreaName = $area[$_]{'name'};
               my $AreaVlue = $in{"area$_"};

               $AreaName =~ s/<br>//ig;

               if ($AreaLine) {
                   $AreaVlue = &SplitMessage($AreaVlue);
                   $AreaVlue =~ s/<br>/\r/ig;
               }

               $AddMail[$AreaTurn]  = "[ $AreaName ++++++++++++++++++++++++++++++ ]\n";
               $AddMail[$AreaTurn] .= "$AreaVlue\n";

               if ($CsvUse) {
                   $AreaVlue  =~ s/(\r\n|\r|\n)//g;
                   $AreaName  =~ s/<[a-zA-Z][^>]*>//g;
                   $AreaName  =~ s/<\/[a-zA-Z][^>]*>//g;
                   $AreaTurn2 = sprintf("%03d",$AreaTurn);
                   $CsvSub{$AreaTurn2} = $AreaName;
                   $CsvBdy{$AreaTurn2} = $AreaVlue;
               }
            }
        }

        if ($AddAttc) {
            @attach = ();
            $c = 0;
            foreach (0..$#attc) {
               my $AttcVlue  = $in{"attc$_"};
               my $AttcName  = "$AttcTmp$in{\"attc$_->name\"}";
               my $AttcType  = $in{"attc$_->type"};
               my $AttcTurn  = $attc[$_]{'turn'};
               my $AttcName2 = $attc[$_]{'name'};

               $AttcName = $in{"attc$_\_name"} if $AttcName eq $AttcTmp;
               $AttcType = $in{"attc$_\_type"} if !$AttcType;

               if (-e $AttcVlue) {
                   rename($AttcVlue,$AttcName);
                   $attach[$c] = "$AttcName;$AttcType";
                   $c++;
               }

               if ($CsvUse) {
                   $AttcName2 =~ s/<[a-zA-Z][^>]*>//g;
                   $AttcName2 =~ s/<\/[a-zA-Z][^>]*>//g;
                   $AttcTurn2 = sprintf("%03d",$AttcTurn);
                   $CsvSub{$AttcTurn2} = $AttcName2;
                   $CsvBdy{$AttcTurn2} = $AttcName;
               }
            }
        }

        if ($AreaLine) {
            $GetMessage = &SplitMessage($GetMessage) if $GetMessage =~ /<br>/;
        }

        $NowTime    = stdio::getTime("yyyy/mm/dd (ww2) hh:nn",(3600 * 9) + $TimeDiff);
        $UserAgent  = $ENV{'HTTP_USER_AGENT'};
        $RemoteHost = $ENV{'REMOTE_HOST'};

        if ($RemoteHost eq $RemoteAddr || $RemoteHost eq '') {
            $RemoteHost = gethostbyaddr(pack("C4",split(/\./,$RemoteAddr)),2);
            $RemoteHost = $RemoteAddr if $RemoteHost eq '';
        }

        if ($GetEmail eq $MailAddr[0]) {
            $BodyEmail = "";
        } else {
            $BodyEmail = $GetEmail;
        }

        $AddMail[$SubNum]  = "[ $SubTtl ] $GetSubject\n";
        $AddMail[$NameNum] = "[ $NameColumn ] $GetName\n";

        if ($KanaFix) {
            $AddMail[$KanaNum] = "[ $KanaColumn ] $GetKana\n";
        }

        $AddMail[$MailNum] = "[ $MailColumn ] $BodyEmail\n";

        $AddMail[$MessNum]  = "[ $MessColumn ++++++++++++++++++++++++++++++ ]\n";
        $AddMail[$MessNum] .= "$GetMessage\n";


        $MailBody  = "[ Date ] $NowTime\n";
        $MailBody .= "[ RemoteHost ] $RemoteHost\n";
        $MailBody .= "[ RemoteAddr ] $RemoteAddr\n";
        $MailBody .= "[ HttpUserAgent ] $UserAgent\n";

        foreach (@AddMail) {
           $MailBody .= $_;
        }

        $MailBody .= "\n$ScriptVer\n";

        if ($HeaderFrom) {
            $SendFrom = "$GetName <$GetEmail>";
        } else {
            $SendFrom = $GetEmail;
        }

        %header = ('To'      => "$MailAddr[0]",
                   'From'    => "$SendFrom",
                   'Subject' => "$GetSubject",
                  );

        $Bcc = "";
        foreach (1..$#MailAddr) {
           $Bcc .= "$MailAddr[$_],";
        }

        if ($GetCopy eq "yes") {
            $Bcc .= "$GetEmail";
        }

        $Bcc =~ s/\,$//;

        $header{'Bcc'} = $Bcc;

        if (!$AttcEnc) {
            $encode = 'base64encode';
        } else {
            $encode = 'uuencode';
        }

        if (!stdio::sendmail($SendMail,\%header,$MailBody,0,$encode,@attach)) {
            &Err("メールの送信に失敗しました。");
        }

        unlink($CacheDir."/".$GetCacheId.".cache");

        if ($CsvUse) {
            $SubTtl     =~ s/<[a-zA-Z][^>]*>//g;
            $SubTtl     =~ s/<\/[a-zA-Z][^>]*>//g;
            $NameColumn =~ s/<[a-zA-Z][^>]*>//g;
            $NameColumn =~ s/<\/[a-zA-Z][^>]*>//g;
            $MailColumn =~ s/<[a-zA-Z][^>]*>//g;
            $MailColumn =~ s/<\/[a-zA-Z][^>]*>//g;
            $MessColumn =~ s/<[a-zA-Z][^>]*>//g;
            $MessColumn =~ s/<\/[a-zA-Z][^>]*>//g;
            $GetMessage =~ s/(\r\n|\r|\n)//g;

            $UserAgent  =~ s/\,/\，/g;
            $GetSubject =~ s/\,/\，/g;
            $GetName    =~ s/\,/\，/g;
            $GetKana    =~ s/\,/\，/g;
            $GetMessage =~ s/\,/\，/g;

            if ($KanaFix) {
                $KanaColumn =~ s/<[a-zA-Z][^>]*>//g;
                $KanaColumn =~ s/<\/[a-zA-Z][^>]*>//g;

                $CsvHead = "Date,RemoteHost,RemoteAddr,HttpUserAgent,$SubTtl,$NameColumn,$KanaColumn,$MailColumn,";
            } else {
                $CsvHead = "Date,RemoteHost,RemoteAddr,HttpUserAgent,$SubTtl,$NameColumn,$MailColumn,";
            }

            foreach (sort {$a <=> $b} keys %CsvSub) {
               $CsvHead .= "$CsvSub{$_},";
            }

            $CsvHead .= "$MessColumn\r\n";

            if ($KanaFix) {
                $CsvMain = "$NowTime,$RemoteHost,$RemoteAddr,$UserAgent,$GetSubject,$GetName,$GetKana,$BodyEmail,";
            } else {
                $CsvMain = "$NowTime,$RemoteHost,$RemoteAddr,$UserAgent,$GetSubject,$GetName,$BodyEmail,";
            }

            foreach (sort {$a <=> $b} keys %CsvBdy) {
               $CsvBdy{$_} =~ s/\,/\，/g;
               $CsvMain .= "$CsvBdy{$_},";
            }

            $CsvMain .= "$GetMessage\r\n";

            $CsvFlag = 1;

            if (!-e $CsvFile) {
                $CsvFlag = 0;
            }

            if (!open(OUT,">>$CsvFile")) {
                &Err("$CsvFileのオープンに失敗しました。");
            }

            if (!$CsvFlag) {
                print OUT $CsvHead;
            }

            print OUT $CsvMain;

            close(OUT);
        }

        if ($AddAttc) {
            opendir(IN,$AttcTmp);
            @TempFiles = readdir(IN);
            closedir(IN);

            $NowLimit = time - 60;
            foreach (@TempFiles) {
               if ($_ ne '.' && $_ ne '..') {
                   $Unlinkfile = "$AttcTmp$_";
                   $LastLimit  = (stat($Unlinkfile))[9];

                   if ($LastLimit < $NowLimit) {
                       unlink($Unlinkfile);
                   }
               }
            }
        }

        &Header($EndtlName);

        $EndtlName = "<img src=\"$EndtlImage\" border=\"0\">" if $EndtlImage;

        print "<div align=\"center\">\n";
        print "<table width=\"100%\" height=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
        print "<tr>\n";
        print "<td valign=\"middle\" align=\"center\">\n";
        print "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
        print "<tr>\n";
        print "<td><img src=\"$ImageDir/u_l.gif\"></td>\n";
        print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
        print "<td><img src=\"$ImageDir/u_r.gif\"></td>\n";
        print "</tr>\n";
        print "<tr>\n";
        print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
        print "<td bgcolor=\"$FmbgColor\" valign=\"middle\" align=\"center\">\n";
        print "<table border=\"$FmbdSize\" bordercolor=\"$FmbdColor\" cellspacing=\"0\" cellpadding=\"3\" width=\"$FmtbWidth\">\n";
        print "<tr valign=\"middle\" align=\"center\">\n";
        print "<td nowrap>\n";
        print "<p><big>$EndtlName</big></p><p>$EndcmmName</p>\n";

        if ($RetType == 1) {
            print "<input type=\"button\" value=\"$RetName\" onClick=\"location='$ReturnUrl'\" class=\"ipt\">\n";
        }
        elsif ($RetType == 2) {
            print "<input type=\"button\" value=\"$RetName\" onClick=\"window.close()\" class=\"ipt\">\n";
        }
        elsif ($RetType == 3) {
            print "<a href=\"$ReturnUrl\" target=\"$RetTarget\" style=\"color:$FmftColor;background-color:$FmbgColor;text-decoration:underline;\">$RetName</a>\n";
        }

        print "</td>\n";
        print "</tr>\n";
        print "</table>\n";
        print "</td>\n";
        print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
        print "</tr>\n";
        print "<tr>\n";
        print "<td><img src=\"$ImageDir/l_l.gif\"></td>\n";
        print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
        print "<td><img src=\"$ImageDir/l_r.gif\"></td>\n";
        print "</tr>\n";
        print "</table>\n";

        &Footer;

        print "</td>\n";
        print "</tr>\n";
        print "</table>\n";
        print "</div>\n";
        print "</body>\n";
        print "</html>\n";

    } else {

        $len = 0;
        foreach (keys(%in)) {
           $in{$_} =~ s/<br \/>/<br>/g;

           $len += length($in{$_});
        }

        if ($MaxLength < $len) {
            &Err("最大投稿文字数($MaxLength byte)を超えています。(現在$len byte)");
        }

        $GetSubject = $in{'GetSubject'};
        $GetName    = $in{'GetName'};
        $GetEmail   = $in{'GetEmail'};
        $GetMessage = $in{'GetMessage'};

        @AddChk = ();

        if ($AddText) {
            foreach (0..$#text) {
               my $TextTurn = $text[$_]{'turn'};
               my $TextName = $text[$_]{'name'};
               my $TextVlue = $in{"text$_"};
               my $TextView = $in{"text$_"};

               $TextView = "　" if $TextView eq "";

               $AddChk[$TextTurn]  = "<tr valign=\"middle\">\n";
               $AddChk[$TextTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$TextName</td>\n";
               $AddChk[$TextTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"text$_\" value=\"$TextVlue\">$TextView</td>\n";
               $AddChk[$TextTurn] .= "</tr>\n";
            }
        }

        if ($AddPull) {
            foreach (0..$#pull) {
               my $PullType = $pull[$_]{'type'};
               my $PullTurn = $pull[$_]{'turn'};
               my $PullName = $pull[$_]{'name'};

               $AddChk[$PullTurn]  = "<tr valign=\"middle\">\n";
               $AddChk[$PullTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$PullName</td>\n";

               if ($PullType eq "normal" || $PullType eq "pref") {
                   my $PullVlue = $in{"pull$_"};
                   my $PullView = $in{"pull$_"};

                   $PullView = "　" if $PullView eq "";

                   $AddChk[$PullTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"pull$_\" value=\"$PullVlue\">$PullView</td>\n";
               }
               elsif ($PullType eq "date") {
                   my $PullVlue1 = $in{"pull_year$_"};
                   my $PullVlue2 = $in{"pull_month$_"};
                   my $PullVlue3 = $in{"pull_day$_"};
                   my $PullView1 = $in{"pull_year$_"};
                   my $PullView2 = $in{"pull_month$_"};
                   my $PullView3 = $in{"pull_day$_"};

                   $PullView1 = "　" if $PullView1 eq "";
                   $PullView2 = "　" if $PullView2 eq "";
                   $PullView3 = "　" if $PullView3 eq "";

                   $AddChk[$PullTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"pull_year$_\" value=\"$PullVlue1\"><input type=\"hidden\" name=\"pull_month$_\" value=\"$PullVlue2\"><input type=\"hidden\" name=\"pull_day$_\" value=\"$PullVlue3\">$PullView1年$PullView2月$PullView3日</td>\n";
               }
               elsif ($PullType eq "time") {
                   my $PullVlue4 = $in{"pull_hour$_"};
                   my $PullVlue5 = $in{"pull_min$_"};
                   my $PullView4 = $in{"pull_hour$_"};
                   my $PullView5 = $in{"pull_min$_"};

                   $PullView4 = "　" if $PullView4 eq "";
                   $PullView5 = "　" if $PullView5 eq "";

                   $AddChk[$PullTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"pull_hour$_\" value=\"$PullVlue4\"><input type=\"hidden\" name=\"pull_min$_\" value=\"$PullVlue5\">$PullView4時$PullView5分</td>\n";

               } else {
                   &Err("プルダウンタイプが正しくありません。");
               }
               
               $AddChk[$PullTurn] .= "</tr>\n";
            }
        }

        if ($AddMult) {
            foreach (0..$#mult) {
               my $MultTurn = $mult[$_]{'turn'};
               my $MultName = $mult[$_]{'name'};
               my $MultVlue = $in{"mult$_"};
               my $MultView = $in{"mult$_"};

               $MultVlue =~ s/<>/\//g;
               $MultView =~ s/<>/\//g;

               $MultView = "　" if $MultView eq "";

               $AddChk[$MultTurn]  = "<tr valign=\"middle\">\n";
               $AddChk[$MultTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$MultName</td>\n";
               $AddChk[$MultTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"mult$_\" value=\"$MultVlue\">$MultView</td>\n";
               $AddChk[$MultTurn] .= "</tr>\n";
            }
        }

        if ($AddRdio) {
            foreach (0..$#rdio) {
               my $RdioTurn = $rdio[$_]{'turn'};
               my $RdioName = $rdio[$_]{'name'};
               my $RdioVlue = $in{"rdio$_"};
               my $RdioView = $in{"rdio$_"};

               $RdioView = "　" if $RdioView eq "";

               $AddChk[$RdioTurn]  = "<tr valign=\"middle\">\n";
               $AddChk[$RdioTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$RdioName</td>\n";
               $AddChk[$RdioTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"rdio$_\" value=\"$RdioVlue\">$RdioView</td>\n";
               $AddChk[$RdioTurn] .= "</tr>\n";
            }
        }

        if ($AddChek) {
            foreach (0..$#chek) {
               my $ChekTurn = $chek[$_]{'turn'};
               my $ChekName = $chek[$_]{'name'};
               my $ChekVlue = $in{"chek$_"};
               my $ChekView = $in{"chek$_"};

               $ChekVlue =~ s/<>/\//g;
               $ChekView =~ s/<>/\//g;

               $ChekView = "　" if $ChekView eq "";

               $AddChk[$ChekTurn]  = "<tr valign=\"middle\">\n";
               $AddChk[$ChekTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$ChekName</td>\n";
               $AddChk[$ChekTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"chek$_\" value=\"$ChekVlue\">$ChekView</td>\n";
               $AddChk[$ChekTurn] .= "</tr>\n";
            }
        }

        if ($AddArea) {
            foreach (0..$#area) {
               my $AreaTurn = $area[$_]{'turn'};
               my $AreaName = $area[$_]{'name'};
               my $AreaVlue = $in{"area$_"};
               my $AreaView = $in{"area$_"};

               if ($AreaLine) {
                   $AreaVlue = &SplitMessage($AreaVlue);
                   $AreaView = &SplitMessage($AreaView);
               }

               $AreaView = "　" if $AreaView eq "";

               $AddChk[$AreaTurn]  = "<tr valign=\"middle\">\n";
               $AddChk[$AreaTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$AreaName</td>\n";
               $AddChk[$AreaTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"area$_\" value=\"$AreaVlue\">$AreaView</td>\n";
               $AddChk[$AreaTurn] .= "</tr>\n";
            }
        }

        if ($AddAttc) {
            foreach (0..$#attc) {
               my $AttcTurn = $attc[$_]{'turn'};
               my $AttcName = $attc[$_]{'name'};
               my $AttcVlue = $in{"attc$_"};
               my $AttcFile = $in{"attc$_->name"};
               my $AttcType = $in{"attc$_->type"};

               if ($AttcFile eq "") {
                   $AttcView = "　";
               } else {
                   $AttcView = $AttcFile;
               }

               $AddChk[$AttcTurn]  = "<tr valign=\"middle\">\n";
               $AddChk[$AttcTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$AttcName</td>\n";
               $AddChk[$AttcTurn] .= "<td width=\"80%\"><input type=\"hidden\" name=\"attc$_\" value=\"$AttcVlue\"><input type=\"hidden\" name=\"attc$_\_name\" value=\"$AttcTmp$AttcFile\"><input type=\"hidden\" name=\"attc$_\_type\" value=\"$AttcType\">$AttcView</td>\n";
               $AddChk[$AttcTurn] .= "</tr>\n";
            }
        }

        $SubjectView = $in{'GetSubject'};
        $NameView    = $in{'GetName'};
        $KanaView    = $in{'GetKana'};
        $EmailView   = $in{'GetEmail'};
        $MessageView = $in{'GetMessage'};

        if ($AreaLine) {
            $GetMessage  = &SplitMessage($GetMessage);
            $MessageView = &SplitMessage($MessageView);
        }

        $SubjectView = "　" if $SubjectView eq "";
        $NameView    = "　" if $NameView eq "";
        $KanaView    = "　" if $KanaView eq "";
        $EmailView   = "　" if $EmailView eq "";
        $MessageView = "　" if $MessageView eq "";

        if ($SubFix) {
            $AddChk[$SubNum]  = "<tr valign=\"middle\">\n";
            $AddChk[$SubNum] .= "<td align=\"center\" width=\"20%\" nowrap>$SubTtl</td>\n";
            $AddChk[$SubNum] .= "<td width=\"80%\"><input type=\"hidden\" name=\"GetSubject\" value=\"$GetSubject\">$SubjectView</td>\n";
            $AddChk[$SubNum] .= "</tr>\n";
        }

        $AddChk[$NameNum]  = "<tr valign=\"middle\">\n";
        $AddChk[$NameNum] .= "<td align=\"center\" width=\"20%\" nowrap>$NameColumn</td>\n";
        $AddChk[$NameNum] .= "<td width=\"80%\"><input type=\"hidden\" name=\"GetName\" value=\"$GetName\">$NameView</td>\n";
        $AddChk[$NameNum] .= "</tr>\n";


        if ($KanaFix) {
            $AddChk[$KanaNum]  = "<tr valign=\"middle\">\n";
            $AddChk[$KanaNum] .= "<td align=\"center\" width=\"20%\" nowrap>$KanaColumn</td>\n";
            $AddChk[$KanaNum] .= "<td width=\"80%\"><input type=\"hidden\" name=\"GetKana\" value=\"$GetKana\">$KanaView</td>\n";
            $AddChk[$KanaNum] .= "</tr>\n";
        }

        $AddChk[$MailNum]  = "<tr valign=\"middle\">\n";
        $AddChk[$MailNum] .= "<td align=\"center\" width=\"20%\" nowrap>$MailColumn</td>\n";
        $AddChk[$MailNum] .= "<td width=\"80%\"><input type=\"hidden\" name=\"GetEmail\" value=\"$GetEmail\">$EmailView</td>\n";
        $AddChk[$MailNum] .= "</tr>\n";

        $AddChk[$MessNum]  = "<tr valign=\"middle\">\n";
        $AddChk[$MessNum] .= "<td align=\"center\" width=\"20%\" nowrap>$MessColumn</td>\n";
        $AddChk[$MessNum] .= "<td width=\"80%\"><input type=\"hidden\" name=\"GetMessage\" value=\"$GetMessage\">$MessageView</td>\n";
        $AddChk[$MessNum] .= "</tr>\n";

        &Header($ChktlName);

        $ChktlName = "<img src=\"$ChktlImage\" border=\"0\">" if $ChktlImage;

        print "<div align=\"center\">\n";
        print "<p class=\"ttl\">$ChktlName</p>\n";
        print "<p class=\"com\">$ChkcmmName</p>\n";
        print "<form action=\"$MyScript\" method=\"POST\">\n";
        print "<input type=\"hidden\" name=\"GetMode\" value=\"Send\">\n";
        print "<input type=\"hidden\" name=\"GetCheck\" value=\"no\">\n";
        print "<input type=\"hidden\" name=\"GetCacheId\" value=\"$GetCacheId\">\n";

        if ($CopyFix) {
            print "<input type=\"hidden\" name=\"GetCopy\" value=\"$GetCopy\">\n";
        }

        if ($MailCheck) {
            print "<input type=\"hidden\" name=\"GetEmail2\" value=\"$GetEmail2\">\n";
        }
        print "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
        print "<tr>\n";
        print "<td><img src=\"$ImageDir/u_l.gif\"></td>\n";
        print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
        print "<td><img src=\"$ImageDir/u_r.gif\"></td>\n";
        print "</tr>\n";
        print "<tr>\n";
        print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
        print "<td bgcolor=\"$FmbgColor\" valign=\"middle\" align=\"center\">\n";
        print "<table border=\"$FmbdSize\" bordercolor=\"$FmbdColor\" cellspacing=\"0\" cellpadding=\"3\" width=\"$FmtbWidth\">\n";

        print @AddChk;

        print "<tr valign=\"middle\">\n";
        print "<td align=\"center\" colspan=\"2\" nowrap>\n";
        print "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
        print "<tr valign=\"middle\" align=\"center\">\n";
        print "<td width=\"40%\">\n";
        print "<input type=\"submit\" value=\"$ChksubName\" class=\"ipt\">\n";
        print "</td>\n";
        print "<td width=\"20%\">\n";
        print "</td>\n";
        print "<td width=\"40%\">\n";

        if ($BackBtnType) {
            print "<input type=\"submit\" name=\"Return\" value=\"$ChkbntName\" class=\"ipt\">\n";
        } else {
            print "<input type=\"button\" value=\"$ChkbntName\" onClick=\"history.back()\" class=\"ipt\">\n";
        }

        print "</td>\n";
        print "<tr>\n";
        print "</table>\n";
        print "</td>\n";
        print "</tr>\n";
        print "</table>\n";
        print "</td>\n";
        print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
        print "</tr>\n";
        print "<tr>\n";
        print "<td><img src=\"$ImageDir/l_l.gif\"></td>\n";
        print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
        print "<td><img src=\"$ImageDir/l_r.gif\"></td>\n";
        print "</tr>\n";
        print "</table>\n";

        &Footer;

        print "</form>\n";
        print "</div>\n";
        print "</body>\n";
        print "</html>\n";
    }

} else {
    &ReadCache($GetCacheId);

    @Plus = ();

    if ($AddText) {
        foreach (0..$#text) {
           my $TextTurn = $text[$_]{'turn'};
           my $TextName = $text[$_]{'name'};
           my $TextVlue = $text[$_]{'vlue'};
           my $TextSize = $text[$_]{'size'};

           $TextVlue = $CacheData{"text$_"} if $CacheData{"text$_"};

           $Plus[$TextTurn]  = "<tr valign=\"middle\">\n";
           $Plus[$TextTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$TextName</td>\n";
           $Plus[$TextTurn] .= "<td width=\"80%\" nowrap><input type=\"text\" name=\"text$_\" size=\"$TextSize\" value=\"$TextVlue\" class=\"ipt\"></td>\n";
           $Plus[$TextTurn] .= "</tr>\n";
        }
    }

    if ($AddPull) {
        foreach (0..$#pull) {
           my $PullType = $pull[$_]{'type'};
           my $PullTurn = $pull[$_]{'turn'};
           my $PullName = $pull[$_]{'name'};
           my $PullVlue = $pull[$_]{'vlue'};
           my $PullSize = $pull[$_]{'size'};

           $Plus[$PullTurn]  = "<tr valign=\"middle\">\n";
           $Plus[$PullTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$PullName</td>\n";
           $Plus[$PullTurn] .= "<td width=\"80%\" nowrap>\n";

           if ($PullType eq "normal") {
               my @PullList = split(/\,/,$PullVlue);

               $Plus[$PullTurn] .= "<select name=\"pull$_\" size=\"$PullSize\" class=\"ipt\">\n";

               foreach $p (@PullList) {
                  if ($CacheData{"pull$_"} eq $p) {
                      $Plus[$PullTurn] .= "<option value=\"$p\" selected>$p\n";
                  } else {
                      $Plus[$PullTurn] .= "<option value=\"$p\">$p\n";
                  }
               }

               $Plus[$PullTurn] .= "</select>\n";
           }
           elsif ($PullType eq "date") {
               my @PullList = split(/\-/,$PullVlue);

               $Plus[$PullTurn] .= "<select name=\"pull_year$_\" size=\"$PullSize\" class=\"ipt\">\n";

               foreach $p ($PullList[0]..$PullList[1]) {
                  if ($CacheData{"pull_year$_"} eq $p) {
                      $Plus[$PullTurn] .= "<option value=\"$p\" selected>$p\n";
                  } else {
                      $Plus[$PullTurn] .= "<option value=\"$p\">$p\n";
                  }
               }

               $Plus[$PullTurn] .= "</select>\n";
               $Plus[$PullTurn] .= "年\n";

               $Plus[$PullTurn] .= "<select name=\"pull_month$_\" size=\"$PullSize\" class=\"ipt\">\n";

               foreach $p (1..12) {
                  if ($CacheData{"pull_month$_"} eq $p) {
                      $Plus[$PullTurn] .= "<option value=\"$p\" selected>$p\n";
                  } else {
                      $Plus[$PullTurn] .= "<option value=\"$p\">$p\n";
                  }
               }

               $Plus[$PullTurn] .= "</select>\n";
               $Plus[$PullTurn] .= "月\n";

               $Plus[$PullTurn] .= "<select name=\"pull_day$_\" size=\"$PullSize\" class=\"ipt\">\n";

               foreach $p (1..31) {
                  if ($CacheData{"pull_day$_"} eq $p) {
                      $Plus[$PullTurn] .= "<option value=\"$p\" selected>$p\n";
                  } else {
                      $Plus[$PullTurn] .= "<option value=\"$p\">$p\n";
                  }
               }

               $Plus[$PullTurn] .= "</select>\n";
               $Plus[$PullTurn] .= "日\n";
           }
           elsif ($PullType eq "time") {
               $Plus[$PullTurn] .= "<select name=\"pull_hour$_\" size=\"$PullSize\" class=\"ipt\">\n";

               foreach $p (0..23) {
                  $p = sprintf("%02d",$p);

                  if ($CacheData{"pull_hour$_"} eq $p) {
                      $Plus[$PullTurn] .= "<option value=\"$p\" selected>$p\n";
                  } else {
                      $Plus[$PullTurn] .= "<option value=\"$p\">$p\n";
                  }
               }

               $Plus[$PullTurn] .= "</select>\n";
               $Plus[$PullTurn] .= "時\n";

               $Plus[$PullTurn] .= "<select name=\"pull_min$_\" size=\"$PullSize\" class=\"ipt\">\n";

               foreach $p (00..59) {
                  $p = sprintf("%02d",$p);

                  if ($CacheData{"pull_min$_"} eq $p) {
                      $Plus[$PullTurn] .= "<option value=\"$p\" selected>$p\n";
                  } else {
                      $Plus[$PullTurn] .= "<option value=\"$p\">$p\n";
                  }
               }

               $Plus[$PullTurn] .= "</select>\n";
               $Plus[$PullTurn] .= "分\n";
           }
           elsif ($PullType eq "pref") {
               my @PullList = ('北海道','青森県','岩手県','秋田県','宮城県','山形県','福島県','茨城県','栃木県','千葉県','埼玉県','東京都','神奈川県','群馬県','新潟県','長野県','岐阜県','山梨県','静岡県','愛知県','富山県','石川県','福井県','京都府','滋賀県','三重県','奈良県','和歌山県','大阪府','兵庫県','鳥取県','島根県','岡山県','広島県','山口県','徳島県','香川県','愛媛県','高知県','福岡県','大分県','佐賀県','長崎県','熊本県','宮崎県','鹿児島県','沖縄県','その他');

               $Plus[$PullTurn] .= "<select name=\"pull$_\" size=\"$PullSize\" class=\"ipt\">\n";

               foreach $p (@PullList) {
                  if ($CacheData{"pull$_"} eq $p) {
                      $Plus[$PullTurn] .= "<option value=\"$p\" selected>$p\n";
                  } else {
                      $Plus[$PullTurn] .= "<option value=\"$p\">$p\n";
                  }
               }

               $Plus[$PullTurn] .= "</select>\n";
           } else {
               &Err("プルダウンタイプが正しくありません。");
           }

           $Plus[$PullTurn] .= "</td>\n";
           $Plus[$PullTurn] .= "</tr>\n";
        }
    }

    if ($AddMult) {
        foreach (0..$#mult) {
           my $MultTurn = $mult[$_]{'turn'};
           my $MultName = $mult[$_]{'name'};
           my $MultVlue = $mult[$_]{'vlue'};
           my $MultSize = $mult[$_]{'size'};

           my @MultList = split(/\,/,$MultVlue);
           $CacheData{"mult$_"} = "<>".$CacheData{"mult$_"}."<>";

           $Plus[$MultTurn]  = "<tr valign=\"middle\">\n";
           $Plus[$MultTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$MultName</td>\n";
           $Plus[$MultTurn] .= "<td width=\"80%\" nowrap>\n";
           $Plus[$MultTurn] .= "<select name=\"mult$_\" size=\"$MultSize\" multiple class=\"ipt\">\n";

           foreach $m (@MultList) {
              if (index($CacheData{"mult$_"},"<>".$m."<>") >= 0) {
                  $Plus[$MultTurn] .= "<option value=\"$m\" selected>$m\n";
              } else {
                  $Plus[$MultTurn] .= "<option value=\"$m\">$m\n";
              }
           }

           $Plus[$MultTurn] .= "</select>\n";
           $Plus[$MultTurn] .= "</td>\n";
           $Plus[$MultTurn] .= "</tr>\n";
        }
    }

    if ($AddRdio) {
        foreach $rd (0..$#rdio) {
           my $RdioTurn = $rdio[$rd]{'turn'};
           my $RdioName = $rdio[$rd]{'name'};
           my $RdioVlue = $rdio[$rd]{'vlue'};

           my @RdioList = split(/\,/,$RdioVlue);

           $Plus[$RdioTurn]  = "<tr valign=\"middle\">\n";
           $Plus[$RdioTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$RdioName</td>\n";
           $Plus[$RdioTurn] .= "<td width=\"80%\" nowrap>\n";

           foreach $r (@RdioList) {
              if ($r eq '<br>') {
                  $Plus[$RdioTurn] .= "$r\n";
              } else {
                  if ($CacheData{"rdio$rd"} eq $r) {
                      $Plus[$RdioTurn] .= "<input type=\"radio\" name=\"rdio$rd\" value=\"$r\" checked>$r\n";
                  } else {
                      $Plus[$RdioTurn] .= "<input type=\"radio\" name=\"rdio$rd\" value=\"$r\">$r\n";
                  }
              }
           }

           $Plus[$RdioTurn] .= "</td>\n";
           $Plus[$RdioTurn] .= "</tr>\n";
        }
    }

    if ($AddChek) {
        foreach $ck (0..$#chek) {
           my $ChekTurn = $chek[$ck]{'turn'};
           my $ChekName = $chek[$ck]{'name'};
           my $ChekVlue = $chek[$ck]{'vlue'};

           my @ChekList = split(/\,/,$ChekVlue);
           $CacheData{"chek$ck"} = "<>".$CacheData{"chek$ck"}."<>";

           $Plus[$ChekTurn]  = "<tr valign=\"middle\">\n";
           $Plus[$ChekTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$ChekName</td>\n";
           $Plus[$ChekTurn] .= "<td width=\"80%\" nowrap>\n";

           foreach $c (@ChekList) {
              if ($c eq '<br>') {
                  $Plus[$ChekTurn] .= "$c\n";
              } else {
                  if (index($CacheData{"chek$ck"},"<>".$c."<>") >= 0) {
                      $Plus[$ChekTurn] .= "<input type=\"checkbox\" name=\"chek$ck\" value=\"$c\" checked>$c\n";
                  } else {
                      $Plus[$ChekTurn] .= "<input type=\"checkbox\" name=\"chek$ck\" value=\"$c\">$c\n";
                  }
              }
           }

           $Plus[$ChekTurn] .= "</td>\n";
           $Plus[$ChekTurn] .= "</tr>\n";
        }
    }

    if ($AddArea) {
        foreach (0..$#area) {
           my $AreaTurn = $area[$_]{'turn'};
           my $AreaName = $area[$_]{'name'};
           my $AreaVlue = $area[$_]{'vlue'};
           my $AreaSize = $area[$_]{'size'};

           my @AreaList = split(/\,/,$AreaSize);

           $AreaVlue =~ s/<br>/\r\n/g;
           $AreaVlue = $CacheData{"area$_"} if $CacheData{"area$_"} ne "";

           $Plus[$AreaTurn]  = "<tr valign=\"middle\">\n";
           $Plus[$AreaTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$AreaName</td>\n";
           $Plus[$AreaTurn] .= "<td width=\"80%\" nowrap>\n";
           $Plus[$AreaTurn] .= "<textarea name=\"area$_\" rows=\"$AreaList[0]\" cols=\"$AreaList[1]\" wrap=\"soft\" class=\"ipt\">$AreaVlue</textarea>\n";
           $Plus[$AreaTurn] .= "</td>\n";
           $Plus[$AreaTurn] .= "</tr>\n";
        }
    }

    if ($AddAttc) {
        foreach (0..$#attc) {
           my $AttcTurn = $attc[$_]{'turn'};
           my $AttcName = $attc[$_]{'name'};
           my $AttcSize = $attc[$_]{'size'};

           $Plus[$AttcTurn]  = "<tr valign=\"middle\">\n";
           $Plus[$AttcTurn] .= "<td align=\"center\" width=\"20%\" nowrap>$AttcName</td>\n";
           $Plus[$AttcTurn] .= "<td width=\"80%\" nowrap>\n";
           $Plus[$AttcTurn] .= "<input type=\"file\" name=\"attc$_\" size=\"$AttcSize\" class=\"ipt\">\n";
           $Plus[$AttcTurn] .= "</td>\n";
           $Plus[$AttcTurn] .= "</tr>\n";
        }
    }

    if ($SubFix) {
        $SubDef = $CacheData{"GetSubject"} if $CacheData{"GetSubject"} ne "";

        $Plus[$SubNum]  = "<tr valign=\"middle\">\n";
        $Plus[$SubNum] .= "<td align=\"center\" width=\"20%\" nowrap>$SubTtl</td>\n";
        $Plus[$SubNum] .= "<td width=\"80%\" nowrap><input type=\"text\" name=\"GetSubject\" size=\"$SubSize\" value=\"$SubDef\" class=\"ipt\"></td>\n";
        $Plus[$SubNum] .= "</tr>\n";
    }

    $Plus[$NameNum]  = "<tr valign=\"middle\">\n";
    $Plus[$NameNum] .= "<td align=\"center\" width=\"20%\" nowrap>$NameColumn</td>\n";
    $Plus[$NameNum] .= "<td width=\"80%\" nowrap><input type=\"text\" name=\"GetName\" size=\"$NameSize\" value=\"".$CacheData{"GetName"}."\" class=\"ipt\"></td>\n";
    $Plus[$NameNum] .= "</tr>\n";

    if ($KanaFix) {
        $Plus[$KanaNum]  = "<tr valign=\"middle\">\n";
        $Plus[$KanaNum] .= "<td align=\"center\" width=\"20%\" nowrap>$KanaColumn</td>\n";
        $Plus[$KanaNum] .= "<td width=\"80%\" nowrap><input type=\"text\" name=\"GetKana\" size=\"$KanaSize\" value=\"".$CacheData{"GetKana"}."\" class=\"ipt\"></td>\n";
        $Plus[$KanaNum] .= "</tr>\n";
    }

    $Plus[$MailNum]  = "<tr valign=\"middle\">\n";
    $Plus[$MailNum] .= "<td align=\"center\" width=\"20%\" nowrap>$MailColumn</td>\n";
    $Plus[$MailNum] .= "<td width=\"80%\" nowrap><input type=\"text\" name=\"GetEmail\" size=\"$MailSize\" value=\"".$CacheData{"GetEmail"}."\" class=\"ipt\"></td>\n";
    $Plus[$MailNum] .= "</tr>\n";

    if ($MailCheck) {
        $Plus[$MailNum2]  = "<tr valign=\"middle\">\n";
        $Plus[$MailNum2] .= "<td align=\"center\" width=\"20%\" nowrap>$MailColumn2</td>\n";
        $Plus[$MailNum2] .= "<td width=\"80%\" nowrap><input type=\"text\" name=\"GetEmail2\" size=\"$MailSize2\" value=\"".$CacheData{"GetEmail2"}."\" class=\"ipt\"></td>\n";
        $Plus[$MailNum2] .= "</tr>\n";
    }

    $Plus[$MessNum]  = "<tr valign=\"middle\">\n";
    $Plus[$MessNum] .= "<td align=\"center\" width=\"20%\" nowrap>$MessColumn</td>\n";
    $Plus[$MessNum] .= "<td width=\"80%\" nowrap><textarea name=\"GetMessage\" rows=\"$MessRows\" cols=\"$MessCols\" wrap=\"soft\" class=\"ipt\">".$CacheData{"GetMessage"}."</textarea></td>\n";
    $Plus[$MessNum] .= "</tr>\n";

    &Header($TitleName);

    $TitleName = "<img src=\"$TitleImage\" border=\"0\">" if $TitleImage;

    print "<div align=\"center\">\n";
    print "<p class=\"ttl\">$TitleName</p>\n";
    print "<p class=\"com\">$CommName</p>\n";

    if ($AddAttc) {
        print "<form action=\"$MyScript\" method=\"POST\" enctype=\"multipart/form-data\">\n";
    } else {
        print "<form action=\"$MyScript\" method=\"POST\">\n";
    }

    print "<input type=\"hidden\" name=\"GetMode\" value=\"Send\">\n";
    print "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
    print "<tr>\n";
    print "<td><img src=\"$ImageDir/u_l.gif\"></td>\n";
    print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
    print "<td><img src=\"$ImageDir/u_r.gif\"></td>\n";
    print "</tr>\n";
    print "<tr>\n";
    print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
    print "<td bgcolor=\"$FmbgColor\" valign=\"middle\" align=\"center\">\n";
    print "<table border=\"$FmbdSize\" bordercolor=\"$FmbdColor\" cellspacing=\"0\" cellpadding=\"3\" width=\"$FmtbWidth\">\n";

    print @Plus;

    print "<tr valign=\"middle\">\n";
    print "<td align=\"left\" colspan=\"2\" nowrap>\n";
    print "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
    print "<tr valign=\"middle\">\n";
    print "<td width=\"30%\" nowrap>\n";

    if ($GetReturn ne "") {
        if ($CacheData{"GetCheck"} eq "yes") {
            print "<input type=\"checkbox\" name=\"GetCheck\" value=\"yes\" checked>$BeforeName\n";
        } else {
            print "<input type=\"checkbox\" name=\"GetCheck\" value=\"yes\">$BeforeName\n";
        }
    } else {
        if (!$BeforeChk) {
            print "<input type=\"checkbox\" name=\"GetCheck\" value=\"yes\">$BeforeName\n";
        } else {
            print "<input type=\"checkbox\" name=\"GetCheck\" value=\"yes\" checked>$BeforeName\n";
        }
    }

    if ($CopyFix) {
        print "<br>\n";

        if ($GetReturn ne "") {
            if ($CacheData{"GetCopy"} eq "yes") {
                print "<input type=\"checkbox\" name=\"GetCopy\" value=\"yes\" checked>$CopyName\n";
            } else {
                print "<input type=\"checkbox\" name=\"GetCopy\" value=\"yes\">$CopyName\n";
            }
        } else {
            if (!$CopyChk) {
                print "<input type=\"checkbox\" name=\"GetCopy\" value=\"yes\">$CopyName\n";
            } else {
                print "<input type=\"checkbox\" name=\"GetCopy\" value=\"yes\" checked>$CopyName\n";
            }
        }
    }

    print "</td>\n";
    print "<td width=\"10%\" nowrap>\n";
    print "</td>\n";
    print "<td width=\"20%\" nowrap>\n";
    print "<input type=\"submit\" value=\"$SubmitName\" class=\"ipt\">\n";
    print "</td>\n";
    print "<td width=\"20%\" nowrap>\n";
    print "<input type=\"button\" value=\"$ResetName\" onClick=\"location='$MyScript'\" class=\"ipt\">\n";
    print "</td>\n";
    print "<td width=\"20%\" nowrap>\n";

    if ($ReturnType == 1) {
        print "<input type=\"button\" value=\"$ReturnName\" onClick=\"location='$ReturnUrl'\" class=\"ipt\">\n";
    }
    elsif ($ReturnType == 2) {
        print "<input type=\"button\" value=\"$ReturnName\" onClick=\"window.close()\" class=\"ipt\">\n";
    }
    elsif ($ReturnType == 3) {
        print "<a href=\"$ReturnUrl\" target=\"$ReturnTget\" style=\"color:$FmftColor;background-color:$FmbgColor;text-decoration:underline overline;\">$ReturnName</a>\n";
    } else {
        print "&nbsp;\n";
    }

    print "</td>\n";
    print "</tr>\n";
    print "</table>\n";
    print "</td>\n";
    print "</tr>\n";
    print "</table>\n";
    print "</td>\n";
    print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
    print "</tr>\n";
    print "<tr>\n";
    print "<td><img src=\"$ImageDir/l_l.gif\"></td>\n";
    print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
    print "<td><img src=\"$ImageDir/l_r.gif\"></td>\n";
    print "</tr>\n";
    print "</table>\n";

    &Footer;

    print "</form>\n";
    print "</div>\n";
    print "</body>\n";
    print "</html>\n";
}

exit;

sub Header {
    my $LocalTitle = shift;

    if ($ENV{'HTTP_USER_AGENT'} =~ /MSIE/) {
        $line_hei = "line-height:140%;";
    } else {
        $line_hei = "";
    }

    print "Content-type: text/html\n\n";
    print "<html>\n";
    print "<head>\n";
    print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=x-sjis\">\n";
    print "<style type=\"text/css\">\n";
    print "<!--\n";
    print ".ttl      {color:$TitleColor;font-size:$TitleSize;font-family:$FmftFace;}\n";
    print ".com      {color:$CommColor;font-size:$CommSize;font-family:$FmftFace;}\n";
    print ".ipt      {color:$InputftCol;background-color:$InputbgCol;font-size:$InputftSiz;font-family:$InputftFce;border:$InputbdSiz $InputbdCol solid;}\n";
    print " td       {color:$FmftColor;font-size:$FmftSize;font-family:$FmftFace;$line_hei}\n";
    print " a:link   {color:$LinkNormal;}\n";
    print " a:visited{color:$LinkVisit;}\n";
    print " a:hover  {color:$FmbgColor;background-color:$LinkHover;text-decoration:underline overline;}\n";
    print " a        {text-decoration:none;}\n";

    if (!$BackImage) {
        print " body     {background-color:$BackColor; scrollbar-arrow-color:$ScrlArrow;scrollbar-base-color:$ScrlBase;scrollbar-face-color:$ScrlFace;scrollbar-highlight-color:$ScrlHigh;scrollbar-shadow-color:$ScrlShadow;scrollbar-3dlight-color:$ScrlDlight;scrollbar-darkshadow-color:$ScrlDark;scrollbar-track-color:$ScrlTrack;}\n";
    } else {
        if (!$BackFix) {
            $scroll = 'scroll';
        } else {
            $scroll = 'fixed';
        }

        print " body     {background-color:$BackColor;background-image:url($BackImage); background-attachment:$scroll; scrollbar-arrow-color:$ScrlArrow;scrollbar-base-color:$ScrlBase;scrollbar-face-color:$ScrlFace;scrollbar-highlight-color:$ScrlHigh;scrollbar-shadow-color:$ScrlShadow;scrollbar-3dlight-color:$ScrlDlight;scrollbar-darkshadow-color:$ScrlDark;scrollbar-track-color:$ScrlTrack;}\n";
    }

    print "-->\n";
    print "</style>\n";
    print "<title>$LocalTitle</title>\n";
    print "</head>\n";
    print "<body>\n";

}

sub Footer {
    print "<p><font size=\"2\"><a href=\"$Copyright\" target=\"_blank\" style=\"color:$CommColor;\">$ScriptVer</a></font></p>\n";
}

sub SplitMessage {
    my($BeforeMess) = shift;

    if ($AreaByte < length($BeforeMess)) {
        @MessRow  = split(/<br>/,$BeforeMess);
        $ConvMess = "";

        foreach $mr1 (@MessRow) {
           if ($AreaByte < length($mr1)) {
               $LengthLoop = int(length($mr1) / $AreaByte);

               $mr2 = $mr1;
               foreach (1..$LengthLoop) {
                 ($HeadMess,$FootMess) = fold($mr2,$AreaByte);
                  $ConvMess .= "$HeadMess<br>";
                  $mr2 = $FootMess;
               }

               $ConvMess .= "$FootMess<br>";
           } else {
               $ConvMess .= "$mr1<br>";
           }
        }

        $BeforeMess = $ConvMess;
    }

    return($BeforeMess);
}

sub ReadCache {
    my $RCacheId = shift;

    if (open(IN,"<$CacheDir/$RCacheId.cache")) {
        while (<IN>) {
            $_ =~ s/[\r\n]+//g;
            my($k,$v) = split(/\t/,$_,2);
            $v =~ s/<br \/>/\r/g;
            $v =~ s/<br>/\r/g;
            $CacheData{$k} = $v;
        }
        close(IN);
    }

    return;
}

sub WriteCache {
    my $WCacheId = shift;

    if (!open(OUT,">$CacheDir/$WCacheId.cache")) {
        &Err("キャッシュファイルに書き込みできません。");
    }
    foreach (keys(%in)) {
        print OUT $_ . "\t" . $in{$_} . "\n";
    }
    close(OUT);

    return;
}

sub CheckCache {

    my $CNowLimit = time() - (60 * 10);

    if (!opendir(DIR,$CacheDir)) {
        &Err("キャッシュディレクトリを読み込めません。");
    }
    while (my $line = readdir(DIR)) {
        if ($line ne "." && $line ne ".." && $line ne "index.html") {
            $CLastLimit  = (stat($CacheDir."/".$line))[9];

            if ($CLastLimit < $CNowLimit) {
                unlink($CacheDir."/".$line);
            }
        }
    }
    closedir(DIR);

    return;
}

sub Err {
    my $ErrMessage = shift;

    &Header("Error!!");

    print "<div align=\"center\">\n";
    print "<form action=\"$MyScript\" method=\"POST\">\n";
    print "<input type=\"hidden\" name=\"GetCacheId\" value=\"$GetCacheId\">\n";
    print "<table width=\"100%\" height=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
    print "<tr>\n";
    print "<td valign=\"middle\" align=\"center\">\n";
    print "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
    print "<tr>\n";
    print "<td><img src=\"$ImageDir/u_l.gif\"></td>\n";
    print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
    print "<td><img src=\"$ImageDir/u_r.gif\"></td>\n";
    print "</tr>\n";
    print "<tr>\n";
    print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
    print "<td bgcolor=\"$FmbgColor\" valign=\"middle\" align=\"center\">\n";
    print "<table border=\"$FmbdSize\" bordercolor=\"$FmbdColor\" cellspacing=\"0\" cellpadding=\"3\" width=\"$FmtbWidth\">\n";
    print "<tr valign=\"middle\" align=\"center\">\n";
    print "<td nowrap><p><big>Error!!</big></p><p>$ErrMessage</p>\n";

    if ($BackBtnType) {
        print "<input type=\"submit\" name=\"Return\" value=\"$ChkbntName\" class=\"ipt\"></td>\n";
    } else {
        print "<input type=\"button\" value=\"$ChkbntName\" onClick=\"history.back()\" class=\"ipt\"></td>\n";
    }

    print "</tr>\n";
    print "</table>\n";
    print "</td>\n";
    print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
    print "</tr>\n";
    print "<tr>\n";
    print "<td><img src=\"$ImageDir/l_l.gif\"></td>\n";
    print "<td bgcolor=\"$FmbgColor\"><img src=\"$ImageDir/dmy.gif\"></td>\n";
    print "<td><img src=\"$ImageDir/l_r.gif\"></td>\n";
    print "</tr>\n";
    print "</table>\n";

    &Footer;

    print "</td>\n";
    print "</tr>\n";
    print "</table>\n";
    print "</form>\n";
    print "</div>\n";
    print "</body>\n";
    print "</html>\n";

    exit;
}
