#! /usr/bin/perl
############################################################
# Copyright (C) 
#-----------------------------------------------------------
# 履歴
#-----------------------------------------------------------
#BEGIN{ 
#$| = 1; print "Content-type: text/html\n\n"; 
#open(STDERR, ">&STDOUT"); 
#}

#use strict;
#use lib qw(./lib);
use CGI;
require './lib/tools/jcode.pl';
use Jcode;
use HTML::Template;
use HTML::FillInForm;

our $CGI = new CGI;
our %Vars = $CGI->Vars;
&VarsTagDis();

if( $Vars{cmd} eq 'form1' ){
	my $err = &CheckUserRepForm1();
	if( $err ){
		&DispErrForm($err);	#エラーページ表示
	}else{
		&DispRegForm1();	#ユーザ属性入力ページ表示
	}
}elsif( $Vars{cmd} eq 'form2' ){
	my $err = &CheckUserRepForm2();
	if( $err ){
		&DispErrForm($err);	#エラーページ表示
	}else{
		&DispRegForm2();	#確認ページ表示
	}
}else{
	&DispUserRepForm();		#プラン選択ページ表示
}
exit();


################
# function
################

#プラン選択ページ表示
sub DispUserRepForm {

	#上位HTMLからの新規ドメインの引継ぎ
	$Vars{'ndom_flg'} = '';
	if ($Vars{'domain'}) {
		my @Level = split(/\./,$Vars{'domain'});
		$Vars{'ndom1'} = shift(@Level);			#ドメイン
		$Vars{'ndom2'} = join('.', @Level);
		$Vars{'ndom2'} =~ tr/A-Z/a-z/;
	}
	$Vars{'ndom2_0'} = ""; 
	$Vars{'ndom2_1'} = ""; 
	$Vars{'ndom2_2'} = ""; 
	$Vars{'ndom2_3'} = ""; 
	$Vars{'ndom2_4'} = ""; 
	$Vars{'ndom2_5'} = ""; 
	$Vars{'ndom2_6'} = ""; 
	$Vars{'ndom2_7'} = ""; 
	$Vars{'ndom2_8'} = ""; 
	$Vars{'ndom2_9'} = ""; 

	$Vars{'ndom2_0'} = 'selected' if ($Vars{'ndom2'} eq ""); 
	$Vars{'ndom2_1'} = 'selected' if ($Vars{'ndom2'} eq "com"); 
	$Vars{'ndom2_2'} = 'selected' if ($Vars{'ndom2'} eq "net"); 
	$Vars{'ndom2_3'} = 'selected' if ($Vars{'ndom2'} eq "org"); 
	$Vars{'ndom2_4'} = 'selected' if ($Vars{'ndom2'} eq "info"); 
	$Vars{'ndom2_5'} = 'selected' if ($Vars{'ndom2'} eq "biz"); 
	$Vars{'ndom2_6'} = 'selected' if ($Vars{'ndom2'} eq "jp"); 
	$Vars{'ndom2_7'} = 'selected' if ($Vars{'ndom2'} eq "co.jp"); 
	$Vars{'ndom2_8'} = 'selected' if ($Vars{'ndom2'} eq "ne.jp"); 
	$Vars{'ndom2_9'} = 'selected' if ($Vars{'ndom2'} eq 'or.jp');

	my $Tmpl = HTML::Template->new( 'filename' => './lib/TMPL/plan.html');
	my %fob;
	my @param = qw(
			ndom1
			ndom2_0
			ndom2_1
			ndom2_2
			ndom2_3
			ndom2_4
			ndom2_5
			ndom2_6
			ndom2_7
			ndom2_8
			ndom2_9
			);
	foreach my $key (@param) {
	    $Tmpl->param($key => $Vars{$key});
	    $fob{$key} = $Vars{$key};
	}
    	print "Content-Type: text/html\n\n";
	print HTML::FillInForm->new()->fill( 'scalarref' => \( $Tmpl->output ), fdat => \%fob);

}


