#!/usr/bin/perl
#Perlのパスを指定
#普通は、『#!/usr/bin/perl』or『#!/usr/local/bin/perl』を指定
#プロバイダによっては、『#!/usr/local/bin/perl5』の場合もあり。
###############################################
#このscriptの著作権は・・・
#HPサービス（hp@bird.to・mkc@intacc.ne.jp）に帰属しています。
#よって、改竄する事は許可しますが、著作権の表示は削除しないで下さい。
#また、このscriptによる如何なる損害も賠償しませんので・・・
#予め、ご了承下さい。
#尚、バグ情報などは、HPサービス（hp@bird.to）まで
#お知らせ頂けると有難いです。
#また、利用にあたっては、HPサービス（http://hp.bird.to/）に従って下さい。
####################使用方法######################
#一番上のPerlのパスを合わせて転送し、パーミッションを設定すれば・・・
#それで、使えるようになります。
#このCGIのカスタマイズは、ほとんどインターネット上で出来るように
#作ってありますので、ファイル内容を、特に変更する必要はありません。
####################変数設定######################
#（★☆）は、変更可能部分（よく分からない人は、変更しない事!!）
#（★）は、変更しない方がいい部分
#（☆）は、変更した方がいい部分

# 管理人専用コマンドの暗証番号（秘密の暗号に書き換えて下さい）（☆）
		my $secret='3014';

# カスタマイズ用ファイル（★☆）
		my $custom_file='./DATA/greeting3_custom.cgi';

# データファイル名（★☆）
		my $data_file = './DATA/greeting3.cgi';

#このスクリプトのURL（フルパスで指定）（☆）
        my $greeting_url = 'http://members4.tsukaeru.net/metamor1/cgi-bin/birth_j3/greeting3_n.cgi';
#HTMLファイルのURL（フルパスで指定）
        my $greeting_url1 = 'http://members4.tsukaeru.net/metamor1/cgi-bin/birth_j3/DATA/';
#sendmailのパス（☆）
		my $sendmail= '/usr/sbin/sendmail';

#あなたのメールアドレス（☆）
		my $my_address= 'metamor1@mxj.mesh.ne.jp';

#タイトルの名前（ブラウザ用）（★☆）
		my $html_title = 'Metamorphosis-One誕生日カード（無料）';

#タイトルの名前（トップ画面上部用）（★☆）
		my $titlemessage="<font size=5 color=\"teal\"><b>$html_title</b></font>";

#homeのURL（自分のHPのURLを記入する）（★☆）
		my $home_url = 'http://metamor1-web.hp.infoseek.co.jp/Index.html';

#フッターに挿入するタグ（★☆）
		my $hooter ="<A HREF=\"$home_url\" target=\"_top\">HOME</A>";

#タグの有効・無効（0=無効、1=有効）（★☆）
		my $tag =0;

#大きいカード再生方法（0=imgタグで再生、1=embedタグで再生）（★☆）
		my $imgembed=0;

#サンプル画像並列数（デフォルトは横に３枚並べる）（★☆）
		my $width_line=3;

#カードポジション（0=上下、1=左右）（★☆）
		my $card_position =1;

#カードの有効期限（現在は、１４日）（★☆）
		my $limit_time=60*60*24*14;

#期日指定の有効期限（現在は、30日）（★☆）
		my $limit_permit=60*60*24*30;

#お届けメールのsujbectに記入される言葉（英数字がお勧め）（★☆）
		my $default_subject= 'Metamorphosis-One GREETING SERVICE(Birthday)';

#案内文（★☆）
		my $welcome= 'あなたの気持ちをカードにして、贈りましょう(*^ ^*)<BR>メッセージは適当に改行してくださいね♪<BR>下のサンプル画像をクリックすると大きな画像を確認できます<BR>（なお、カードを贈ると、確認の為、あなたにもメールが届きます）<BR>（確認メールが届かない時は、お手数ですが、もう一度贈り直して下さい）<BR>カードの有効期限は作成後、１４日です<br>';

#バックの色（★☆）
		my $bgcolor='#CCCCCC';

#バックのイラスト（★☆）
		my $background='./IMAGE/background/birthday.jpg';

#文字の色（★☆）
		my $textcolor='black';

#リンクの色（★☆）
		my $linkcolor ='pink';

#一度訪れたリンクの色（★☆）
		my $vlinkcolor='pink';

#投稿の文字色（★☆）
		my $newscolor='dimgray';

#トップコメント色（★☆）
		my $subcolor='midnightblue';

#投稿のバックの色（★☆）
		my $tdcolor='floralwhite';

#案内文の文字色（★☆）
		my $welcolor='midnightblue';

#案内文の背景色（★☆）
		my $welbgcolor='mistyrose';

#CGIのURL（★☆）
		my $script_url = './greeting3_n.cgi';

# 排他制御として使用するディレクトリ名（★☆）
		my $lockname='./DATA/greeting3lock';

#perlのバージョンを指定（★）
		require 5.001;

#cgi-lib.plのパスを指定（★）
		require "./cgi-lib.pl";

#jcode.plのパスを指定（★）
		require "./jcode.pl";

#custom.plのパスを指定（★）
		require "./custom_greeting.pl";

#現在time（★）
		my $now_time=time();

# 排他制御使用関数（★）
		my $expire     = 3*60;	# 最大排他制御時間（ sec ）
		my $num_retry  = 5;	# 最大再試行回数
		my $retry_time = 1;	# 排他制御待ち時間（ sec ）

# Cookie の有効期間（現在３０日に設定）（★）
		my $expires_time= &expires(30);

# Cookie の有効期間を設定（★）
		my $expires="expires=$expires_time";

# Cookieの名前（★）
		my $C_NAME='GREETING3N';

#sendmail に付加するオプション（★）
		my $mailoption= ' -t';

#エラーメール対策オプション（★）
		my $envelope= '-f ';

#大きいカードしか用意していない場合（0=小さいカードあり、1=なし）（★☆）
#小さいカードを用意していない場合は、下記にある小さいカードのURL等の設定を
#無視して構わない。
		my $onlybig=0;

#小さいカードのURL（http://からのフルパスでも可）（★☆）
		$small_url[0]='./IMAGE/GREETING/bd1s.gif';
		$small_url[1]='./IMAGE/GREETING/bd2s.jpg';
		$small_url[2]='./IMAGE/GREETING/bd3s.jpg';
		$small_url[3]='./IMAGE/GREETING/cakes.gif';
		$small_url[4]='./IMAGE/GREETING/birthcs.jpg';
		$small_url[5]='./IMAGE/GREETING/umareiwais.gif';
		$small_url[6]='./IMAGE/GREETING/gr04s.gif';
		$small_url[7]='./IMAGE/GREETING/gr05s.gif';
#		$small_url[8]='./IMAGE/GREETING/fower1s.jpg';
#		$small_url[9]='./IMAGE/GREETING/hikkosi1s.jpg';
#		$small_url[10]='./IMAGE/GREETING/kaerus.jpg';
#		$small_url[11]='./IMAGE/GREETING/birthday1s.jpg';

#小さいカードの横ピクセル（★☆）
		$small_width[0]=66;#それぞれのカードに対応するように記入して下さい
		$small_width[1]=66;#$small_url[0]は、$small_width[0]に入れる
		$small_width[2]=66;
		$small_width[3]=66;
		$small_width[4]=66;
		$small_width[5]=66;
		$small_width[6]=66;
		$small_width[7]=66;
#		$small_width[8]=66;
#		$small_width[9]=66;
#		$small_width[10]=66;
#		$small_width[11]=66;

#小さいカードの縦ピクセル（★☆）
		$small_height[0]=100;
		$small_height[1]=100;
		$small_height[2]=100;
		$small_height[3]=100;
		$small_height[4]=100;
		$small_height[5]=100;
		$small_height[6]=100;
		$small_height[7]=100;
#		$small_height[8]=100;
#		$small_height[9]=100;
#		$small_height[10]=100;
#		$small_height[11]=100;

#大きいカードのURL（http://からのフルパスでも可）（★☆）
		$big_url[0]='./IMAGE/GREETING/bd1.gif';
		$big_url[1]='./IMAGE/GREETING/bd2.jpg';
		$big_url[2]='./IMAGE/GREETING/bd3.jpg';
		$big_url[3]='./IMAGE/GREETING/cake.jpg';
		$big_url[4]='./IMAGE/GREETING/birthc.jpg';
		$big_url[5]='./IMAGE/GREETING/umareiwai.gif';
		$big_url[6]='./IMAGE/GREETING/gr04.gif';
		$big_url[7]='./IMAGE/GREETING/gr05.gif';
