/*
=========================================================
	検索ボックス用のJS一式
=========================================================
*/

//SearchBoxClassの略
var sbc = {
	 FormID: ''	//例：#iSearchBox
	,SetTg: ''	//例：Dest	//ファセットを返したいパラメータ
	,ErrMes: '必須項目を設定してください'
	,DepDateSel: ''	//出発日セレクタ
	,SubWinID: 'SubWinBox'
	,TgIdName: '#SubWinBox'	//オーバーレイセレクタ
	,TGOverlaySelector: ':has("#SubWinBox")'
	,SetDepDateToday: ''	//出発日の入力例
	

	/*--------------------
		ajaxする
	----------------------*/
	,SendSearch: function(TgSelector, TgType, AddVar){
		/*変数の定義*/
		this.FormID = '#' + $(TgSelector).parents('form').attr('id');
		this.SetTg = '';
		var BaseName = '/sharing/phpsc/ajax_searchBox.php';
		var ReSearchSelector = this.FormID+' input[type=text], '+this.FormID+' input[type=hidden], '+this.FormID+' input[type=checkbox]:checked';
		var ReSearchSelectorSel = this.FormID+' select';
		var forWMDepDate = this.FormID+' input[name=p_dep_date]';
		this.WatermarkOutDep(forWMDepDate);
		var DisabledSel = '';	//触れなくするプルダウン

		var ObjA = new Object();
		var ObjB = new Object();
		var paramObj = new Object();
		//自分の名前は何？
		var TgName = $(TgSelector).attr('name');
		//自分自身がp_hatsuだったとき、方面・国・都市をクリアする必要がある
		if(TgName == 'p_hatsu' || TgName == 'p_hatsu_sub'){
			this.ClearDCC('Dest,Country,City');
			this.ClearBUS();
			//値があったら、必須はhidden、無かったらview
			var RQSelector = this.FormID+' #RQp_hatsu';
			$(RQSelector).toggle($(TgSelector).val() == false);
			//固定するのは目的地
			DisabledSel = this.FormID+' #preDest';
			$(DisabledSel).attr('disabled', 'disabled');
		}
		//自分がdestなら、国都市クリア
		if(TgName == 'preDest'){
			this.ClearDCC('Country,City');
			this.ClearBUS();
			//値があったら、必須はhidden、無かったらview
			var RQSelector = this.FormID+' #RQ'+TgName;
			$(RQSelector).toggle($(TgSelector).val() == false);
			//固定するのは国
			DisabledSel = this.FormID+' #preCountry';
			$(DisabledSel).attr('disabled', 'disabled');
		}
		//自分がCountryなら、都市クリア
		if(TgName == 'preCountry'){
			this.ClearDCC('City');
			this.ClearBUS();
			//固定するのは都市
			DisabledSel = this.FormID+' #preCity';
			$(DisabledSel).attr('disabled', 'disabled');
		}
		//他もバスクリア
		if(TgName == 'preCity' || TgName == 'p_kikan_min' || TgName == 'p_kikan_max'){
			this.ClearBUS();
		}
		
		var ObjA = FncValueSetAry(ReSearchSelector, ',');	//input型
		var ObjB = FncValueSetSelectAry(ReSearchSelectorSel, ',');	//selsect型
		var paramObj = $.extend(ObjA, ObjB);	//配列の結合

		/*Ajax*/
		switch(TgType){
			case 0:	//通常
				$.ajax({
					 data: paramObj
					,dataType: 'script'
					,url: BaseName
				});
				break;
	
			case 1:	//自分自身が何か＋ファセット返して欲しいのは何か
				paramObj['SetParam'] = TgName;
				if(this.SetTg == 99){
					this.SetTg = '';
				}
				paramObj['RetParam'] = this.SetTg;
				$.ajax({
					 data: paramObj
					,dataType: 'script'
					,url: BaseName
				});
				break;
			case 2:	//出発日前へ次へ
				paramObj['SetParam'] = TgName;
				paramObj['ViewMonth'] = AddVar;
				$.ajax({
					 data: paramObj
					,dataType: 'script'
					,url: BaseName
				});
				break;
		}
		//固定戻す
		if(DisabledSel){
			$(DisabledSel).attr('disabled', '');
		}
		//出発日戻す
		sbc.WatermarkDep(forWMDepDate);

	}
	/*バスをクリアする*/
	,ClearBUS: function(){
		//バスセレクタ
		var BusSel = this.FormID+' #p_bus_boarding_code';
		/*バスは全共通*/
		if($(BusSel).attr('id')){
			$(':gt(0)',BusSel).remove();
		}
	}

	/*方面・国・都市をクリアするサブモジュール*/
	,ClearDCC: function(Type){
		//方面・国・都市セレクタ
		var DestSel = this.FormID+' #preDest';
		var CountrySel = this.FormID+' #preCountry';
		var CitySel = this.FormID+' #preCity';
		var formId = this.FormID;
		var destObj = $(formId).find("#preDest");
		var countryObj = $(formId).find("#preCountry");
		var cityObj = $(formId).find("#preCity");
		
		var TypeAry = Type.split(',');
		jQuery.each(TypeAry, function(i, str) {
			switch(str){
				case 'Dest':
					if(destObj.attr('type') != 'hidden'){
						if($(':first',destObj).val() == ''){
							$(':gt(0)',destObj).remove();
							if(sbc.SetTg === ''){
								sbc.SetTg = 0;
							}
							var RQSelector = sbc.FormID+' #RQpreDest';
							$(RQSelector).show();
						}
						else{
							if(sbc.SetTg === ''){
								sbc.SetTg = 99;
							}
						}
					}
					break;
				case 'Country':
					if(countryObj.attr('type') != 'hidden'){
						if($(':first',countryObj).val() == ''){
						//if($(testForm).find("#preCountry").eq(0).val() == ''){
							$(':gt(0)',countryObj).remove();
							if(sbc.SetTg === ''){
								sbc.SetTg = 1;
							}
						}
						else{
							if(sbc.SetTg === ''){
								sbc.SetTg = 99;
							}
						}
					}
					break;
				case 'City':
					if(cityObj.attr('type') != 'hidden'){
						if($(':first',cityObj).val() == ''){
							$(':gt(0)',cityObj).remove();
							if(sbc.SetTg === ''){
								sbc.SetTg = 2;
							}
						}
						else{
							if(sbc.SetTg === ''){
								sbc.SetTg = 99;
							}
						}
					}
					break;
			}
		});
	}
	/*送信するとき*/
	,Submit: function(ClickBtn){
		/*エラーの条件*/
		/*変数の定義*/
		if(!this.FormID){
			this.FormID = '#' + $(ClickBtn).parents('form').attr('id');
		}
		var ReSearchSelector = this.FormID+' input[type=text], '+this.FormID+' input[type=hidden]';
		var ReSearchSelectorSel = this.FormID+' select';

		var ObjA = new Object();
		var ObjB = new Object();
		var paramObj = new Object();

		var ObjA = FncValueSetAry(ReSearchSelector, ',');	//input型
		var ObjB = FncValueSetSelectAry(ReSearchSelectorSel, ',');	//selsect型
		var paramObj = $.extend(ObjA, ObjB);	//配列の結合

		/*出発地処理*/
		var forWMDepDate = this.FormID+' input[name=p_dep_date]';
		this.WatermarkOutDep(forWMDepDate);

		/*必須チェック*/
		//出発地
		var checkHatsuVal = false;
		if(paramObj['MyNaigai'] == 'i'){
			checkHatsuVal = paramObj['p_hatsu'];
		}
		else if(paramObj['MyNaigai'] == 'd'){
			checkHatsuVal = paramObj['p_hatsu_sub'];
		}
		//ちぇっくちぇっく
//		if(!checkHatsuVal || !paramObj['preDest']){
		if(!checkHatsuVal){
			alert(sbc.ErrMes);
			void(0);
			return false;
		}

		/*サイトカタリストの処理*/
		utilityJs.SAS_setCookie('SAS_VARS_TYPE', '検索', '', '/', 'hankyu-travel.com', '');

		/*目的地の処理*/
		var MokutekiVal = '';
		if(paramObj['preDest']){
			var DestSplit = paramObj['preDest'].split(',');
			if(DestSplit.length > 1){	//複数方面
				jQuery.each(DestSplit, function(i, val) {
					if(i > 0){
						MokutekiVal += ',';
					}
					MokutekiVal += val + '--';
				});
			}
			else{
				//方面はひとつ、国が複数
				if(paramObj['preCountry']){
					var CountrySplit = paramObj['preCountry'].split(',');
					if(CountrySplit.length > 1){	//複数国
						jQuery.each(CountrySplit, function(i, val) {
							if(i > 0){
								MokutekiVal += ',';
							}
							MokutekiVal += paramObj['preDest'] + '-' + val + '-';
						});
					}
					else{
						MokutekiVal = paramObj['preDest'] + '-' + paramObj['preCountry'] + '-' + paramObj['preCity'];
					}
				}
				//国はひとつ
				else{
					MokutekiVal = paramObj['preDest'] + '-' + paramObj['preCountry'] + '-' + paramObj['preCity'];
				}
			}
		}

		MokutekiVal = MokutekiVal.replace(/undefined/ig, '');
		if(MokutekiVal == '--'){
			MokutekiVal = '';
		}
		var ApStr = '<input type="hidden" name="p_mokuteki" value="' + MokutekiVal + '" />'
		$(this.FormID).append(ApStr);
		$(this.FormID).submit();
		void(0);
		return false;
	}
	/*リセットするとき*/
	,Reset: function(ClickBtn){
		if(!this.FormID){
			this.FormID = '#' + $(ClickBtn).parents('form').attr('id');
		}
		$(this.FormID).each(function(){
			this.reset();
		});
		//値があったら、必須はhidden、無かったらview
		var RQSelector = this.FormID+' #RQp_hatsu';
		$(RQSelector).toggle($('#p_hatsu').val() == false);
		var RQSelector = this.FormID+' #RQpreDest';
		$(RQSelector).toggle($('#preDest').val() == false);
		//分類バスも
		var RQSelector = this.FormID+' #bus_bunrui';
		$(RQSelector).val('');
		
		//リクエストしなおし
		if($('select[name=p_conductor]', this.FormID).attr('type') == 'select-one'){
			this.SendSearch($('select[name=p_conductor]', this.FormID), 1);
		}
		else if($('select[name=	p_kikan_min]', this.FormID).attr('type') == 'select-one'){
			this.SendSearch($('select[name=p_kikan_min]', this.FormID), 1);
		}
	}

	/*出発日*/
	,DepDate: function(DepDateSel){
		//まだボックスが出てなければ表示させる
		if(!$('body').is(this.TGOverlaySelector)){
			//メッセージボックスを作る
			MakeOverLay('auto', 700, 'body', this.SubWinID, this.SubWinID);	//高さ、幅、どこに作る、ID、Class
			if(!this.FormID){
				this.FormID = '#' + $(DepDateSel).parents('form').attr('id');
			}
			// IE6でselectとobjectが前面に来る対策 - 非表示にする
			$("select,object").css("visibility","hidden");
			$(this.TgIdName).hide();	//Ajax終わるまで隠しておく
			//通信
			this.SendSearch(DepDateSel, 1);
			//入れ物の位置を設定
			var Offset = $(DepDateSel).position();
			var top  = Math.floor(($(window).height() - $(this.TgIdName).height()) / 2) + $('html').scrollTop();
			var left = Math.floor(($(window).width() - $(this.TgIdName).width()) / 2);  
			if(top<0){
				top = 0;
			}
			$(this.TgIdName) 
				.css({
					 "top": top
					,"left": left
			}).fadeIn();
		}
		this.WatermarkOutDep(DepDateSel);
	}
	,DelSubWinforSenmon: function(){
		if($('body').is(sbc.TGOverlaySelector)){
			$(sbc.TgIdName).fadeOut("fast", function() {
				$(sbc.TgIdName).remove();
			});
			//IE6対策を元に戻す
			$("select,object").css("visibility","visible");
		}
	}
	/*出発日透かし文字*/
	,WatermarkDep: function(DepDateSel){
		if(this.SetDepDateToday == ''){
			this.setDateForDep();
		}
		if($(DepDateSel).val() == '' || $(DepDateSel).val() == this.SetDepDateToday){
			$(DepDateSel).val(this.SetDepDateToday).addClass('NS_Watermark');
		}
		else{
			$(DepDateSel).removeClass('NS_Watermark');
		}
	}
	/*出発日透かし文字を消す*/
	,WatermarkOutDep: function(DepDateSel){
		if(this.SetDepDateToday == ''){
			this.setDateForDep();
		}
		if($(DepDateSel).val() == this.SetDepDateToday){
			$(DepDateSel).val('');
		}
	}
	/*出発日でAjaxしなきゃ*/
	,WatermarkAjaxDep: function(DepDateSel){
		var FormID = this.FormID;
		if(!this.FormID){
			FormID = '#' + $(DepDateSel).parents('form').attr('id');
		}
		//リクエストしなおし
		if($('select[name=p_conductor]', FormID).attr('type') == 'select-one'){
			this.SendSearch($('select[name=p_conductor]', FormID), 1);
		}
		else if($('select[name=	p_kikan_min]', FormID).attr('type') == 'select-one'){
			this.SendSearch($('select[name=p_kikan_min]', FormID), 1);
		}
		this.WatermarkDep(DepDateSel);
	}
	/*今日の日付*/
	,setDateForDep: function(){
		//今日の日付
		var Today = new Date();
		var Y = Today.getFullYear();
		var M  = Today.getMonth() + 1;
		var D = Today.getDate();
		this.SetDepDateToday = '例）' + Y + '/' + M + '/' + D;
	}

};

