
function areachange(objForm)
{
	var objAra = objForm.area;
	var objCnt = objForm.country;
	var objCty = objForm.arvlCity
	var ret;
	
	ret = optionchange(objCnt,countryoptions_HTL[objAra.options[objAra.selectedIndex].value],0,1);
	//エラーになったらプルダウンを初期化する → 当面しない
	if(ret == false){
//		objAra.selectedIndex = 0;
//		areachange(objForm);
		return;
	}
	ret = optionchange(objCty,cityoptions_HTL[objAra.options[objAra.selectedIndex].value][objCnt.options[objCnt.selectedIndex].value],0,1,objAra.selectedIndex);
	//エラーになったらプルダウンを初期化する → 当面しない
	if(ret == false){
//		objAra.selectedIndex = 0;
//		areachange(objForm);
		return;
	}
}
function countrychange(objForm)
{
	var objAra = objForm.area;
	var objCnt = objForm.country;
	var objCty = objForm.arvlCity
	var ret;
	ret = optionchange(objCty,cityoptions_HTL[objAra.options[objAra.selectedIndex].value][objCnt.options[objCnt.selectedIndex].value],0,1);
	//エラーになったらプルダウンを初期化する → 当面しない
	if(ret == false){
//		objAra.selectedIndex = 0;
//		areachange(objForm);
		return;
	}
}


function optionchange( obj, opt, val, auto, xx)
{
	n = obj.options.length;
	for( i = n - 1; i >= 0; -- i ){
		obj.options[i] = null;
	}

	try{
		n = opt.length;
	}
	catch(e){
		return false;
	}

	if( opt.length == 'undefined' || opt.length == 'null' ){
		return;
	}

	n = opt.length;
	for( i = 1; i < n; ++ i ){
		obj.options[obj.options.length] = opt[i];
		if( opt[i].value == val ){
			obj.options.selectedIndex = i;
		}
	}
	if( auto ){
		if( obj.options.length == 2 ){
			obj.options.selectedIndex = 1;
		}
	}
}


function pDate()
{
	var depbuffer=10;
	var duration=3;
	var depDate = new Date();
	var depDateTime = depDate.getTime();
	
	depDateTime += depbuffer*24*3600*1000;
	depDate.setTime(depDateTime);
	var y  = depDate.getYear(); 
	var m  = depDate.getMonth() + 1;
	var d  = depDate.getDate();
	if(m < 10) m="0"+m;
	if(d < 10) d="0"+d;
	document.search.depdate1.value = y+"/"+m+"/"+d;

	depDateTime=depDate.getTime();
	depDateTime+= duration*24*3600*1000;
	depDate.setTime(depDateTime);
	y  = depDate.getYear(); 
	m  = depDate.getMonth() + 1;
	d  = depDate.getDate();
	if(m < 10) m="0"+m;
	if(d < 10) d="0"+d;
	document.search.depdate2.value = y+"/"+m+"/"+d;

}

// 初期表示（すべて初期値で表示）
function InitSetTop(){

    //宿泊日初期設定
    pDate();
    
    //目的都市初期設定
    document.search.area.selectedIndex = 0
    document.search.country.selectedIndex = 0;
    document.search.arvlCity.selectedIndex = 0;
    
    //人数初期設定
	document.search.paxADT.selectedIndex = 0;
	document.search.paxCHD.selectedIndex = 0;
	document.search.paxINF.selectedIndex = 0;
	
	//部屋タイプ初期設定
	document.search.roomType1.selectedIndex = 0;
	document.search.noRooms1.selectedIndex = 0;
	document.search.noCradle1.selectedIndex = 0;
	document.search.roomType2.selectedIndex = 0;
	document.search.noRooms2.selectedIndex = 0;
	document.search.noCradle2.selectedIndex = 0;
	document.search.roomType3.selectedIndex = 0;
	document.search.noRooms3.selectedIndex = 0;
	document.search.noCradle3.selectedIndex = 0;
	document.search.roomType4.selectedIndex = 0;
	document.search.noRooms4.selectedIndex = 0;
	document.search.noCradle4.selectedIndex = 0;
}