#エラーページ表示
sub DispErrForm {
    my $Tmpl = HTML::Template->new( 'filename' => './lib/TMPL/err.html');
    $Tmpl->param('err_txt' => shift);
    print "Content-Type: text/html\n\n", $Tmpl->output;
}


#ユーザ属性入力ページ表示
sub DispRegForm1 {
	$Vars{'base_reserve1'} .= $Vars{'survey1'}.',' if ($Vars{'survey1'});
	$Vars{'base_reserve1'} .= $Vars{'survey2'}.',' if ($Vars{'survey2'});
	$Vars{'base_reserve1'} .= $Vars{'survey3'}.',' if ($Vars{'survey3'});
	$Vars{'base_reserve1'} .= $Vars{'survey4'}.',' if ($Vars{'survey4'});
	$Vars{'base_reserve1'} .= $Vars{'survey5'}.',' if ($Vars{'survey5'});
	$Vars{'base_reserve1'} .= $Vars{'survey6'}.',' if ($Vars{'survey6'});
	$Vars{'base_reserve1'} .= $Vars{'survey7'}.',' if ($Vars{'survey7'});
	$Vars{'base_reserve1'} .= $Vars{'survey8'}.',' if ($Vars{'survey8'});
	$Vars{'base_reserve1'} .= $Vars{'survey9'}.',' if ($Vars{'survey9'});
	$Vars{'base_reserve1'} .= $Vars{'survey10'}.',' if ($Vars{'survey10'});
	$Vars{'base_reserve1'} .= $Vars{'survey11'}.',' if ($Vars{'survey11'});
	$Vars{'base_reserve1'} .= $Vars{'survey12'}.',' if ($Vars{'survey12'});
	$Vars{'base_reserve1'} .= $Vars{'survey13'} if ($Vars{'survey13'});
	my $Tmpl = HTML::Template->new( 'filename' => './lib/TMPL/account.html');
	my %fob;
	my @param = qw(
			req_info
			dom_info
			base_domain_type
			ndom1
			ndom2
			mdom1
			mdom2
			sdom1
			sdom2
			sdom3
			base_plan_type
			base_comment
			base_payment_type
			base_cost_initial
			base_cost_monthly
			base_reserve1
			);
	foreach my $key (@param) {
	    $Tmpl->param($key => $Vars{$key});
	    $fob{$key} = $Vars{$key};
	}

    #銀行振込の場合、請求先フォームを表示
    if ($Vars{base_payment_type}==2){
	open( DATA, "<./lib/TMPL/req_info.txt" );
  	@req_info = <DATA>;
  	close( DATA );
	foreach ( @req_info ) {
	  $req_info .= $_;
	}
	$Tmpl->param('req_info' => $req_info);
    }
    #新規ドメイン申請時
    if ($Vars{base_domain_type}==1){
	open( DATA, "<./lib/TMPL/dom_info.txt" );
  	@dom_info = <DATA>;
  	close( DATA );
	foreach ( @dom_info ) {
	  $dom_info .= $_;
	}
	$Tmpl->param('dom_info' => $dom_info);
    }

    	print "Content-Type: text/html\n\n";
	print HTML::FillInForm->new()->fill( 'scalarref' => \( $Tmpl->output ), fdat => \%fob);
}


