#!/usr/bin/perl
#print "Content-type: text/html;\n\n";print "<br>"; 

use utf8;

chdir('./cgi_system/admin/');


if(Windows_check()) {
	chdir(GetScriptPath($0));
}

sub Windows_check
{
	# IIS,PWS(NT/95)対策
	$www_server_os = $^O;
	# Win98 & NT(SP4)対策
	if($www_server_os eq "") {
		$www_server_os= $ENV{'OS'};
	}
	# AnHTTPd/Omni/IIS 対策
	if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) {
		$www_server_os= 'win';
	}
	# Win Apache 対策
	if($ENV{'WINDIR'} ne "") {
		$www_server_os= 'win';
	}
	if($www_server_os=~ /win/i) {
		return(1);
	}
	return(0);
}

sub GetScriptPath {
	local($path) = @_;
	if($path =~ /[\:\/\\]/){
		$path =~ s/(.*?)[\/\\][^\/\\]+$/$1/;
	} else {
		$path = '.';
	}
	$path;
}




#	入力画面でのエラー表示。
$ERROR_DISPMODE = 1;

#=============================================================================
# ツリー
#
#	----+--[common]
#		|	jcode.pl
#		|	lib.pl
#		|	record.pl
#		|
#		+--[sessions]
#		|
#		+--[data]
#		|
#		+--[files]
#		+--[sys_image]
#		+--[item_image]
#		+--[item_image]
#		|
#		+--[adminreg]--[map]
#						adminreg.cgi
#		+--[新しく作るcgi]
#=============================================================================

%File_NameList = (
	"errormsg"		=> "",												# □
	"nonname"		=> "",												# □
	);


#
# テンプレートファイルマトリクス
#
#	 mode 					テンプレートファイル
%temp_file = (
	"errormsg"			=> "../../supporter_map/error.html",			# 
	"top"				=> "../../supporter_map/map.html",				# 
	"supporter_map"		=> "../../supporter_map/index.html",			# 
	"search_list"		=> "../../supporter_map/index.html",			# 
	"banner_link"		=> "",											# 
);

%MODE = (
#	モード名				関数名				関数日本語		管理者区別(1:管理者 0:一般)			次モード
	"top"				=> [\&item_disp1		,'FORM'				,0							,'search_list'			],	#
#	"supporter_map"		=> [\&item_disp1		,'FORM'				,0							,'search_list'			],	#
	"search_list"		=> [\&item_disp2		,'FORM'				,0							,'search_list'			],	#
	"banner_link"		=> [\&banner_link		,'FORM'				,0							,'search'				],	#
);


#=============================================================================
#
#=============================================================================

$TEMPHTML_OUT			= 1;					# 1:データ置き換えモード	0:テンプレート吐き出しモード   [[--]]を生出力
# チェック方式
#	telhandy,tel,handyphone,fax,zip,ascii,kana,hira,minus,strnumeric,numeric,float,comma,alphanumeric,email,url,date,time,upfile,length,range,
#	指定無しでなし
#	複数は<>区切り
# 入力文字数最小
#	チェック方式のlength指定のとき有効
# 入力文字数最大
#	チェック方式のlength指定のとき有効
# 未記入
#	0;未記入可能　1:未記入不可
# 変換方式
#	||区切りでパラメータ
#	zip||郵便番号3名||郵便番号4名||郵便番号3-郵便番号4名		郵便番号3,郵便番号4から郵便番号3-郵便番号4の相互変換
#	date||年名||月名||日名||年/月/日名							年,月,日から年/月/日の相互変換
#	tel||tel1名||tel2名||tel3名||tel1-tel2-tel3名				tel1,tel2,tel3からtel1-tel2-tel3の相互変換
#	time||時名||分名||時:分名									時,分から時:分の相互変換
#	br-lf	<BR>からＬＦの相互変換
#	lfdel	改行コード削除
#	tabdel	タブコード削除
#	xss		xss対策html<>&"'を無効化	xssは順番で xss<>br-lfで順番で記述してください反対になると<BR>まで変換されます
#	z2h		全角英数字を半角に
#	h2z		半角を全角英数字に
#	kz2h	全角カナを半角に
#	kh2z	半角カナを全角に
#	指定無しでなし
#	複数は<>区切り
# htmlタイプ(オプション定義しておいてＨＴＭＬ生成に通すと雛形を作るために・・)
# 	text
# 	radio
# 	checkbox
# 	select
# 	textarea
#	||区切りでhtmlパラメータ
#		text||20||30														入力幅||最大入力値
#		radio||表示名1\t値1||表示名2\t値2										選択1\t値||選択2\t値
#		checkbox||表示名1\t値1||表示名2\t値2									選択1\t値||選択2\t値
# 		textarea||4||30															縦幅||入力幅
# 		select1||指定なし||../data/file.txt||hensu1||hensu2||xxx_RECORD			指定なしのときの表記||ファイル名||表示名を定義している変数名 $なし||値を定義している変数名 $なし||値を定義している構造体名 @なし
# 		radio1||指定なし||../data/file.txt||hensu1||hensu2||xxx_RECORD			指定なしのときの表記||ファイル名||表示名を定義している変数名 $なし||値を定義している変数名 $なし||値を定義している構造体名 @なし
# 		checkbox1||指定なし||../data/file.txt||hensu1||hensu2||xxx_RECORD		指定なしのときの表記||ファイル名||表示名を定義している変数名 $なし||値を定義している変数名 $なし||値を定義している構造体名 @なし
# 		select2||指定なし||array変数名											指定なしのときの表記||選択リストの配列変数名　$なし　"表示名\t値"で定義
# 生成しない
#	フォーマット "000000"
#				  ||||||
#				  ++++++---
# 							前から1番目：新規入力		0:生成する 1:しない 2:修正入力時確認表示
# 							前から2番目：新規確認表示	
# 							前から3番目：修正入力		
# 							前から4番目：修正確認表示	
# 							前から5番目：削除確認表示	
# 							前から6番目：確認表示		
# JavaScriptチェック
#	1でJavaScript補助入力を行う	0:でしない

#####2006
# 横並で項目表示
#	1で項目を横並びで出力する
# ｺﾒﾝﾄ制御
#	生成しないフォーマットと同じ	0でコメント出力		1でコメント出力しない
# 前ｺﾒﾝﾄ
#	入力エリアの前にｺﾒﾝﾄを出す
# 後ｺﾒﾝﾄ
#	入力エリアの後にｺﾒﾝﾄを出す

#\―ソЫⅨ噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭偆砡
#↑の文字を使う場合 \を頭に入れてください

#
#	メインマスタ
#
%MAIN_REQUIRED = (
#   input name=					入力順位	日本語名												未記入			横並		ｺﾒﾝﾄ制御	前ｺﾒﾝﾄ		後ｺﾒﾝﾄ
	"_create_member_id"			,["10"		,"登録者ID"												,"0"			,""			,""			,""			,""		],	#	登録者ID
	"_create_datetime"			,["20"		,"登録日時"												,"0"			,""			,""			,""			,""		],	#	登録日時
	"_update_member_id"			,["30"		,"更新者ID"												,"0"			,""			,""			,""			,""		],	#	更新者ID
	"_update_datetime"			,["40"		,"更新日時"												,"0"			,""			,""			,""			,""		],	#	更新日時
	"_delete_flag"				,["50"		,"削除フラグ"											,"0"			,""			,""			,""			,""		],	#	削除フラグ
);

#
#	メインマスタ
#
%MAIN_CHECKED = (
#			チェック方式			入力文字数最小			入力文字数最大			変換方式			htmlタイプ			生成しない			JavaScriptチェック
	"_create_member_id"			,["numeric"				,"0"			,"0"			,"xss<>lfdel<>tabdel"			,"text||20||30"				,"111111"			,"0"			],	#	登録者ID
	"_create_datetime"			,["length"				,"0"			,"0"			,"xss<>lfdel<>tabdel"			,"text||20||30"				,"111111"			,"0"			],	#	登録日時
	"_update_member_id"			,["numeric"				,"0"			,"0"			,"xss<>lfdel<>tabdel"			,"text||20||30"				,"111111"			,"0"			],	#	更新者ID
	"_update_datetime"			,["length"				,"0"			,"0"			,"xss<>lfdel<>tabdel"			,"text||20||30"				,"111111"			,"0"			],	#	更新日時
	"_delete_flag"				,["numeric"				,"0"			,"0"			,"xss<>lfdel<>tabdel"			,"text||20||30"				,"111111"			,"0"			],	#	削除フラグ
);