/***************************************
部屋タイプの表示/非表示
****************************************/
function fRoomTypeDisplay(i)
{

	if(i == 1){
		if(document.getElementById("RoomTypeArea2").style.display == "none"){
			document.getElementById("RoomTypeArea2").style.display = "block";
			return;
		}
		if(document.getElementById("RoomTypeArea3").style.display == "none"){
			document.getElementById("RoomTypeArea3").style.display = "block";
			return;
		}
		if(document.getElementById("RoomTypeArea4").style.display == "none"){
			document.getElementById("RoomTypeArea4").style.display = "block";
			return;
		}
	}else{
		if(document.getElementById("RoomTypeArea4").style.display == "block"){
			document.getElementById("RoomTypeArea4").style.display = "none";
            document.search.roomType4.selectedIndex = 0;
			return;
		}
		if(document.getElementById("RoomTypeArea3").style.display == "block"){
			document.getElementById("RoomTypeArea3").style.display = "none";
			document.search.roomType3.selectedIndex = 0;
			return;
		}
		if(document.getElementById("RoomTypeArea2").style.display == "block"){
			document.getElementById("RoomTypeArea2").style.display = "none";
			document.search.roomType2.selectedIndex = 0;
			return;
		}
	}

}


/***************************************
パラメータをセットしてSubmit()
****************************************/
function fSubmit(objForm)
{
	var wk = "";

    // 入力チェック
    
    // 日付チェック
    objForm.depdate1.value = fDateFormat(objForm.depdate1.value);
    objForm.depdate2.value = fDateFormat(objForm.depdate2.value);
    
  	if(ckDate(objForm.depdate1.value) == false){
		alert("日付を正しく入力してください。");
		return false;
	}
	if(ckDate(objForm.depdate2.value) == false){
		alert("日付を正しく入力してください。");
		return false;
	}
	if(objForm.depdate1.value >= objForm.depdate2.value){
		alert("日付を正しく入力してください。");
		return false;
	}

	//チェックイン日がｎ日以内かチェック
	if(ckDateRange(objForm.depdate1.value) == false){
		alert("チェックイン日は本日より180日以内の日付を入力してください。");
		return false;
	}

	//チェックイン日がｎ日以降かチェック
	if(ckDateRange5(objForm.depdate1.value) == false){
		alert("チェックイン日は本日より8日以降の日付を入力してください。");
		return false;
	}

    //宿泊日数が15泊以内（16日以上はアウト）かチェック
	if(ckDateRangeStay(objForm.depdate1.value, objForm.depdate2.value) == false){
		alert("宿泊日数が15泊以内となるように日付を入力してください。");
		return false;
	}

    //目的地
	if(objForm.area.value == "X"){
		alert("地域を選択してください。");
		return false;
	}
	if(objForm.country.value == "XX"){
		alert("国を選択してください。");
		return false;
	}
	if(objForm.arvlCity.value == "XXX"){
		alert("都市を選択してください。");
		return false;
	}

	//搭乗者論理チェック
	if(objForm.paxADT.value < objForm.paxINF.value){
		alert("幼児の人数は大人の人数を超えることはできません。");
		return false;
	}
	
	//部屋タイプがシングル＋ベビーベッドありの場合エラーとする
	if( ((objForm.roomType1.value == "SB") && (objForm.noCradle1.value != "")) ||
	    ((objForm.roomType2.value == "SB") && (objForm.noCradle2.value != "")) ||
	    ((objForm.roomType3.value == "SB") && (objForm.noCradle3.value != "")) ||
	    ((objForm.roomType4.value == "SB") && (objForm.noCradle4.value != "")) ){
        alert("部屋タイプがシングルの場合、ベビーベッドはご用意できません。");
        return false;
	}
	
	//出発日
	wk = wk + "?depdate1=" + objForm.depdate1.value;
	//現地出発日
	wk = wk + "&depdate2=" + objForm.depdate2.value;
	//エリア
	wk = wk + "&area=" + objForm.area.value;
	//国
	wk = wk + "&country=" + objForm.country.value;
	//都市
	wk = wk + "&arvlCity=" + objForm.arvlCity.value;
	//大人
	wk = wk + "&paxADT=" + objForm.paxADT.value;
	//子供
	wk = wk + "&paxCHD=" + objForm.paxCHD.value;
	//幼児
	wk = wk + "&paxINF=" + objForm.paxINF.value;
	//ルームタイプ１
	wk = wk + "&roomType1=" + objForm.roomType1.value;
	//ルームタイプ２
	wk = wk + "&roomType2=" + objForm.roomType2.value;
	//ルームタイプ３
	wk = wk + "&roomType3=" + objForm.roomType3.value;
	//ルームタイプ４
	wk = wk + "&roomType4=" + objForm.roomType4.value;
	//部屋数１
	wk = wk + "&noRooms1=" + objForm.noRooms1.value;
	//部屋数２
	wk = wk + "&noRooms2=" + objForm.noRooms2.value;
	//部屋数３
	wk = wk + "&noRooms3=" + objForm.noRooms3.value;
	//部屋数４
	wk = wk + "&noRooms4=" + objForm.noRooms4.value;
	//コット数１
	wk = wk + "&noCradle1=" + objForm.noCradle1.value;
	//コット数２
	wk = wk + "&noCradle2=" + objForm.noCradle2.value;
	//コット数３
	wk = wk + "&noCradle3=" + objForm.noCradle3.value;
	//コット数４
	wk = wk + "&noCradle4=" + objForm.noCradle4.value;
	//ロケーション
	wk = wk + "&location=";

//	objForm.action = "HTL/HotelLoading.aspx" + wk;
	objForm.submit();

}