# 確認ページ表示 ------------------------------------------------------
sub DispRegForm2 {


	#ドメイン
	if ($Vars{'base_domain_type'}==1){
		$base_domain_type=1;
		$Vars{'base_domain_type'}='新規ドメイン取得';
		$Vars{'base_domain_name'}=$Vars{'ndom1'}.'.'.$Vars{'ndom2'};
	}
	if ($Vars{'base_domain_type'}==2){
		$base_domain_type=2;
		$Vars{'base_domain_type'}='ドメイン取得済み';
		$Vars{'base_domain_name'}=$Vars{'mdom1'}.'.'.$Vars{'mdom2'};
	}
	if ($Vars{'base_domain_type'}==3){
		$base_domain_type=3;
		$Vars{'base_domain_type'}='サブドメインを利用する';
		$Vars{'base_domain_name'}='第一希望：'.$Vars{'sdom1'}.'.hostpro.ne.jp,第二希望：'.$Vars{'sdom2'}.'.hostpro.ne.jp,第三希望：'.$Vars{'sdom3'}.'.hostpro.ne.jp';
	}

	#プラン
	if ($Vars{'base_plan_type'}==1){
		$Vars{'base_plan_name'}='エコノミープラン';
	}elsif ($Vars{'base_plan_type'}==2){
		$Vars{'base_plan_name'}='スタンダードプラン';
	}elsif ($Vars{'base_plan_type'}==3){
		$Vars{'base_plan_name'}='ハイパープラン';
	}elsif ($Vars{'base_plan_type'}==4){
		$Vars{'base_plan_name'}='ミディアムプラン';
	}elsif ($Vars{'base_plan_type'}==5){
		$Vars{'base_plan_name'}='スーパープラン';
	}elsif ($Vars{'base_plan_type'}==6){
		$Vars{'base_plan_name'}='HVV01S';
	}elsif ($Vars{'base_plan_type'}==7){
		$Vars{'base_plan_name'}='HVV01G';
	}elsif ($Vars{'base_plan_type'}==8){
		$Vars{'base_plan_name'}='HVV03W（ウェブ専用）';
	}elsif ($Vars{'base_plan_type'}==9){
		$Vars{'base_plan_name'}='HVV03S';
	}elsif ($Vars{'base_plan_type'}==10){
		$Vars{'base_plan_name'}='HVV03G';
	}

	#支払方法
	if ($Vars{'base_payment_type'}==1){
		$Vars{'base_payment_name'}='クレジットカード';
	}else{
		$Vars{'base_payment_name'}='銀行振込 ';
	}

	#メールにより情報提供
	if ($Vars{'user_magazine_flg'}==1){
		$Vars{'user_magazine_name'}='希望する';
	}else{
		$Vars{'user_magazine_name'}='希望しない ';
	}

	#郵便番号
	$Vars{'user_post'}=$Vars{'post1'}.'-'.$Vars{'post2'};
	$Vars{'bill_post'}=$Vars{'r_post1'}.'-'.$Vars{'r_post2'};
	$Vars{'domain_post'}=$Vars{'d_post1'}.'-'.$Vars{'d_post2'};
	#電話番号
	$Vars{'user_tel'}=$Vars{'tel1'}.'-'.$Vars{'tel2'}.'-'.$Vars{'tel3'};
	$Vars{'bill_tel'}=$Vars{'r_tel1'}.'-'.$Vars{'r_tel2'}.'-'.$Vars{'r_tel3'};
	$Vars{'domain_tel'}=$Vars{'d_tel1'}.'-'.$Vars{'d_tel2'}.'-'.$Vars{'d_tel3'};
	#FAX
	$Vars{'user_fax'}=$Vars{'fax1'}.'-'.$Vars{'fax2'}.'-'.$Vars{'fax3'};
	$Vars{'bill_fax'}=$Vars{'r_fax1'}.'-'.$Vars{'r_fax2'}.'-'.$Vars{'r_fax3'};
	$Vars{'domain_fax'}=$Vars{'d_fax1'}.'-'.$Vars{'d_fax2'}.'-'.$Vars{'d_fax3'};


    #---------------------
    #テンプレート選択
    #---------------------
    #選択フォームなし（新規ドメイン＋クレジットカード）
    if (($Vars{base_payment_type}==1)&&($base_domain_type!=1)){
	my $Tmpl = HTML::Template->new( 'filename' => './lib/TMPL/confirm.html');
	my %fob;
	my @param = qw(
			base_domain_type
			base_domain_name
			base_plan_type
			base_plan_name
			base_comment
			base_payment_type
			base_payment_name
			base_cost_initial
			base_cost_monthly
			user_passwd
			user_name
			user_kana
			user_company_name
			user_company_kana
			user_section
			user_position
			user_post
			user_pref
			user_address1
			user_address2
			user_tel
			user_fax
			user_mail
			user_magazine_flg
			user_magazine_name
			base_reserve1
			);
	foreach my $key (@param) {
	    $Tmpl->param($key => $Vars{$key});
	    $fob{$key} = $Vars{$key};
	}
	$Tmpl->param('base_plan_name' => $Vars{'base_plan_name'});
	$Tmpl->param('base_payment_name' => $Vars{'base_payment_name'});
	$Tmpl->param('user_magazine_name' => $Vars{'user_magazine_name'});
    	print "Content-Type: text/html\n\n";
	print HTML::FillInForm->new()->fill( 'scalarref' => \( $Tmpl->output ), fdat => \%fob);
    }

    #振込フォームのみ追加の場合
    if (($Vars{base_payment_type}==2)&&($base_domain_type!=1)){
	my $Tmpl = HTML::Template->new( 'filename' => './lib/TMPL/confirm_req.html');
	my %fob;
	my @param = qw(
			base_domain_type
			base_domain_name
			base_plan_type
			base_plan_name
			base_comment
			base_payment_type
			base_payment_name
			base_cost_initial
			base_cost_monthly
			user_passwd
			user_name
			user_kana
			user_company_name
			user_company_kana
			user_section
			user_position
			user_post
			user_pref
			user_address1
			user_address2
			user_tel
			user_fax
			user_mail
			user_magazine_flg
			user_magazine_name
			bill_user_name
			bill_user_kana
			bill_company_name
			bill_company_kana
			bill_section
			bill_position
			bill_post
			bill_pref
			bill_address1
			bill_address2
			bill_tel
			bill_fax
			bill_mail
			base_reserve1
			);
	foreach my $key (@param) {
	    $Tmpl->param($key => $Vars{$key});
	    $fob{$key} = $Vars{$key};
	}
	$Tmpl->param('base_plan_name' => $Vars{'base_plan_name'});
	$Tmpl->param('base_payment_name' => $Vars{'base_payment_name'});
	$Tmpl->param('user_magazine_name' => $Vars{'user_magazine_name'});
    	print "Content-Type: text/html\n\n";
	print HTML::FillInForm->new()->fill( 'scalarref' => \( $Tmpl->output ), fdat => \%fob);
    }

    #新規ドメイン申請時フォームのみ追加の場合
    if (($Vars{base_payment_type}==1)&&($base_domain_type==1)){
	my $Tmpl = HTML::Template->new( 'filename' => './lib/TMPL/confirm_dom.html');
	my %fob;
	my @param = qw(
			base_domain_type
			base_domain_name
			base_plan_type
			base_plan_name
			base_comment
			base_payment_type
			base_payment_name
			base_cost_initial
			base_cost_monthly
			user_passwd
			user_name
			user_kana
			user_company_name
			user_company_kana
			user_section
			user_position
			user_post
			user_pref
			user_address1
			user_address2
			user_tel
			user_fax
			user_mail
			user_magazine_flg
			user_magazine_name
			domain_user_name
			domain_user_alpha
			domain_company_name
			domain_company_alpha
			domain_section
			domain_position
			domain_post
			domain_pref
			domain_address1
			domain_address2
			domain_address_alpha
			domain_tel
			domain_fax
			domain_mail
			base_reserve1
			);
	foreach my $key (@param) {
	    $Tmpl->param($key => $Vars{$key});
	    $fob{$key} = $Vars{$key};
	}
	$Tmpl->param('base_plan_name' => $Vars{'base_plan_name'});
	$Tmpl->param('base_payment_name' => $Vars{'base_payment_name'});
	$Tmpl->param('user_magazine_name' => $Vars{'user_magazine_name'});
    	print "Content-Type: text/html\n\n";
	print HTML::FillInForm->new()->fill( 'scalarref' => \( $Tmpl->output ), fdat => \%fob);
    }

    #フルフォーム
    if (($Vars{base_payment_type}==2)&&($base_domain_type==1)){
	my $Tmpl = HTML::Template->new( 'filename' => './lib/TMPL/confirm_full.html');
	my %fob;
	my @param = qw(
			base_domain_type
			base_domain_name
			base_plan_type
			base_plan_name
			base_comment
			base_payment_type
			base_payment_name
			base_cost_initial
			base_cost_monthly
			user_passwd
			user_name
			user_kana
			user_company_name
			user_company_kana
			user_section
			user_position
			user_post
			user_pref
			user_address1
			user_address2
			user_tel
			user_fax
			user_mail
			user_magazine_flg
			user_magazine_name
			bill_user_name
			bill_user_kana
			bill_company_name
			bill_company_kana
			bill_section
			bill_position
			bill_post
			bill_pref
			bill_address1
			bill_address2
			bill_tel
			bill_fax
			bill_mail
			domain_user_name
			domain_user_alpha
			domain_company_name
			domain_company_alpha
			domain_section
			domain_position
			domain_post
			domain_pref
			domain_address1
			domain_address2
			domain_address_alpha
			domain_tel
			domain_fax
			domain_mail
			base_reserve1
			);
	foreach my $key (@param) {
	    $Tmpl->param($key => $Vars{$key});
	    $fob{$key} = $Vars{$key};
	}
	$Tmpl->param('base_plan_name' => $Vars{'base_plan_name'});
	$Tmpl->param('base_payment_name' => $Vars{'base_payment_name'});
	$Tmpl->param('user_magazine_name' => $Vars{'user_magazine_name'});
    	print "Content-Type: text/html\n\n";
	print HTML::FillInForm->new()->fill( 'scalarref' => \( $Tmpl->output ), fdat => \%fob);
    }

}
#----------------------------------------------------------------


