// フォームへの値セット
function vSetMode(oForm,sValue) {
	oForm.value = sValue;
}

// 画像の変換
function vImageChange(oObj,sImage) {
	oObj.src = sImage;
}

// クラスの変更
function vClassChange(oObj,sClass) {
	oObj.className = sClass;
}


// カレンダー表示
function bShowCalender() {
	// フォームからデータ取得
	var oForm = document.getElementById('reserve');
	var iDy = oForm["dy"].value;
	var iDm = oForm["dm"].value;
	var iY = oForm["sy"].value;
	var iM = oForm["sm"].value;
	var iD = oForm["sd"].value;
	var iS = oForm["ss"].value;

	// 差し込み先セット
	var oObj = document.getElementById('calender');
	
	// 指定なしの場合は本日日付をセット
	var oDate = new Date();
	if (iDy == '') iDy = oDate.getFullYear();
	if (iDm == '') iDm = oDate.getMonth();
	else           iDm = parseInt(iDm) - 1;
	
	var oCurr = new Date(iDy,iDm,1);
	iDy = oCurr.getFullYear();
	iDm = oCurr.getMonth();

	var oCurr_last = new Date(iDy,parseInt(iDm)+1,0);
	var iLast = oCurr_last.getDate();

	var oPrev = new Date(iDy,parseInt(iDm)-1);
	var oNext = new Date(iDy,parseInt(iDm)+1);
	var oMax = new Date(oDate.getFullYear(),parseInt(oDate.getMonth())+2);
	
	// 該当月のカレンダー表示
	var sBuf = '';
	
	sBuf += '<table>';
	
	// ヘッダ
	sBuf += '	<tr>';
	sBuf += '		<td class="table-style" colspan="2" align="left">';
	sBuf += ((iDy == oDate.getFullYear() && oDate.getMonth() < iDm) || (oDate.getFullYear() < iDy)) ? '<a href="#" onClick="return bCalenderRedraw(\''+ oPrev.getFullYear() +'\',\'' + (parseInt(oPrev.getMonth()) + 1) + '\',\'' + iY + '\',\'' + iM + '\',\'' + iD + '\',\'' + iS + '\');">&lt;前月</a>' : '&nbsp;';
	sBuf += '		</td>';
	
	sBuf += '		<th class="table-style" colspan="3" align="center">' + iDy + ' 年 ' + (parseInt(iDm) + 1) + ' 月 ' + '</th>';
	
	sBuf += '		<td class="table-style" colspan="2" align="right">';
	sBuf += ((iDy == oMax.getFullYear() && iDm < oMax.getMonth()) || (iDy < oMax.getFullYear())) ? '<a href="#" onClick="return bCalenderRedraw(\''+ oNext.getFullYear() +'\',\'' + (parseInt(oNext.getMonth()) + 1) + '\',\'' + iY + '\',\'' + iM + '\',\'' + iD + '\',\'' + iS + '\');">次月&gt;</a>' : "&nbsp;";
	sBuf += '		</td>';
	sBuf += '	</tr>';

	// 曜日
	sBuf += '	<tr bgcolor="#ccffcc">';
	sBuf += '		<td class="spacer" width="60" align="center" bgcolor="#ffcccc"><font color="red">日</font></td>';
	sBuf += '		<td class="spacer" width="60" align="center">月</td>';
	sBuf += '		<td class="spacer" width="60" align="center">火</td>';
	sBuf += '		<td class="spacer" width="60" align="center">水</td>';
	sBuf += '		<td class="spacer" width="60" align="center">木</td>';
	sBuf += '		<td class="spacer" width="60" align="center">金</td>';
	sBuf += '		<td class="spacer" width="60" align="center" bgcolor="#ccccff"><font color="blue">土</font></td>';
	sBuf += '	</tr>';

	// 日にち
	var iDay = 1;
	var aClass = ["sun","normal","normal","normal","normal","normal","sat"];
	var sClass = "";
	for (var iWeek = 0;iWeek < 6;iWeek++) {
		sBuf += '	<tr height="60">';
		for (var iWday = 0;iWday < 7;iWday++) {
			// 日にちが入らない場所
			if (((iDay == 1) && (oCurr.getDay() != iWday)) || (iLast < iDay)) {
				sBuf += '		<td class="spacer2" width="60" align="center">&nbsp;</td>';
			}
			// 最終日付まで
			else {
				// 宿泊フラグ判定
				sClass = (bCheckStayingDay(iDay)) ? " staying" : "";
				
				if (oDate.getFullYear() == iDy && oDate.getMonth() == iDm && oDate.getDate() <= iDay) {
					sBuf += '		<td width="60" align="center" class="' + aClass[iWday] + ' ' + sClass + '" onmouseover="vClassChange(this,\'over ' + sClass + '\')" onmouseout="vClassChange(this,\'' + aClass[iWday] + ' ' + sClass + '\')" onClick="vSetStayDate(\'' + iDy + '\',\'' + (parseInt(iDm) + 1) + '\',\'' + iDay + '\');">' + iDay + '</td>';
				}
				else {
					sBuf += '		<td width="60" align="center" class="' + aClass[iWday] + ' ' + sClass + '" style="cursor: default!important;">' + iDay + '</td>';
				}
				iDay++;
			}
		}
		sBuf += '	</tr>';
		//最終週に達していたら抜ける
		if (iLast < iDay) break;
	}
	
	sBuf += '</table>';

	// 宿泊予定情報表示
	var oForm = document.getElementById('reserve');
	// 画面表示
	document.getElementById('dateselect').innerHTML = oForm["sy"].value + " 年 " + oForm["sm"].value + " 月 " + oForm["sd"].value + " 日";
	// 次へ進んでいいかどうか
	if (oForm["sy"].value != "" && oForm["sm"].value != "" && oForm["sm"].value != "" && oForm["ss"].value != "") {
		document.getElementById('next-button').style.display = "block";
	}

	// 出力
	oObj.innerHTML = sBuf;
	
	return false;
}