#		$big_url[8]='./IMAGE/GREETING/xmas.jpg';
#		$big_url[9]='./IMAGE/GREETING/hikkosi1.jpg';
#		$big_url[10]='./IMAGE/GREETING/kaeru.jpg';
#		$big_url[11]='./IMAGE/GREETING/birthday1.jpg';

#大きいカードの横ピクセル（★☆）
		$big_width[0]=164;#それぞれのカードに対応するように記入して下さい
		$big_width[1]=164;#$big_url[0]は、$big_width[0]に入れる
		$big_width[2]=164;
		$big_width[3]=164;
		$big_width[4]=164;
		$big_width[5]=164;
		$big_width[6]=164;
		$big_width[7]=164;
#		$big_width[8]=164;
#		$big_width[9]=164;
#		$big_width[10]=164;
#		$big_width[11]=164;

#大きいカードの縦ピクセル（★☆）
		$big_height[0]=250;
		$big_height[1]=250;
		$big_height[2]=250;
		$big_height[3]=250;
		$big_height[4]=250;
		$big_height[5]=250;
		$big_height[6]=250;
		$big_height[7]=250;
#		$big_height[8]=250;
#		$big_height[9]=250;
#		$big_height[10]=250;
#		$big_height[11]=250;


#コメントの最大サイズ（★☆）スパムメール防止の為
		my $comment_length= 3000;

#トップコメントの最大サイズ（★☆）スパムメール防止の為
		my $top_length= 100;

#カードのトップコメントの配列（★☆）
		#トップコメントを増やしたい場合は、『,''』を『'Happy Wedding'』の
		#後に追加し、『''』の中にコメントを入れる。
		#つまり、『'おめでとう','ありがとう','お知らせ'』のように
		#''とコンマで、連結して行くと言う事です。
		my @top_array=(
								'トップコメントを選んで下さい',
								'誕生日おめでとう',
								'Happy Birthday'
								);

#サウンドの配列（日本語）（★☆）
		my @sound_outside=('BGMなし','カノン（パッヘルベル）','月の光（ドビュッシー）','Ｇ線上のアリア（バッハ）','イッヒ・リーベ・ディッヒ','幻想即興曲（ショパン）','婚礼の合唱（ワーグナー）','くるみ割り人形','ロンドンデリーの歌','夢路より（フォスター）','主よ人の望みの喜びよ','シシリエンヌ（フォーレ）','小犬のワルツ（ショパン）','亡き王女のためのパヴァーヌ');

#サウンドの配列（★☆）
		for($i=1;$i<@sound_outside;$i++){
				$sound_array[$i]="./SOUND/$i.mid";
		}

#サウンド＆画像の著作権
		my $copyright='<a href="http://fuji.sakura.ne.jp/~makiron/" target="_top">MIDI by まきろん</a><BR>';

##########ここより先は、Perlの知識が必要です!!##########
##########よく分からない人は、立ち入るべからず##########
		my %params;
        &ReadParse(\%params);
        $name = &jcode'sjis($params{'name'});#名前
        $email = $params{'email'};#アドレス
        $comment = &jcode'sjis($params{'comment'});#コメント
        $original_top = &jcode'sjis($params{'original_top'});#自作のトップ
        $original_url = $params{'original_url'};#自作カードURL
        $sound_num = $params{'sound_num'};#BGM
        $original_sound = $params{'original_sound'};#自作BGM
        $card_num = $params{'card_num'};#選択カード番号
        $command = $params{'command'};#コマンド
        $top_comment = &jcode'sjis($params{'top_comment'});#トップ
        $original_rating = $params{'original_rating'};
        $secret_pass = &jcode'sjis($params{'secret_pass'});#パスワード
        $p_year = $params{'p_year'};#解禁期日
        $p_month = $params{'p_month'};#解禁期日
        $p_day = $params{'p_day'};#解禁期日
        $address[0] = &jcode'sjis($params{'address1'});#相手の名前
        $address[1] = &jcode'sjis($params{'address2'});#相手の名前
        $address[2] = &jcode'sjis($params{'address3'});#相手の名前
        $address[3] = &jcode'sjis($params{'address4'});#相手の名前
        $address[4] = &jcode'sjis($params{'address5'});#相手の名前
        $address_mail[0] = $params{'address_mail1'};
        $address_mail[1] = $params{'address_mail2'};
        $address_mail[2] = $params{'address_mail3'};
        $address_mail[3] = $params{'address_mail4'};
        $address_mail[4] = $params{'address_mail5'};
        $repair = &jcode'sjis($params{'repair'});#ランキング値修正
		my @repair=split(/\0/,$repair);

        $repair_delete = $params{'repair_delete'};#削除orトップ

        $repair_[0] = &jcode'sjis($params{'repair_0'});
        $repair_[1] = &jcode'sjis($params{'repair_1'});
        $repair_[2] = &jcode'sjis($params{'repair_2'});
        $repair_[3] = $params{'repair_3'};
        $repair_[4] = $params{'repair_4'};
		$repair_[5] = $params{'repair_5'};
        $repair_[6] = &jcode'sjis($params{'repair_6'});
        $repair_[7] = &jcode'sjis($params{'repair_7'});
        $repair_[8] = $params{'repair_8'};
        $repair_[9] = $params{'repair_9'};
        $repair_[10] = $params{'repair_10'};
        $repair_[11] = $params{'repair_11'};
        $repair_[12] = $params{'repair_12'};
        $repair_[13] = $params{'repair_13'};
        $repair_[14] = $params{'repair_14'};
        $repair_[15] = $params{'repair_15'};
        $repair_[16] = $params{'repair_16'};
        $repair_[17] = &jcode'sjis($params{'repair_17'});
        $repair_[18] = $params{'repair_18'};
        $repair_[19] = $params{'repair_19'};
        $repair_[20] = $params{'repair_20'};
        $repair_[21] = $params{'repair_21'};
        $repair_[22] = &jcode'sjis($params{'repair_22'});
        $repair_[23] = $params{'repair_23'};
        $repair_[24] = &jcode'sjis($params{'repair_24'});
		shift @repair_;

		if($ENV{'QUERY_STRING'} ne ''){
				($card_pass,$email_pass)=split(/=/,$ENV{'QUERY_STRING'});
				$command='look_card';
		}

		#カードの大きいイメージ
		my @big;
		if($imgembed==1){
				for($i=0;$i<@big_url;$i++){
						$big[$i]='<embed src="'.$big_url[$i].'" width='.$big_width[$i].' height='.$big_height[$i].' border=0>';
						$big1[$i]='<embed src=".'.$big_url[$i].'" width='.$big_width[$i].' height='.$big_height[$i].' border=0>';
				}
		}#フラッシュ画像等を使用する場合
		else{
				for($i=0;$i<@big_url;$i++){
						$big[$i]='<img src="'.$big_url[$i].'" width='.$big_width[$i].' height='.$big_height[$i].' border=0>';
						$big1[$i]='<img src=".'.$big_url[$i].'" width='.$big_width[$i].' height='.$big_height[$i].' border=0>';
				}
		}

		#カードの小さいイメージ
		my @image;
		if($onlybig==1){
				@image=@big;
		}#大きいカードと小さいカードが同じ場合
		else{
				for($i=0;$i<@small_url;$i++){
						$image[$i]='<img src="'.$small_url[$i].'" width='.$small_width[$i].' height='.$small_height[$i].' border=0>';
				}
		}

		if($p_year ne '' && $p_month ne '' && $p_day ne ''){
				my $year=$p_year-1900;
				my $month=$p_month-1;
				my $day=$p_day;
				use Time::Local;
				$permit_time=timelocal(0,0,0,$day,$month,$year);
		}#解禁期日が指定されている時
