FillNumberOfNightsSelect();
cal1 = new YAHOO.widget.CalendarGroup("cal1","cal1Container");
cal1.selectEvent.subscribe(setSelectedDates, cal1, true); 
cal1.render();

var BookingValid = false;

var RoomList = Array();
RoomList.length = 0;
document.getElementById("NumberOfRooms").selectedIndex = 0;
document.getElementById("RoomList").innerHTML = "";

function AddRooms()
{
	document.getElementById("RoomList").innerHTML = "";
	var NumberOfRooms = document.getElementById("NumberOfRooms");
	NumberOfRooms = NumberOfRooms.options[NumberOfRooms.selectedIndex].value;
	//Posibly not the best thing to do because you'll lose any options set.
	//This could be changed so that you only add or take away the rooms not needed I guess. Probably not worth it.
	RoomList.length = 0;
	for(var i=1;i<=NumberOfRooms;i++)
	{
		RoomList.push(new NewRoom('RoomList'));
	}
	
	for(var i=0;i<RoomList.length;i++)
	{
		var textNode = document.createTextNode("Room "+(i+1)); 
		document.getElementById("RoomList").appendChild(textNode);
		RoomList[i].DisplayHtml();
		var br = document.createElement("br");
		br.style.clear="both";
		document.getElementById("RoomList").appendChild(br);
	}
}

function UpdateRooms(obj)
{
	for(var i=0;i<RoomList.length;i++)
	{
		if(RoomList[i] == obj)
		{
			RoomList[i].UpdateRoomType();
		}
	}
	setSelectedDates();
}

function ConfirmBookings()
{
	if(document.getElementById("NumberOfRooms").value == 0)
	{
		alert("Please select number of rooms.");
		return false;
	}
	
	var xml = "<RoomList>";
	for(var i=0;i<RoomList.length;i++)
	{
		if(RoomList[i].RoomTypeSelect.options[RoomList[i].RoomTypeSelect.selectedIndex].value == "Choose")
		{
			alert("Please select a room type");
			return false;
		}
		xml += RoomList[i].GenerateXML();
	}
	xml += "</RoomList>";

	
	document.getElementById("RoomListXML").value = xml;
	
	var calDate = cal1.getSelectedDates()[0];
	if(!calDate)
	{
		alert("Please select a date");
		return false;
	}
	var currentTime = new Date();
	var Yesterday = new Date( currentTime.getTime() - 86400000 ); 
	if(calDate < Yesterday)
	{
		alert("Date selected is in the past.");
		return false;
	}
	
	var MyMonth = (calDate.getMonth() + 1);
	if(MyMonth< 10)
	{
		MyMonth = "0"+MyMonth;
	}
	calDate = calDate.getFullYear() + '-' + MyMonth + '-' + calDate.getDate();
	var NumberOfNights = document.getElementById("NumberOfNights");
	NumberOfNights = NumberOfNights.options[NumberOfNights.selectedIndex].value;
	
	for(var i=0;i<RoomList.length;i++)
	{
		if(RoomList[i].Type!="Choose")
		{
			CheckNumberOfNights(NumberOfNights,RoomList[i].Type,calDate);
			if(BookingValid != true)
			{
				return false;
			}
		}
	}
	document.getElementById("DateFrom").value = calDate;
	document.getElementById("CheckAvailable").submit();
	return true;
}


function setSelectedDates()
{
	var MinimumNumberOfNightsValid = true;
	
	var NumberOfNights = document.getElementById("NumberOfNights");
	NumberOfNights = NumberOfNights.options[NumberOfNights.selectedIndex].value;
	
		var arrDates = cal1.getSelectedDates();
		var myDate = arrDates[0];
		// Work with selected date...
		var displayMonth = myDate.getMonth() + parseInt(1,10);
		var displayYear = myDate.getFullYear();
		var displayDate = myDate.getDate();
		
	
		var EndDate = new Date();
		EndDate.setYear(myDate.getFullYear());
		EndDate.setMonth(myDate.getMonth());
		EndDate.setDate(myDate.getDate() + (parseInt(NumberOfNights,10)-1)); 
		
		var endMonth = EndDate.getMonth()+ parseInt(1,10);
		var endYear = EndDate.getFullYear();
		var endDate = EndDate.getDate();
		
		var SelectedDates = displayMonth+"/"+displayDate+"/"+displayYear+"-"+endMonth+"/"+endDate+"/"+endYear;
		cal1.addRenderer(SelectedDates,cal1.renderCellStyleHighlight1);
		var TempNights = NumberOfNights;
		var Month = myDate.getMonth() + 1;
		var Year = myDate.getFullYear();
		var Day = myDate.getDate();

		
		var FormatDate = Year+"-"+Month+"-"+Day;
		for(var i=0;i<RoomList.length;i++)
		{
			if(RoomList[i].Type!="Choose")
			{
				if(!CheckNumberOfNights(TempNights,RoomList[i].Type,FormatDate))
				{
					MinimumNumberOfNightsValid = false;
					BookingValid = false;
					
				}
			}
		}
	cal1.render();
	return MinimumNumberOfNightsValid;
}

function CheckNumberOfNights(NumberOfNightsChosen,RoomType,Date)
{
	var sUrl = "./HotelBookingManager.php";
	var postData = "GetMinimumNumberOfNights=true&RoomType="+RoomType+"&DateFrom="+Date; 
	
	var handleSuccess = function(o)
	{
		if(o.responseText.length > 0)
		{
			if(o.responseText > NumberOfNightsChosen)
			{
				YAHOO.util.Dom.get('MinNightWarning').innerHTML = "The booking could not be made as we have a minimum  booking of  "+o.responseText+"  nights during this period. Single night bookings can only be made where gaps allow, but please call or email to discuss your requirements.";
				BookingValid = false;
				return false;
			}
		}
		YAHOO.util.Dom.get('MinNightWarning').innerHTML = " ";
		BookingValid = true;
		return true;
	}

	

	var callback =
	{
	  success:handleSuccess,
	  failure: handleFailure,
	  scope: this
	};
	  	
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); 

}

function handleFailure()
{
	return false;
}

function FillNumberOfNightsSelect()
{
	var NumberOfNights = document.getElementById("NumberOfNights");
	
	for(var count = 1; count <= 21 ; ++count)
	{
		var myOption = document.createElement("option");
		myOption.value = count;
		myOption.appendChild(document.createTextNode(count));
		NumberOfNights.appendChild(myOption);
	}
}