// このスクリプトの文字コードを、htmlの文字コードに合わせてください。


/* Import Javascript file and execute function
------------------------------------------------------------------------------*/
var rsvWidget_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 rsvWidget_observe = function(elm, listener, func) {
	try {
		elm.addEventListener(listener, func, false);
	}
	catch(e) {
		elm.attachEvent('on' + listener, func);
	}
};

var rsvWidget_changeHotelList = function() {
	var areaNo = parseInt(document.getElementById('rsvWidget_area').value);
	var selectElm = document.getElementById('rsvWidget_hotelNo');
	var row;
	var optionElm;
	var i = 0;
	if (!areaNo) {
		for (row in rsvWidget_hotelHash) {
			optionElm = new Option(rsvWidget_hotelHash[row], row);
			selectElm.options[i] = optionElm;
			i++;
		}
	}
	else {
		var cageElm = document.getElementById('rsvWidget_selectHotel');
		var list = rsvWidget_areaHash[areaNo]['hotelNo'];
		var select = '<select name="hotelNo" id="rsvWidget_hotelNo">' + "\n";
		
		while (selectElm.firstChild) {
			selectElm.removeChild(selectElm.firstChild);
		}
		
		var rowNum;
		var no;
		for (row in rsvWidget_hotelHash) {
			rowNum = parseInt(row);
			for (no in list) {
				if (list[no] == row) {
					optionElm = new Option(rsvWidget_hotelHash[row], row);
					selectElm.options[i] = optionElm;
					i++;
					break;
				}
			}
		}
		
	}
};

var rsvWidget_setPlanHotelNo = function(no) {
	document.getElementById('rsvWidget_planHotelNo').value =  no;
};

var rsvWidget_submit = function(mode) {
	var query 	= rsvWidget_getQuery(rsvWidget_hotelNo);
	var url		= (mode == 'plan') ? rsvWidget_rWithsPlanUrl : rsvWidget_rWithsVacantUrl;
	url += query;
	
	var w = window.open(url);
	w.focus();
};

