// ■処理中画面ブロックを生成
//
function blockMessageRun( message ) {
	
	$.blockUI({
		 message:'<p>' + message + '</p><br /><img src="/00_lib/img/common/loader4.gif" width="25px" />'
		,css: { 
			border					: 'none', 
			padding					: '15px', 
			backgroundColor			: '#000', 
			'border-radius'			: '10px', 
			'-webkit-border-radius'	: '10px', 
			'-moz-border-radius'	: '10px', 
			opacity					: .5, 
			'text-align'			: 'center',
			color					: '#fff' 
		}
	});
	

}

// ■処理中画面ブロックを生成STOP
//
function blockMessageStop( ) {
	 $().ajaxStop($.unblockUI);
//	$.unblockUI();
}


// ■カレンダーを生成します --- setCalendar ( lang, canvas_area )
// 
//
function setCalendar( lang , canvas_area ) {

	var date = new Date();
	var d = date.getDate();
	var m = date.getMonth();
	var y = date.getFullYear();
	
	$('#' + canvas_area ).fullCalendar({
		theme			: false ,						// jQueryテーマ利用しない
		firstDay 		: 0 ,							// 週の始まり「日曜」
		header			: {
			left			: 'prev,next today' ,
			center			: 'title'
// 			right: 'month,agendaWeek,agendaDay'
		} ,
		titleFormat		: {
			month			: 'yyyy年 M月',
			week			: '[yyyy年 ]M月 d日{ &#8212;[yyyy年 ][ M月] d日}',
			day				: 'yyyy年 M月 d日 dddd'
		} ,
		columnFormat	: {
			month			: 'ddd',
			week			: 'M/d（ddd）',
			day				: 'M/d（ddd）'
		} ,
		dayNames		: [ '日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'] ,
		dayNamesShort	: [ '日','月','火','水','木','金','土'] ,
		buttonText		: {
			prev			: '&nbsp;&#9668;&nbsp;' ,
			next			: '&nbsp;&#9658;&nbsp;' ,
			prevYear		: '&nbsp;&lt;&lt;&nbsp;' ,
			nextYear		: '&nbsp;&gt;&gt;&nbsp;' ,
			today			: '今日' ,
			month			: '月' ,
			week			: '週' ,
			day				: '日'
		} ,
		editable		: false, // 編集不可に
		loading: function(bool) {
			if (bool) { $('#loading').show(); } else { $('#loading').hide(); }
		} ,
		eventSources	: [
			{	// 祝日表示
				url			: 'http://www.google.com/calendar/feeds/ja.japanese%23holiday%40group.v.calendar.google.com/public/full/',
				color		: 'white' ,
				textColor	: 'gray'
			}
		]
	});
}



// ■ホテルの一覧を取得します（指定なし）--- ajaxFetchHotels  ( lang, current, canvas_area )
// 
//	利用しているもの	[spinner] [ajax] [lazyload]
//	利用しているもの	[mst_hotel]
//	コールメソッド		[getHotel]
//
function ajaxFetchHotels( lang, current, canvas_area ) {
	
	// キャンバス取得中のローダー
	switch(gBrowserType) {
	case 6:
	case 7:
	case 8: break;
	case 0: 
		$('#loader').spinner({ position: 'center', top: 50, left:-20, height:30,width:30 , hide: true }); 
		$('#' + canvas_area).fadeTo(100,0);	
	}
	
	$.ajax({
		  async		: true		// 通常、非同期(true)だが今回、room_countの値が重要となるため同期(false)に
		, cache		: false
		, beforeSend: function() {	}
		, complete	: function() { 
			switch(gBrowserType) {
			case 6:
			case 7:
			case 8: break;
			case 0:
				$('#' + canvas_area).fadeTo(500,1);
				$('#loader').spinner('remove');
				lazyloadImage();
			}
		}
		, url		: '/ajax/list/getHotel'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: "lang=" + lang
					+ "&current=" + current
					+ "&rows=10"
		, success 	: function(res,status){
				$('#' + canvas_area).html( res );
			}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				$('#' + canvas_area).html("失敗しました");
			} else if (status == "notmodified") {
				$('#' + canvas_area).html("更新されていない");
			} else if (status == "timeout") {
				$('#' + canvas_area).html("タイムアウト");
			} else if (status == "parsererror") {
				$('#' + canvas_area).html("パースエラー");
			}
		}
	});
}


