var reservation_require = function (jsFilePath, check, next) {
	check = new Function('return !!(' + check + ')');
	
	if (!check()) {
		var script = document.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script.setAttribute('src', jsFilePath);
		document.getElementsByTagName('head')[0].appendChild(script);
		
		setTimeout(function () {
			if (!check()) {
				setTimeout(arguments.callee, 100);
			}
			else {
				next();
			}
		}, 100);
	}
	else {
		next();
	}
};

var reservation_observe = function(elm, listener, func) {
	try {
		elm.addEventListener(listener, func, false);
	}
	catch(e) {
		elm.attachEvent('on' + listener, func);
	}
};

var reservation_setPlanHotelNo = function(no) {
	document.getElementById('reservation_planHotelNo').value =  no;
};

var reservation_submit = function(mode) {
	var query 	= reservation_getQuery(reservation_hotelNo);
	var url		= (mode == 'plan') ? reservation_rWithsPlanUrl : reservation_rWithsVacantUrl;
	url += query;
	
	var w = window.open(url);
	w.focus();
};

var reservation_getQuery = function(hotelNo) {
	var ciDateY = document.getElementById('r_ciDateY').value;
	var ciDateM = r_formatDate(document.getElementById('r_ciDateM').value);
	var ciDateD = r_formatDate(document.getElementById('r_ciDateD').value);
	var coDateY = document.getElementById('r_coDateY').value;
	var coDateM = r_formatDate(document.getElementById('r_coDateM').value);
	var coDateD = r_formatDate(document.getElementById('r_coDateD').value);
	var room	= document.getElementById('r_roomId').value;
	var otona	= document.getElementById('r_otonaId').value;
	
	var query = '?hotelNo=' + hotelNo
	 + '&ciDateY=' 	+ ciDateY
	 + '&ciDateM=' 	+ ciDateM
	 + '&ciDateD=' 	+ ciDateD
	 + '&coDateY=' 	+ coDateY
	 + '&coDateM=' 	+ coDateM
	 + '&coDateD=' 	+ coDateD
	 + '&room='		+ room
	 + '&otona='	+ otona;
	 
	return query;
}

var r_formatDate = function(v) {
	if (v < 10) {
		v = '0' + String(v);
	}
	
	return v;
};

var reservation_displayReservationWidget = function() {
	reservation_require(reservation_absWebPath + '/common/js/libs/reservation_widget_calendar.js', 'window.reservation_widget_calendar', function() {
		reservation_require(reservation_absWebPath + '/common/js/libs/reservation_widget_get_selectbox.js', 'window.reservation_widget_get_selectbox', function () {
			
			var selectCheckInYearElm	= document.getElementById('reservation_select_checkin_year');
			var selectCheckInMonthElm	= document.getElementById('reservation_select_checkin_month');
			var selectCheckInDayElm		= document.getElementById('reservation_select_checkin_day');
			var selectCheckOutYearElm	= document.getElementById('reservation_select_checkout_year');
			var selectCheckOutMonthElm	= document.getElementById('reservation_select_checkout_month');
			var selectCheckOutDayElm	= document.getElementById('reservation_select_checkout_day');
			var selectOtonaElm			= document.getElementById('reservation_select_otona');
			var selectRoomElm			= document.getElementById('reservation_select_room');
			
			if (reservation_phase == 'develop') {
				var errorFlag = false;
				if (!selectCheckInYearElm) {
					alert('Not found ID: reservation_select_checkin_year');
					errorFlag = true;
				}
				if (!selectCheckInMonthElm) {
					alert('Not found ID: reservation_select_checkin_month');
					errorFlag = true;
				}
				if (!selectCheckInDayElm) {
					alert('Not found ID: reservation_select_checkin_day');
					errorFlag = true;
				}
				if (!selectCheckOutYearElm) {
					alert('Not found ID: reservation_select_checkout_year');
					errorFlag = true;
				}
				if (!selectCheckOutMonthElm) {
					alert('Not found ID: reservation_select_checkout_month');
					errorFlag = true;
				}
				if (!selectCheckOutDayElm) {
					alert('Not found ID: reservation_select_checkout_day');
					errorFlag = true;
				}
				if (!selectOtonaElm) {
					alert('Not found ID: reservation_select_otona');
					errorFlag = true;
				}
				if (!selectRoomElm) {
					alert('Not found ID: reservation_select_room');
					errorFlag = true;
				}
				
				if (errorFlag) {
					return;
				}
			}

			var inst = new reservation_widget_get_selectbox(reservation_selectedPlusDay, reservation_plusDay);
			
			var checkInYearSrc 	= inst.getYear();
			var checkInMonthSrc	= inst.getMonth();
			var checkInDaySrc	= inst.getDay();
			
			inst.initalize(reservation_selectedPlusDay + 1, reservation_plusDay);
			inst.setYearData('coDateY', 'r_coDateY');
			inst.setMonthData('coDateM', 'r_coDateM');
			inst.setDayData('coDateD', 'r_coDateD');
			var checkOutYearSrc 	= inst.getYear();
			var checkOutMonthSrc	= inst.getMonth();
			var checkOutDaySrc		= inst.getDay();
			
			var otonaSrc	= inst.getOtona();
			var roomSrc		= inst.getRoom();
			
			selectCheckInYearElm.innerHTML		= checkInYearSrc;
			selectCheckInMonthElm.innerHTML		= checkInMonthSrc;
			selectCheckInDayElm.innerHTML		= checkInDaySrc;

			selectCheckOutYearElm.innerHTML		= checkOutYearSrc;
			selectCheckOutMonthElm.innerHTML	= checkOutMonthSrc;
			selectCheckOutDayElm.innerHTML		= checkOutDaySrc;
			selectOtonaElm.innerHTML			= otonaSrc;
			selectRoomElm.innerHTML				= roomSrc;
			
			$("#r_ciDateY, #r_ciDateM, #r_ciDateD").change(function () {
				changeCheckInDate();
			}).change();
		});
	});
};

reservation_observe(window, 'load', reservation_displayReservationWidget);


function changeCheckInDate(){
	
	var ciDateY = document.getElementById('r_ciDateY').value;
	var ciDateM = document.getElementById('r_ciDateM').value;
	var ciDateD = document.getElementById('r_ciDateD').value;

	var dt = new Date(ciDateY, ciDateM, 0);

	var lastDay = dt.getDate();
	if (lastDay <= ciDateD) {
		ciDateD = lastDay;
	}
	ciDateM = ciDateM - 1;
	var dd = new Date(ciDateY, ciDateM, ciDateD);
    dd.setDate(dd.getDate()+1);
	
	$("#r_coDateY").val(dd.getFullYear());
	$("#r_coDateM").val(dd.getMonth()+1);
	$("#r_coDateD").val(dd.getDate());

	if (lastDay <= ciDateD) {
		$("#r_ciDateD").val(lastDay);
	}
}