#タグ処理
sub VarsTagDis {
	my $key;
	my $value;
	while(($key, $value) = each(%Vars)) {
  		$value =~ s/</&lt;/ig;
  		$value =~ s/>/&gt;/ig;
  		$value =~ s/<!--.*-->//ig;
  		$value =~ s/,/，/g;
  		$Vars{$key} = $value;
	}
}


#プラン選択ページエラーチェック
sub CheckUserRepForm1 {
	my $err_txt = '';
	#ドメイン
	if ($Vars{'base_domain_type'}==1) {
		$err_txt .= '<br>※ドメインを入力して下さい。' if (!$Vars{'ndom1'}); 
		$err_txt .= '<br>※ドメイン種別を選択して下さい。' if (!$Vars{'ndom2'}); 
	#Whoisエラーチェック
		if (($Vars{'ndom1'}) && ($Vars{'ndom2'})){
		$Errmes = &whois_serch($Vars{'ndom1'}.'.'.$Vars{'ndom2'});
			if ($Errmes){
				$err_txt = '<br>※'.$Errmes;
			}
		}

	}
	if ($Vars{'base_domain_type'}==2) {
		$err_txt .= '<br>※ドメインを入力して下さい。' if (!$Vars{'mdom1'}); 
		$err_txt .= '<br>※ドメイン種別を選択して下さい。' if (!$Vars{'mdom2'}); 
	}
	if ($Vars{'base_domain_type'}==3) {
		$err_txt .= '<br>※サブドメイン第一希望を入力して下さい。' if (!$Vars{'sdom1'}); 
		$err_txt .= '<br>※サブドメイン第二希望を入力して下さい。' if (!$Vars{'sdom2'}); 
		$err_txt .= '<br>※サブドメイン第三希望を入力して下さい。' if (!$Vars{'sdom3'}); 
	}
	#プラン
  	$err_txt .= '<br>※プランを選択して下さい。' if ($Vars{'base_plan_type'}==0); 

	return $err_txt;
}


