

function year(y) { // some browsers return year - 1900, others don't 
    return (y<1000) ? y + 1900 : y;
}


function daysInMonth(m,y) {
    if(m==2) {
        // February has 29 days in any year evenly divisible by four,
        // EXCEPT for centurial years which are not also divisible by 400.
        return (((y % 4 == 0) && ( (!(y % 100 == 0)) || (y % 400 == 0))) ? 29 : 28);	   
    }
    else if(m==4 || m==6 || m==9 || m==11) return 30;
    else return 31;
}


// populate year and month and date selection
function populateDateSelection() {	                    
	today = new Date();            

	// days
	tm = today.getMonth()+1;
	ty = today.getYear();
	ty = year(ty);
    maxDays = daysInMonth(tm,ty);
     
    for(i=1; i<=maxDays; i++) {
        document.bookingForm.Arrival_day.options[i-1] = new Option(i,i);
    }
    theDate = today.getDate();
    document.bookingForm.Arrival_day.selectedIndex = theDate;
    
    // months
    document.bookingForm.Arrival_month.selectedIndex = tm-1;
    
    // years
    document.bookingForm.Arrival_year.options[0] = new Option(ty,ty);
	document.bookingForm.Arrival_year.options[1] = new Option(ty+1,ty+1);
}


// redo Date
function checkDate() {
	// in dates
	id = parseInt(document.bookingForm.Arrival_day.value);
	im = parseInt(document.bookingForm.Arrival_month.value);
	iy = parseInt(document.bookingForm.Arrival_year.value);
	if (id<=theDate && im==tm && iy==ty) document.bookingForm.Arrival_day.selectedIndex = theDate;
}

// redo Month
function checkMonth() {
	// in dates
	id = parseInt(document.bookingForm.Arrival_day.value);
	im = parseInt(document.bookingForm.Arrival_month.value);
	iy = parseInt(document.bookingForm.Arrival_year.value);
	if (iy==ty && im<=tm) document.bookingForm.Arrival_month.selectedIndex = tm-1;
	
	maxDays = daysInMonth(parseInt(document.bookingForm.Arrival_month.value),iy);
	document.bookingForm.Arrival_day.options.length=0;
	for(i=1; i<=maxDays; i++) {
        document.bookingForm.Arrival_day.options[i-1] = new Option(i,i);
    }
    
	if (id>=maxDays) document.bookingForm.Arrival_day.selectedIndex = maxDays-1;
	else document.bookingForm.Arrival_day.selectedIndex = id-1;
	checkDate();
}



// send form
function sendForm() {
	errMsg = "";	
	errMsg += setFormDates(); // take care of in/out dates
	
	if(errMsg != "") alert("Sorry, there are errors:\n\n" + errMsg); 
    return (errMsg == "") ? true : false;
}


// check to see dates make sense
function setFormDates() {
	errMsg = "";
	
	// in dates
	id = parseInt(document.bookingForm.Arrival_day.value);
	im = parseInt(document.bookingForm.Arrival_month.value);
	iy = parseInt(document.bookingForm.Arrival_year.value);
	//errMsg += ("Arrival: "+id+" / "+im+" / "+iy+"\n");
	
	// out dates
	ni = parseInt(document.bookingForm.nights.value);
	document.bookingForm.Departure_day.value = id+ni;
	document.bookingForm.Departure_month.value = im;
	document.bookingForm.Departure_year.value = iy;
	
	// rollover dates
	maxDays = daysInMonth(im,iy);
	
	if (parseInt(document.bookingForm.Departure_day.value)>maxDays) {
		document.bookingForm.Departure_day.value = parseInt(document.bookingForm.Departure_day.value)-maxDays;
		document.bookingForm.Departure_month.value = parseInt(document.bookingForm.Departure_month.value)+1;
	}
	
	if (parseInt(document.bookingForm.Departure_month.value)>12) {
		document.bookingForm.Departure_month.value = parseInt(document.bookingForm.Departure_month.value)-12;
		document.bookingForm.Departure_year.value = parseInt(document.bookingForm.Departure_year.value)+1;
	}
	
	//od = parseInt(document.bookingForm.Departure_day.value);
	//om = parseInt(document.bookingForm.Departure_month.value);
	//oy = parseInt(document.bookingForm.Departure_year.value);
	//errMsg += ("Departure: "+od+" / "+om+" / "+oy+"\n");
	
	return errMsg;
}