function fDateFormat(dt) {
/*
	yyyy/m/d形式をyyyy/mm/dd形式に変換（0埋め）
*/

	// 正規表現による書式チェック
	if(!dt.match(/^\d{4}\/\d{1,}\/\d{1,}$/)){
		return dt;
	}

	var vDate = dt.split("/")

	if(vDate[1].length == 1){
		vDate[1] = '0' + vDate[1];
	}
	if(vDate[2].length == 1){
		vDate[2] = '0' + vDate[2];
	}

	return vDate[0] + "/" + vDate[1] + "/" + vDate[2];
}

function ckDate(datestr) {
	// 正規表現による書式チェック
	if(!datestr.match(/^\d{4}\/\d{2}\/\d{2}$/)){
		return false;
	}

	var vYear = datestr.substr(0, 4) - 0;
	var vMonth = datestr.substr(5, 2) - 1; // Javascriptは、0-11で表現
	var vDay = datestr.substr(8, 2) - 0;

	// 月,日の妥当性チェック
	if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){
		var vDt = new Date(vYear, vMonth, vDay);
		if(isNaN(vDt)){
			return false;
		}else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){
			return true;
		}else{
			return false;
		}
	}else{
		return false;
	}
}

function ckDateRange(dt) {
	//取得した日付が本日よりｎ日以内かチェック
	//設定値：180日

	var vRange = 180;
	var vNow = new Date();
	var vTarget = new Date(dt);
	var vDys;

	vDys = Math.floor((vTarget - vNow) / 1000 / 60 / 60 / 24) + 1;

	if(vDys > vRange){
		return false;
	}

}

function ckDateRange5(dt) {
	//取得した日付が本日より5日以降かチェック
	//設定値：5日
	//設定値：8日に変更。（2008/04/25 S.Yamamoto 影響が大きいので値のみ変更）

	var vRange = 8;
	var vNow = new Date();
	var vTarget = new Date(dt);
	var vDys;

	vDys = Math.floor((vTarget - vNow) / 1000 / 60 / 60 / 24) + 1;

	if(vDys < vRange){
		return false;
	}

}

function ckDateRangeStay(checkInDate, checkOutDate) {
	//宿泊日数が15泊以内かチェック
	//設定値：16日

	var vRange = 16;
	var vCheckIn = new Date(checkInDate);
	var vCheckOut = new Date(checkOutDate);
	var vDys;

	vDys = Math.floor((vCheckOut - vCheckIn) / 1000 / 60 / 60 / 24) + 1;

	if(vDys > vRange){
		return false;
	}

}