%MAIN_OPTION	= (
#						入力説明文	オプションタグ、コメント
	"holiday"		,[ "",	qq|<a href="#" onclick="javascript:OpenWinCal(document.mform.holiday, 'mform.holiday');return false;"><img src="../../cgi_image/images/cal_icon.gif" border=0></a>　<input type="button" value="クリア" onClick="TextClear(document.mform.holiday);" class="BtnGrayStyle02">|	]	,#"郵便番号",
);

%MAIN_OPTION_EX	= (
#						入力タグ制御文(disabled style)			checkbox,radio改行指定
#	"holiday_year"		,[ " class=\"w10\"  onChange=\"return day_dispctl(document.mform.holiday_year,document.mform.holiday_month,document.mform.holiday_day)\"><OPTION VALUE=\"\"",										""],
#	"holiday_month"		,[ " class=\"w10\"  onChange=\"return day_dispctl(document.mform.holiday_year,document.mform.holiday_month,document.mform.holiday_day)\"><OPTION VALUE=\"\"",										""],
#	"holiday_day"		,[ " class=\"w10\"  onChange=\"return day_dispctl(document.mform.holiday_year,document.mform.holiday_month,document.mform.holiday_day)\"><OPTION VALUE=\"\"",										""],
);

%LIST_SERACH = (
#									チェック方式		検索条件			文字形式		指定検索
#	"hyperlink_day"					,["DATE"			,"date"				,''			],
#	"hyperlink_url"					,["LIKE"			,"str"				,''			],
);



#	一覧画面での検索条件を設定する。
%GROBAL_SESSION	= (
#		設定名				順序
		"p",				[0],
		"s_holiday",		[1],
);


#=============================================================================
#
#=============================================================================

eval("use File::Copy;");


require '../public/basic.cgi';
require '../public/gconfig.cgi';
require '../spublic/setting.cgi';
require '../public/gcalender.cgi';

require '../public/sendmail.cgi';
require '../public/mimew.pl';
require '../spublic/mail_setting.cgi';


#	初期設定。
$VAR{'method'} = $SETTING{'method'};

#	基本HTML保存先設定。
$SETTING{'inputhtml'}		 = '../../supporter_map/input_tr.html';
$SETTING{'confirmhtml'}		 = '../../supporter_map/confirm_tr.html';

#	画面間保存(GROBAL_SESSION)に検索条件を追加する。
&GrobalSessionAddValue(\%GROBAL_SESSION);

&operation();


#
#	メイン処理。
#
sub		operation
{

	@MAIN_RECORD = ();
	%MAIN_SQLCREATE = ();

	@MEMBER_REC = ();

	#	基本設定。
	$SQL_TABLE	= 'm_holiday';
	$SQL_ORDER	= 'holiday_id';
	$SQL_UNIQUE	= 'holiday_id';
	$TARGET_TITLE = '休日マスタ';
	$TARGET_VALUE = 'holiday_name';
	$TARGET_VALUE_SEC = '';
	$SETTING{'list_limit'} = 5;

	#	スクリプト名を取得する。
	return $FALSE if (&GetScriptName(\$SETTING{'cgi_name'}) == $FALSE);
	$VAR{'cgi_url'} = $SETTING{'cgi_name'};

	#	フォーム入力を取得する。
	&ReadParse(\%IN);

	#	モードが未設定の場合はデフォルトモードを設定する。
	$IN{'mode'} = 'top' if($IN{'mode'} eq '');

	#	入力文字列の不正をエスケープする。
	return $FALSE if (&InputEscape(\%IN) == $FALSE);

	#	ヘッダ・フッタボタンの生成。
	return $FALSE if (&MakeCommonButton(\%IN, \%VAR, \%SESSION) == $FALSE);

	#	設定情報追加。
	return $FALSE if (&Setting_Ex(\%IN, \%VAR, \%SESSION, \%MODE) == $FALSE);

	#	文字コードをプログラム内で利用するUTF8形式に変換する。
	return $FALSE if (&CharacterEncode_UTF8(\%IN, \%VAR, \%SESSION) == $FALSE);

	#	処理実行。
	return $FALSE if (&CallFunction($MODE{$IN{'mode'}}->[0]) == $FALSE);

	#	HTMLの出力。
	return $FALSE if (&ResultDisplay(\$VAR{'results'}) == $FALSE);

	#	正常終了。
	return $TRUE;

}