####################条件分岐####################
		if(defined ($dlock_id=&LockOn($lockname))){
				if($repair_delete eq 'begin'){
						my @custom=&custom_open($custom_file,$html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright);
						my ($html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright)=@custom;
						unlink($custom_file) if($secret_pass eq $secret);
				}

				my @custom=&custom_open($custom_file,$html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright);#カスタマイズ類を取得

				foreach(@custom){
						$_=~s/,/,/og;
				}

				($html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright)=@custom;#カスタマイズ類を設定

				foreach('name','email','comment','original_top','card_pass','email_pass','original_sound','top_comment'){
						${$_}=~s/&/&/og;
						${$_}=~s/</</og if($tag==0);
						${$_}=~s/>/>/og if($tag==0);
						${$_}=~s/,/,/og;
				}#タグの無効化

				foreach($i=0;$i<@address;$i++){
						$address[$i]=~s/&/&/og;
						$address[$i]=~s/</</og if($tag==0);
						$address[$i]=~s/>/>/og if($tag==0);
						$address[$i]=~s/,/,/og;
						$address_mail[$i]=~s/&/&/og;
						$address_mail[$i]=~s/</</og if($tag==0);
						$address_mail[$i]=~s/>/>/og if($tag==0);
						$address_mail[$i]=~s/,/,/og;
				}#タグの無効化

				for($i=0;$i<@repair_;$i++){
						$repair_[$i]=~s/,/,/og;
				}#カンマの無害化

				print html_header($html_title,$name,$email) unless($command=~/repair_custom/ && $secret_pass eq $secret);

				if($secret_pass eq $secret && $command eq '' && $repair_delete ne 'begin'){
						&data_open;
						&target_list;
				}
				elsif($command eq 'repair_custom_beginner' && $secret_pass eq $secret){
						($html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright)=&repair_custom($custom_file,@repair_) if($repair_delete ne 'begin');
						print html_header($html_title);
						&looking_list;
				}
				elsif($command eq 'repair_custom_pro' && $secret_pass eq $secret){
						($html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright)=&repair_custom($custom_file,@repair_) if($repair_delete ne 'begin');
						print html_header($html_title);
						&looking_list;
				}
				elsif($command eq 'change' && $secret_pass eq $secret){
						if($repair_delete eq 'repair'){
								&data_open;
								&repair_data;
								&looking_list;
						}#削除の場合
						elsif($repair_delete eq 'custom_beginner'){
								&custom_beginner($script_url,$html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright,$secret_pass);
						}#カスタマイズする（初心者）場合
						elsif($repair_delete eq 'custom_pro'){
								&custom_pro($script_url,$html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright,$secret_pass);
						}#カスタマイズする（上級者）場合
						elsif($repair_delete eq 'color'){
								&color_list($script_url);
						}#色の見本を場合
						elsif($repair_delete eq 'background'){
								&background_list($script_url);
						}#背景イラストを見る場合
						elsif($repair_delete eq 'top'){
								&looking_list;
						}#トップに戻る場合
						else{
								&data_open;
								&target_list;
						}#指定なしの場合
				}
				elsif($command eq 'look_card'){
						&data_open;
						&pass_check;
						if($check eq ''){
								$error_code='指定データが見当たりません';
								&looking_list;
						}
						elsif($check==0){
								$error_code='閲覧解禁期日まで、今しばらくお待ち下さいませ';
								&looking_list;
						}
						elsif($check==1){
								&view_list;
						}
						else{
								$error_code='指定データが見当たりません';
								&looking_list;
						}
				}#カードを見る場合

				elsif($command eq 'select_card'){

						foreach(@address_mail){
								next if($_ eq '');
								$address_checks{$_}++;
								$error_code='相手のメールアドレスが、重複しています' if($address_checks{$_}>1);
						}#アドレスが重複していないかチェック

						for($i=0;$i<@address;$i++){
								my $temp=$i+1;
								if($address_mail[$i] ne '' && !($address_mail[$i]=~/^[0-9a-z_\.\-]+\@([0-9a-z_\-]+\.)+[0-9a-z_\-]+$/io)){

										$error_code="相手$tempのメールアドレスが正しくないようです";
								}
								elsif($address[$i] eq '' && $address_mail[$i] eq ''){
										next;
								}
								elsif($address[$i] eq ''){
										$error_code="相手$tempの名前を記入して下さい";
								}
								elsif($address_mail[$i] eq ''){
										$error_code="相手$tempのメールアドレスを記入して下さい";
								}
								last if($error_code ne '');
						}#アドレス間違いor名前抜けorアドレス抜けをチェック


						unless($email=~/^[0-9a-z_\.\-]+\@([0-9a-z_\-]+\.)+[0-9a-z_\-]+$/io){
								$error_code='メールアドレスが、正しくないようです';
						}
						elsif($name eq ''){
								$error_code='名前を記入して下さい';
						}
						elsif($email eq ''){
								$error_code='メールアドレスを記入して下さい';
						}
						elsif($comment eq ''){
								$error_code='コメントを記入して下さい';
						}
						elsif($comment_length<length($comment)){
								$error_code='コメントが大き過ぎます';
						}
						elsif($top_length<length($original_top)){
								$error_code='自作トップコメントが大き過ぎます';
						}
						elsif($p_month==2 && $p_day==30){
								$error_code='その期日を指定する事は出来ません';
						}
						elsif($p_month==2 && $p_day==31){
								$error_code='その期日を指定する事は出来ません';
						}
						elsif($p_month==4 && $p_day==31){
								$error_code='その期日を指定する事は出来ません';
						}
						elsif($p_month==6 && $p_day==31){
								$error_code='その期日を指定する事は出来ません';
						}
						elsif($p_month==9 && $p_day==31){
								$error_code='その期日を指定する事は出来ません';
						}
						elsif($p_month==11 && $p_day==31){
								$error_code='その期日を指定する事は出来ません';
						}
						elsif($permit_time>$now_time+$limit_permit){
								$error_code='１ヵ月以内の期日を指定して下さい';
						}
						elsif($permit_time<$now_time-60*60*24 && $permit_time>0){
								$error_code='過去の日付は指定できません';
						}
						elsif($address[0] eq '' && $address[1] eq '' && $address[2] eq '' && $address[3] eq '' && $address[4] eq '' ){
								$error_code='相手の名前を記入して下さい';
						}
						elsif($address_mail[0] eq '' && $address_mail[1] eq '' && $address_mail[2] eq '' && $address_mail[3] eq '' && $address_mail[4] eq '' ){
								$error_code='相手のメールアドレスを記入して下さい';
						}

						if($error_code eq ''){
								&view_list;
						}
						else{
								&looking_list;
						}
				}#カードを贈る場合（最終確認）

				elsif($command eq 'send_card'){
						$error_code='カードをお贈りしました!!（＞▽＜）';
						&data_open;
						&data_save;
						&pass_check;
						&send_card if($reload_check!=1);
						$address[0]='';
						$address_mail[0]='';#初期化
						&looking_list;
				}#カードを贈る場合（最終確認）

				elsif($command eq 'ranking'){
						&data_open;

						&ranking_list;
				}#カードを贈る場合（最終確認）
				else{
						&looking_list;
				}

				&LockOff($dlock_id);
		}#排他制御終了

		else {
				&custom_open;
				print html_header($html_title);		
				print &lock_error();
		}

		print html_footer();#フッターを出力
		exit 0;