#ユーザ属性入力ページエラーチェック
sub CheckUserRepForm2 {
	my $err_txt = '';

	#選択フォームなし（新規ドメイン＋クレジットカード）
	if (($Vars{base_payment_type}==1)&&($Vars{base_domain_type}!=1)){
		&CheckUserFormErr($err);
	
	#振込フォームのみ追加の場合
	}elsif (($Vars{base_payment_type}==2)&&($Vars{base_domain_type}!=1)){
		&CheckUserFormErr($err);
		&CheckBillFormErr($err);
	
	#新規ドメイン申請時フォームのみ追加の場合
	}elsif (($Vars{base_payment_type}==1)&&($Vars{base_domain_type}==1)){
		&CheckUserFormErr($err);
		&CheckDomFormErr($err);
	
	#フルフォーム
	}elsif (($Vars{base_payment_type}==2)&&($Vars{base_domain_type}==1)){
		&CheckUserFormErr($err);
		&CheckBillFormErr($err);
		&CheckDomFormErr($err);
	}
}


sub NowDate {
	(my $mday, my $mon, my $year) = (localtime(time()))[3,4,5];
	$year += 1900;
	$mon++;
	return join('/', $year, $mon, $mday);
}


sub NowTime {
	(my $min, my $hour) = (localtime(time()))[1,2];
	return "$hour時$min分";
}