#
#	アンテナ表示
#
sub 	antenna_disp
{
	my($_item_) = @_;
	my($dbh);
	my($sql_statement);
	my($query);
	my($nums);
	my($rec_val);

	#	GoogleMapアイコン初期化。
	$VAR{'google_antenna_list'} = '';

	#	GoogleMap吹き出し初期化。
	$VAR{'google_balloon_list'} = '';

	#	DB接続。
	$dbh = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

	#	ランダムに取得するSQLを生成。
	$sql_statement = qq/ SELECT/
					.qq/    */
					.qq/ FROM/
					.qq/    m_supporter/
					;

	$query = &sqlwrap_query($dbh,"$sql_statement");
	$nums = &sqlwrap_num_rows($query);

	#	表示用に件数を取得する。
	$$_item_{'antenna_num'} = $nums;

	for(my $num=0;$num < $nums;$num++) {

		#	値の取得。
		$rec_val = &sqlwrap_fetch_assoc($query);
		#$VAR{'sup_name'}		= &Encode_UTF8($rec_val->{'sup_name'});
		$VAR{'sup_prefecture'}	= &Encode_UTF8($rec_val->{'sup_prefecture'});
		$VAR{'sup_city'}		= &Encode_UTF8($rec_val->{'sup_city'});
		$VAR{'sup_latitude'}	= &Encode_UTF8($rec_val->{'sup_latitude'});
		$VAR{'sup_longitude'}	= &Encode_UTF8($rec_val->{'sup_longitude'});

		#	2015/08/20 IKEDA
		#	複数サポーターはランダム表示。
		@sup_names = ();
		@sup_urls = (); 
		@sup_names_tmp = split("\t", &Encode_UTF8($rec_val->{'sup_name'}));
		@sup_urls_tmp = split("\t", &Encode_UTF8($rec_val->{'sup_url'}));

		#	店舗名が設定されていない情報は削除する。
		for(my $supnum=0;$supnum <= $#sup_names_tmp;$supnum++) {
			if($sup_names_tmp[$supnum] ne ''){
				push(@sup_names, $sup_names_tmp[$supnum]);
				push(@sup_urls, $sup_urls_tmp[$supnum]);
			}
		}

		#	ランダム表示。
		$randnum = int(rand($#sup_names+1));
		$VAR{'sup_name'}		 = $sup_names[$randnum];
		$VAR{'sup_url'}			 = $sup_urls[$randnum];
		#	2015/08/20 IKEDA

		#	GoogleMapアイコン追加。
		$VAR{'google_antenna_list'} .= qq|ymap.addFeature(new Y.Marker(new Y.LatLng($VAR{'sup_longitude'},$VAR{'sup_latitude'})));\n|
									  .qq|var circle${num} = new Y.Circle(new Y.LatLng($VAR{'sup_longitude'},$VAR{'sup_latitude'}), new Y.Size(0.3, 0.3), {|
									  .qq|	unit:"km",|
									  .qq|	strokeStyle: new Y.Style("fcc800", 7, 0.6),|
									  .qq|	fillStyle: new Y.Style("FE8F07", null, 0.3)|
									  .qq|});|
									  .qq|ymap.addFeature(circle${num});|
									  ;
		#	2015/08/20 IKEDA
		#	GoogleMapアイコン追加。
		#$VAR{'google_balloon_list'} .= qq|var label${num} = new Y.Label(new Y.LatLng($VAR{'sup_longitude'},$VAR{'sup_latitude'}), '<a href="http://www.yahoo.co.jp" target="_blank">$VAR{'sup_name'}様協賛の見守りエリアです。</a>');\n|;
		if($VAR{'sup_url'} ne ''){
			$VAR{'google_balloon_list'} .= qq|var label${num} = new Y.Label(new Y.LatLng($VAR{'sup_longitude'},$VAR{'sup_latitude'}), '<a href="$VAR{'sup_url'}" target="_blank">$VAR{'sup_name'}様協賛の見守りエリアです。</a>');\n|;
		}else{
			$VAR{'google_balloon_list'} .= qq|var label${num} = new Y.Label(new Y.LatLng($VAR{'sup_longitude'},$VAR{'sup_latitude'}), '$VAR{'sup_name'}様協賛の見守りエリアです。');\n|;
		}
		#	2015/08/20 IKEDA

		$VAR{'google_balloon_click'} .= qq|circle${num}.bind("click", function(){DisplayCircleLabel(label${num})});\n|;

	}

	&sqlwrap_result($query);
	&sqlwrap_close($dbh);

	#	正常終了。
	return $TRUE;


}


#
#	バナー表示
#
sub 	banner_disp
{
	my($_item_, $_search_prefecture, $_search_city, $_itemname, $_dispnum, $_sort) = @_;
	my(@wherewords);
	my($whereword);
	my($wheresql);
	my($upload_dir);
	my($dbh);
	my($sql_statement);
	my($query);
	my($nums);
	my($rec_val);
	my($bnum);
	my(%setitem);

	#	ユーザ画面側のパスに合わせる。
	$upload_dir = $SETTING{'upload_dir'};
	$upload_dir =~ s|^\.\./\.\./(.*)$|$1|;

	#	検索条件を設定する。
	push(@wherewords, qq/sup_prefecture LIKE '%${_search_prefecture}%'/) if(${_search_prefecture} ne '');
	push(@wherewords, qq/sup_city LIKE '%${_search_city}%'/) if(${_search_city} ne '');
	$whereword = join(' AND ', @wherewords);

	#	検索条件が無い場合は全国版表示。
	if($whereword) {
		$wheresql = "${whereword}";
	}else{
		$wheresql = "ban_city = '' AND ban_prefecture = ''";
	}

	#	DB接続。
	$dbh = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

	#	ランダムに取得するSQLを生成。
	$sql_statement = qq/ SELECT/
					.qq/    */
					.qq/ FROM/
					.qq/    m_supporter/
					.qq/ WHERE/
					.qq/    ${wheresql}/
					.qq/ ORDER BY/
					.qq/    ${_sort}/
					.qq/ LIMIT/
					.qq/    ${_dispnum}/
					;

	$query = &sqlwrap_query($dbh,"$sql_statement");
	$nums = &sqlwrap_num_rows($query);

	for(my $num=0;$num < $nums;$num++) {

		#	値の取得。
		$rec_val = &sqlwrap_fetch_assoc($query);

		$VAR{'sup_id'}			 = &Encode_UTF8($rec_val->{'sup_id'});
		$VAR{'sup_prefecture'}	 = &Encode_UTF8($rec_val->{'sup_prefecture'});
		$VAR{'sup_city'}		 = &Encode_UTF8($rec_val->{'sup_city'});
		$VAR{'sup_latitude'}	 = &Encode_UTF8($rec_val->{'sup_latitude'});
		$VAR{'sup_longitude'}	 = &Encode_UTF8($rec_val->{'sup_longitude'});

		#	複数サポーターはすべて表示。
		@sup_names = split("\t", &Encode_UTF8($rec_val->{'sup_name'}));
		@sup_urls = split("\t", &Encode_UTF8($rec_val->{'sup_url'}));

		#	重複アンテナ名は1つにまとめる。
		for(my $sup_name_num=0;$sup_name_num <= $#sup_names;$sup_name_num++) {
			next if($sup_names[$sup_name_num] eq '');
			$setitem{"$sup_names[$sup_name_num]"} = $sup_urls[$sup_name_num];
		}

	}


	foreach $item_name(keys %setitem){

		$VAR{'sup_name'} = "$item_name";
		$VAR{'sup_url'}	 = $setitem{"$item_name"};

		if($VAR{'sup_url'} ne ''){
			$sup_name_encode = &url_encode($VAR{'sup_name'});
			$sup_url_encode = &url_encode($VAR{'sup_url'});
			$VAR{'sup_name_item'} = qq|<a href="$VAR{'cgi_url'}?mode=banner_link&sup_id=$VAR{'sup_id'}&sup_name=$sup_name_encode&ban_url=$sup_url_encode" target="_blank">$VAR{'sup_name'}</a>|;
			#$VAR{'sup_name_item'} = qq|<a href="$VAR{'sup_url'}" target="_blank">$VAR{'sup_name'}</a>|;
		}else{
			$VAR{'sup_name_item'} = qq|$VAR{'sup_name'}|;
		}

		$VAR{'ban_image'} = "${upload_dir}/$VAR{'ban_image'}";

		#	バナーを表示する。
		$bnum = $num+1;
		$VAR{"${_itemname}_${bnum}"} .= &parse_template("../../supporter_map/${_itemname}_tr.html");

		#	2015/08/20 IKEDA
		#	全件出力用変数設定。
		$VAR{"${_itemname}"} .= &parse_template("../../supporter_map/${_itemname}_tr.html");
		#	2015/08/20 IKEDA

		#	バナー表示カウントアップ処理。
		&AddBannerDisplayCount(\%VAR);

	}

	&sqlwrap_result($query);
	&sqlwrap_close($dbh);

	#	正常終了。
	return $TRUE;

}


#	2016/12/05 IKEDA
##
##	バナー表示
##
#sub 	banner_disp
#{
#	my($_item_, $_search_prefecture, $_search_city, $_itemname, $_dispnum, $_sort) = @_;
#	my(@wherewords);
#	my($whereword);
#	my($wheresql);
#	my($upload_dir);
#	my($dbh);
#	my($sql_statement);
#	my($query);
#	my($nums);
#	my($rec_val);
#	my($bnum);
#
#	#	ユーザ画面側のパスに合わせる。
#	$upload_dir = $SETTING{'upload_dir'};
#	$upload_dir =~ s|^\.\./\.\./(.*)$|$1|;
#
#	#	検索条件を設定する。
#	push(@wherewords, qq/ban_prefecture LIKE '%${_search_prefecture}%'/) if(${_search_prefecture} ne '');
#	push(@wherewords, qq/ban_city LIKE '%${_search_city}%'/) if(${_search_city} ne '');
#	$whereword = join(' AND ', @wherewords);
#
#	#	検索条件が無い場合は全国版表示。
#	if($whereword) {
#		$wheresql = "${whereword}";
#	}else{
#		$wheresql = "ban_city = '' AND ban_prefecture = ''";
#	}
#
#	#	DB接続。
#	$dbh = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});
#
#	#	ランダムに取得するSQLを生成。
#	$sql_statement = qq/ SELECT/
#					.qq/    */
#					.qq/ FROM/
#					.qq/    m_banner/
#					.qq/ WHERE/
#					.qq/    ${wheresql}/
#					.qq/ ORDER BY/
#					.qq/    ${_sort}/
#					.qq/ LIMIT/
#					.qq/    ${_dispnum}/
#					;
#
#	$query = &sqlwrap_query($dbh,"$sql_statement");
#	$nums = &sqlwrap_num_rows($query);
#	for(my $num=0;$num < $nums;$num++) {
#
#		#	値の取得。
#		$rec_val = &sqlwrap_fetch_assoc($query);
#		$VAR{'ban_id'}			 = &Encode_UTF8($rec_val->{'ban_id'});
#		$VAR{'ban_name'}		 = &Encode_UTF8($rec_val->{'ban_name'});
#		$VAR{'ban_com_id'}		 = &Encode_UTF8($rec_val->{'ban_com_id'});
#		$VAR{'ban_com_name'}	 = &Encode_UTF8($rec_val->{'ban_com_name'});
#		$VAR{'ban_image'}		 = &Encode_UTF8($rec_val->{'ban_image'});
#		$VAR{'ban_prefecture'}	 = &Encode_UTF8($rec_val->{'ban_prefecture'});
#		$VAR{'ban_city'}		 = &Encode_UTF8($rec_val->{'ban_city'});
#		$VAR{'ban_content'}		 = &Encode_UTF8($rec_val->{'ban_content'});
#		$VAR{'ban_url'}			 = &Encode_UTF8($rec_val->{'ban_url'});
#		$VAR{'ban_url'} = &EncodeURL($VAR{'ban_url'});
#
#		$VAR{'ban_image'} = "${upload_dir}/$VAR{'ban_image'}";
#
#		#	バナーを表示する。
#		$bnum = $num+1;
#		$VAR{"${_itemname}_${bnum}"} .= &parse_template("../../supporter_map/${_itemname}_tr.html");
#
#		#	2015/08/20 IKEDA
#		#	全件出力用変数設定。
#		$VAR{"${_itemname}"} .= &parse_template("../../supporter_map/${_itemname}_tr.html");
#		#	2015/08/20 IKEDA
#
#		#	バナー表示カウントアップ処理。
#		&AddBannerDisplayCount(\%VAR);
#
#	}
#
#	&sqlwrap_result($query);
#	&sqlwrap_close($dbh);
#
#	#	正常終了。
#	return $TRUE;
#
#}
#	2016/12/05 IKEDA


#	2016/12/05 IKEDA
#
#	バナー表示カウントアップ処理
#
sub 	AddBannerDisplayCount
{
	my($_item_) = @_;
	my(@nowdate);
	my(@wherewords);
	my(%setdata);
	my($dbhbin);
	my($sql_statement);
	my($querybin);
	my($whereword);
	my($wheresql);
	my($nums);
	my($rec_val);

	@_nowdate = &GetNowDate();

	my(@bin_record);
	my(%bin_sqlcreate);
	my(%bin_notsqlcreate);

	#	DB接続。
	$dbhbin = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

	#	登録値を設定する。
	$setdata{'bin_year'}			= $_nowdate[0];
	$setdata{'bin_month'}			= $_nowdate[1];

	return $FALSE if(&CheckBannerInfoSelectData(\%setdata, \$VAR{'sup_name'}, \$selectret) == $FALSE);

	if($setdata{'bin_com_name'} ne ''){

		#	データベースの存在を確認して処理フラグを返す。
		if($selectret == $FALSE){

			#	バナー表示カウントを1として登録する。
			$setdata{'bin_display_num'} = 1;
			$setdata{'bin_click_num'}	 = 0;

			##	初回追加処理。

			#	非生成対象フィールドを設定する。
			$bin_notsqlcreate{'_create_datetime'}	 = 1;
			$bin_notsqlcreate{'_update_datetime'}	 = 1;
			$bin_notsqlcreate{'_delete_flag'}		 = 1;
			$bin_notsqlcreate{'bin_id'}		 = 1;

			#	テーブル構造を取得する。
			return $FALSE if (&GetTableStructureList(\@bin_record, \%SQLCONFIG, \%bin_sqlcreate, 'm_banner_info') == $FALSE);

			($sqllist,$record) = &sqlwrap_insupdate_statement($dbhbin, "INSERT", \%setdata, 'm_banner_info', \@bin_record, \%bin_sqlcreate, \%bin_notsqlcreate);
			$sql_statement = "INSERT INTO m_banner_info ($sqllist) VALUES($record)";
			$querybin = &sqlwrap_query($dbhbin, $sql_statement);
			&sqlwrap_result($querybin);

		}else{

			#	カウントアップ処理。
			$sql_statement = qq/ UPDATE/
							.qq/    m_banner_info/
							.qq/ SET/
							.qq/     _update_datetime = now()/
							.qq/    ,bin_display_num = bin_display_num + 1/
							.qq/ WHERE/
							.qq/    bin_year   = $setdata{'bin_year'}/
							.qq/    AND/
							.qq/    bin_month  = $setdata{'bin_month'}/
							.qq/    AND/
							.qq/    bin_com_name = '$setdata{'bin_com_name'}'/
							;

			$querybin = &sqlwrap_query($dbhbin, $sql_statement);
			&sqlwrap_result($querybin);

		}

		&sqlwrap_result($querybin);
		&sqlwrap_close($dbhbin);

	}

	#	正常終了。
	return $TRUE;

}
#	2016/12/05 IKEDA


#	2016/12/05 IKEDA
##
##	バナー表示カウントアップ処理
##
#sub 	AddBannerDisplayCount
#{
#	my($_item_) = @_;
#	my(@nowdate);
#	my(@wherewords);
#	my($dbhbin);
#	my($sql_statement);
#	my($querybin);
#	my($whereword);
#	my($wheresql);
#	my($nums);
#	my($rec_val);
#
#	@_nowdate = &GetNowDate();
#
#	my(@bin_record);
#	my(%bin_sqlcreate);
#	my(%bin_notsqlcreate);
#
#	#	DB接続。
#	$dbhbin = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});
#
#	#	登録値を設定する。
#	$DATA{'bin_year'}			= $_nowdate[0];
#	$DATA{'bin_month'}			= $_nowdate[1];
#	$DATA{'bin_com_id'}			= $VAR{'ban_com_id'};
#	$DATA{'bin_com_name'}		= $VAR{'ban_com_name'};
#
#	#	非生成対象フィールドを設定する。
#	$bin_notsqlcreate{'_create_datetime'}	 = 1;
#	$bin_notsqlcreate{'_update_datetime'}	 = 1;
#	$bin_notsqlcreate{'_delete_flag'}		 = 1;
#	$bin_notsqlcreate{'bin_id'}		 = 1;
#
#	#	テーブル構造を取得する。
#	return $FALSE if (&GetTableStructureList(\@bin_record, \%SQLCONFIG, \%bin_sqlcreate, 'm_banner_info') == $FALSE);
#
#	#	データの存在を確認する。
#	push(@wherewords, qq/bin_year = $_nowdate[0]/);
#	push(@wherewords, qq/bin_month = $_nowdate[1]/);
#	push(@wherewords, qq/bin_com_id = $$_item_{'ban_com_id'}/);
#	$wheresql = join(' AND ', @wherewords);
#	return $FALSE if(&CheckSelectData(\$selectret, 'm_banner_info', $wheresql) == $FALSE);
#
#	#	データベースの存在を確認して処理フラグを返す。
#	if($selectret == $FALSE){
#
#		#	バナー表示カウントを1として登録する。
#		$DATA{'bin_display_num'} = 1;
#		$DATA{'bin_click_num'}	 = 0;
#
#		#	初回追加処理。
#		($sqllist,$record) = &sqlwrap_insupdate_statement($dbhbin, "INSERT", \%DATA, 'm_banner_info', \@bin_record, \%bin_sqlcreate, \%bin_notsqlcreate);
#		$sql_statement = "INSERT INTO m_banner_info ($sqllist) VALUES($record)";
#
#		$querybin = &sqlwrap_query($dbhbin, $sql_statement);
#		&sqlwrap_result($querybin);
#
#	}else{
#
#		#	カウントアップ処理。
#		$sql_statement = qq/ UPDATE/
#						.qq/    m_banner_info/
#						.qq/ SET/
#						.qq/     _update_datetime = now()/
#						.qq/    ,bin_display_num = bin_display_num + 1/
#						.qq/ WHERE/
#						.qq/    bin_year   = $DATA{'bin_year'}/
#						.qq/    AND/
#						.qq/    bin_month  = $DATA{'bin_month'}/
#						.qq/    AND/
#						.qq/    bin_com_id = $DATA{'bin_com_id'}/
#						;
#
#		$querybin = &sqlwrap_query($dbhbin, $sql_statement);
#		&sqlwrap_result($querybin);
#
#	}
#
#	&sqlwrap_result($querybin);
#	&sqlwrap_close($dbhbin);
#
#	#	正常終了。
#	return $TRUE;
#
#}
#	2016/12/05 IKEDA


#
#	バナーリンク
#
sub 	banner_link
{

	#	DB接続。
	$dbh = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

#	#	ランダムに取得するSQLを生成。
#	$sql_statement = qq/ SELECT/
#					.qq/    */
#					.qq/ FROM/
#					.qq/    m_banner/
#					.qq/ WHERE/
#					.qq/    ban_id = $IN{'ban_id'}/
#					;
#
#	$query = &sqlwrap_query($dbh,"$sql_statement");
#	$nums = &sqlwrap_num_rows($query);
#	for(my $num=0;$num < $nums;$num++) {
#
#		#	値の取得。
#		$rec_val = &sqlwrap_fetch_assoc($query);
#		$VAR{'ban_name'}		 = &Encode_UTF8($rec_val->{'ban_name'});
#		$VAR{'ban_com_id'}		 = &Encode_UTF8($rec_val->{'ban_com_id'});
#		$VAR{'ban_com_name'}	 = &Encode_UTF8($rec_val->{'ban_com_name'});
#		$VAR{'ban_image'}		 = &Encode_UTF8($rec_val->{'ban_image'});
#		$VAR{'ban_prefecture'}	 = &Encode_UTF8($rec_val->{'ban_prefecture'});
#		$VAR{'ban_city'}		 = &Encode_UTF8($rec_val->{'ban_city'});
#		$VAR{'ban_content'}		 = &Encode_UTF8($rec_val->{'ban_content'});
#		$VAR{'ban_url'}			 = &Encode_UTF8($rec_val->{'ban_url'});
#
#		$VAR{'ban_image'} = "${upload_dir}/$VAR{'ban_image'}";
#
#		#	バナーを表示する。
#		$bnum = $num+1;
#		$VAR{"${_itemname}_${bnum}"} = &parse_template("../../supporter_map/banner_tr.html");
#
		#	バナークリックカウントアップ処理。
		&AddBannerClickCount(\%VAR);
#
#	}
#
#	&sqlwrap_result($query);
#	&sqlwrap_close($dbh);

	#	リンク先へ遷移する。
	print "Location: $IN{'ban_url'}\n\n";

	#	正常終了。
	return $TRUE;

}


#
#	バナークリックカウントアップ処理
#
sub 	AddBannerClickCount
{
	my($_item_) = @_;
	my(@nowdate);
	my(@wherewords);
	my(%setdata);
	my($dbhbin);
	my($sql_statement);
	my($querybin);
	my($whereword);
	my($wheresql);
	my($nums);
	my($rec_val);

	@_nowdate = &GetNowDate();

	my(@bin_record);
	my(%bin_sqlcreate);
	my(%bin_notsqlcreate);

	#	DB接続。
	$dbhbin = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

	#	登録値を設定する。
	$setdata{'bin_year'}			= $_nowdate[0];
	$setdata{'bin_month'}			= $_nowdate[1];


	$IN{'sup_name'} = &url_decode($IN{'sup_name'});

	return $FALSE if(&CheckBannerInfoSelectData(\%setdata, \$IN{'sup_name'}, \$selectret) == $FALSE);

	if($setdata{'bin_com_name'} ne ''){

		#	データベースの存在を確認して処理フラグを返す。
		if($selectret == $FALSE){

			#	バナークリックカウントを1として登録する。
			$setdata{'bin_display_num'} = 0;
			$setdata{'bin_click_num'}	 = 1;

			##	初回追加処理。

			#	非生成対象フィールドを設定する。
			$bin_notsqlcreate{'_create_datetime'}	 = 1;
			$bin_notsqlcreate{'_update_datetime'}	 = 1;
			$bin_notsqlcreate{'_delete_flag'}		 = 1;
			$bin_notsqlcreate{'bin_id'}		 = 1;

			#	テーブル構造を取得する。
			return $FALSE if (&GetTableStructureList(\@bin_record, \%SQLCONFIG, \%bin_sqlcreate, 'm_banner_info') == $FALSE);

			($sqllist,$record) = &sqlwrap_insupdate_statement($dbhbin, "INSERT", \%setdata, 'm_banner_info', \@bin_record, \%bin_sqlcreate, \%bin_notsqlcreate);
			$sql_statement = "INSERT INTO m_banner_info ($sqllist) VALUES($record)";
			$querybin = &sqlwrap_query($dbhbin, $sql_statement);
			&sqlwrap_result($querybin);

		}else{

			#	カウントアップ処理。
			$sql_statement = qq/ UPDATE/
							.qq/    m_banner_info/
							.qq/ SET/
							.qq/     _update_datetime = now()/
							.qq/    ,bin_click_num = bin_click_num + 1/
							.qq/ WHERE/
							.qq/    bin_year   = $setdata{'bin_year'}/
							.qq/    AND/
							.qq/    bin_month  = $setdata{'bin_month'}/
							.qq/    AND/
							.qq/    bin_com_name = '$setdata{'bin_com_name'}'/
							;

			$querybin = &sqlwrap_query($dbhbin, $sql_statement);
			&sqlwrap_result($querybin);

		}

		&sqlwrap_result($querybin);
		&sqlwrap_close($dbhbin);

	}

	#	正常終了。
	return $TRUE;

}


#	2016/12/05 IKEDA
##
##	バナークリックカウントアップ処理
##
#sub 	AddBannerClickCount
#{
#	my($_item_) = @_;
#	my(@nowdate);
#	my(@wherewords);
#	my($dbhbin);
#	my($sql_statement);
#	my($querybin);
#	my($whereword);
#	my($wheresql);
#	my($nums);
#	my($rec_val);
#
#	@_nowdate = &GetNowDate();
#
#	my(@bin_record);
#	my(%bin_sqlcreate);
#	my(%bin_notsqlcreate);
#
#	#	DB接続。
#	$dbhbin = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});
#
#	#	登録値を設定する。
#	$DATA{'bin_year'}			= $_nowdate[0];
#	$DATA{'bin_month'}			= $_nowdate[1];
#	$DATA{'bin_com_id'}			= $VAR{'ban_com_id'};
#	$DATA{'bin_com_name'}		= $VAR{'ban_com_name'};
#
#	#	非生成対象フィールドを設定する。
#	$bin_notsqlcreate{'_create_datetime'}	 = 1;
#	$bin_notsqlcreate{'_update_datetime'}	 = 1;
#	$bin_notsqlcreate{'_delete_flag'}		 = 1;
#	$bin_notsqlcreate{'bin_id'}		 = 1;
#
#	#	テーブル構造を取得する。
#	return $FALSE if (&GetTableStructureList(\@bin_record, \%SQLCONFIG, \%bin_sqlcreate, 'm_banner_info') == $FALSE);
#
#	#	データの存在を確認する。
#	push(@wherewords, qq/bin_year = $_nowdate[0]/);
#	push(@wherewords, qq/bin_month = $_nowdate[1]/);
#	push(@wherewords, qq/bin_com_id = $$_item_{'ban_com_id'}/);
#	$wheresql = join(' AND ', @wherewords);
#	return $FALSE if(&CheckSelectData(\$selectret, 'm_banner_info', $wheresql) == $FALSE);
#
#	#	データベースの存在を確認して処理フラグを返す。
#	if($selectret == $FALSE){
#
#		#	バナークリックカウントを1として登録する。
#		$DATA{'bin_display_num'} = 0;
#		$DATA{'bin_click_num'}	 = 1;
#
#		#	初回追加処理。
#		($sqllist,$record) = &sqlwrap_insupdate_statement($dbhbin, "INSERT", \%DATA, 'm_banner_info', \@bin_record, \%bin_sqlcreate, \%bin_notsqlcreate);
#		$sql_statement = "INSERT INTO m_banner_info ($sqllist) VALUES($record)";
#
#		$querybin = &sqlwrap_query($dbhbin, $sql_statement);
#		&sqlwrap_result($querybin);
#
#	}else{
#
#		#	カウントアップ処理。
#		$sql_statement = qq/ UPDATE/
#						.qq/    m_banner_info/
#						.qq/ SET/
#						.qq/     _update_datetime = now()/
#						.qq/    ,bin_click_num = bin_click_num + 1/
#						.qq/ WHERE/
#						.qq/    bin_year   = $DATA{'bin_year'}/
#						.qq/    AND/
#						.qq/    bin_month  = $DATA{'bin_month'}/
#						.qq/    AND/
#						.qq/    bin_com_id = $DATA{'bin_com_id'}/
#						;
#
#		$querybin = &sqlwrap_query($dbhbin, $sql_statement);
#		&sqlwrap_result($querybin);
#
#	}
#
#	&sqlwrap_result($querybin);
#	&sqlwrap_close($dbhbin);
#
#	#	正常終了。
#	return $TRUE;
#
#}
#	2016/12/05 IKEDA

#
#	都道府県と地域の連動プルダウンを生成する。
#
sub 	MakeDoubleSelect
{
	my($_item_) = @_;
	my(@wherewords);
	my($dbh);
	my($sql_statement);
	my($query);
	my($nums);
	my($rec_val);

	#	都道府県と地域の情報を取得する。
	$dbh = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

	$sql_statement = qq/ SELECT/
					.qq/    */
					.qq/ FROM/
					.qq/    m_publicoffice/
					.qq/ WHERE/
					.qq/    pub_center = 0/
					.qq/ ORDER BY/
					.qq/    pub_id/
					;

	$query = &sqlwrap_query($dbh,"$sql_statement");
	$nums = &sqlwrap_num_rows($query);
	for(my $num=0;$num < $nums;$num++) {

		#	値の取得。
		$rec_val = &sqlwrap_fetch_assoc($query);
		$$_item_{'pub_name'}		 = &Encode_UTF8($rec_val->{'pub_name'});
		$$_item_{'pub_prefecture'}	 = &Encode_UTF8($rec_val->{'pub_prefecture'});
		$$_item_{'pub_city'}		 = &Encode_UTF8($rec_val->{'pub_city'});
		$$_item_{'pub_latitude'}	 = &Encode_UTF8($rec_val->{'pub_latitude'});
		$$_item_{'pub_longitude'}	 = &Encode_UTF8($rec_val->{'pub_longitude'});

		#	プルダウン生成用のデータ形式で取得する。
		push(@area_select,"$$_item_{'pub_prefecture'}"."\t"."$$_item_{'pub_prefecture'}<>$$_item_{'pub_city'}"."\t"."$$_item_{'pub_city'}");

	}

	#	都道府県と地域のプルダウンの生成。
	#$$_item_{'attach1_select'}  = '<select name="ban_prefecture" id="ban_prefecture">';
	#$$_item_{'attach1_select'} .= &array_select_sync_mk("なし",1,$IN{'pub_prefecture'},\@member_select,0,2);
	$$_item_{'attach1_select'} .= &array_select_sync_mk("",1,$IN{'ban_prefecture'},\@area_select,0,2);
	#$$_item_{'attach1_select'} .= "</select>";

	#$$_item_{'attach2_select'}  = '<select name="ban_area" id="ban_area">';
	#$$_item_{'attach2_select'} .= &array_select_sync_mk("なし",1,"$IN{'attach1'}$IN{'attach2'}",\@member_select,1,2);
	$$_item_{'attach2_select'} .= &array_select_sync_mk("なし",1,"$IN{'ban_prefecture'}$IN{'ban_area'}",\@area_select,1,2);
	#$$_item_{'attach2_select'} .= "</select>";

#SAMPLE
#	@member_selec = ();
#	push(@member_select,"部署1"."\t"."部署1<>社員1"."\t"."部署1社員1");
#	push(@member_select,"部署1"."\t"."部署1<>社員2"."\t"."部署1社員2");
#	push(@member_select,"部署1"."\t"."部署1<>社員3"."\t"."部署1社員3");
#	push(@member_select,"部署2"."\t"."部署2<>社員1"."\t"."部署2社員1");
#	push(@member_select,"部署2"."\t"."部署2<>社員2"."\t"."部署2社員2");
#	push(@member_select,"部署2"."\t"."部署2<>社員3"."\t"."部署2社員3");
#SAMPLE

	&sqlwrap_result($query);
	&sqlwrap_close($dbh);

	#	正常終了。
	return $TRUE;

}



#
#	検索画面画面
#
sub 	item_disp1
{
	my($err_ret);

	if($IN{'mode'} eq 'top'){
		$banner_name = 'banner_top';
	}else{
		$banner_name = 'banner_top';
#		$banner_name = 'banner';
	}

#	2016/12/05 IKEDA
#	#	リンクバナー生成。
#	&banner_disp(\%IN, '', '', $banner_name, 10, 'ban_sortnum');
#	2016/12/05 IKEDA

	#	TOPページ固定。
	$IN{'ban_prefecture'} ='東京都';
	$IN{'zoom_level'} = 5;

	$IN{'ban_prefecture'} = &EncodeXSS($IN{'ban_prefecture'});
	$IN{'ban_area'}		  = &EncodeXSS($IN{'ban_area'});

	#	都道府県コードを都道府県名に変換する。
	if($SELECT_PREFECTURE_DATA{"$IN{'ban_prefecture'}"}){
		$IN{'ban_prefecture'} = $SELECT_PREFECTURE_DATA{"$IN{'ban_prefecture'}"};
	}

	#	地域が選択されていない場合は都道府県と同じ値で検索する。
	if($IN{'ban_area'} eq ''){
		$IN{'ban_area'} = $IN{'ban_prefecture'};
	}

	#	都道府県リンクバナー生成
	if($IN{'ban_prefecture'} eq $IN{'ban_area'}){
		#	2016/12/05 IKEDA
		#&banner_disp(\%IN, $IN{'ban_prefecture'}, $IN{'ban_prefecture'}, 'banner_prefecture', 10000, 'ban_sortnum');
		#	2016/12/05 IKEDA
		#	2015/09/01 IKEDA
		#$IN{'google_zoom_level'} = 10;
		$IN{'zoom_level'} = 10 if($IN{'zoom_level'} eq '');
		#	2015/09/01 IKEDA
	}

	#	地域リンクバナー生成
	if($IN{'ban_prefecture'} ne $IN{'ban_area'}){
		#	2016/12/05 IKEDA
		#&banner_disp(\%IN, $IN{'ban_prefecture'}, $IN{'ban_area'}, 'banner_area', 10000, 'ban_sortnum');
		#	2016/12/05 IKEDA
		#	2015/09/01 IKEDA
		#$IN{'google_zoom_level'} = 15;
		$IN{'zoom_level'} = 15 if($IN{'zoom_level'} eq '');
		#	2015/09/01 IKEDA
	}

	#	GoogleMap 中心地表示。
	&MakeGoogleMap($IN{'ban_prefecture'}, $IN{'ban_area'});


	#	GoogleMap 中心地表示。
	$VAR{'main_longitude'}	 = '45.170915';
	$VAR{'main_latitude'}	 = '136.881537';

	#	GoogleMap アンテナ表示。
	&antenna_disp(\%IN);

	#	都道府県と地域プルダウン生成。
	&MakeDoubleSelect(\%IN);

	#	表示用都道府県と地域を設定する。
	if($IN{'ban_prefecture'} eq $IN{'ban_area'}){
		$IN{'prefecture_select_disp'} = $IN{'ban_prefecture'};
	}else{
		$IN{'prefecture_select_disp'} = "$IN{'ban_prefecture'}$IN{'ban_area'}";
	}

	#	画面の生成。
	&MakeOutputEditHtml(\%IN, \$ADDVIEW_MODE, \$SETTING{'upload_dir'}, 'MAIN');

	#	HTML生成。
	&MakeOutputHtml(\%IN, \%VAR, \$temp_file{$IN{'mode'}});

	#	正常終了。
	return $TRUE;

}


#
#	検索結果画面
#
sub 	item_disp2
{
	my($err_ret);

	if($IN{'def_map'} eq '1'){
		$IN{'ban_prefecture'} ='東京都';
		$IN{'zoom_level'} = 5;
	}

	$IN{'ban_prefecture'} = &EncodeXSS($IN{'ban_prefecture'});
	$IN{'ban_area'}		  = &EncodeXSS($IN{'ban_area'});

#	#	リンクバナー生成。
#	$banner_name = 'banner_top';
#	&banner_disp(\%IN, '', '', $banner_name, 10, 'ban_sortnum');

	#	都道府県コードを都道府県名に変換する。
	if($SELECT_PREFECTURE_DATA{"$IN{'ban_prefecture'}"}){
		$IN{'ban_prefecture'} = $SELECT_PREFECTURE_DATA{"$IN{'ban_prefecture'}"};
	}

	#	地域が選択されていない場合は都道府県と同じ値で検索する。
	if($IN{'ban_area'} eq ''){
		$IN{'ban_area'} = $IN{'ban_prefecture'};
	}

	#	都道府県リンクバナー生成
	if($IN{'ban_prefecture'} eq $IN{'ban_area'}){
		&banner_disp(\%IN, $IN{'ban_prefecture'}, '', 'banner_prefecture', 10000, 'RAND()');
		#	2015/09/01 IKEDA
		#$IN{'google_zoom_level'} = 10;
		$IN{'zoom_level'} = 10 if($IN{'zoom_level'} eq '');
		#	2015/09/01 IKEDA
	}

	#	地域リンクバナー生成
	if($IN{'ban_prefecture'} ne $IN{'ban_area'}){
		&banner_disp(\%IN, $IN{'ban_prefecture'}, $IN{'ban_area'}, 'banner_area', 10000, 'RAND()');
		#	2015/09/01 IKEDA
		#$IN{'google_zoom_level'} = 15;
		$IN{'zoom_level'} = 15 if($IN{'zoom_level'} eq '');
		#	2015/09/01 IKEDA
	}

	#	GoogleMap 中心地表示。
	&MakeGoogleMap($IN{'ban_prefecture'}, $IN{'ban_area'});

	if($IN{'def_map'} eq '1'){
		#	GoogleMap 中心地表示。
		$VAR{'main_longitude'}	 = '40.170915';
		$VAR{'main_latitude'}	 = '136.881537';
	}

	#	GoogleMap アンテナ表示。
	&antenna_disp(\%IN);

	#	都道府県と地域プルダウン生成。
	&MakeDoubleSelect(\%IN);

	#	表示用都道府県と地域を設定する。
	if($IN{'ban_prefecture'} eq $IN{'ban_area'}){
		$IN{'prefecture_select_disp'} = $IN{'ban_prefecture'};
	}else{
		$IN{'prefecture_select_disp'} = "$IN{'ban_prefecture'}$IN{'ban_area'}";
	}

	#	画面の生成。
	&MakeOutputEditHtml(\%IN, \$ADDVIEW_MODE, \$SETTING{'upload_dir'}, 'MAIN');

	#	HTML生成。
	&MakeOutputHtml(\%IN, \%VAR, \$temp_file{$IN{'mode'}});

	#	正常終了。
	return $TRUE;

}


#
#	GoogleMap生成。
#
sub		MakeGoogleMap
{
	my($_search_prefecture, $_search_city, $_search_text) = @_;
	my(@wherewords);

	#	検索条件を設定する。
	push(@wherewords, qq/pub_prefecture LIKE '%${_search_prefecture}%'/) if(${_search_prefecture} ne '');
	if(${_search_city} ne ''){
		push(@wherewords, qq/pub_city LIKE '%${_search_city}%'/) 
	}else{
		if($_search_text eq ''){
			push(@wherewords, qq/pub_city = ''/) 
		}
	}
	push(@wherewords, qq/pub_city LIKE '%${_search_text}%'/) if(${_search_text} ne '');
	$whereword = join(' AND ', @wherewords);

	#	DB接続。
	$dbh = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

	if(($_search_prefecture eq '') && ($_search_city eq '')){

		#	都道府県・地域などが選択されていない場合の緯度・経度。
		$main_latitude	 = '35.170915';
		$main_longitude	 = '136.881537';

	}else{

		#	都道府県・地域などが選択されていた場合は役所情報から中心点を取得する。
		$sql_statement = qq/ SELECT/
						.qq/    */
						.qq/ FROM/
						.qq/    m_publicoffice/
						.qq/ WHERE/
						.qq/    $whereword/
						;

		$query = &sqlwrap_query($dbh,"$sql_statement");
		$nums = &sqlwrap_num_rows($query);
		for(my $num=0;$num < $nums;$num++) {

			#	値の取得。
			$rec_val = sqlwrap_fetch_assoc($query);
			$VAR{'main_name'}		 = &Encode_UTF8($rec_val->{'pub_name'});
			$VAR{'main_latitude'}	 = &Encode_UTF8($rec_val->{'pub_latitude'});
			$VAR{'main_longitude'}	 = &Encode_UTF8($rec_val->{'pub_longitude'});

		}


	}

	&sqlwrap_result($query);
	&sqlwrap_close($dbh);

	#	正常終了。
	return $TRUE;

}


#
#	テーブル構造のオーバーライト。
#
sub		OverwriteTableStructure
{
	my($_record, $_sqlcreate) = @_;

	#	フィールド設定。(全件書換が必要)
#	@$_record = (
#		"mem_id"									,#	ID
#		"mem_add_date"								,#	登録日時
#		"mem_upd_date"								,#	更新日時
#	);

	#	データ型設定。(個々の設定が可能)
#	$$_sqlcreate{"mem_id"} = "serial";				#	ID
#	$$_sqlcreate{"mem_add_date"} = "timestamp";		#	登録日時
#	$$_sqlcreate{"mem_upd_date"} = "timestamp";		#	更新日時

	#	正常終了。
	return $TRUE;

}


#
#	入力値コンバート
#
sub 	item_conv
{
	my($mode) = @_;

	&ConvertDataDisplayForm(\%MAIN_REQUIRED, \%MAIN_CHECKED, \%VAR, \$mode);

}

#
#	入力内容確認
#
sub 	item_check
{

	my($mode) = @_;

	my(@suffixlist);
	my($suffix);

	$ret = &input_check(\%MAIN_REQUIRED, \%MAIN_CHECKED, \%IN, $mode);

	return($ret);

}


#
#	検索条件を設定する。
#
sub		MakeSQLwherevalue
{
	my($_item_, $_wherewords_) = @_;
	my(@wherewords);
	my($whereword);
	my($search_key_mem_name);

	$$_wherewords_ = '';

	foreach $s_val(keys %LIST_SERACH){

		#	LIKE検索。
		if($LIST_SERACH{"$s_val"}[0] eq 'LIKE'){

			#	外部入力文字列のエンコード。
			$$_item_{"$s_val"}		= &EncodeXSS($$_item_{"$s_val"});

			push(@wherewords, qq/${s_val} LIKE '%$$_item_{"s_${s_val}"}%'/) if($$_item_{"s_${s_val}"} ne '');


		#	日付範囲検索。
		}elsif($LIST_SERACH{"$s_val"}[0] eq 'DATE'){

			#	外部入力文字列のエンコード。
			$$_item_{"${s_val}_s"}		= &EncodeXSS($$_item_{"${s_val}_s"});
			$$_item_{"${s_val}_e"}		= &EncodeXSS($$_item_{"${s_val}_e"});

			$$_item_{"s_${s_val}_s"} =~ s|/|-|g;
			$$_item_{"s_${s_val}_e"} =~ s|/|-|g;
			push(@wherewords, qq/${s_val} >= '$$_item_{"s_${s_val}_s"} 00:00:00'/) if($$_item_{"s_${s_val}_s"} ne '');
			push(@wherewords, qq/${s_val} <= '$$_item_{"s_${s_val}_e"} 23:59:59'/) if($$_item_{"s_${s_val}_e"} ne '');

		#	その他指定検索。
		}else{

			#	外部入力文字列のエンコード。
			$$_item_{"$s_val"}		= &EncodeXSS($$_item_{"$s_val"});

			#	指定検索の値を設定する。
			$$_item_{"s_${s_val}"} = $LIST_SERACH{"$s_val"}[2] if($LIST_SERACH{"$s_val"}[2] ne '');

			if($LIST_SERACH{"$s_val"}[1] eq 'int'){

				push(@wherewords, qq/${s_val} $LIST_SERACH{"$s_val"}[0] $$_item_{"s_${s_val}"}/) if($$_item_{"s_${s_val}"} ne '');

			}else{

				push(@wherewords, qq/${s_val} $LIST_SERACH{"$s_val"}[0] '$$_item_{"s_${s_val}"}'/) if($$_item_{"s_${s_val}"} ne '');

			}

		}

	}

	#	その他の検索。
	#	SAMPLE
	#$$_item_{'name'}		= &EncodeXSS($$_item_{'name'});
	#push(@wherewords, "name LIKE '%$$_item_{s_name}%'") if($$_item_{s_name} ne '');
	#	SAMPLE

	$whereword = join(' AND ', @wherewords);
	if($whereword) {
		$$_wherewords_ = " WHERE ${whereword}";
	}

	#	正常終了。
	return $TRUE;

}


#
#	一覧画面
#
sub		item_list
{
	my(@datalist);
	my(@lines);
	my($rec_val);
	my($field_val);
	my($nums);

	$IN{'keypress'}		= &EncodeXSS($IN{'keypress'});
	$IN{'p'}			= &EncodeXSS($IN{'p'});

	##	ページ間の保存値設定。
	#	ページ間の保存値の読み込み。
	&parsedata_read(\%IN, \%GROBAL_SESSION, \$SETTING{'gsession_dir'}, \$IN{'gsession'});

	#	データ(定義)がない場合はセッションデータを使用する。
	&_Replacegsession(\%GROBAL_SESSION, \%IN, \%ITEM);

	#	ページ間の値を保存。
	$IN{'gsession'} = &parsedata_save(\%IN, \%GROBAL_SESSION, \$SETTING{'gsession_dir'}, \$SETTING{'gsession_length'});

	#	データベースに接続する。
	$dbh = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

	#	検索条件を設定する。
	@s_holiday = split('/', $IN{'s_holiday'});
	$IN{'s_holiday_year'} = $s_holiday[0];
	$IN{'s_holiday_month'} = $s_holiday[1];
	$IN{'s_holiday_day'} = $s_holiday[2];
	&MakeSQLwherevalue(\%IN, \$whereword);

	#	現在のページ情報(開始ポイント・終了ポイント)を取得する。
	($IN{'p'}, $spage, $epage) = &CalListpage($IN{'p'}, $SETTING{'list_limit'});

	$listcount = 0;
	$listcount = &sqlwrap_table_count($dbh, $SQL_TABLE, $whereword);
	$orderword  = " ORDER BY holiday_year, holiday_month, holiday_day";
	$sql_statement = "SELECT * FROM $SQL_TABLE".$whereword.$orderword;

	$limit_str = &sqlwrap_limit_statement($spage, $SETTING{'list_limit'});
	$query = &sqlwrap_query($dbh,"$sql_statement $limit_str");

	$VAR{'list'} = "";

	$nums = &sqlwrap_num_rows($query);
	for(my $num=0;$num < $nums;$num++) {
		$rec_val = sqlwrap_fetch_assoc($query);
		foreach $field_val (@MAIN_RECORD){
			$VAR{$field_val} = $rec_val->{$field_val};
			$VAR{$field_val} = &Encode_UTF8($VAR{$field_val});
		}

		$VAR{'key'} = $VAR{"${SQL_UNIQUE}"};
		$VAR{'list'} .= &parse_template("./supporter_map/list_tr.html");

	}

	&sqlwrap_result($query);
	&sqlwrap_close($dbh);

	@get_arg = (
		"session",
		"gsession",
		"mode",
	);
	foreach $arg_item (@get_arg) {
		$cnv = &EncodeURL($IN{$arg_item});
		$arg .= "&".$arg_item."=".$cnv;
	}

	if($listcount <= 0) {
		$VAR{'listtopmsg'} = qq#[ 登録されているデータはありません ]\n#;
	} else {
		$VAR{'listtopmsg'} = qq#[ $IN{'p'}ページ目を表\示しています 全件数：${listcount} 件]\n#;
	}

	#	改ページ生成。
	$VAR{'listnext'} = &listpage_bar_post($VAR{'cgi_url'}, $IN{'p'}, $listcount, $SETTING{'list_limit'}, $arg, "#CCCCCC", "#FFDEDF", "#EEEEEE");

	##	検索用プルダウンを生成する。
	#	年プルダウン。
	$VAR{'mail_outer_member_member_id_list'} = '<select name="s_mail_outer_member_member_id">';
	$VAR{'mail_outer_member_member_id_list'} .= &array_select_mk("select", ' ', '', 1, $IN{'s_mail_outer_member_member_id'}, \@SELECT_MEMBER);
	$VAR{'mail_outer_member_member_id_list'} .= "</select>";
	#	月プルダウン。
	$VAR{'mail_outer_member_member_id_list'} = '<select name="s_mail_outer_member_member_id">';
	$VAR{'mail_outer_member_member_id_list'} .= &array_select_mk("select", ' ', '', 1, $IN{'s_mail_outer_member_member_id'}, \@SELECT_MEMBER);
	$VAR{'mail_outer_member_member_id_list'} .= "</select>";
	#	日プルダウン。
	$VAR{'mail_outer_member_member_id_list'} = '<select name="s_mail_outer_member_member_id">';
	$VAR{'mail_outer_member_member_id_list'} .= &array_select_mk("select", ' ', '', 1, $IN{'s_mail_outer_member_member_id'}, \@SELECT_MEMBER);
	$VAR{'mail_outer_member_member_id_list'} .= "</select>";


	#	HTML生成。
	&MakeOutputHtml(\%IN, \%VAR, \$temp_file{$IN{'mode'}});

	#	正常終了。
	return $TRUE;

}

#	2016/12/05 IKEDA
#
#	データの存在を確認する。
#
sub		CheckBannerInfoSelectData
{
	my($_data_, $_selectname_, $_selectret_) = @_;
	my($_sql_statement);
	my($_query);

	#	検索結果は登録無しで初期化。
	$$_selectret_ = $FALSE;

	#	DB接続。
	$_dbh_ = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});

	#	データの存在を確認する。
	#$_sql_statement = "SELECT * FROM m_banner_info WHERE _delete_flag = 0 AND bin_year = $$_data_{'bin_year'} AND bin_month = $$_data_{'bin_month'}";
	$_sql_statement = "SELECT * FROM m_banner_info WHERE _delete_flag = 0";
	$_query = &sqlwrap_query($_dbh_,"$_sql_statement");
	$_nums = &sqlwrap_num_rows($_query);

	for(my $_num=0;$_num < $_nums;$_num++) {

		$_rec_val = &sqlwrap_fetch_assoc($_query);
		$bin_com_name = &Encode_UTF8($_rec_val->{'bin_com_name'});

		if($$_selectname_ =~ m/.*$bin_com_name.*/){

			$$_data_{'bin_com_name'} = &Encode_UTF8($_rec_val->{'bin_com_name'});
			$$_data_{'bin_com_id'} = &Encode_UTF8($_rec_val->{'bin_com_id'});

			#	更に今月の集計保存データが存在することを確認する。
			$_sql_statement_item = qq|SELECT * FROM m_banner_info WHERE _delete_flag = 0 AND bin_year = $$_data_{'bin_year'} AND bin_month = $$_data_{'bin_month'} AND bin_com_name = '$$_data_{'bin_com_name'}' AND bin_com_id = $$_data_{'bin_com_id'}|;
			$_query_item = &sqlwrap_query($_dbh_,"$_sql_statement_item");
			$_num_item = &sqlwrap_num_rows($_query_item);

			if($_num_item > 0){

				#	処理結果を返す。
				$$_selectret_ = $TRUE;
				return $TRUE;

			}else{

				#	登録無し。
				last;

			}

		}

	}

	#	登録無し。
	return $TRUE;

}
#	2016/12/05 IKEDA