// ■ホテルの一覧を取得します（指定なし）--- ajaxFetchHotelsSimple  ( canvas_area, lang, hotel_ids )
// 
//	利用しているもの	[spinner] [ajax] [lazyload]
//	利用しているもの	[mst_hotel]
//	コールメソッド		[getHotelSimple]
//
function ajaxFetchHotelsSimple( canvas_area, lang, hotel_ids ) {
	
	// キャンバス取得中のローダー
	switch(gBrowserType) {
	case 6:
	case 7:
	case 8: break;
	case 0: 
		$('#loader').spinner({ position: 'center', top: 50, left:-20, height:30,width:30 , hide: true }); 
		$('#' + canvas_area).fadeTo(100,0);	
	}
	
	$.ajax({
		  async		: true		// 通常、非同期(true)だが今回、room_countの値が重要となるため同期(false)に
		, cache		: false
		, beforeSend: function() {	}
		, complete	: function() { 
			switch(gBrowserType) {
			case 6:
			case 7:
			case 8: break;
			case 0:
				$('#' + canvas_area).fadeTo(500,1);
				$('#loader').spinner('remove');
				lazyloadImage();
			}
		}
		, url		: '/ajax/list/getHotelSimple'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: "lang=" + lang
					+ "&hotel_ids=" + hotel_ids
		, success 	: function(res,status){
				$('#' + canvas_area).html( res );
			}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				$('#' + canvas_area).html("失敗しました");
			} else if (status == "notmodified") {
				$('#' + canvas_area).html("更新されていない");
			} else if (status == "timeout") {
				$('#' + canvas_area).html("タイムアウト");
			} else if (status == "parsererror") {
				$('#' + canvas_area).html("パースエラー");
			}
		}
	});
}


// ■■ホテルの一覧を取得します（レジオン指定）--- ajaxFetchHotelsSelectRegion   ( lang, current, canvas_area, region )
// 
//	利用しているもの	[spinner] [ajax] [lazyload]
//	利用しているもの	[mst_hotel]
//	コールメソッド		[getHotel]
//
function ajaxFetchHotelsSelectRegion( lang, current , canvas_area, region ) {
	
	// キャンバス取得中のローダー
	switch(gBrowserType) {
	case 6:
	case 7:
	case 8: break;
	case 0: 
		$('#loader').spinner({ position: 'center', top: 50, left:-20, height:30,width:30 , hide: true }); 
		$('#' + canvas_area).fadeTo(100,0);	
	}
	
	$.ajax({
		  async		: true		// 通常、非同期(true)だが今回、room_countの値が重要となるため同期(false)に
		, cache		: false
		, beforeSend: function() {	}
		, complete	: function() { 
			switch(gBrowserType) {
			case 6:
			case 7:
			case 8: break;
			case 0:
				$('#' + canvas_area).fadeTo(500,1);
				$('#loader').spinner('remove');
				lazyloadImage();
			}
		}
		, url		: '/ajax/list/getHotel'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: "lang=" 		+ lang
					+ "&current="	+ current
					+ "&rows="		+ 10
					+ "&region=" 	+ region
		, success 	: function(res,status){
				$('#' + canvas_area).html( res );
			}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				$('#' + canvas_area).html("失敗しました");
			} else if (status == "notmodified") {
				$('#' + canvas_area).html("更新されていない");
			} else if (status == "timeout") {
				$('#' + canvas_area).html("タイムアウト");
			} else if (status == "parsererror") {
				$('#' + canvas_area).html("パースエラー");
			}
		}
	});
}