####################htmlを表示####################
sub looking_list{

		($cookie_name,$cookie_email) = get_cookie();
		($c_cook,$c_name)=split(/:/,$cookie_name);
		($c_cook,$c_email)=split(/:/,$cookie_email);

		$c_name=$name if($name ne '');
		$c_email=$email if($email ne '');

		$c_name=~s/"/"/g;
		$address[0]=~s/"/"/g;

		$width_line=3 if($width_line eq '');
		
#metamor1ソング情報
		$songname='ハッピー・バースディ';
		$artistname='by Metamorphosis-One';
		$linernotes="ライナーノーツ";
		$songimage='./IMAGE/background/HappyBirthday.gif';		
		$lyricslink='http://metamor1-web.hp.infoseek.co.jp/lyr_happybirthday_j.html';
		$linerlink='http://members4.tsukaeru.net/metamor1/lnote_happybirthday_j.html';
		$songlink1='http://metamor1-web.hp.infoseek.co.jp/mp3/metamor1-HappyBirthday17.m3u';
#		$songlink1='http://www.kanaderu.jp/collection/Mp3sSong.jsp?aid=metamor1@lk&sid=2&soundtype=128';
		$songlink2='http://metamor1-web.hp.infoseek.co.jp/mp3/metamor1-HappyBirthday17_32.m3u';
#		$songlink2='http://www.kanaderu.jp/collection/Mp3sSong.jsp?aid=metamor1@lk&sid=2&soundtype=22';
		$listenimage1='./IMAGE/background/hifi.gif';
		$listenimage2='./IMAGE/background/lofi.gif';
		$news='誕生日カード（バースディソング付）が届いています。';
		$titlesong1='バースディソングを試聴する';

print <<END_OF_TEXT;
　<p>
$titlemessage
$error_code<p>

<table border=0 bgcolor="$welbgcolor" >
<tr><td nowrap colspan=2>
<font size=-1 color="$welcolor">$welcome</font>
</td></tr>
<tr><td>
<font color=teal size=1><b>画像提供:</b></font>
<tr><td><font color=blue size=2>錦さん</font><td><a href="http://monochromegarden.skr.jp/"><i><font color=blue size=1>monochrome garden</font></i></a><tr><td nowrap><font color=blue size=2>蓮　蒼香さん</font><td><a href="http://www8.ocn.ne.jp/~a-lotus/"><i><font color=blue size=1>AsianLotus</font></i></a>
<tr><td><font color=blue size=2>海神火高さん</font><td><a href="http://holistic.whitering.net/g-telum/"><i><font color=blue size=1>GULAL</font></i></a>

<tr><td colspan=2><font size=1 color=\"midnightblue\">画像の著作権は蓮　蒼香さん、海神火高さん、錦さんに帰属します</font>

</table>
　<P>
<form method="POST" action="$script_url">
<input type="hidden" name="command" value="select_card">

<table border=1 bgcolor=lightyellow>
<TR><TH colspan=2 nowrap>カード作成フォーム</TH></TR>

<tr><td align=right nowrap>あなたの名前</td><td nowrap><input type="text" size=25 name="name" value=$c_name></td></tr>
<tr><td align=right nowrap>あなたのメールアドレス</td><td nowrap><input type="text" size=25 name="email" value=$c_email></td></tr>

END_OF_TEXT

		print '<tr><td align=right nowrap>既存のトップコメント</td><td nowrap><select name="top_comment">';
		for($i=0;$i<@top_array;$i++){
				print ('<option>',$top_array[$i]);
		}
		print '</select></td></tr>';

print <<END_OF_TEXT;
<tr><td align=right nowrap>トップコメントを自分で入力</td><td nowrap><input type="text" size=25 name="original_top"></td></tr>
END_OF_TEXT

#		print '<tr><td align=right nowrap>BGMを選んで下さい</td><td nowrap><select name="sound_num">';
#		for($i=0;$i<@sound_array;$i++){
#				print ('<option value=',$i,'>',$sound_outside[$i]);
#		}
#		print '</select></td></tr>';

print <<END_OF_TEXT;
<TR><TD align=center colspan=2 nowrap>コメント</TD></TR>
<TR><TD align=center colspan=2 nowrap><textarea name="comment" rows="5" cols="54"><\/textarea>
</TD></TR>
</table>
<P>
<table border=1 bgcolor=lightyellow>
<tr align="center"><td nowrap>　</td><td nowrap>相手の名前</td><td nowrap>相手のメールアドレス</td></tr>
<tr align="center"><td nowrap>１人目</td><td nowrap><input type="text" size=25 name="address1" value="$address[0]"></td><td nowrap><input type="text" size=25 name="address_mail1" value="$address_mail[0]"></td></tr>

<tr align="center"><td nowrap>２人目</td><td nowrap><input type="text" size=25 name="address2"></td><td nowrap><input type="text" size=25 name="address_mail2"></td></tr>

<tr align="center"><td nowrap>３人目</td><td nowrap><input type="text" size=25 name="address3"></td><td nowrap><input type="text" size=25 name="address_mail3"></td></tr>

<tr align="center"><td nowrap>４人目</td><td nowrap><input type="text" size=25 name="address4"></td><td nowrap><input type="text" size=25 name="address_mail4"></td></tr>

<tr align="center"><td nowrap>５人目</td><td nowrap><input type="text" size=25 name="address5"></td><td nowrap><input type="text" size=25 name="address_mail5"></td></tr>
</table>
　<P>
<table border=1 bgcolor=lightyellow>
<tr>
<th nowrap colspan=$width_line>カードを選んで下さい</th>
</tr>
END_OF_TEXT

		for($i=0;$i<@image;$i+=$width_line){

				print('<tr align=center>') if(@image>$i);

				my @width;
				my @height;
				my @temp;
				for($j=0;$j<$width_line;$j++){
						$width[$j]=$big_width[$i+$j]+17;
						$height[$j]=$big_height[$i+$j]+17;
						$temp[$j]="width=$width[$j],height=$height[$j],resizable";
						$temp[$j]="\'".$temp[$j]."\'";

						print"<td nowrap><a href=\"$big_url[$i+$j]\" target=\"card\" onClick=\"window.open('','card',$temp[$j])\">$image[$i+$j]</a></td>" if(@image>$i+$j);
				}
				print('</tr>') if(@image>$i);

				print('<tr align=center>') if(@image>$i);

				for($j=0;$j<$width_line;$j++){
						print('<td nowrap><input type="radio" checked name="card_num" value="',$i,'"></td>') if(@image>$i+$j && $i+$j==0);
						print('<td nowrap><input type="radio" name="card_num" value="',$i+$j,'"></td>') if(@image>$i+$j && $i+$j!=0);
				}
				print('</tr>') if(@image>$i);
		}

print <<END_OF_TEXT;
</table>
　<P>
<!--
<table border=1 bgcolor=lightyellow>

<TR><TH colspan=2 nowrap>自作カード（他のHPのカード）を利用する場合は、URLを入れて下さい</TH></TR>
<TR><TD align=center nowrap>カードのURL</TD><TD nowrap><input type=text name="original_url" size=55 value="http://"></TD></TR>


<TR><TH colspan=2 nowrap>カード閲覧解禁日を指定する場合は、日付を入れて下さい</TH></TR>
<TR><TD align=center nowrap>閲覧解禁日</TD><TD nowrap><select name="p_year">
<option>


END_OF_TEXT

#<TR><TH align=center colspan=2 nowrap>自作BGMを利用する場合は、URLを入れて下さい</TH></TR>
#<TR><TD align=center nowrap>BGMのURL</TD><TD nowrap><input type=text name="original_sound" size=55 value="http://"></TD></TR>



		my ($sec,$min,$hour,$day,$month,$year) = localtime($now_time);
		$year+=1900;

		print ('<option>',$year);
		print ('<option>',$year+1);

print <<END_OF_TEXT;
</select>
年
<select name="p_month">
<option>
END_OF_TEXT
		for($i=1;$i<13;$i++){
				print('<option>',$i);
		}
print <<END_OF_TEXT;
</select>
月
<select name="p_day">
<option>
END_OF_TEXT
		for($i=1;$i<32;$i++){
				print('<option>',$i);
		}
print <<END_OF_TEXT;
</select>
日</TD></TR>

</table>
-->
<br><br>

<table border=1 bgcolor=lightyellow>
<tr bgcolor=lightyellow><td>$titlesong1</td>
<tr bgcolor="#336633"><td colspan=2><a href="$lyricslink">$songname</a><br>
<font size=2><p align=right><a href="$home_url">$artistname</a></p></font><br>
Hi-fi<a href="$songlink1"><img src="$listenimage1" border=0></a>      Lo-fi<a href="$songlink2"><img src="$listenimage2" border=0></a>      <font size=2><a href="$linerlink">$linernotes</a></font></td>
</tr>
</table>



　<P>
<input type="submit" value="作成"><input type="reset" value="取消">
</form>

<form method="POST" action="$script_url">
<input type="hidden" name="command" value="ranking">
<input type="submit" value="カード使用回数ランキング">
</form>
　<P>
<form method="POST" action="$script_url">
<table width=90%>
<tr><td nowrap>
<input type="text" size=8 name="secret_pass">
<input type="submit" value="管理人専用">
</td>
<td nowrap align=right>
<font size=2><A HREF="http://hp.bird.to/index.html" target="_top">グリーティングSP Ver.3.64(C)HPサービス</A><BR>
$copyright</font>
</td>
</tr></table>
</form>


END_OF_TEXT
}
###############カード使用回数ランキングを見る###############
sub ranking_list{

print <<END_OF_TEXT;
　<p>
<table border=1>
<tr><th>カード</th><th>回数</th></tr>
END_OF_TEXT

		chomp($line[0]);
		my($temp,$original_rating,@rating) = split(/,/,$line[0]);
		my $i=0;
		foreach(@rating){
				if(@image>$i){
						$ratings{$i}=$_;
						$all_rating+=$_ ;
				}
				$i++;
		}
		$all_rating+=$original_rating;
		my @rank=sort{ $ratings{$b}<=>$ratings{$a} }keys %ratings;

		foreach(@rank){
				print('<tr align=center><td nowrap>',$image[$_],'</td><td nowrap>',$rating[$_],'</td></tr>');
		}
print <<END_OF_TEXT;
<tr align=center><td>その他</td><td>$original_rating</td></tr>
<tr><th>総利用回数</th><th>$all_rating</th></tr>
</table>
　<P>
<form>
<input type="button" value="戻る" name="b1" onClick="history.back()">
</form>
　<P>
END_OF_TEXT
}


