////////////////////////////////////////////////////////
// DATE PICKER FOR RHS WEB ROOMS SITE INTEGRATION			//
// Welman Technologies Ltd.														//
// http://www.welman.co.nz														//
////////////////////////////////////////////////////////

////////////////////////////////////////////////////////
// Modify the following values to suit your web site  //
// and online booking preferences										  //
////////////////////////////////////////////////////////

// Online booking system URL as supplied to you by Welman Technologies
var onlineBookingsURL 					= 'http://airportinnhamilton.web-rooms.co.nz/Home.html'

// Number of days in advance of "today" to pre-select the check-in date picker.
// E.g. If current date is 22 Jan 2006, and this value is set to 3, then
// the pre-selected date will be 25 Jan 2006.
var defaultDaysInAdvanceCheckIn = 1

// Number of days default stay length. The check-out date picker will be preselected to 
// the check-in date, plus this many days.
var defaultDaysUntilCheckOut 		= 1

// Maximum number of days into the future to allow online bookings.
// E.g if this value is 365, the date picker will allow bookings to be started up to one year in the future.
var maxDaysInAdvance 						= 725

// Maximum number of days selectable between check-in and check out.
// E.g if this value is 7, the date pickers will not allow a date range of longer than a week to be selected.
var maxDaysStayLength						= 21

// STYLES: modify the below CSS stylesheet code to suit your own web site.
var checkInOutLabelStyle				= 'text-align:right;font-size:12px;font-weight:900;font-family:sans-serif;color:white;'
var dayNameLabelStyle						= 'text-align:right;font-size:12px;font-weight:500;font-family:sans-serif;color:white;'
var pickerStyle									= 'text-align:right;font-size:12px;font-weight:500;font-family:sans-serif;color:black;'
var buttonStyle									= 'text-align:right;font-size:12px;font-weight:900;font-family:sans-serif;color:black;'




//////////////////////////////////////////////////////////
//  YOU DO NOT NEED TO MODIFY ANY CODE BELOW THIS LINE  //
//////////////////////////////////////////////////////////

function webRoomsDatePicker()
{
	
	createDatePickers()
		
	var myCheckInDate = new Date()
	var myCheckOutDate = new Date()
	
	myCheckInDate.setDate(myCheckInDate.getDate()+defaultDaysInAdvanceCheckIn)
	myCheckOutDate.setDate(myCheckInDate.getDate()+defaultDaysUntilCheckOut)
	
	setCheckDate(document.forms.datePickNavForm.cid,document.forms.datePickNavForm.cimy,myCheckInDate)
	setCheckDate(document.forms.datePickNavForm.cod,document.forms.datePickNavForm.comy,myCheckOutDate)
	
	changedayName(document.getElementById('checkInDayLabel'),document.datePickNavForm.cid[document.datePickNavForm.cid.selectedIndex].value,document.datePickNavForm.cimy[document.datePickNavForm.cimy.selectedIndex].value)
	changedayName(document.getElementById('checkOutDayLabel'),document.datePickNavForm.cod[document.datePickNavForm.cod.selectedIndex].value,document.datePickNavForm.comy[document.datePickNavForm.comy.selectedIndex].value)
		
}


function validatePickers()
{

	var success = true;
	var errMsg = 'Please check the following and try again:\n\n'
	
	var myCheckInDate = getCheckDate(document.forms.datePickNavForm.cid,document.forms.datePickNavForm.cimy)
	var myCheckOutDate = getCheckDate(document.forms.datePickNavForm.cod,document.forms.datePickNavForm.comy)
	
	if(!myCheckInDate)
	{
		errMsg += '- Invalid Check In Date\n'
		success = false;
	}
	
	if(!myCheckOutDate)
	{
		errMsg += '- Invalid Check Out Date\n'
		success = false;
	}
	
	if(success)
	{
		if(myCheckInDate.getTime() > myCheckOutDate.getTime())
		{
			errMsg += '- Check In date must be before Check Out date\n'
			success = false;
		}
		
		if(myCheckInDate.getTime() == myCheckOutDate.getTime())
		{
			errMsg += '- Please choose at least one night\n'
			success = false;
		}
		
		if((myCheckOutDate.getTime() - myCheckInDate.getTime()) > (maxDaysStayLength*86400000))
		{
			errMsg += '- The maximum stay is '+maxDaysStayLength+' day'
			if(maxDaysStayLength!=1)
			{
				errMsg += 's'
			}
			errMsg += '\n'
			success = false;
		}
		
		maxDaysStayLength
				
	}
	
	if(!success)
	{
		alert(errMsg)	
	}
	
	return success
	
}