sub CheckUserFormErr {
	#パスワード
	if (!$Vars{'user_passwd'}){
		$err_txt .= '<br>※ご申請者_パスワードを入力して下さい。' ;
	}elsif ($Vars{'user_passwd'} =~ /[^0-9a-zA-Z]/) {
		$err_txt .= '<br>※ご申請者_パスワードは半角数字でご記入下さい。';
	}
	#氏名
	$err_txt .= '<br>※ご申請者_氏名を入力して下さい。' if (!$Vars{'user_name'}); 
	$err_txt .= '<br>※ご申請者_シメイを入力して下さい。' if (!$Vars{'user_kana'}); 
	#郵便番号
	$user_post="";
	$user_post=$Vars{'post1'}.'-'.$Vars{'post2'};
	if (!$Vars{'post1'}||!$Vars{'post2'}){
		$err_txt .= '<br>※ご申請者_郵便番号をご記入下さい。' ;

	}elsif ($user_post =~ /[^0-9\-]/) {
	    $err_txt .= '<br>※ご申請者_郵便番号は半角数字でご記入下さい。';
	}elsif (length($user_post)!=8) {
	    $err_txt .= '<br>※ご申請者_郵便番号は7桁で入力して下さい。';
	}
	#都道府県
	$err_txt .= '<br>※ご申請者_都道府県を選択して下さい。' if (!$Vars{'user_pref'}); 
	#市町村
	$err_txt .= '<br>※ご申請者_市区町村を入力して下さい。' if (!$Vars{'user_address1'}); 
	#TEL
	$user_tel="";
	$user_tel=$Vars{'tel1'}.'-'.$Vars{'tel2'}.'-'.$Vars{'tel3'};
	if (!$Vars{'tel1'}||!$Vars{'tel2'}||!$Vars{'tel3'}) {
  	    $err_txt .= '<br>※ご申請者_電話番号をご記入下さい。';
	}elsif ($user_tel =~ /[^0-9\-]/) {
	    $err_txt .= '<br>※ご申請者_電話番号は半角数字でご記入下さい。';
	}elsif ($user_tel !~ /^0/) {
	    $err_txt .= '<br>※ご申請者_電話番号に誤りがあります。';
	}
	#メール
	if (!$Vars{'user_mail'}) {
	    $err_txt .= '<br>※ご申請者_メールアドレスを入力して下さい。';
	}elsif ((!($Vars{'user_mail'} =~ /(.*)\@(.*)\.(.*)/))) {
	    $err_txt .= '<br>※ご申請者_メールアドレスの形式が誤っています。';
	}

	return $err_txt;
}