#	2016/12/05 IKEDA
##
##	データの存在を確認する。
##
#sub		CheckSelectData
#{
#	my($_selectret_, $_dbtable_, $_dbwhere_) = @_;
#	my($_query);
#	my($_sql_statement);
#	my($_query);
#	my($_retnum);
#	my($_ret);
#
#	#	処理結果。
#	$_ret = $TRUE;
#
#	#	検索結果は登録有りで初期化。
#	$$_selectret_ = $TRUE;
#
#	#	DB接続。
#	$_dbh_ = &sqlwrap_db($SQLCONFIG{db_host},$SQLCONFIG{db_user},$SQLCONFIG{db_password},$SQLCONFIG{db_database});
#
#	#	データの存在を確認する。
#	$_sql_statement = "SELECT * FROM $_dbtable_ WHERE $_dbwhere_";
#
#	return $FALSE if(&sqlwrap_query_ex(\$_dbh_, \$_sql_statement, \$_query) == $FALSE);
#	$_retnum = &sqlwrap_num_rows($_query);
#
#	#	検索結果を設定する。
#	if($_retnum <= 0){
#
#		#	登録無し。
#		$$_selectret_ = $FALSE;
#
#	}
#
#	#	処理結果を返す。
#	return $_ret;
#
#}
#	2016/12/05 IKEDA