// ■ホテルの一覧を取得します（都道府県指定） --- ajaxFetchHotelsSelectPref   ( lang, current, canvas_area, pref )
// 
//	利用しているもの	[spinner] [ajax] [lazyload]
//	利用しているもの	[mst_hotel]
//	コールメソッド		[getHotel]
//
function ajaxFetchHotelsSelectPref( lang, current , canvas_area, pref ) {
	
	// キャンバス取得中のローダー
	switch(gBrowserType) {
	case 6:
	case 7:
	case 8: break;
	case 0: 
		$('#loader').spinner({ position: 'center', top: 50, left:-20, height:30,width:30 , hide: true }); 
		$('#' + canvas_area).fadeTo(100,0);	
	}
	
	$.ajax({
		  async		: true		// 通常、非同期(true)だが今回、room_countの値が重要となるため同期(false)に
		, cache		: false
		, beforeSend: function() {	}
		, complete	: function() { 
			switch(gBrowserType) {
			case 6:
			case 7:
			case 8: break;
			case 0:
				$('#' + canvas_area).fadeTo(500,1);
				$('#loader').spinner('remove');
				lazyloadImage();
			}
		}
		, url		: '/ajax/list/getHotel'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: "lang=" 		+ lang
					+ "&current="	+ current
					+ "&rows="		+ 10
					+ "&pref=" 		+ pref
		, success 	: function(res,status){
				$('#' + canvas_area).html( res );
			}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				$('#' + canvas_area).html("失敗しました");
			} else if (status == "notmodified") {
				$('#' + canvas_area).html("更新されていない");
			} else if (status == "timeout") {
				$('#' + canvas_area).html("タイムアウト");
			} else if (status == "parsererror") {
				$('#' + canvas_area).html("パースエラー");
			}
		}
	});
}



// ■ホテルの部屋一覧を取得します --- ajaxFetchHotelRooms   ( lang, hotel_id, canvas_area ,show_rate_button[料金表示ボタンを表示するかどうか])
// 
//	利用しているもの	[spinner] [ajax]
//	利用しているもの	[mst_hotel]
//	コールメソッド		[getHotelRoom]
//
function ajaxFetchHotelRooms( lang , hotel_id , canvas_area , show_rate_button) {
		
	$.ajax({
		  async		: true		// 非同期(true)
		, cache		: false
		, beforeSend: function() {
			$('#' + canvas_area ).spinner({ position: 'left', top: -40, left:-150 , hide: true }); 
		}
		, complete	: function() { 
			$('#' + canvas_area ).hide();
			$('#' + canvas_area ).spinner('remove');
			$('#' + canvas_area ).fadeTo(500,1);
		}
		, url		: '/ajax/list/getHotelRoom'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: 'hotel_id='	+ hotel_id
					+ '&lang=' 		+ lang
					+ '&show_rate_button='	+ show_rate_button
		, success 	: function(res,status){
			$('#' + canvas_area ).html( res );	
		}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				$('#' + canvas_area).html("失敗しました");
			} else if (status == "notmodified") {
				$('#' + canvas_area).html("更新されていない");
			} else if (status == "timeout") {
				$('#' + canvas_area).html("タイムアウト");
			} else {
				$('#' + canvas_area).html("error");
			}
		}
	});
}


// ■ホテルのプラン料金を取得します --- ajaxFetchHotelRoomPlans
// 
//	利用しているもの	[spinner] [ajax]
//	利用しているもの	[mst_hotel]
//	コールメソッド		[getHotelPlanRoomReservation]
//
function ajaxFetchHotelPlanRoomReservation( lang 
										   , hotel_id
										   , room_id
										   , plan_id
										   , canvas_area
										   , person_adult
										   , person_child
										   , check_in_date
										   , check_out_date
										   , room_no) {
	
	$.ajax({
		  async		: true		// 非同期(true)
		, cache		: false
		, beforeSend: function() {
			$('#' + canvas_area ).spinner({ position: 'left', top: -40, left:-30 , hide: true }); 
		}
		, complete	: function() { 
			$('#' + canvas_area ).hide();
			$('#' + canvas_area ).spinner('remove');
			$('#' + canvas_area ).fadeIn(500);	
		}
		, url		: '/ajax/list/getHotelPlanRoomReservation'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: 'hotel_id='		+ hotel_id
					+ '&plan_id='		+ plan_id
					+ '&room_id='		+ room_id
					+ '&lang=' 			+ lang
					+ '&check_in_date='	+ check_in_date
					+ '&check_out_date='+ check_out_date
					+ '&persons='		+ person_adult
					+ '&room_no='		+ room_no
		, success 	: function(res,status){
			$('#' + canvas_area ).html( res );	
		}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				$('#' + canvas_area).html("失敗しました");
			} else if (status == "notmodified") {
				$('#' + canvas_area).html("更新されていない");
			} else if (status == "timeout") {
				$('#' + canvas_area).html("タイムアウト");
			} else {
				$('#' + canvas_area).html("error");
			}
		}
	});
}