function createDatePickers()
{
	var dateToday = new Date()
	var workingDate
	var maxDate = new Date()
	var monthName = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')
	
	maxDate.setDate(dateToday.getDate()+maxDaysInAdvance)
	
	var dateDiv = document.getElementById('datePicker');
	var pickerHTML = ''
		
	pickerHTML += '<form name="datePickNavForm" action="'+onlineBookingsURL+'" target="webRoomsOnline" onsubmit="return validatePickers();">'
		pickerHTML += '<table border="0" cellspacing="0" cellpadding="1">'
			pickerHTML += '<tr>'
				pickerHTML += '<td colspan="2">'
					pickerHTML += '<div style="'+checkInOutLabelStyle+'">Check In Date:</div>'
				pickerHTML += '</td>'
			pickerHTML += '</tr>'
			pickerHTML += '<tr>'
				pickerHTML += '<td>'
					pickerHTML += '<div style="'+dayNameLabelStyle+'" id="checkInDayLabel"></div>'
				pickerHTML += '</td>'
				pickerHTML += '<td>'
					pickerHTML += '<select style="'+pickerStyle+'" name="cid" onchange="return changedayName(document.getElementById(\'checkInDayLabel\'),document.datePickNavForm.cid[document.datePickNavForm.cid.selectedIndex].value,document.datePickNavForm.cimy[document.datePickNavForm.cimy.selectedIndex].value);">'
						for(var i=1;i<=31;i++)
						{
							pickerHTML += '<option value="'+i+'">'+i+'</option>'
						}
					pickerHTML += '</select>'
					pickerHTML += '<select style="'+pickerStyle+'" name="cimy" onchange="return changedayName(document.getElementById(\'checkInDayLabel\'),document.datePickNavForm.cid[document.datePickNavForm.cid.selectedIndex].value,document.datePickNavForm.cimy[document.datePickNavForm.cimy.selectedIndex].value);">'
						
						workingDate = new Date()
						while(workingDate.getTime() < maxDate.getTime())
						{							
							pickerHTML += '<option value="'+(workingDate.getMonth()+1)+'-'+workingDate.getFullYear()+'">'
								pickerHTML += monthName[workingDate.getMonth()]
								pickerHTML += ' '
								pickerHTML += workingDate.getFullYear()
							pickerHTML += '</option>'
							workingDate.setMonth(workingDate.getMonth()+1)
						}
						
					pickerHTML += '</select>'
				pickerHTML += '</td>'
			pickerHTML += '</tr>'
			
			pickerHTML += '<tr>'
				pickerHTML += '<td colspan="2">'
					pickerHTML += '<div style="'+checkInOutLabelStyle+'">Check Out Date:</div>'
				pickerHTML += '</td>'
			pickerHTML += '</tr>'
			pickerHTML += '<tr>'
				pickerHTML += '<td>'
					pickerHTML += '<div style="'+dayNameLabelStyle+'" id="checkOutDayLabel"></div>'
				pickerHTML += '</td>'
				pickerHTML += '<td>'
					pickerHTML += '<select style="'+pickerStyle+'" name="cod" onchange="return changedayName(document.getElementById(\'checkOutDayLabel\'),document.datePickNavForm.cod[document.datePickNavForm.cod.selectedIndex].value,document.datePickNavForm.comy[document.datePickNavForm.comy.selectedIndex].value);">'
						for(var i=1;i<=31;i++)
						{
							pickerHTML += '<option value="'+i+'">'+i+'</option>'
						}
					pickerHTML += '</select>'
					pickerHTML += '<select style="'+pickerStyle+'" name="comy"  onchange="return changedayName(document.getElementById(\'checkOutDayLabel\'),document.datePickNavForm.cod[document.datePickNavForm.cod.selectedIndex].value,document.datePickNavForm.comy[document.datePickNavForm.comy.selectedIndex].value);">'
						workingDate = new Date()
						while(workingDate.getTime() < maxDate.getTime())
						{							
							pickerHTML += '<option value="'+(workingDate.getMonth()+1)+'-'+workingDate.getFullYear()+'">'
								pickerHTML += monthName[workingDate.getMonth()]
								pickerHTML += ' '
								pickerHTML += workingDate.getFullYear()
							pickerHTML += '</option>'
							workingDate.setMonth(workingDate.getMonth()+1)
						}
					pickerHTML += '</select>'
				pickerHTML += '</td>'
			pickerHTML += '</tr>'
			pickerHTML += '<tr>'
				pickerHTML += '<td align="right" colspan="3">'
					pickerHTML += '<input style="'+buttonStyle+'" type="submit" name="go" value="GO">'
				pickerHTML += '</td>'
			pickerHTML += '</tr>'
		pickerHTML += '</table>'
	pickerHTML += '</form>'
		
	dateDiv.innerHTML = pickerHTML
}