sub CheckDomFormErr {
	#氏名
	$err_txt .= '<br>※ドメイン登録_氏名を入力して下さい。' if (!$Vars{'domain_user_name'}); 
	$err_txt .= '<br>※ドメイン登録_Name（ローマ字）を入力して下さい。' if (!$Vars{'domain_user_alpha'}); 
	#郵便番号
	$dom_post="";
	$dom_post=$Vars{'d_post1'}.'-'.$Vars{'d_post2'};
	if (!$Vars{'d_post1'}||!$Vars{'d_post2'}){
		$err_txt .= '<br>※ドメイン登録_郵便番号をご記入下さい。' ;

	}elsif ($dom_post =~ /[^0-9\-]/) {
	    $err_txt .= '<br>※ドメイン登録_郵便番号は半角数字でご記入下さい。';
	}elsif (length($dom_post)!=8) {
	    $err_txt .= '<br>※ドメイン登録_郵便番号は7桁で入力して下さい。';
	}
	#都道府県
	$err_txt .= '<br>※ドメイン登録_都道府県を選択して下さい。' if (!$Vars{'domain_pref'}); 
	#市町村
	$err_txt .= '<br>※ドメイン登録_市区町村を入力して下さい。' if (!$Vars{'domain_address1'}); 
	#住所英語
	$err_txt .= '<br>※ドメイン登録_英語表記の住所を入力して下さい。' if (!$Vars{'domain_address_alpha'}); 
	#TEL
	$dom_tel="";
	$dom_tel=$Vars{'d_tel1'}.'-'.$Vars{'d_tel2'}.'-'.$Vars{'d_tel3'};
	if (!$Vars{'d_tel1'}||!$Vars{'d_tel2'}||!$Vars{'d_tel3'}) {
  	    $err_txt .= '<br>※ドメイン登録_電話番号をご記入下さい。';
	}elsif ($dom_tel =~ /[^0-9\-]/) {
	    $err_txt .= '<br>※ドメイン登録_電話番号は半角数字でご記入下さい。';
	}elsif ($dom_tel !~ /^0/) {
	    $err_txt .= '<br>※ドメイン登録_電話番号に誤りがあります。';
	}
	#メール
	if (!$Vars{'domain_mail'}) {
	    $err_txt .= '<br>※ドメイン登録_メールアドレスを入力して下さい。';
	}elsif ((!($Vars{'domain_mail'} =~ /(.*)\@(.*)\.(.*)/))) {
	    $err_txt .= '<br>※ドメイン登録_メールアドレスの形式が誤っています。';
	}

	return $err_txt;
}


sub CheckBillFormErr {
	#氏名
	$err_txt .= '<br>※ご請求先_氏名を入力して下さい。' if (!$Vars{'bill_user_name'}); 
	$err_txt .= '<br>※ご請求先_シメイを入力して下さい。' if (!$Vars{'bill_user_kana'}); 
	#郵便番号
	$bill_post="";
	$bill_post=$Vars{'r_post1'}.'-'.$Vars{'r_post2'};
	if (!$Vars{'r_post1'}||!$Vars{'r_post2'}){
		$err_txt .= '<br>※ご請求先_郵便番号をご記入下さい。' ;

	}elsif ($bill_post =~ /[^0-9\-]/) {
	    $err_txt .= '<br>※ご請求先_郵便番号は半角数字でご記入下さい。';
	}elsif (length($bill_post)!=8) {
	    $err_txt .= '<br>※ご請求先_郵便番号は7桁で入力して下さい。';
	}
	#都道府県
	$err_txt .= '<br>※ご請求先_都道府県を選択して下さい。' if (!$Vars{'bill_pref'}); 
	#市町村
	$err_txt .= '<br>※ご請求先_市区町村を入力して下さい。' if (!$Vars{'bill_address1'}); 
	#TEL
	$bill_tel="";
	$bill_tel=$Vars{'r_tel1'}.'-'.$Vars{'r_tel2'}.'-'.$Vars{'r_tel3'};
	if (!$Vars{'r_tel1'}||!$Vars{'r_tel2'}||!$Vars{'r_tel3'}) {
  	    $err_txt .= '<br>※ご請求先_電話番号をご記入下さい。';
	}elsif ($bill_tel =~ /[^0-9\-]/) {
	    $err_txt .= '<br>※ご請求先_電話番号は半角数字でご記入下さい。';
	}elsif ($bill_tel !~ /^0/) {
	    $err_txt .= '<br>※ご請求先_電話番号に誤りがあります。';
	}
	#メール
	if (!$Vars{'bill_mail'}) {
	    $err_txt .= '<br>※ご請求先_メールアドレスを入力して下さい。';
	}elsif ((!($Vars{'bill_mail'} =~ /(.*)\@(.*)\.(.*)/))) {
	    $err_txt .= '<br>※ご請求先_メールアドレスの形式が誤っています。';
	}

	return $err_txt;
}


