// 関数名　：InputCheck
// 機能説明：入力データチェック
// 引数　　：url		オープンするHTMファイル名
//           gflag		画面フラグ(0:羽田 1:竹芝)
// 作成日　：2006/11/12
// 作成者　：H.Urakawa
// 訂正日　：2007/11/29
// 訂正者　：H.Urakawa
// 訂正日　：2008/07/26
// 訂正者　：H.Urakawa
// 訂正日　：2010/11/16
// 訂正者　：H.Urakawa  羽田国際線・国内線分割対応
function InputCheck(url, gflag){
	// ****************************************************************
	// ** ここでは、入力された日付が妥当かどうかのチェックを行います **
	// ****************************************************************
	BufDate  = new Date();										// 今日の日付データ取得
	BufBaseYear  = BufDate.getFullYear();						// 西暦取得
	BufYear = BufBaseYear;
	BufMonth = BufDate.getMonth()+1;							// 月を取得(1月〜12月)
	BufToday = BufDate.getDate();								// 今日の'日'
	BufHour  = BufDate.getHours();								// 現在時刻を取得
	BufMinute = BufDate.getMinutes();							// 現在分を取得
	BufMonthTbl= new Array(31,28,31,30,31,30,31,31,30,31,30,31);// 月テーブル定義

	// 11月以降は来年の日付をセットしたいので1年プラスする
	if (BufMonth >= 11) 
		BufYear++;

	if (((BufYear%4)==0 && (BufYear%100)!=0) || (BufYear%400)==0)// うるう年だったら...
	   BufMonthTbl[1] = 29;										// ２月を２９日とする

	// 調整後に再取得
	BufYear = BufBaseYear;

	// 今日の日付をYYYYMMDDの形式で取得
	wkToday = "";
	wkToday = "" + BufBaseYear;
	if (BufMonth<10) wkToday += "0" + BufMonth;
	else wkToday += "" + BufMonth;
	if (BufToday<10) wkToday += "0" + BufToday;
	else wkToday += "" + BufToday;

	BufToday++;													// 必ず翌日を初期値に設定(今日以前の予約はできない）
	if (BufToday > BufMonthTbl[BufMonth-1]) {					// 指定日が当月限界を超えていたら
		BufToday = 1;											// 1日にリセット
		if (BufMonth == 12) {
			BufMonth = 1;										// 12月の時は1月に
			BufYear++;											// 年を１年加算
		}
		else BufMonth++;										// それ以外は1ヶ月加算
	}

	// YYYYMMDD形式の文字列作成
	BufCheckDate = "";
	BufCheckDate = "" + BufYear;
	if (BufMonth<10) BufCheckDate += "0" + BufMonth;
	else BufCheckDate += "" + BufMonth;
	if (BufToday<10) BufCheckDate += "0" + BufToday;
	else BufCheckDate += "" + BufToday;

	// チェック終了日を取得
	// カレンダー3ヶ月対応に伴い、終了日を1ヶ月延長
	BufEndYear = BufYear;
	// BufTodayが1日ならば、チェック終了日は翌月末日　それ以外は翌々月末日 2008/07/26訂正
	if (BufToday != 1) {
		if (BufMonth == 12) {
			BufEndMonth = 2;									// 12月の時は2月に
			BufEndYear++;										// 年を１年加算
		}
		else if (BufMonth == 11) {
			BufEndMonth = 1;									// 11月の時は1月に
			BufEndYear++;										// 年を１年加算
		}
		else BufEndMonth = BufMonth+2;							// それ以外は2ヶ月加算
	} else {
		if (BufMonth == 12) {
			BufEndMonth = 1;									// 12月の時は1月に
			BufEndYear++;										// 年を１年加算
		}
		else BufEndMonth = BufMonth++;							// それ以外は1ヶ月加算
	}
	BufEndDay = BufMonthTbl[BufEndMonth-1];

	BufCheckEndDate = "";
	BufCheckEndDate = "" + BufEndYear;
	if (BufEndMonth<10) BufCheckEndDate += "0" + BufEndMonth;
	else BufCheckEndDate += "" + BufEndMonth;
	if (BufEndDay<10) BufCheckEndDate += "0" + BufEndDay;
	else BufCheckEndDate += "" + BufEndDay;

//	alert(BufCheckEndDate);

	// 開始日付データ取得
	// ありえない日付チェック
	wkMonth = new Number(document.DateForm.StartMonth.value);
	wkDay = new Number(document.DateForm.StartDay.value);
	if (wkDay > BufMonthTbl[wkMonth-1]) {
		alert("" + wkMonth + "月" + wkDay + "日は存在しません。正しい日付を設定して下さい");
		document.DateForm.StartDay.focus();
		return;
	}
	BufStartDate = "";
	BufStartDate = "" + document.DateForm.StartYear.value;
	if (wkMonth<10) BufStartDate += "0" + wkMonth;
	else            BufStartDate += "" + wkMonth;
	if (wkDay<10) BufStartDate += "0" + wkDay;
	else           BufStartDate += "" + wkDay;

	// 終了日付データ取得
	wkMonth = new Number(document.DateForm.EndMonth.value);
	wkDay = new Number(document.DateForm.EndDay.value);
	if (wkDay > BufMonthTbl[wkMonth-1]) {
		alert("" + wkMonth + "月" + wkDay + "日は存在しません。正しい日付を設定して下さい");
		document.DateForm.EndDay.focus();
		return;
	}
	BufEndDate = "";
	BufEndDate = "" + document.DateForm.EndYear.value;
	if (wkMonth<10) BufEndDate += "0" + wkMonth;
	else            BufEndDate += "" + wkMonth;
	if (wkDay<10) BufEndDate += "0" + wkDay;
	else           BufEndDate += "" + wkDay;

	ErrFlag = 0;
	FocusFlag = 0;
	BufMsg = "";
	// 開始日付　＞　終了日付の場合
	if (parseInt(BufStartDate)>parseInt(BufEndDate)) {
		BufMsg = "ご到着日にはご出発日以降をご指定下さい";
		FocusFlag = 2;
	}
	// 開始日付　＜　予約可能日の場合
	else if (parseInt(BufStartDate)<parseInt(BufCheckDate)) {
		BufMsg = "ご出発日は本日の翌日以降をご指定下さい";
		FocusFlag = 1;
	}
	// 開始日付＝予約可能日　かつ　時刻が19時以降ならば、エラー画面へ
	else if ((parseInt(BufStartDate)==parseInt(BufCheckDate)) && (BufHour>=19)) ErrFlag = 1;
	// 開始日付　＝　終了日付ならば、エラー画面へ
//	else if (BufStartDate==BufEndDate) ErrFlag = 2;
	// 開始日付　＞　予約制限日付の場合
	else if (parseInt(BufStartDate)>parseInt(BufCheckEndDate)) {
		BufMsg = "カレンダーに表示されている日付をご指定下さい";
		FocusFlag = 1;
	}
	else if (parseInt(BufEndDate)>parseInt(BufCheckEndDate)) {
		BufMsg = "カレンダーに表示されている日付をご指定下さい";
		FocusFlag = 2;
	}

	// 日付チェック用データ作成
	// 今月
	BufThisMonth = BufDate.getMonth()+1;
	// 翌月
	if (BufThisMonth == 12)
		BufNextMonth = 1;
	else
		BufNextMonth = BufThisMonth+1;
	// 翌々月
	if (BufNextMonth == 12)
		BufNext2Month = 1;
	else
		BufNext2Month = BufNextMonth+1;

	// 日付チェック
	BufSpan = 0;
	// 平日割引フラグ=ON（あり）
	BufWeekday = 1;
	// エラーフラグかメッセージがないデータのみ対象
	if ((ErrFlag==0) && (BufMsg=="")) {

		// 予約期間に今月を含む？
		if (document.DateForm.StartMonth.value==BufThisMonth) {

			STDay = new Number(document.DateForm.StartDay.value);
			// 開始月≠終了月ならば月末を、そうでなければ終了日をセット
			EDDay = new Number(document.DateForm.EndDay.value);
			if (document.DateForm.StartMonth.value != document.DateForm.EndMonth.value) EDDay = BufMonthTbl[document.DateForm.StartMonth.value-1];
			for(i=STDay; i<EDDay+1;i++) {
				// 一つでも×があればダメ
				if (ThisMonth[i]=="1") {
					BufMsg = "" + document.DateForm.StartMonth.value + "月" + i + "日は空きがありません。他の日をご指定下さい";
					break;
				}
				// 一つでも0以外があったら平日フラグOFF(=なし)
				if (ThisWeekday[i] != "0" && BufWeekday == 1) BufWeekday = 0;
				BufSpan++;							// 一泊カウントアップ
			}
//			alert(document.DateForm.StartMonth.value);
//			alert(document.DateForm.EndMonth.value);

			// 翌月または翌々月が終了日？
			if ((document.DateForm.EndMonth.value==BufNextMonth) || (document.DateForm.EndMonth.value==BufNext2Month)) {
				// 翌月分を加算する
				EDDay = new Number(document.DateForm.EndDay.value);
				// 終了月が翌月ならば月末を、そうでなければ終了日をセット
				if (document.DateForm.EndMonth.value==BufNext2Month) EDDay = BufMonthTbl[BufNextMonth-1];
				for(i=1; i<EDDay+1;i++) {
					if (NextMonth[i]=="1") {
						BufMsg = "" + document.DateForm.EndMonth.value + "月" + i + "日は空きがありません。他の日をご指定下さい";
						break;
					}
					// 一つでも0以外があったら平日フラグOFF(=なし)
					if (NextWeekday[i] != "0" && BufWeekday == 1) BufWeekday = 0;
					BufSpan++;							// 一泊カウントアップ
				}

				// カレンダー3ヶ月対応 2008/07/26 追加開始
				// 翌々月が終了日？
				if (document.DateForm.EndMonth.value==BufNext2Month) {
					// 翌々月分を加算する
					EDDay = new Number(document.DateForm.EndDay.value);
					for(i=1; i<EDDay+1;i++) {
						if (NextMonth2[i]=="1") {
							BufMsg = "" + document.DateForm.EndMonth.value + "月" + i + "日は空きがありません。他の日をご指定下さい";
							break;
						}
						// 一つでも0以外があったら平日フラグOFF(=なし)
						if (NextWeekday2[i] != "0" && BufWeekday == 1) BufWeekday = 0;
						BufSpan++;							// 一泊カウントアップ
					}
				}
				// カレンダー3ヶ月対応 2008/07/26 追加終了
			}
		}
		// 翌月が開始月
		else if (document.DateForm.StartMonth.value==BufNextMonth) {

			// 予約期間に翌月を含む？
			if (document.DateForm.StartMonth.value==BufNextMonth) {

				STDay = new Number(document.DateForm.StartDay.value);
				// 開始月≠終了月ならば月末を、そうでなければ終了日をセット
				EDDay = new Number(document.DateForm.EndDay.value);
				if (document.DateForm.StartMonth.value != document.DateForm.EndMonth.value) EDDay = BufMonthTbl[document.DateForm.StartMonth.value-1];
				for(i=STDay; i<EDDay+1;i++) {
					// 一つでも×があればダメ
					if (NextMonth[i]=="1") {
						BufMsg = "" + document.DateForm.StartMonth.value + "月" + i + "日は空きがありません。他の日をご指定下さい";
						break;
					}
					// 一つでも0以外があったら平日フラグOFF(=なし)
					if (NextWeekday[i] != "0" && BufWeekday == 1) BufWeekday = 0;
					BufSpan++;							// 一泊カウントアップ
				}

				// 翌々月が終了日？
				if (document.DateForm.EndMonth.value==BufNext2Month) {
					// 翌々月分を加算する
					EDDay = new Number(document.DateForm.EndDay.value);
					for(i=1; i<EDDay+1;i++) {
						if (NextMonth2[i]=="1") {
							BufMsg = "" + document.DateForm.EndMonth.value + "月" + i + "日は空きがありません。他の日をご指定下さい";
							break;
						}
						// 一つでも0以外があったら平日フラグOFF(=なし)
						if (NextWeekday2[i] != "0" && BufWeekday == 1) BufWeekday = 0;
						BufSpan++;							// 一泊カウントアップ
					}
				}
			}
		}
		// 翌々月が開始月
		else {
			STDay = new Number(document.DateForm.StartDay.value);
			EDDay = new Number(document.DateForm.EndDay.value);
			for(i=STDay; i<EDDay+1;i++) {
				// 一つでも×があればダメ
				if (NextMonth2[i]=="1") {
					BufMsg = "" + document.DateForm.StartMonth.value + "月" + i + "日は空きがありません。他の日をご指定下さい";
					break;
				}
				// 一つでも0以外があったら平日フラグOFF(=なし)
				if (NextWeekday2[i] != "0" && BufWeekday == 1) BufWeekday = 0;
				BufSpan++;							// 一泊カウントアップ
			}
		}
	}
//	alert((BufSpan-1) + "泊" + BufSpan + "日");

	// 日帰りはエラー画面へ
	if (BufSpan == 1) ErrFlag = 1;

	// 21泊以上はエラーメッセージ
	if (BufSpan >= 22) {
		BufMsg = "ご予約は20泊21日までとさせていただきます";
		FocusFlag = 2;
	}

	// エラーフラグがON
	if (ErrFlag != 0) {
		if (gflag==0) Bufurl = "hrsv_err.htm";
		else Bufurl = "trsv_err.htm";
	}
	else {
		Bufurl = url;
		// ******************************
		// ** 画面情報を変数として渡す **
		// 強制的にURLの後ろに?xx=1&x2=2・・・と記述されるので、URLを見られないよう要注意。
		// （見られても実は問題はないんだけど）
		// ******************************
		// 出発日
		Bufurl += "?StartDate="+escape(BufStartDate);
		// 到着日
		Bufurl += "&EndDate="+escape(BufEndDate);
		// 何日の予約か
		Bufurl += "&Span="+escape(BufSpan);
		// 平日割引フラグ(0:なし 1:あり)
		Bufurl += "&Weekday="+escape(BufWeekday);

		// 制限時間＝20分後を設定(12/10ここで設定するのをやめる)
//		BufMinute += 20;
//		if (BufMinute>=60) {
//			BufMinute -= 60;
//			BufHour += 1;
//			if (BufHour>=24) BufHour -= 24;
//		}

		// 時間もくっつける
		if (BufHour<10) wkToday += "0" + BufHour;
		else wkToday += "" + BufHour;
		if (BufMinute<10) wkToday += "0" + BufMinute;
		else wkToday += "" + BufMinute;
//		alert(wkToday);
		Bufurl += "&LDate="+escape(wkToday);
//		Bufurl += "&LHour="+escape(BufHour);
//		Bufurl += "&LMinute="+escape(BufMinute);

		// 羽田のみコース設定
		// 2010/11/16 エグゼクティブ1本に絞るよう修正
		//            国内線・国際線をセット
		if (gflag==0) {
			// ラジオボタンのどちらをチェックしているか（エグゼクティブはE、空港駐車場はA）
//			if (document.CourseForm.Course[0].checked) BufCourse = document.CourseForm.Course[0].value;
//			else BufCourse = document.CourseForm.Course[1].value;
//			Bufurl += "&Course="+escape(BufCourse);
			// E固定セット
			Bufurl += "&Course=E";
			// ラジオボタンのどちらをチェックしているか(国内線はD、国際線はI)
			if (document.LineForm.Line[0].checked) BufLine = document.LineForm.Line[0].value;
			else BufLine = document.LineForm.Line[1].value;
			Bufurl += "&ALine="+escape(BufLine);

		}
	}
//	alert(Bufurl);

	// メッセージ表示
	if (BufMsg != "") {
		alert(BufMsg);
		if (FocusFlag==1) document.DateForm.StartDay.focus();
		else if (FocusFlag==2) document.DateForm.EndDay.focus();
		return;
	}

	// 新画面呼び出し
	if (Bufurl != '') {
//		window.open(Bufurl, '_blank', 'menubar=yes,toolbar=yes,width=680,top=0,left=0,scrollbars=yes,status=yes');
		window.open(Bufurl, '_blank', 'menubar=no,toolbar=no,width=730,top=0,left=0,scrollbars=yes,status=yes');
	}

}

