//==============
// 初期設定
//==============

//国内フォームのセレクタ
var H_d_form = '#dForm';

//国内プルダウンのセレクタ
var H_d_dest = '#dForm #p_dest';
var H_d_prefecture = '#dForm #p_prefecture';

//必須チェックしたいセレクタと日本語
var H_MustSelector = Array('#dForm #p_hatsu :selected', '#dForm #p_dest :selected');
var H_MustSelectorStr = Array('ご出発地', '目的エリア');

//==============
// グローバル変数
//==============
var G_PrefectureObj = new Object();	//都道府県コード
var G_DestAndPreObj = new Object();	//方面と都道府県の関係性



//==============
// 初動
//==============
$(function(){
	//都道府県オブジェクトを生成する
	MakePrefectureObj();


	//国内の方面が選ばれたとき
	$(H_d_dest).change(function(){
		//都道府県リストを生成する
		MakePrefectureList($(this));
	});

});

//---------------ここからサブモジュール----------------


//------------------------
//	都道府県オブジェクトを生成する
//------------------------
function MakePrefectureObj(){
	G_PrefectureObj[01] = '北海道';
	G_PrefectureObj[02] = '青森県';
	G_PrefectureObj[03] = '岩手県';
	G_PrefectureObj[04] = '宮城県';
	G_PrefectureObj[05] = '秋田県';
	G_PrefectureObj[06] = '山形県';
	G_PrefectureObj[07] = '福島県';
	G_PrefectureObj[08] = '茨城県';
	G_PrefectureObj[09] = '栃木県';
	G_PrefectureObj[10] = '群馬県';
	G_PrefectureObj[11] = '埼玉県';
	G_PrefectureObj[12] = '千葉県';
	G_PrefectureObj[13] = '東京都';
	G_PrefectureObj[14] = '神奈川県';
	G_PrefectureObj[15] = '新潟県';
	G_PrefectureObj[16] = '富山県';
	G_PrefectureObj[17] = '石川県';
	G_PrefectureObj[18] = '福井県';
	G_PrefectureObj[19] = '山梨県';
	G_PrefectureObj[20] = '長野県';
	G_PrefectureObj[21] = '岐阜県';
	G_PrefectureObj[22] = '静岡県';
	G_PrefectureObj[23] = '愛知県';
	G_PrefectureObj[24] = '三重県';
	G_PrefectureObj[25] = '滋賀県';
	G_PrefectureObj[26] = '京都府';
	G_PrefectureObj[27] = '大阪府';
	G_PrefectureObj[28] = '兵庫県';
	G_PrefectureObj[29] = '奈良県';
	G_PrefectureObj[30] = '和歌山県';
	G_PrefectureObj[31] = '鳥取県';
	G_PrefectureObj[32] = '島根県';
	G_PrefectureObj[33] = '岡山県';
	G_PrefectureObj[34] = '広島県';
	G_PrefectureObj[35] = '山口県';
	G_PrefectureObj[36] = '徳島県';
	G_PrefectureObj[37] = '香川県';
	G_PrefectureObj[38] = '愛媛県';
	G_PrefectureObj[39] = '高知県';
	G_PrefectureObj[40] = '福岡県';
	G_PrefectureObj[41] = '佐賀県';
	G_PrefectureObj[42] = '長崎県';
	G_PrefectureObj[43] = '熊本県';
	G_PrefectureObj[44] = '大分県';
	G_PrefectureObj[45] = '宮崎県';
	G_PrefectureObj[46] = '鹿児島県';
	G_PrefectureObj[47] = '沖縄県';

	//方面と都道府県の関係性。ここの並びで、表示順も制御できます
	G_DestAndPreObj[10] = Array(01,'');	//北海道
	G_DestAndPreObj[11] = Array(02,05,06,03,04,07);	//東北
	G_DestAndPreObj[12] = Array(08,09,10,11,12,14,22);	//関東
	G_DestAndPreObj[13] = Array(19,15,16,17,18,20,21,22,23,24);	//中部北陸は13に寄せる
	G_DestAndPreObj[16] = Array(25,26,27,29,28,30);	//近畿
	G_DestAndPreObj[17] = Array(31,32,33,34,35);	//中国
	G_DestAndPreObj[18] = Array(36,37,38,39);	//四国
	G_DestAndPreObj[19] = Array(40,41,42,43,44,45,46);	//九州
	G_DestAndPreObj[20] = Array(47,'');	//沖縄
}