var rsvWidget_getQuery = function(hotelNo) {
	var ciDateY = document.getElementById('rsvWidget_ciDateY').value;
	var ciDateM = rsvWidget_formatDate(document.getElementById('rsvWidget_ciDateM').value);
	var ciDateD = rsvWidget_formatDate(document.getElementById('rsvWidget_ciDateD').value);
	var coDateY = document.getElementById('rsvWidget_coDateY').value;
	var coDateM = rsvWidget_formatDate(document.getElementById('rsvWidget_coDateM').value);
	var coDateD = rsvWidget_formatDate(document.getElementById('rsvWidget_coDateD').value);
	var room	= document.getElementById('rsvWidget_roomId').value;
	var otona	= document.getElementById('rsvWidget_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 rsvWidget_formatDate = function(v) {
	if (v < 10) {
		v = '0' + String(v);
	}
	
	return v;
};

var rsvWidget_displayRsvWidget = function() {
	rsvWidget_require(rsvWidget_absWebPath + '/rsvWidget/js/libs/RsvWidget_calendar.js', 'window.RsvWidget_calendar', function() {
		rsvWidget_require(rsvWidget_absWebPath  + '/rsvWidget/js/libs/RsvWidget_getSelectboxSrc.js', 'window.RsvWidget_getSelectboxSrc', function () {
			
			var selectCheckInYearElm	= document.getElementById('rsvWidget_selectCheckInY');
			var selectCheckInMonthElm	= document.getElementById('rsvWidget_selectCheckInM');
			var selectCheckInDayElm		= document.getElementById('rsvWidget_selectCheckInD');
			var selectCheckOutYearElm	= document.getElementById('rsvWidget_selectCheckOutY');
			var selectCheckOutMonthElm	= document.getElementById('rsvWidget_selectCheckOutM');
			var selectCheckOutDayElm	= document.getElementById('rsvWidget_selectCheckOutD');
			var selectOtonaElm		= document.getElementById('rsvWidget_selectOtona');
			var selectRoomElm		= document.getElementById('rsvWidget_selectRoom');
			var hotelNoElm			= document.getElementById('rsvWidget_hotelNo');
			
			if (rsvWidget_phase == 'develop') {
				var errorFlag = false;
				if (!selectCheckInYearElm) {
					alert('Not found ID: rsvWidget_selectCheckInY');
					errorFlag = true;
				}
				if (!selectCheckInMonthElm) {
					alert('Not found ID: rsvWidget_selectCheckInM');
					errorFlag = true;
				}
				if (!selectCheckInDayElm) {
					alert('Not found ID: rsvWidget_selectCheckInD');
					errorFlag = true;
				}
				if (!selectCheckOutYearElm) {
					alert('Not found ID: rsvWidget_selectCheckOutY');
					errorFlag = true;
				}
				if (!selectCheckOutMonthElm) {
					alert('Not found ID: rsvWidget_selectCheckOutM');
					errorFlag = true;
				}
				if (!selectCheckOutDayElm) {
					alert('Not found ID: rsvWidget_selectCheckOutD');
					errorFlag = true;
				}
				if (!selectOtonaElm) {
					alert('Not found ID: rsvWidget_selectOtona');
					errorFlag = true;
				}
				if (!selectRoomElm) {
					alert('Not found ID: rsvWidget_selectRoom');
					errorFlag = true;
				}
				
				if (errorFlag) {
					return;
				}
			}
			
			var inst = new RsvWidget_getSelectboxSrc(rsvWidget_selectedPlusDay, rsvWidget_plusDay);
			
/*
			// read stylesheet
			var cssSrc1 = document.createElement('link');
			cssSrc1.setAttribute('type', 'text/css');
			cssSrc1.setAttribute('rel', 'stylesheet');
			cssSrc1.setAttribute('href', rsvWidget_absWebPath + '/rsvWidget/css/common/rsvWidget.css');
			document.getElementsByTagName('head')[0].appendChild(cssSrc1);
			var cssSrc2 = document.createElement('link');
			cssSrc2.setAttribute('type', 'text/css');
			cssSrc2.setAttribute('rel', 'stylesheet');
			cssSrc2.setAttribute('href', rsvWidget_absWebPath + '/rsvWidget/css/common/clearfix.css');
			document.getElementsByTagName('head')[0].appendChild(cssSrc2);
*/
			

			var checkInYearSrc 	= inst.getYear('in');
			var checkInMonthSrc	= inst.getMonth('in');
			var checkInDaySrc	= inst.getDay('in');
			
			inst.initalize(rsvWidget_selectedPlusDay + 1, rsvWidget_plusDay);
			inst.setYearData('coDateY', 'rsvWidget_coDateY');
			inst.setMonthData('coDateM', 'rsvWidget_coDateM');
			inst.setDayData('coDateD', 'rsvWidget_coDateD');
			var checkOutYearSrc 	= inst.getYear('out');
			var checkOutMonthSrc	= inst.getMonth('out');
			var checkOutDaySrc		= inst.getDay('out');
			
			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;
		});
	});
};

var setDate = function(mode) {
	if (mode == 'in') {
		var idY 	= 'rsvWidget_ciDateY';
		var idM 	= 'rsvWidget_ciDateM';
		var idD 	= 'rsvWidget_ciDateD';
		var subIdY	= 'rsvWidget_coDateY';
		var subIdM	= 'rsvWidget_coDateM';
		var subIdD	= 'rsvWidget_coDateD';
	}
	else {
		var idY 	= 'rsvWidget_coDateY';
		var idM 	= 'rsvWidget_coDateM';
		var idD 	= 'rsvWidget_coDateD';	
		var subIdY	= 'rsvWidget_ciDateY';
		var subIdM	= 'rsvWidget_ciDateM';
		var subIdD	= 'rsvWidget_ciDateD';
	}
	
	
	var elmY 	= document.getElementById(idY);
	var elmM 	= document.getElementById(idM);
	var elmD	= document.getElementById(idD);
	var subElmY	= document.getElementById(subIdY);
	var subElmM	= document.getElementById(subIdM);
	var subElmD	= document.getElementById(subIdD);
	
	var yValue		= parseInt(elmY.options[elmY.selectedIndex].value);
	var mValue		= parseInt(elmM.options[elmM.selectedIndex].value);
	var dValue		= parseInt(elmD.options[elmD.selectedIndex].value);
	var subYValue	= parseInt(subElmY.options[subElmY.selectedIndex].value);
	var subMValue	= parseInt(subElmM.options[subElmM.selectedIndex].value);
	var subDValue	= parseInt(subElmD.options[subElmD.selectedIndex].value);
	
	var y = yValue;
	var m = mValue;
	var d = dValue;
	
	var subSetFlag = false;
	var nowSubDate = new Date(subYValue, subMValue - 1, subDValue);
	var setDate = new Date(y, m - 1, d);
	
	var i;
	var yLen = elmY.length;
	var mLen = 12;
	var dLen = 31;
	var elmYSetFlag		= false;
	var subElmYSetFlag 	= true;
	var elmMSetFlag		= false;
	var subElmMSetFlag	= true;
	var elmDSetFlag		= false;
	var subElmDSetFlag	= true;
	
	var subDate;
	if (mode == 'out') {
		var sd  = new Date(y, m - 1, d - 1);
		subDate = getDate(y, m, d - 1);
		if (nowSubDate > sd) {
			subSetFlag = true;
			subElmYSetFlag = subElmMSetFlag = subElmDSetFlag = false;
		}
	}
	else {
		var sd  = new Date(y, m - 1, d + 1);
		subDate = getDate(y, m, d + 1);
		if (nowSubDate < sd) {
			subSetFlag = true;
			subElmYSetFlag = subElmMSetFlag = subElmDSetFlag = false;
		}
	}
	
	for (i = 0; i < yLen; i++) {
		if (eval(elmY.options[i].value) == y) {
			elmY.selectedIndex = i;
			elmYSetFlag = true;
		}
		if (subSetFlag) {
			if (eval(subElmY.options[i].value) == subDate.year) {
				subElmY.selectedIndex = i;
				subElmYSetFlag = true;
			}
		}
		
		if (elmYSetFlag && subElmYSetFlag) {
			break;
		}
	}
	for (i = 0; i < mLen; i++) {
		if (eval(elmM.options[i].value) == m) {
			elmM.selectedIndex = i;
			elmMSetFlag = true;
		}
		if (subSetFlag) {
			if (eval(subElmM.options[i].value) == subDate.month) {
				subElmM.selectedIndex = i;
				subElmMSetFlag = true;
			}
		}
		
		if (elmMSetFlag && subElmMSetFlag) {
			break;
		}
	}
	for (i = 0; i < dLen; i++) {
		if (eval(elmD.options[i].value) == d) {
			elmD.selectedIndex = i;
			elmDSetFlag = true;
		}
		if (subSetFlag) {
			if (eval(subElmD.options[i].value) == subDate.day) {
				subElmD.selectedIndex = i;
				subElmDSetFlag = true;
			}
		}
		
		if (elmDSetFlag && subElmDSetFlag) {
			break;
		}
	}
	
};

var getDate = function (y, m, d) {
	if (y && m && d != null) {
		var inst  = new Date(y, m - 1, d);
	}
	else {
		var inst = new Date();
	}
	var date = new Array();
	date.year   = inst.getFullYear();
	date.month  = inst.getMonth() + 1;
	date.day    = inst.getDate();
	date.wday	= inst.getDay();
	
	return date;
};


rsvWidget_observe(window, 'load', rsvWidget_displayRsvWidget);