####################カードを見る####################
sub view_list{

		$top_comment=$original_top if($original_top ne '');
		my $comment2=$comment;#送信用に保存しておく
		my $top_comment2=$top_comment;
		my $name2=$name;
		my $address2=$address;
		my @address2;
		$address2[0]=$address[0];
		$address2[1]=$address[1];
		$address2[2]=$address[2];
		$address2[3]=$address[3];
		$address2[4]=$address[4];

#metamor1ソング情報


#metamor1ソング情報
		$songname='ハッピー・バースディ';
		$artistname='by Metamorphosis-One';
		$linernotes="ライナーノーツ";
		$songimage='./IMAGE/background/HappyBirthday.gif';		
		$lyricslink='http://metamor1-web.hp.infoseek.co.jp/lyr_happybirthday_j.html';
		$linerlink='http://members4.tsukaeru.net/metamor1/lnote_happybirthday_j.html';
		$songlink1='http://metamor1-web.hp.infoseek.co.jp/mp3/metamor1-HappyBirthday17.m3u';
#		$songlink1='http://www.kanaderu.jp/collection/Mp3sSong.jsp?aid=metamor1@lk&sid=2&soundtype=128';
		$songlink2='http://metamor1-web.hp.infoseek.co.jp/mp3/metamor1-HappyBirthday17_32.m3u';
#		$songlink2='http://www.kanaderu.jp/collection/Mp3sSong.jsp?aid=metamor1@lk&sid=2&soundtype=22';
		$listenimage1='./IMAGE/background/hifi.gif';
		$listenimage2='./IMAGE/background/lofi.gif';
		$news='誕生日カード（バースディソング付）が届いています。';
		$titlesong1='バースディソングを試聴する';
		
		
		

		$songname=~s/"/"/g;
		$artistname=~s/"/"/g;
		$linernotes=~s/"/"/g;
		$songimage=~s/"/"/g;
		$lyricslink=~s/"/"/g;
		$linerlink=~s/"/"/g;
		$songlink1=~s/"/"/g;
		$songlink2=~s/"/"/g;
		$listenimage1=~s/"/"/g;
		$listenimage2=~s/"/"/g;
		$news=~s/"/"/g;
		
		
		
		$comment2=~s/"/"/g;
		$top_comment2=~s/"/"/g;
		$name2=~s/"/"/g;
		$address2=~s/"/"/g;
		$address2[0]=~s/"/"/g;
		$address2[1]=~s/"/"/g;
		$address2[2]=~s/"/"/g;
		$address2[3]=~s/"/"/g;
		$address2[4]=~s/"/"/g;

		$comment =~ s/\r\n/<BR>/g;
		$comment =~ s/\n/<BR>/g;
		$comment=~ s/<BR><BR>/<BR>　<BR>/g;#改行コードを変換


		if($command eq 'select_card'){
				$dear_name=$address[0] if($address[1] eq '');
				$dear_name='相手のお名前' if($address[1] ne '');

				if($original_url ne '' && $original_url ne 'http://'){
						$show_card='<img src="'.$original_url.'">';
				}
				else{
						$show_card=$big[$card_num];
				}


#				$script_NN='document.write'.'(\'<EMBED SRC="'.$sound_file.'" WIDTH=144 HEIGHT=60 AUTOSTART="true">\')' if($sound_num!=0 || $original_sound ne '' && $original_sound ne 'http://');
#				$script_IE='document.write'.'(\'<BGSOUND SRC="'.$sound_file.'" LOOP="-1">\')' if($sound_num!=0 || $original_sound ne '' && $original_sound ne 'http://');

				$footer_form="<form method=\"POST\" action=\"$script_url\">\n";
				$footer_form.="<input type=\"hidden\" name=\"original_url\" value=\"$original_url\">\n";
				$footer_form.="<input type=\"hidden\" name=\"top_comment\" value=\"$top_comment2\">\n";
				$footer_form.="<input type=\"hidden\" name=\"command\" value=\"send_card\">\n";
				$footer_form.="<input type=\"hidden\" name=\"name\" value=\"$name2\">\n";
				$footer_form.="<input type=\"hidden\" name=\"email\" value=\"$email\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address1\" value=\"$address2[0]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address2\" value=\"$address2[1]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address3\" value=\"$address2[2]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address4\" value=\"$address2[3]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address5\" value=\"$address2[4]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address_mail1\" value=\"$address_mail[0]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address_mail2\" value=\"$address_mail[1]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address_mail3\" value=\"$address_mail[2]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address_mail4\" value=\"$address_mail[3]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address_mail5\" value=\"$address_mail[4]\">\n";
				$footer_form.="<input type=\"hidden\" name=\"comment\" value=\"$comment2\">\n";
				$footer_form.="<input type=\"hidden\" name=\"card_num\" value=\"$card_num\">\n";
				$footer_form.="<input type=\"hidden\" name=\"sound_num\" value=\"$sound_num\">\n";
				$footer_form.="<input type=\"hidden\" name=\"original_sound\" value=\"$original_sound\">\n";
				$footer_form.="<input type=\"hidden\" name=\"p_year\" value=\"$p_year\">\n";
				$footer_form.="<input type=\"hidden\" name=\"p_month\" value=\"$p_month\">\n";
				$footer_form.="<input type=\"hidden\" name=\"p_day\" value=\"$p_day\">\n";
				$footer_form.='<input type="submit" value="カードを贈る"></form><P>';
				$footer_form.='<form><input type="button" value="戻る" name="b1" onClick="history.back()"></form>';
		}
		elsif($command eq 'look_card'){
				$dear_name=$address;
				if($original_url ne '' && $original_url ne 'http://'){
						$show_card='<img src="'.$original_url.'">';
				}
				else{
						$show_card=$big[$card_num];
				}

				if($original_sound ne '' && $original_sound ne 'http://'){
						$sound_file=$original_sound;
				}
				else{
						$sound_file=$sound_array[$sound_num];
				}

#				$script_NN='document.write'.'(\'<EMBED SRC="'.$sound_file.'" WIDTH=144 HEIGHT=60 AUTOSTART="true">\')' if($sound_num!=0 || $original_sound ne '' && $original_sound ne 'http://');
#				$script_IE='document.write'.'(\'<BGSOUND SRC="'.$sound_file.'" LOOP="-1">\')' if($sound_num!=0 || $original_sound ne '' && $original_sound ne 'http://');

				$footer_form="<form method=\"POST\" action=\"$script_url\">\n";
				$footer_form.="<input type=\"hidden\" name=\"name\" value=\"$address2\">\n";
				$footer_form.="<input type=\"hidden\" name=\"email\" value=\"$address_mail\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address1\" value=\"$name2\">\n";
				$footer_form.="<input type=\"hidden\" name=\"address_mail1\" value=\"$email\">\n";
				$footer_form.='<input type="submit" value="お返事カードを贈る"></form>';
		}

		if($card_position==0){
print <<END_OF_TEXT;
　<p>
<h1><font color="$subcolor">$top_comment</font></h1>
<table border=1>
<tr><td nowrap align="center">$show_card</td></tr>
<tr><td  bgcolor="$tdcolor"><font color="$newscolor">
Dear $dear_name $name2 <P>
$comment<P>
<P align=right>From <a href="mailto:$email">$name</a></P>
</font></td></tr></table>
		<SCRIPT LANGUAGE="JavaScript">
		<!--
		if (navigator.appName == "Netscape") {
				$script_NN;
		} 
		else {
				$script_IE;
		}
		// -->
		</SCRIPT>
　<P>
$footer_form<P>
END_OF_TEXT
		}
		else{
print <<END_OF_TEXT;
　<p>
<font size=5 color="$subcolor">$top_comment</font>
<table border=1 bgcolor=lightyellow>
<tr>
<td nowrap>$show_card</td>
<td bgcolor="$tdcolor"><font color="$newscolor">
Dear $dear_name<P>
$comment<P>
<P align=right>From <a href="mailto:$email">$name</a></P>
</font></td></tr>
<!--Song情報追加-->

<tr bgcolor="#336633"><td colspan=2><img src="$songimage" align="left" height=120 width=120><a href="$lyricslink">$songname</a><br>
<font size=2><p align=right><a href="$home_url">$artistname</a></p></font><br>
Hi-fi<a href="$songlink1"><img src="$listenimage1" border=0></a>      Lo-fi<a href="$songlink2"><img src="$listenimage2" border=0></a>      <font size=2><a href="$linerlink">$linernotes</a></font></td>
</tr></table>
		<SCRIPT LANGUAGE="JavaScript">
		<!--
		if (navigator.appName == "Netscape") {
				$script_NN;
		} 
		else {
				$script_IE;
		}
		// -->
		</SCRIPT>
　<P>
$footer_form<P>
END_OF_TEXT
		}
}