// ■ホテルのプラン一覧を検索します --- ajaxFetchHotelRoomPlans
// 
//	利用しているもの	[spinner] [blockUI]
//	利用しているもの	[mst_hotel]
//	コールメソッド		[getHotelPlanRoomList]
//
function ajaxFetchHotelPlanRoomList( lang, hotel_id, hotel_pref_iso, canvas_area, persons, from_date, to_date, stay_days, room_no, type) {
	var temp;
		
	$.ajax({
		  async		: true		// 非同期(true)
		, cache		: false
		, beforeSend: function() {	
			$('#' + canvas_area ).spinner({ position: 'left', top: 0, left:150 , hide: true }); }
		, complete	: function() { 
//			$('#' + canvas_area ).hide();
			$('#' + canvas_area ).html(temp);
			$('#' + canvas_area ).spinner('remove');
			if( temp == false ) { 
				$( '#' + canvas_area ).html(temp);
				$( '#' + canvas_area ).dialog({
							  bgiframe		: true
							, modal			: true
							, width			: 500
							, buttons		: { OK : function(){ $(this).dialog('close');}} });
			} else {
				$('#' + canvas_area ).fadeIn(500);	
			}
		}
		, url		: '/ajax/list/getHotelPlanRoomList'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: 'hotel_id='		+ hotel_id
					+ '&hotel_pref_iso='+ hotel_pref_iso
					+ '&lang=' 			+ lang
					+ '&from_date='		+ from_date
					+ '&to_date='		+ to_date
					+ '&stay_days='		+ stay_days
					+ '&persons='		+ persons
					+ '&room_no='		+ room_no
					+ '&type='			+ type		// selection(プラン選択で利用),link(listで利用)
		, success 	: function(res,status){
			temp = res;
		}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				$('#' + canvas_area).html("失敗しました");
			} else if (status == "notmodified") {
				$('#' + canvas_area).html("更新されていない");
			} else if (status == "timeout") {
				$('#' + canvas_area).html("タイムアウト");
			} else {
				$('#' + canvas_area).html("error");
			}
		}
	});
}


// ■ 予約できるかチェックを行います(hotel/planから次へ行く時に)
// 
//	利用しているもの	[ajax] [blockUI]
//	利用しているもの	[無し]
//	コールメソッド		[無し]
//
function ajaxFetchHotelPlanRoomReservationCheck(canvas_name, lang, hotel_id, check_in_date, check_out_date, stay_days, selectplan) {
	var temp;
	
	// ブロック画面
	blockMessageStop( );
	blockMessageRun('Checking...');
	
	$.ajax({
		  async		: true		// 通常、非同期(true)だが今回、room_countの値が重要となるため同期(false)に
		, cache		: false
		, beforeSend: function() {}
		, complete	: function() {
			$.unblockUI();
			
			if( temp != true ) { 
				$( '#' + canvas_name ).html(temp);
				$( '#' + canvas_name ).dialog({
							  bgiframe		: true
							, modal			: true
							, width			: 500
							, buttons		: { OK : function(){ $(this).dialog('close');}} });
				
				return false;
			} else {
				$('#next').click();
			}
		}
		, url		: '/ajax/list/getHotelPlanRoomReservationCheck'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: 'lang=' 			+ lang
					+ '&hotel_id='		+ hotel_id
					+ '&check_in_date='	+ check_in_date
					+ '&check_out_date='+ check_out_date
					+ '&stay_days='		+ stay_days
					+ '&selectplan='	+ selectplan
		, success 	: function(res,status){
				temp = res;
			}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				alert("失敗しました");
			} else if (status == "notmodified") {
				alert("更新されていない");
			} else if (status == "timeout") {
				alert("タイムアウト");
			} else if (status == "parsererror") {
				alert("パースエラー");
			} else {
				alert("失敗しました");
			}
			temp = false;
		}
	});
	
	return temp;
}