// カレンダー更新
function bCalenderRedraw(iDy,iDm,iY,iM,iD,iS) {
	// パラメータセット
	var oForm = document.getElementById('reserve');
	oForm["dy"].value = iDy;
	oForm["dm"].value = iDm;
	oForm["sy"].value = iY;
	oForm["sm"].value = iM;
	oForm["sd"].value = iD;
	oForm["ss"].value = iS;
	// カレンダー表示
	return bShowCalender();
}

// 予約状態を隠しパラメータにセット
function vSetStayDate(iY,iM,iD) {
	// パラメータセット
	var oForm = document.getElementById('reserve');
	oForm["sy"].value = iY;
	oForm["sm"].value = iM;
	oForm["sd"].value = iD;
	// 画面再描画
	bShowCalender();
}

// 宿泊日数変更時
function vChangeStayCnt(iS) {
	// フォームからデータ取得
	var oForm = document.getElementById('reserve');
	oForm["ss"].value = iS;
	// 画面再描画
	bShowCalender();
}

// 指定日が宿泊する日かどうかを判定
function bCheckStayingDay(iDay) {
	// 戻り値初期化
	var bRet = false;
	
	// フォームからデータ取得
	var oForm = document.getElementById('reserve');
	var iDy = oForm["dy"].value;
	var iDm = oForm["dm"].value;
	var iY = oForm["sy"].value;
	var iM = oForm["sm"].value;
	var iD = oForm["sd"].value;
	var iS = oForm["ss"].value;
	
	// 未指定時は抜ける
	if (iY != "" && iM != "" && iD != "") {
	
		// 指定なしの場合は本日日付をセット
		var oDate = new Date();
		if (iDy == '') iDy = oDate.getFullYear();
		if (iDm == '') iDm = oDate.getMonth();
		else           iDm = parseInt(iDm) - 1;
		iM = parseInt(iM) - 1;
		
		// チェック対象日付取得
		var oDate;
		for (var iCnt = iD;iCnt < parseInt(iD) + parseInt(iS);iCnt++) {
			oDate = new Date(iY,iM,iCnt);
			bRet = (iDy == oDate.getFullYear() && iDm == oDate.getMonth() && iDay == oDate.getDate());
			if (bRet) break;
		}
	}
	
	// 結果を返す
	return bRet;
}

// 人数チェック
function vCheckCount(oForm) {
	var iMan = parseInt(oForm["man"].value);
	var iWoman = parseInt(oForm["woman"].value);
	var iChild = parseInt(oForm["child"].value);
	var iTotal = (iMan + iWoman + iChild);
	if (0 < iTotal) {
		document.getElementById('next-button').style.display = "block";
	}
	else {
		document.getElementById('next-button').style.display = "none";
	}
}



// 個人情報入力画面での次へボタン表示処理
function  vCheckNextButton(oForm) {
	var bName = (oForm["name"].value != "");
	var bKana = (oForm["kana"].value != "");
	var bZip = (oForm["zip"].value != "");
	var bAddress = (oForm["address"].value != "");
	var bTel = (oForm["tel"].value != "");
	var bMail = (oForm["mail"].value != "");
	
	if (bName && bKana && bZip && bAddress && bTel && bMail) {
		document.getElementById('next-button').style.display = "block";
	}
	else {
		document.getElementById('next-button').style.display = "none";
	}
}

