function isLeapYear(yrStr) {
	var leapYear=false;
	var year = parseInt(yrStr, 10);
	// every fourth year is a leap year
	if (year%4 == 0) {
		leapYear=true;
		// unless it's a multiple of 100
		if (year%100 == 0) {
			leapYear=false;
			// unless it's a multiple of 400
			if (year%400 == 0) {
				leapYear=true;
			}
		}
	}
	return leapYear;
}

function getDaysInMonth(mthIdx, YrStr) {
	// default number of days is 31
	var maxDays=31
	// Feb has 28 or 29
	if (mthIdx==1) {
		if (isLeapYear(YrStr)) {
			maxDays=29;
		} else {
		maxDays=28;
		}
	}
	// Apr, Jun, Sep, and Nov have 30
	if (mthIdx==3 || mthIdx==5 || mthIdx==8 || mthIdx==10) {
		maxDays=30;
	}
	return maxDays;
}

// adjusts the number of days in the month for the selected month
// and returns non-zero if it is the last day of the month
// when year is not specified (rental car page)
function adjustCarDate( mthIdx, Dt ) {
	var value = 0;
	var today = new Date()
	var theYear = parseInt( today.getYear(), 10 )

	if ( mthIdx < today.getMonth() ) {
		theYear = ( parseInt( today.getYear(), 10 ) + 1 )
	}
	if ( theYear < 100 ) {
		theYear = "19" + theYear
	} else {
		if ( ( theYear - 100 ) < 10 ) {
			theYear = "0" + ( theYear - 100 )
		} else {
			theYear = ( theYear - 100 ) + ""
		}
            theYear = "20" + theYear
	}

	var numDays = getDaysInMonth( mthIdx, theYear );

	if ( mthIdx == 1 ) {
		if ( Dt.options.selectedIndex + 2 < numDays ) {
			return 0;
		} else {
			if ( Dt.options.selectedIndex + 1 > numDays) {
				Dt.options.selectedIndex=numDays - 1;
			}
			//check for leap year
			if ( (Dt.options.selectedIndex + 1) == numDays ) {
 				return 1;
			} else {
				return 4;
			}
		}
	}

	if ( Dt.options.selectedIndex + 2 < numDays ) {
		value = 0;
	} else {
		if ( Dt.options.selectedIndex + 1 > numDays ) {
			Dt.options.selectedIndex--;
			value = 3;
		} else if ( Dt.options.selectedIndex + 1 == numDays ) {
			//index is 31 or 30
			value = 2;
		} else {
			value = 4;
		}
	}
	return value;
}

//changes departure month when arrival month is changed -- no year (rental car page)
function amadCarChange(inM, inD, outM, outD) {
	var res = adjustCarDate(inM.options.selectedIndex, inD);
	if ( res != 0 ) {
		outD.options.selectedIndex = 0;
		if ( inM.options.selectedIndex == 11 ) {
			outM.options.selectedIndex = 0
		} else if( res == 4 ) {
			outM.options.selectedIndex=inM.options.selectedIndex + 1;
			outD.options.selectedIndex = 0;
		} else {
			outM.options.selectedIndex=inM.options.selectedIndex + 1;
			outD.options.selectedIndex = 1;
		}
	} else {
		outM.options.selectedIndex = inM.options.selectedIndex;
		if (outD.options.selectedIndex <= inD.options.selectedIndex) {
			outD.options.selectedIndex = inD.options.selectedIndex + 2;
		}
	}
	return;
}

//Set current dates on rental car page load
function loadCarDates(form) {
	curDate = new Date();
	curDay = curDate.getDate();
	curMonth = curDate.getMonth();

	if (curDay >= 28) {
		form.pu_day.selectedIndex = 0;
		if (curMonth == 11) {
			form.pu_month.selectedIndex = 0;
		} else if (curDay >= 28) {
			form.pu_month.selectedIndex = curMonth+1;
		}
	} else if (curDay < 28) {
		form.pu_day.selectedIndex = curDay+2;
		form.pu_month.selectedIndex = curMonth;
	}
	amadCarChange(form.pu_month, form.pu_day, form.do_month, form.do_day);
}

