function monthYearChange() {
	var prefix = 'dob';
	generateDates(prefix);
	check13YearsOld(prefix);
}

function generateDates(namePrefix, selectedDate) {
	var year = document.getElementById(namePrefix + '_year');
	var month = document.getElementById(namePrefix + '_month');
	var day = document.getElementById(namePrefix + '_date');

	var selectedYear = year.options[year.selectedIndex].value;
	var selectedMonth = month.options[month.selectedIndex].value;
	if (selectedDate == undefined) {
    	selectedDate = day.selectedIndex;
	}
	var maxDays = 31;
	
	if (selectedYear != '' && selectedMonth != '') {
		// 0th date of next month is this month's last date
		maxDays = new Date(parseInt(selectedYear), parseInt(selectedMonth), 0).getDate();
	}

	day.options.length = 0;
	day.options[0] = new Option();
	for (var i = 1; i <= maxDays; i++) {
		day.options[i] = new Option(i, i, false, i == selectedDate);
	}
}

function check13YearsOld(prefix) {
	var year = document.getElementById(prefix + '_year');
	var month = document.getElementById(prefix + '_month');
	var date = document.getElementById(prefix + '_date');
	var selectedYear = year.options[year.selectedIndex].value;
	if (selectedYear == '') {
		selectedYear = year.options[1].value;
	}
	var selectedMonth = month.options[month.selectedIndex].value
	if (selectedMonth == '') {
		selectedMonth = month.options[month.options.length - 1].value;
	}
	var selectedDate = date.options[date.selectedIndex].value;
	if (selectedDate == '') {
		selectedDate = date.options.length - 1;
	}
	var dob = new Date(selectedYear, selectedMonth, selectedDate);
	var age = getYearsOld(dob);
	var at_least_13 = document.getElementById('at_least_13');
	if (age >= 13) {
		at_least_13.disabled = false;
	}
	else {
		at_least_13.checked = false;
		at_least_13.disabled = true;
	}
}

function getYearsOld(dob) {
	var now = new Date();
	var yearsOld = now.getFullYear() - dob.getFullYear();
	if (dob.getMonth() > now.getMonth() || (dob.getMonth() == now.getMonth() && dob.getDate() > now.getDate())) {
		yearsOld--;
	}
	return yearsOld;
}

function hear_from_change(src) {
	document.getElementById("hear_from_other").disabled = (src.value != "Other");
}