####################管理人専用html####################
sub target_list{

print <<END_OF_TEXT;
　<p>
<h1>管理人専用コマンド</h1>
修正する場合は、ランキング値を書き換えて、送信ボタンを押して下さい<P>
　<p>
<form method="POST" action="$script_url">
<input type=hidden name="command" value='change'>
<input type="hidden" name="secret_pass" value="$secret_pass">
<table border=1>
<TR><TH colspan=2>修正・カスタマイズフォーム</TH></TR>

<tr align=center><td>カード</td><td>ランキング値</td></tr>

END_OF_TEXT

		my($temp,$original_rating,@rating) = split(/,/,$line[0]);
		my $i=0;
		foreach(@rating){
				if(@image>$i){
						$ratings{$i}=$_;
				}
				$i++;
		}

		for($i=0;$i<@image;$i++){
				print('<tr align=center><td nowrap>',$image[$i],'</td><td nowrap><input type="text" size=5 name="repair" value="',$rating[$i],'"></td></tr>');
		}
		print('<tr align=center><td nowrap>その他</td><td nowrap><input type="text" size=5 name="original_rating" value="',$original_rating,'"></td></tr>');


print <<END_OF_TEXT;
</table>

<table>
<tr><td>
<input type="radio" checked name='repair_delete' value='repair'>ランキング修正
</td></tr>
<tr><td>
<input type="radio" name='repair_delete' value='custom_beginner'>カスタマイズする（初心者用）
</td></tr>
<tr><td>
<input type="radio" name='repair_delete' value='custom_pro'>カスタマイズする（上級者用）
</td></tr>
<tr><td>
<input type="radio" name='repair_delete' value='color'>色候補を見る
</td></tr>
<tr><td>
<input type="radio" name='repair_delete' value='background'>背景イラスト候補を見る
</td></tr>
<tr><td>
<input type="radio" name='repair_delete' value='top'>トップに戻る
</td></tr>
</table>
<input type="submit" value="送信">

</form>
　<p>
END_OF_TEXT
}
###############カードを配達（お知らせ）###############
sub send_card{
		$news='誕生日カード（バースディソング付）が届いています。';
		foreach('name','email'){
				${$_}=~s/,/,/og;
		}

		foreach($i=0;$i<@address;$i++){
				$address[$i]=~s/,/,/og;
				$address_mail[$i]=~s/,/,/og;
		}

		if($permit_time>$now_time){
				$permit_comment="（$p_year年$p_month月$p_day日まで、しばらくお待ち下さいませ）";
		}
		else{
				$permit_comment='（今すぐカードを見る事が出来ます）';
		}

		my ($sec,$min,$hour,$day,$month) = localtime($permit_time+$limit_time);
		$month = ($month + 1);
		if($month < 10) { $month = "0$month"; }
		if($day < 10) { $day = "0$day"; }
		my $cardlimit_time = "$month月$day日";

		for($i=0;$i<@address;$i++){
				next if($address[$i] eq '' || $address_mail[$i] eq '');
				$card_url[$i]=$greeting_url1.'birth'.sprintf("%03d",$this_pass[$i]).'.html';

$mail_comment=<<END_OF_MESSAGE;

$address[$i] 様

$name 様（ $email ）から
$news
$permit_comment

■カードを見るには…

(1)Netscape や Internet Explorer などのブラウザで
   下記にアクセスして下さい。
   $card_url[$i]

======================== ご注意！ ==============================
カードの贈り主に返事を出されたい方は、誕生日カードから返信できます。
または、カードの贈り主のメールアドレスに直接ご返信下さいませ。
なお、カードの有効期限は、$cardlimit_timeとなっていますので、早めにご覧下さいませ。
このメールに返信しますと、管理人( $my_address )宛てに返信されます。ご注意下さい。
END_OF_MESSAGE


				if(mailto($address_mail[$i], $cc,$from,$default_subject,$mail_comment)==0){
						$error_code='サーバの調子が悪いようです。サーバが安定してから、もう一度アクセスして下さい。';
				}
		}

		$address_all=$address[0].'様（'.$address_mail[0].'）'."\n" if($address[0] ne '' && $address_mail[0] ne '');
		$address_all.=$card_url[0]."\n" if($card_url[0] ne '');
		$address_all.=$address[1].'様（'.$address_mail[1].'）'."\n" if($address[1] ne '' && $address_mail[1] ne '');
		$address_all.=$card_url[1]."\n" if($card_url[1] ne '');
		$address_all.=$address[2].'様（'.$address_mail[2].'）'."\n" if($address[2] ne '' && $address_mail[2] ne '');
		$address_all.=$card_url[2]."\n" if($card_url[2] ne '');
		$address_all.=$address[3].'様（'.$address_mail[3].'）'."\n" if($address[3] ne '' && $address_mail[3] ne '');
		$address_all.=$card_url[3]."\n" if($card_url[3] ne '');
		$address_all.=$address[4].'様（'.$address_mail[4].'）'."\n" if($address[4] ne '' && $address_mail[4] ne '');
		$address_all.=$card_url[4]."\n" if($card_url[4] ne '');

$mail_comment2=<<END_OF_MESSAGE;

$name 様

$address_all

・・・にグリーティングカードをお贈りしました。
$permit_comment
またのご利用を、心よりお待ちしております≦(._.)≧
======================== ご注意！ ==============================
このメールは返信しないで下さい。管理人( $my_address )宛てにメールが送られます。

END_OF_MESSAGE

		if(mailto($email, $cc,$from,$default_subject,$mail_comment2)==0){
				$error_code='サーバの調子が悪いようです。サーバが安定してから、もう一度アクセスして下さい。';
		}
}
###############パスワードチェック###############
sub pass_check{
		for($i=0;$i<@line;$i++){
				if($line[$i]=~/^\Q$card_pass,$email_pass,\E/){
						chomp($line[$i]);
						($pass,$address_mail,$last_time,$card_num,$name,$email,$address,$top_comment,$original_url,$sound_num,$original_sound,$comment) = split(/,/,$line[$i]);
						if($last_time>$now_time){
								$check=0;#許可期限前
								$name=$address;
								$email=$address_mail;
						}
						else{
								$check=1;#許可期限後
						}
						$line[$i].="\n";
				}
				if($i>0){
						my($dead_pass,$dead_mail,$dead_time) = split(/,/,$line[$i]);

						if($dead_time<$now_time-$limit_time){
								push(@deadline_pass,$dead_pass);
						}#期限切れのカード番号
				}
		}
		if(@deadline_pass>10){#期限切れカードがたまってたら消す
				if(open(DATA, ">$data_file")){
						for($i=0; $i<@line; $i++){ 
								my $dead=0;
								foreach(@deadline_pass){
										if($line[$i]=~/^$_,/){
												$dead=1;
												$delfile="./DATA/birth".sprintf("%03d",$this_pass).".html";
												unlink($delfile);
										}
								}
								print DATA "$line[$i]" if($dead==0);
						}
						close(DATA);
				}
		}#期限切れのカードを削除する
}
####################データ収集####################
sub data_open{

		unless(-f $data_file){
				open(DATA,">$data_file");
				print DATA"0,0,";#ログが重ならないようにする為
				foreach(@image){
						print DATA"0,";
				}
				print DATA"\n";
				close(DATA);
		}
		if(open(DATA,"$data_file")){
		        @line = <DATA>;
		        close(DATA);
		}
}