//------------------------
//	都道府県リストを生成する
//------------------------
function MakePrefectureList(H_this){
	//最初の「お選び」以外をクリア
	$(H_d_prefecture).find("option:gt(0)").remove();

	H_destValAll = $(":selected", H_this).val();
	//カンマ区切りの処理
	H_destValAry = H_destValAll.split(',');
	for ( i =0; i < H_destValAry.length; i++ ) {
		H_destVal = H_destValAry[i]

		//方面コードに都道府県コードが入っていた場合
		if(H_destVal.length > 2 && H_destVal.substring(0,3) == 'pre'){
			H_PrefectureVal = H_destVal.replace('pre', '');
			$(H_d_prefecture).append('<option value=\"' + H_PrefectureVal + '\">' + G_PrefectureObj[H_PrefectureVal] + '</option>');
		}
		//通常パターン
		else{
			//方面コードがある場合だけ動く
			if(G_DestAndPreObj[H_destVal]){
					$(G_DestAndPreObj[H_destVal]).each(function (H_i,H_destcode) {
						H_destcode2 = String(H_destcode);
						if(H_destcode != ''){
							if(H_destcode2.length <2){
								H_destcode2 = String(0) + String(H_destcode2);
							}
							$(H_d_prefecture).append('<option value=\"' + H_destcode2 + '\">' + G_PrefectureObj[H_destcode] + '</option>');
						}
					});
			}
		}

	}
}

//------------------------
//	submit時
//------------------------
//いきなりグローバル変数出現;;;;;
FLG_Submit = URL_Param = '';
function formSubmit(){
	//必須チェックをします
	formCheck();
	//フラグがOKだったら、送りつける
	if(FLG_Submit == 'OK'){
		ReNameParam();	//キレイなURLに整形
		//biglobeは別窓です。
		window.open($(H_d_form).attr('action') + URL_Param);
	}
}

//------------------------
//	キレイなURLにする
//------------------------
function ReNameParam(){
	//連想配列 初期化
	$DsParamAry = new Object();

	//inputの値（テキストエリア）
	$selector = H_d_form + " input[type='text']";
	MakeParam($selector);

	//inputの値（hidden）
	$selector = H_d_form + " input:hidden";
	MakeParam($selector);

	//select系の値
	$selector = H_d_form + " select";
	MakeParamSelect($selector);

	URL_Param = '';
	for (var H_ParamName in $DsParamAry) {
		H_AdParam = '';
		if($DsParamAry[H_ParamName]){
			if(URL_Param){
				URL_Param += '&' + H_ParamName + '=' + $DsParamAry[H_ParamName];
			}
			else{
				URL_Param += '?' + H_ParamName + '=' + $DsParamAry[H_ParamName];
			}
		}
	}

}


//------------------------
//	必須項目チェック
//------------------------
function formCheck(){
	//チェックしたいセレクタをそれぞれチェック
	FLG_Submit = 'OK';
	for ( i =0; i < H_MustSelector.length; i++ ) {
		H_TgSelector = $(H_MustSelector[i]).val();
		if(!H_TgSelector){
			H_Mes = H_MustSelectorStr[i] + 'を指定してください';
			alert(H_Mes);
			FLG_Submit = 'NG';
			return false;
		}
	}
}



//==================================
//	パラメータをセットする際の共通の動き
//==================================
//nameとvalueの場合
function MakeParam($selector){
	if(!$selector){
		return;
	}
	$($selector).each(function ($i,$elem) {
		$name = $elem.name;
		var myValue = $elem.value;
		if($name == 'p_key' && myValue != ''){
			myValue = encodeURI(myValue);
		}

		if($DsParamAry[$name] != null){
			$DsParamAry[$name] += ',' + myValue;
		}else{
			$DsParamAry[$name] = myValue;
		}
	});
}

//selectedされているものを全て選択する場合
function MakeParamSelect($selector){
	$($selector).each(function ($i,$elem) {
		$name = $elem.name;
		$(":selected", this).each(function ($j,$elem2) {
			var myFlg = 1;
			if($elem2.value == ''){
					myFlg = 0;
			}
			//方面に国が入った場合の処理
			if($name == 'p_dest'){
				if($elem2.value.length > 2 && $elem2.value.substring(0,3) == 'pre'){
					//国へ値を入れる
					$DsParamAry['p_prefecture'] = $elem2.value.replace('pre', '');
					//フラグはナシ
					myFlg = 0;
				}
			}
			//OKフラグなら
			if(myFlg == 1){
				if($DsParamAry[$name] != null){
					$DsParamAry[$name] += ',' + $elem2.value;
				}else{
					$DsParamAry[$name] = $elem2.value;
				}
			}
		});
	})
}

