// simple javascript for assignment due dates
//
// Jon McCormack (jonmc@cs.monash.edu.au)
// March 1998
//

function sameDay(dueDate, today) {
	if (dueDate.getDate() == today.getDate() &&
			dueDate.getMonth() == today.getMonth() &&
			dueDate.getYear() == today.getYear() ) {
		// same day
		return true;
	} else {
		return false;
	}
}

function dueDateMsg(dueYear, dueMonth, dueDay) {
	// work out when assignment is due and return string with number of days or hours to go
	// or, if past due date then the number of days past due...
	// 
	today = new Date();
	dueDate = new Date(dueYear, dueMonth, dueDay);
	
	// assignments due at 11pm...
	dueDate.setHours(23);
	dueDate.setMinutes(59);
	
	difference = dueDate.getTime() - today.getTime();
	
	// first check if due today...
	//
	if ( sameDay(dueDate,today) ) {
		if (difference > 0) {
			difference = Math.floor( difference / (1000 * 60 * 60) );
			return "Due TODAY! (In " + difference + " hours.)";
		} else {
			difference = Math.floor( (-difference) / (1000 * 60 * 60) );
			return "Due TODAY! (" + difference + " hours past deadline)";
		}
	}
	
	// check number of days till due...
	if (today.getTime() < dueDate.getTime()) {
		difference = Math.floor(difference / (1000 * 60 * 60 * 24) );
		return 'Due in ' + (difference <= 1 ? 'tomorrow!' : difference + ' days!');
	} else {
		difference = Math.floor( (-difference) / (1000 * 60 * 60 * 24) );
		return 'Due ' + (difference <= 1 ? 'yesterday.' : difference + ' days ago.' );
	}
}