sub whois_serch($) {
#WHOIS
#$:ドメイン名
#Ret:取得できない場合エラー内容

	#whoisのコマンド位置/スイッチ
	my $WHOIS_com = '/usr/bin/whois -h';
	#whois先テーブル
	my %TLDtb = (	'JP'	=>'whois.jp',
			'TO'	=>'www.tonic.to',
			'BIZ'	=>'whois.internic.com',
			'TV'	=>'whois.internic.com',
			'CC'	=>'whois.internic.com',
			'BZ'	=>'whois.internic.com',
			'US'	=>'whois.internic.com',
			'INFO'	=>'whois.internic.com',
			'COM'	=>'whois.internic.com',
			'NET'	=>'whois.internic.com',
			'ORG'	=>'whois.internic.com',
			'EDU'	=>'whois.internic.com',
	);

	my $domain = shift;
	#$domain =~ s/[\!\"\#\$\%\&\'\(\)\=\^\`\|\\\~\@\[\]\{\}\*\:\;\/\?\>\<]
	$domain =~ s/[^a-zA-Z0-9\-\_\.]//g;	#.-_以外の記号排除
	$domain =~ tr/a-z/A-Z/;			#大文字へ
	return("ドメイン名が不正です。$domain") if($domain =~ /^[\.\-\_]/);	#.-_で始まるドメインは不正
	return("ドメイン名が不正です。$domain") if !($domain =~ /\S+\.\S+/);	#.の前後に文字が無いドメインは不正

	my @Level = split(/\./,$domain);	#.分け
	my $TLD = pop(@Level);			#第1ドメインの取り出し
	
	$domain = pop(@Level).qq{.$TLD};	#ドメイン名を第1、第2のみにする
	if (($domain eq 'CO.JP') || ($domain eq 'NE.JP') || ($domain eq 'OR.JP')){
		$domain = pop(@Level).qq{.$domain};	#CO/NE/OR.JPは3つめも
	}

	my ($key, $value ,$whois_server);	#whoisサーバの割り出し
	while (($key, $value) = each(%TLDtb)){
		if ($key eq $TLD){$whois_server = $value}
	}
	return("ドメイン名が不正です。$domain") if !($whois_server);		#TLDが合わなかったらドメイン不正扱い

	my @whoisdata;				#whois開始
	#whois出来なかったら使用中扱い
	open(WHOIS_IN, qq{$WHOIS_com $whois_server $domain |})|| return("このドメインは取得出来ません。$domain");
	@whoisdata=<WHOIS_IN>;
	close(WHOIS_IN);

	my $data;				#whois結果全行検索
	foreach $data (@whoisdata){
	    &jcode::convert(\$data, 'sjis');
	    if ($data =~ m/No match!!/ or $data =~ m/There is no match for this domain name./ or $data =~ m/No match for/){
		return;				#no matchその他の文字列が見つかれば使用可
	    }
	}

	return("このドメインは取得出来ません。$domain");
}