// ■ 予約をキャンセルします
// 
//	利用しているもの	[ajax] [blockUI]
//	利用しているもの	[無し]
//	コールメソッド		[無し]
//
function ajaxCancelReservation(canvas_name, lang, booking_no ) {
	var temp;
	
	// ブロック画面
	blockMessageStop( );
	blockMessageRun('Checking...');
			
	setTimeout(function(){

		$.ajax({
			  async		: true		// 通常、非同期(true)だが今回、room_countの値が重要となるため同期(false)に
			, cache		: false
			, beforeSend: function() {}
			, complete	: function() {
				$.unblockUI();
				
				$( '#' + canvas_name ).html(temp);
				$( '#' + canvas_name ).dialog({
							  bgiframe		: true
							, modal			: true
							, width			: 500
							, buttons		: { OK : function(){ $(this).dialog('close'); window.location.reload(); }} });
			}
			, url		: '/ajax/list/cancelReservation'
			, type		: 'POST'
			, dataType	: 'text'
			, data 		: 'lang=' 			+ lang
						+ '&booking_no='	+ booking_no
			, success 	: function(res,status){
					temp = res;
				}
			, error		: function(res, status, errorThrown) {
				if (status == "error") {
					alert("失敗しました");
				} else if (status == "notmodified") {
					alert("更新されていない");
				} else if (status == "timeout") {
					alert("タイムアウト");
				} else if (status == "parsererror") {
					alert("パースエラー");
				} else {
					alert("失敗しました");
				}
				temp = false;
			}
		});
	},2000);

	return temp;
}


// ■実行
// 
function execute() {
	var temp;
	
	// ブロック画面
	blockMessageStop( );
	blockMessageRun('Checking...');
	
	$.ajax({
		  async		: true		// 通常、非同期(true)だが今回、room_countの値が重要となるため同期(false)に
		, cache		: false
		, beforeSend: function() { }
		, complete	: function() {
			
			$.unblockUI();
			if( temp == 7 ) {
				$('#step7').click();
			
			} else if( temp == 8	) {
				$('#step8').click();
			
			} else if( temp == 9	) {
				$('#step9').click();
			
			} else {
				$('#stepSecure').click();
			}
		}
		, url		: '/' + $('#lang').val() + '/cart/confirmEntry'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: "stamp_no=" 	+ $('#stamp_no').val()
						+ "&lang=" 	+ $('#lang').val()
		, success 	: function(res,status){
				temp = res;
			}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				alert("失敗しました");
			} else if (status == "notmodified") {
				alert("更新されていない");
			} else if (status == "timeout") {
				alert("タイムアウト");
			} else if (status == "parsererror") {
				alert("パースエラー");
			} else {
				alert("失敗しました");
			}
		}
	});
}

// ■実行
// 
function execute2() {
	var temp;
	
	// ブロック画面
	blockMessageStop( );
	blockMessageRun('Booking...');
	
	$.ajax({
		  async		: true		// 通常、非同期(true)だが今回、room_countの値が重要となるため同期(false)に
		, cache		: false
		, beforeSend: function() { }
		, complete	: function() {
			
			$.unblockUI();
			if( temp == 7 ) {
				$('#step7').click();
			
			} else if( temp == 8	) {
				$('#step8').click();
			
			} else if( temp == 9	) {
				$('#step9').click();
			
			} else if( temp == 10	) {
				$('#step10').click();
			
			} else {
				$('html').html( temp );
			}
			//$('html').html( temp );
		}
		, url		: '/' + $('#lang').val() + '/cart/bookingEntry'
		, type		: 'POST'
		, dataType	: 'text'
		, data 		: "stamp_no=" 	+ $('#stamp_no').val()
						+ "&lang=" 	+ $('#lang').val()
		, success 	: function(res,status){
				temp = res;
			}
		, error		: function(res, status, errorThrown) {
			if (status == "error") {
				alert("失敗しました");
			} else if (status == "notmodified") {
				alert("更新されていない");
			} else if (status == "timeout") {
				alert("タイムアウト");
			} else if (status == "parsererror") {
				alert("パースエラー");
			} else {
				alert("失敗しました");
			}
		}
	});
}