//--------------------
//	日付を押したとき（出発日）
//----------------------
function SWDate (SetVal){
	var DepDateSel = sbc.FormID + ' input[name=p_dep_date]';
	$(DepDateSel).val(SetVal).removeClass('NS_Watermark');	//セットして
	sbc.DelSubWinforSenmon();	//閉じる
	//IE6対策を元に戻す
	$("select,object").css("visibility","visible");
//	//通信
//	//自分はなんでもいいや
//	var MyParam = sbc.FormID + ' select[name=p_conductor]';
//	sbc.SendSearch(MyParam, 1)
//	void(0);
//	return false;
}
//--------------------
//	前へ次へ（出発日）
//----------------------
function NextBackBtnAction (DepDate){
	var DepDateSel = sbc.FormID + ' input[name=p_dep_date]';
	$(DepDateSel).focus();
	//通信
	sbc.SendSearch(DepDateSel, 2, DepDate);
	void(0);
	return false;
}



/*----------------- class="JS_SearchBox"
	ロード時
-------------------*/
$(function(){
	/*念のため、出発日サブウィンドウは消しておく*/
	sbc.DelSubWinforSenmon();
	//ターゲットのフォーム
	var SearchBoxForm = 'form.JS_SearchBox';
	/*----- 色々触ったらAjax -----*/
	$(SearchBoxForm+' select').change(function() {
		sbc.SendSearch(this, 1);
		void(0);
		return false;
	});
	$(SearchBoxForm+' input[type=checkbox]').click(function() {
		//バスの場合の特別処理
		/*バスは全共通*/
		if($(this).val() == '1' && $(this).attr('name') == 'p_transport'){
			var BusChecked = $(this).attr('checked');
			if(BusChecked === false){
				$('#bus_bunrui').val('');
			}
			else{
				$('#bus_bunrui').val('813');
			}
		}
		sbc.SendSearch(this, 1);
	});

	/*----- Submit Reset -----*/
	$(SearchBoxForm+' .JS_Submit').click(function() {
		sbc.Submit(this);
		void(0);
		return false;
	});
	$(SearchBoxForm+' .JS_Reset').click(function() {
		sbc.Reset(this);
		void(0);
		return false;
	});
	
	/*----- 出発日は特別 -----*/
	$(SearchBoxForm+' input[name=p_dep_date]').click(function() {
		sbc.DepDate(this);
	});
	/*----- 外側クリック対策 -----*/
	$('html').click(function(depEvent) {
		var TargetClass = $(depEvent.target).attr('class');
		var TargetName = $(depEvent.target).attr('name');
		if(TargetClass !== 'SW_CalNext' && TargetClass !== 'SW_CalBack' && TargetName !== 'p_dep_date'){
			if($('html').is(sbc.TGOverlaySelector)){
				//ウィンドウ消す
				sbc.DelSubWinforSenmon();
				var forWMDepDate = 'form input[name=p_dep_date]';
				jQuery.each($(forWMDepDate), function(i, val) {
					sbc.WatermarkAjaxDep(this);
				});
			}
		}

	});
	/*----- 出発日ウォーターマーク -----*/
	var forWMDepDate = SearchBoxForm+' input[name=p_dep_date]';
	sbc.WatermarkDep(forWMDepDate);
	/*変更があったときもね*/
	$(forWMDepDate).change(function() {
//		sbc.WatermarkOutDep(forWMDepDate);
		sbc.WatermarkAjaxDep(this);
	});
//	$(forWMDepDate).focus(function() {
//																	alert('およ');
//		sbc.WatermarkOutDep(forWMDepDate);
//	});
});