function changedayName(dayLabelElement,dayVal,monthYearVal)
{
	var theYear = parseInt(monthYearVal.substr(monthYearVal.indexOf('-')+1,4),10);
	var theMonth = parseInt(monthYearVal.substr(0,monthYearVal.indexOf('-')+1),10);
	var theDay = parseInt(dayVal,10);
	var weekdays = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat')
	var jsDate = new Date()
	jsDate.setFullYear(theYear);
	jsDate.setMonth(theMonth-1);
	jsDate.setDate(theDay);
	jsDate.setMonth(theMonth-1);
	jsDate.setDate(theDay);
	jsDate.setHours(11);
	jsDate.setMinutes(00);
	jsDate.setSeconds(00);
	jsDate.setMilliseconds(000);
	
	if(jsDate.getDate() != theDay)
	{
		dayLabelElement.innerHTML = 'XXX&nbsp;';
	} else {
		dayLabelElement.innerHTML = weekdays[jsDate.getDay()]+'&nbsp;';
		if(dayLabelElement.id.indexOf('checkIn') ==0 )
		{
			myForm = document.forms.datePickNavForm;
			var jsOutDate = getCheckDate(myForm.cod,myForm.comy);
			if(jsOutDate)
			{
				if((jsOutDate.getTime() - jsDate.getTime()) < 86400000)
				{
					setCheckDate(myForm.cod,myForm.comy,new Date(jsDate.getTime() + 86400000))
					changedayName(document.getElementById('checkOutDayLabel'),myForm.cod[myForm.cod.selectedIndex].value,myForm.comy[myForm.comy.selectedIndex].value)
				}
			}
		}
	}
}

function getCheckDate(dayControl,monthControl)
{
	var myDate = new Date();
	var getTheMonth = monthControl[monthControl.selectedIndex].value.split('-')[0]-1;
	var getTheYear = monthControl[monthControl.selectedIndex].value.split('-')[1];
	var getTheDay = dayControl[dayControl.selectedIndex].value;
	
	myDate.setFullYear(getTheYear);
	myDate.setMonth(getTheMonth);
	myDate.setDate(getTheDay);
	myDate.setMonth(getTheMonth);
	myDate.setDate(getTheDay);
	myDate.setHours(11);
	myDate.setMinutes(00);
	myDate.setSeconds(00);
	myDate.setMilliseconds(000);
	
	if(myDate.getDate() != getTheDay)
	{
		return false
	}
		return myDate;
	}

function setCheckDate(dayControl,monthControl,whatDate)
{
	dayControl.value = whatDate.getDate();
	var newMonthYearVal = whatDate.getMonth()+1;
	newMonthYearVal = newMonthYearVal.toString();
	newMonthYearVal = newMonthYearVal+'-'+whatDate.getFullYear();
	monthControl.value = newMonthYearVal;
}