####################データセーブ####################
sub data_save
{

	$comment =~ s/\r\n/<BR>/g;
	$comment =~ s/\n/<BR>/g;
	$comment=~ s/<BR><BR>/<BR>　<BR>/g;#改行コードを変換
	
	$original_url=~s/http:\/\/// if($original_url eq 'http://');
	$original_sound=~s/http:\/\/// if($original_sound eq 'http://');
	
	for($i=0;$i<@line;$i++)
	{
		foreach(@address){
			if($line[$i]=~/\Q,$card_num,$name,$email,$_,$top_comment,$original_url,$sound_num,$original_sound,$comment\E/)
			{
				$reload_check=1;
				last;
			}
		}
	}
	if($reload_check!=1)
	{
		for($i=0;$i<@line;$i++)
		{
			my ($pass) = split(/,/,$line[$i]);
			$this_pass=$pass if($this_pass<=$pass);
		}

		chomp($line[0]);
		my($temp,$original_rating,@rating) = split(/,/,$line[0]);
		for($i=0;$i<@address;$i++)
		{
			next if($address[$i] eq '' || $address_mail[$i] eq '');
			$this_pass[$i]=++$this_pass;#整理ログ番号
			$permit_time=$now_time if($permit_time<=$now_time);
			$rating[$card_num]++ if($original_url eq '' || $original_url eq 'http://');#使用されたカードの使用回数を増やす。
			$original_rating++ if($original_url ne '' && $original_url ne 'http://');#オリジナルカードの使用回数を増やす。
			push(@line,"$this_pass,$address_mail[$i],$permit_time,$card_num,$name,$email,$address[$i],$top_comment,$original_url,$sound_num,$original_sound,$comment\n");
		}
		my $rating=join(',',@rating);
		$line[0]="$temp,$original_rating,$rating\n";
		if(open(DATA,">$data_file"))
		{
			for($i=0;$i<@line;$i++)
			{
				print DATA "$line[$i]";
				if(open(HTML,">\./DATA/birth".sprintf("%03d",$this_pass[$i])."\.html"))
				{
					print HTML html_fileheader();
					$top_comment=$original_top if($original_top ne '');
					my $comment2=$comment;#送信用に保存しておく
					my $top_comment2=$top_comment;
					my $name2=$name;
					my $address2=$address;
					my @address2;
					$address2[0]=$address[0];
					$address2[1]=$address[1];
					$address2[2]=$address[2];
					$address2[3]=$address[3];
					$address2[4]=$address[4];
		
					#metamor1ソング情報
					$songname='ハッピー・バースディ';
					$artistname='by Metamorphosis-One';
					$linernotes="ライナーノーツ";
					$songimage='../IMAGE/background/HappyBirthday.gif';		
					$lyricslink='http://metamor1-web.hp.infoseek.co.jp/lyr_happybirthday_j.html';
					$linerlink='http://members4.tsukaeru.net/metamor1/lnote_happybirthday_j.html';
					$songlink1='http://metamor1-web.hp.infoseek.co.jp/mp3/metamor1-HappyBirthday17.m3u';
			#		$songlink1='http://www.kanaderu.jp/collection/Mp3sSong.jsp?aid=metamor1@lk&sid=2&soundtype=128';
					$songlink2='http://metamor1-web.hp.infoseek.co.jp/mp3/metamor1-HappyBirthday17_32.m3u';
			#		$songlink2='http://www.kanaderu.jp/collection/Mp3sSong.jsp?aid=metamor1@lk&sid=2&soundtype=22';
					$listenimage1='../IMAGE/background/hifi.gif';
					$listenimage2='../IMAGE/background/lofi.gif';
					$news='誕生日カード（バースディソング付）が届いています。';
					$titlesong1='バースディソングを試聴する';
					$songname=~s/"/"/g;
					$artistname=~s/"/"/g;
					$linernotes=~s/"/"/g;
					$songimage=~s/"/"/g;
					$lyricslink=~s/"/"/g;
					$linerlink=~s/"/"/g;
					$songlink1=~s/"/"/g;
					$songlink2=~s/"/"/g;
					$listenimage1=~s/"/"/g;
					$listenimage2=~s/"/"/g;
					$news=~s/"/"/g;
					
					
					
					$comment2=~s/"/"/g;
					$top_comment2=~s/"/"/g;
					$name2=~s/"/"/g;
					$address2=~s/"/"/g;
					$address2[0]=~s/"/"/g;
					$address2[1]=~s/"/"/g;
					$address2[2]=~s/"/"/g;
					$address2[3]=~s/"/"/g;
					$address2[4]=~s/"/"/g;
			
					$comment =~ s/\r\n/<BR>/g;
					$comment =~ s/\n/<BR>/g;
					$comment=~ s/<BR><BR>/<BR>　<BR>/g;#改行コードを変換
					$command = "look_card";
			
					if($command eq 'select_card')
					{
						$dear_name=$address[0] if($address[1] eq '');
						$dear_name='相手のお名前' if($address[1] ne '');
		
						if($original_url ne '' && $original_url ne 'http://')
						{
							$show_card='<img src="'.'.'.$original_url.'">';
						}
						else
						{
							$show_card=$big1[$card_num];
						}
						$footer_form="<form method=\"POST\" action=\"$script_url\">\n";
						$footer_form.="<input type=\"hidden\" name=\"original_url\" value=\"$original_url\">\n";
						$footer_form.="<input type=\"hidden\" name=\"top_comment\" value=\"$top_comment2\">\n";
						$footer_form.="<input type=\"hidden\" name=\"command\" value=\"send_card\">\n";
						$footer_form.="<input type=\"hidden\" name=\"name\" value=\"$name2\">\n";
						$footer_form.="<input type=\"hidden\" name=\"email\" value=\"$email\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address1\" value=\"$address2[0]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address2\" value=\"$address2[1]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address3\" value=\"$address2[2]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address4\" value=\"$address2[3]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address5\" value=\"$address2[4]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address_mail1\" value=\"$address_mail[0]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address_mail2\" value=\"$address_mail[1]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address_mail3\" value=\"$address_mail[2]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address_mail4\" value=\"$address_mail[3]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address_mail5\" value=\"$address_mail[4]\">\n";
						$footer_form.="<input type=\"hidden\" name=\"comment\" value=\"$comment2\">\n";
						$footer_form.="<input type=\"hidden\" name=\"card_num\" value=\"$card_num\">\n";
						$footer_form.="<input type=\"hidden\" name=\"sound_num\" value=\"$sound_num\">\n";
						$footer_form.="<input type=\"hidden\" name=\"original_sound\" value=\"$original_sound\">\n";
						$footer_form.="<input type=\"hidden\" name=\"p_year\" value=\"$p_year\">\n";
						$footer_form.="<input type=\"hidden\" name=\"p_month\" value=\"$p_month\">\n";
						$footer_form.="<input type=\"hidden\" name=\"p_day\" value=\"$p_day\">\n";
						$footer_form.='<input type="submit" value="カードを贈る"></form><P>';
						$footer_form.='<form><input type="button" value="戻る" name="b1" onClick="history.back()"></form>';
					}
					elsif($command eq 'look_card')
					{
						$dear_name=$address[$i];
						if($original_url ne '' && $original_url ne 'http://')
						{
							$show_card='<img src="'.'..'.$original_url.'">';
						}
						else
						{
							$show_card=$big1[$card_num];
						}
			
						$footer_form="<form method=\"POST\" action=\"\.$script_url\">\n";
						$footer_form.="<input type=\"hidden\" name=\"name\" value=\"$address2\">\n";
						$footer_form.="<input type=\"hidden\" name=\"email\" value=\"$address_mail\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address1\" value=\"$name2\">\n";
						$footer_form.="<input type=\"hidden\" name=\"address_mail1\" value=\"$email\">\n";
						$footer_form.='<input type="submit" value="お返事カードを贈る"></form>';
					}
			
					if($card_position==0)
					{
					#誕生日カードＨＴＭＬをファイルとしてセーブ
						print HTML<<END_OF_TEXT;
　<p>
<h1><font color="$subcolor">$top_comment</font></h1>
<table border=1>
<tr><td nowrap align="center">$show_card</td></tr>
<tr><td nowrap bgcolor="$tdcolor"><font color="$newscolor">
Dear $dear_name<P>
$comment<P>
<P align=right>From <a href="mailto:$email">$name</a></P>
</font></td></tr></table>
<SCRIPT LANGUAGE="JavaScript">
<!--
if (navigator.appName == "Netscape") {
		$script_NN;
} 
else {
		$script_IE;
}
// -->
</SCRIPT>
　<P>
$footer_form<P>
END_OF_TEXT
				}
				else
				{
					print HTML<<END_OF_TEXT;
　<p>
<font size=5 color="$subcolor">$top_comment</font>
<table border=1 bgcolor=lightyellow>
<tr>
<td nowrap>$show_card</td>
<td nowrap bgcolor="$tdcolor"><font color="$newscolor">
Dear $dear_name<P>
$comment<P>
<P align=right>From <a href="mailto:$email">$name</a></P>
</font></td></tr>
<!--Song情報追加-->

<tr bgcolor="#336633"><td colspan=2><img src="$songimage" align="left" height=120 width=120><a href="$lyricslink">$songname</a><br>
<font size=2><p align=right><a href="$home_url">$artistname</a></p></font><br>
Hi-fi<a href="$songlink1"><img src="$listenimage1" border=0></a>      Lo-fi<a href="$songlink2"><img src="$listenimage2" border=0></a>      <font size=2><a href="$linerlink">$linernotes</a></font></td>
</tr></table>
<SCRIPT LANGUAGE="JavaScript">
<!--
if (navigator.appName == "Netscape") {
		$script_NN;
} 
else {
		$script_IE;
}
// -->
</SCRIPT>
　<P>
$footer_form<P>
END_OF_TEXT
				}
				print HTML html_footer();
				close(HTML);
			}
			else
			{
				$error_code='サーバの調子が悪いようです。サーバが安定してから、もう一度アクセスして下さい。';
			}
				
			}
			close(DATA);
		}
		else
		{
			$error_code='サーバの調子が悪いようです。サーバが安定してから、もう一度アクセスして下さい。';
		}
	}
	else
	{
		$error_code='既に同じ内容のカードを送信した可能性があります。<BR>一度メールboxをのぞいて、確認メールが到着していないか確かめて下さいませ。';
	}
}
####################修正データセーブ####################
sub repair_data{
		$line[0]="0,$original_rating,";
		for(@repair){
				$_=0 if($_ eq '');
				$line[0].=$_.',';
		}
		$line[0].="\n";

		if(open(DATA, ">$data_file")){
				for($i=0; $i<@line; $i++){ print DATA "$line[$i]"; }
				close(DATA);
		}
}
####################ヘッダー部分####################
sub html_header{
        my ($title,$name,$email) = @_;
        my $header='';

        $header.=$perlIS if(defined $perlIS);
        $header.="Content-type: text/html; charset=Shift_JIS\n";
        $header.= &set_cookie($name,$email) if($name ne '');
		$header.="\n";
		$header.='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">'."\n";
		$header.='<html>'."\n";
		$header.='<head>'."\n";
		$header.="<title>${title}</title>"."\n";
		$header.='</head>'."\n";;
		$header.='<body';
		$header.=" bgcolor=\"${bgcolor}\"" if($bgcolor ne '');
		$header.=" text=\"${textcolor}\"" if($textcolor ne '');
		$header.=" link=\"${linkcolor}\"" if($linkcolor ne '');
		$header.=" vlink=\"${vlinkcolor}\"" if($vlinkcolor ne '');
		$header.=" background=\"${background}\"" if($background ne '');
		$header.='>'."\n";
		$header.='<center>'."\n";
		return $header;
}
####################ヘッダー部分(ファイル)############
sub html_fileheader{
        #my ($title,$name,$email) = @_;
        #my $header='';

        #$header.=$perlIS if(defined $perlIS);
        #$header.="Content-type: text/html; charset=Shift_JIS\n";
        #$header.= &set_cookie($name,$email) if($name ne '');
		#$header.="\n";
		$header.='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">'."\n";
		$header.='<html>'."\n";
		$header.='<head>'."\n";
		$header.="<title>${title}</title>"."\n";
		$header.='</head>'."\n";;
		$header.='<body';
		$header.=" bgcolor=\"${bgcolor}\"" if($bgcolor ne '');
		$header.=" text=\"${textcolor}\"" if($textcolor ne '');
		$header.=" link=\"${linkcolor}\"" if($linkcolor ne '');
		$header.=" vlink=\"${vlinkcolor}\"" if($vlinkcolor ne '');
		$header.=" background=\"\.${background}\"" if($background ne '');
		$header.='>'."\n";
		$header.='<center>'."\n";
		return $header;
}
####################フッター部分####################
sub html_footer{
		if($hooter eq '0' || $hooter eq '1'){
				$hooter ="<A HREF=\"$home_url\" target=\"_top\">HOME</A>";
		}
        my $menustr = '';
		$menustr.=<<END_OF_TEXT;
　<p>
$hooter<P>
</center>
</body></html>
END_OF_TEXT
          return $menustr;
}
####################クッキー取得####################
sub get_cookie{
        my ($name,$email);
        if(defined $ENV{'HTTP_COOKIE'}){
                my $cook=$ENV{'HTTP_COOKIE'};
                (@cook) = split(/;/,$cook);
				foreach(@cook){
						if($_=~/$C_NAME/){
								my ($cookie_name,$value) = split(/=/,$_);
								($name,$email) = split(/,/,$value);
								return ($name,$email);
						}
				}
        }
}
####################クッキーセット####################
sub set_cookie{
        my ($name,$email) = @_;
		return  "Set-Cookie: ${C_NAME}=name:${name},email:${email}; ${expires}\n\n";
}
###############クッキーの有効期限を取得###############
sub expires {
		my($day) = @_;
		my(@date);
	    my(@week) = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
	    my(@month) = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

	    @date = gmtime($now_time+ $day * 60 * 60 * 24);

	    $date[5] = $date[5] + 1900;

	    foreach (0..3) {
				$date[$_] = sprintf("%.2d",$date[$_]);
	    }

	    return "$week[$date[6]], $date[3]-$month[$date[4]]-$date[5] $date[2]:$date[1]:$date[0] GMT";
}

