var aDay = 1000 * 60 * 60 * 24;
var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var weekdays = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];

function calculatePeriod() {
	try {
		var start = new Date(document.getElementById("startDate").value);
		var end = new Date(document.getElementById("endDate").value);
		var period = end.valueOf() - start.valueOf();
		
		if (period < 0) { 
			alert("Ending date must come after starting date.");
			return false;
		}
		
		if (isNaN(period)) {
			throw new Error("Date arithmatic results in NaN");
		}
			
		var days = Math.floor(period / aDay);
		var weeks = Math.floor(days / 7);
		var remDays = days % 7;
		
		if (document.getElementById("target").hasChildNodes()) { document.getElementById("target").removeChild(document.getElementById("target").firstChild); }
		document.getElementById("target").appendChild(document.createTextNode(days + " days, or " + weeks + " weeks and " + remDays + " days."));
	} catch (err) {
		alert("Either starting or ending date is not a valid date.");
		//alert(err.message);
	}
	
	return true;
}

function calculateEnd() {
	try {
		var start = new Date(document.getElementById("date").value);
		var period = document.getElementById("period").value;
		
		var end = new Date(start.valueOf() + (period * 7 * aDay));
		
		if (isNaN(end)) { throw new Error("Date arithmetic results in NaN"); }
		
		if (period == 0) {
			alert("Please enter a time period greater than 0 weeks.");
			return false;
		}

		if (document.getElementById("target2").hasChildNodes()) { document.getElementById("target2").removeChild(document.getElementById("target2").firstChild); }
		document.getElementById("target2").appendChild(document.createTextNode(weekdays[end.getDay()] + ", " + months[end.getMonth()] + " " + end.getDate() + ", " + end.getFullYear() + "."));
	} catch (err) {
		alert("Date entered is not a valid date.");
	}
	
	return true;
}
