yui.namespace("jcalendar");
var OctopusCalendar = function(id, containerId, config) {
	this.init(id, containerId, config);
};
yui.extend(OctopusCalendar,yui.widget.Calendar);
OctopusCalendar.prototype.buildMonthLabel = function()
{
	var text = this.Locale.LOCALE_MONTHS[this.cfg.getProperty("pagedate").getMonth()] + " " + this.cfg.getProperty("pagedate").getFullYear();
	var text = this.cfg.getProperty("pagedate").getFullYear() + "年" + this.Locale.LOCALE_MONTHS[this.cfg.getProperty("pagedate").getMonth()];
	return text;
};
function initCalendar()
{
    // 当日
	var today = new Date();
	y = today.getFullYear();
	m = today.getMonth();
	d = today.getDate();
	// 開始
	var start = new Date(y,m,(d + 3));
	// 終了
	var end = new Date((y + 1),m,d);
	
	sy = start.getFullYear();
	sm = start.getMonth() + 1;
	sd = start.getDate();
	if (sm < 10) { sm = '0' + sm; }
	if (sd < 10) { sd = '0' + sd; }
	ey = end.getFullYear();
	em = end.getMonth() + 1;
	ed = end.getDate();
	if (em < 10) { em = '0' + em; }
	if (ed < 10) { ed = '0' + em; }
	yui.jcalendar.cal1 = new OctopusCalendar("cal1","CheckInSelector_Container",{
		title:"チェックイン日",
		close:true,
		mindate:sm + '/' + sd + '/' + sy,
		maxdate:em + '/' + ed + '/' + ey
	} );
	var cal1 = yui.jcalendar.cal1;
	// Correct formats for Japan: yyyy/mm/dd, mm/dd, yyyy/mm
	cal1.cfg.setProperty("MDY_YEAR_POSITION", 1);
	cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
	cal1.cfg.setProperty("MDY_DAY_POSITION", 3);
	cal1.cfg.setProperty("MY_YEAR_POSITION", 1);
	cal1.cfg.setProperty("MY_MONTH_POSITION", 2);
	// Date labels for Japanese locale
	cal1.cfg.setProperty("MONTHS_SHORT",   ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]);
	cal1.cfg.setProperty("MONTHS_LONG",    ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]);
	cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["日", "月", "火", "水", "木", "金", "土"]);
	cal1.cfg.setProperty("WEEKDAYS_SHORT", ["日", "月", "火", "水", "木", "金", "土"]);
	cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["日", "月", "火", "水", "木", "金", "土"]);
	cal1.cfg.setProperty("WEEKDAYS_LONG",  ["日", "月", "火", "水", "木", "金", "土"]);
	cal1.selectEvent.subscribe(handlerSelect_Calendar, cal1, true);
	cal1.render();
	handlerChange_CheckIn_Duration();
}
function handlerSelect_Calendar(type,args,obj)
{
	var selected = args[0];
	var y,m,d;
	y = selected[0][0];
	m = selected[0][1];
	d = selected[0][2];
	var obj;
	obj = document.getElementById('CheckInYM');
	m = (String(m).length > 1) ? m : '0' + m;
	for(var i=0;i<obj.options.length;i++)
	{
		if(obj.options[i].value == y + '-' + m)
		{
			obj.selectedIndex = i;
			break;
		}
	}
	obj = document.getElementById('CheckInD');
	for(var i=0;i<obj.options.length;i++)
	{
		if(obj.options[i].value == d)
		{
			obj.selectedIndex = i;
			break;
		}
	}
	handlerChange_CheckIn_Duration();
	var cal1 = yui.jcalendar.cal1;
	cal1.hide();
	return true;
}
function handlerClick_ShowCalendarButton()
{
	var objYM = document.getElementById('CheckInYM');
	var objD = document.getElementById('CheckInD');
	var tmp = objYM.value.split("-");
	y = tmp[0];
	m = tmp[1]-1;
	d = objD.value;
	if(d){
		var dd = new Date(y,m,d);
		yui.jcalendar.cal1.select(dd);
		yui.jcalendar.cal1.setYear(y);
		yui.jcalendar.cal1.setMonth(m);
		yui.jcalendar.cal1.render();
	}
	var pos = yui.util.Dom.getXY("show_calendar_button_link");
	yui.util.Dom.setStyle('CheckInSelector_Container','left',pos[0] + 'px');
	yui.util.Dom.setStyle('CheckInSelector_Container','top',pos[1] + 'px');
	yui.util.Dom.setStyle('CheckInSelector_Container','z-index', 100);
	yui.jcalendar.cal1.show();
}
function handlerChange_CheckIn_Duration()
{
	var y,m,d;
	var objYM = document.getElementById('CheckInYM');
	var objD = document.getElementById('CheckInD');
	var objDur = document.getElementById('Duration');
	var objCout = document.getElementById('CheckOutYMD_Container');
	objCout.innerHTML = '&nbsp;';
	var cal1 = yui.jcalendar.cal1;
	cal1.hide();
	var tmp = objYM.value.split("-");
	y = tmp[0];
	m = tmp[1] - 1;
	d = objD.value;
	if(! objD.value){return false;}
	if(! objDur.value){return false;}
	// Check Out Date
	var cout = new Date(y,m,d); 
	cout.setTime( cout.getTime() + objDur.value * 24 * 60 * 60 * 1000 );
	y = cout.getFullYear();
	m = cout.getMonth() + 1;
	d = cout.getDate();
	objCout.innerHTML = y + '年' + m + '月' + d + '日';
}
//RoomTypes
function initNumAges()
{
	for(var i=0;i<4;i++)
	{
		handlerChange_RoomType_NumRooms(null,i);
	}
}
function handlerChange_RoomType_NumRooms(event,RoomIdx)
{
	if (!document.getElementById("Rooms" + RoomIdx + "Code")) {
		return false;
	}
	var objCode = document.getElementById("Rooms" + RoomIdx + "Code");
	var objNum = document.getElementById("Rooms" + RoomIdx + "NumberOfRooms");
	if(objCode.value.indexOf('+') < 0)
	{
		setNumAges(RoomIdx,0);
		var max_rooms = 4;
		if(objCode.value == 'SB' || objCode.value == 'TS')
		{
			max_rooms = 9;
		}
		else if(objCode.value == 'TR')
		{
			max_rooms = 3;
		}
		else if(objCode.value == 'Q')
		{
			max_rooms = 2;
		}
		if(objNum.value > max_rooms)
		{
			for(var i=0;i<objNum.options.length;i++)
			{
				if(objNum.options[i].value == max_rooms)
				{
					objNum.selectedIndex = i;
					break;
				}
			}
		}
		return;
	}
	// Max Pax is 9
	if(objNum.value > 3)
	{
		for(var i=0;i<objNum.options.length;i++)
		{
			if(objNum.options[i].value == "3")
			{
				objNum.selectedIndex = i;
				break;
			}
		}
	}
	if(objNum.value)
	{
		setNumAges(RoomIdx,objNum.value);
		return;
	}
	setNumAges(RoomIdx,0);
}
function setNumAges(RoomIdx,NumAges)
{
	var dsp;
	for(var i=0;i<3;i++)
	{
		dsp = "none";
		if(i < NumAges) dsp="inline";
		yui.util.Dom.setStyle("Rooms" + RoomIdx + "ChildAge" + i + "_Container" , "display" , dsp);
	}
}
function handlerClick_AddRoomTypeLink()
{
	var num = getNumOfRoomsRowShow();
	if(num<4) yui.util.Dom.setStyle("RoomsRow" + num , "display" , 'block');
	return;
}
function getNumOfRoomsRowShow()
{
	var c = 0;
	for(var i=0;i<4;i++)
	{
		if(yui.util.Dom.getStyle("RoomsRow" + i , "display") != 'none') c++;
	}
	return c;
}
function showRoomsRowIfRoomTypeSet()
{
	for(var i=0;i<4;i++)
	{
		if(document.getElementById("Rooms" + i + "Code") && document.getElementById("Rooms" + i + "Code").value)
		{
			yui.util.Dom.setStyle("RoomsRow" + i , "display" , 'block');
		}
	}
}