####################排他制御開始####################
# $id = LockOn(filename);
sub LockOn{
		my ($filename)=@_;

		# 古いディレクトリを削除
		rmdir($filename) if(-d $filename && ($now_time-(stat($filename))[9])>$expire);

		# 排他制御用ディレクトリ生成
		my $retry;
		for($retry=$num_retry; $retry>0 && mkdir($filename,0755)!=1; $retry--){
				sleep($retry_time);
		}
		return $filename if($retry>0);	# 成功
		return undef;			# 失敗
}
####################排他制御終了####################
# LockOff($id);
sub LockOff{
		my ($filename)=@_;
		rmdir ($filename) if(defined $filename);
}
####################排他制御失敗####################
sub lock_error{
		my $body = <<END_OF_BODY;
<h1>しばらくお待ち下さい</h1>
　<p>
只今、込み合ってるようです。<p>
しばらくしてから、リロード（再読み込み）してみて下さい<p>
　<p>
リロードしても繋がらない場合は・・・<p>
３分間ほど待ってから、もう一度トライしてみて下さい。<p>

注：新規設置の管理人様へ・・・<BR>
新規設置時に、このコメントばかり表\示される時は・・・<BR>
DATAのパーミッションが777（707の場合もあり）以外になっていないか・・・<BR>
DATAが、Dataやdataになっていないかを確認してみて下さいませ≦(._.)≧<BR>
（詳しくは、HPサービスのFAQを参照して下さい）<BR>
　<p>
END_OF_BODY
		return $body;
}
####################メール送信関数####################
#		mailto($to, $cc, $from, $subject, $body);
sub mailto{
		my ($to, $cc, $from, $subject, $body) = @_;
		my $ccline='';

		$to= $my_address if(!defined $to || $to eq '');
		$from= $my_address if(!defined $from || $from eq '');
		$ccline= "Cc: $cc\n" if( defined $cc && $cc ne '');
		$subject= $default_subject if(!defined $subject || $subject eq '');

		# とほほのWWW - wwwmail.cgi 方式の body変換
		$body =~ s/(^|\n)\.(\n|$)/$1. $2/g;
		$body =~ s/(^|\n)\.(\n|$)/$1. $2/g;
		$body=::jcode::jis($body);

		my $mailhead = <<END_OF_HEAD;
To: $to
From: $from
Subject: $subject
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
${ccline}

END_OF_HEAD
		$mailhead = ::jcode::jis($mailhead);
		my $success=0;
		if(open(MAIL,"|$sendmail$mailoption $envelope$my_address")){
				if(print(MAIL $mailhead) && print(MAIL $body)){
						close(MAIL);
						$success=1;
				}
		}
		return $success;
}


