
var numVisibleCalendars = 1;

function initialize(){
	var today = new Date();

	document.input.start_date_year.value = today.getFullYear();
	document.input.start_date_month.value = today.getMonth();
	document.input.start_date_day.value = today.getDate();
	//document.input.start_date_hour.value = today.getHours();
	/*if (today.getHours() < 12){
		document.input.start_date_ampm.value = "am";
	}
	else {
		document.input.start_date_ampm.value = "pm";
	}*/
	checkDate();
}

function validate(form){
	var valid = true;
	var missingField = "\n";

	with (form){
		if (first_name.value == null || first_name.value == ""){
			valid = false;
			missingField = missingField + " First Name \n";
			first_name.focus();
			first_name.style.background = "#ff8888";
		}
		if (family_name.value == null || family_name.value == ""){
			valid = false;
			missingField = missingField + " Family Name \n";
			family_name.focus();
			family_name.style.background = "#ff8888";
		}
		if (email.value == null || email.value == ""){
			valid = false;
			missingField = missingField + " Email \n";
			email.focus();
			email.style.background = "#ff8888";
		}

		if (!valid){
			alert("MISSING INFORMATION: " + missingField);
		}

		if (valid && !checkDate()){
			valid = false;
		}
	}

	return valid;
}


function checkEmail(address){
	// Function Author: Osmar Zaiane
	// Modified by Dan Moore

	var newAddress = "";

	for (i=0; i<address.length; i++){
		ch = address.substring(i,i+1);
		if ((ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z") || (ch == "@") ||
		    (ch == "[") || (ch == "]") || (ch == ".") || (ch == "_") || (ch == "-") ||
		    (ch >= "0" && ch <= "9")){
			newAddress += ch;
		}
	}

	if (newAddress != address){
		alert("You have entered spaces or invalid characters in your email address.");
	}
	if ((newAddress.search("@") == -1) || (newAddress.search(".") == -1)){
		alert("Error with email format. An email must have the form 'darthvader@deathstar.com'");
	}
	else {
		c = newAddress.indexOf("@");
		d = newAddress.indexOf(".");
		e = newAddress.substring(c,d);
		if (c == '0'){
			alert("Check your e-mail address. You should have a prefix before '@'\n\n Example: darthvader@deathstar.com");
		}
		else if (e.length < 2){
			alert("Check your e-mail address. You should have a domain between '@' and '.'\n\n Example: darthvader@deathstar.com");
		}
		else if ((newAddress.length - d) <= 2){
			alert("Check your e-mail address. You should have a suffix of at least 2 characters after the '.'\n\n Example: darthvader@deathstar.com");
		}
	}

	return newAddress;
}

function checkDate(){

	var start_year	= parseInt(document.input.start_date_year.value);
	var start_month	= parseInt(document.input.start_date_month.value);
	var start_day	= parseInt(document.input.start_date_day.value);
	var end_year	= parseInt(document.input.end_date_year.value);
	var end_month	= parseInt(document.input.end_date_month.value);
	var end_day	= parseInt(document.input.end_date_day.value);
	
	// Change the number of days depending on the month. This function supports leap years.
	for (var i=0; i<document.input.start_date_day.length; i++){
		if ((start_month == 3) || (start_month == 5) || (start_month == 8) || (start_month == 10)){
			if (start_day > 30){
				document.input.start_date_day.value = "30";
				start_day = 30;
			}
			if (document.input.start_date_day.options[i].value == "29") {document.input.start_date_day.options[i].style.visibility="visible";}
			if (document.input.start_date_day.options[i].value == "30") {document.input.start_date_day.options[i].style.visibility="visible";}
			if (document.input.start_date_day.options[i].value == "31") {document.input.start_date_day.options[i].style.visibility="hidden";}
		}
		else if (start_month == 1){
			if (((start_year % 4 == 0) && (start_year % 100 != 0)) || (start_year % 400 == 0)) {
				if (start_day > 29){
					document.input.start_date_day.value = "29";
					start_day = 29;
				}
				if (document.input.start_date_day.options[i].value == "29") {document.input.start_date_day.options[i].style.visibility="visible";}
				if (document.input.start_date_day.options[i].value == "30") {document.input.start_date_day.options[i].style.visibility="hidden";}
				if (document.input.start_date_day.options[i].value == "31") {document.input.start_date_day.options[i].style.visibility="hidden";}
			}
			else {
				if (start_day > 28){
					document.input.start_date_day.value = "28";
					start_day = 28;
				}
				if (document.input.start_date_day.options[i].value == "29") {document.input.start_date_day.options[i].style.visibility="hidden";}
				if (document.input.start_date_day.options[i].value == "30") {document.input.start_date_day.options[i].style.visibility="hidden";}
				if (document.input.start_date_day.options[i].value == "31") {document.input.start_date_day.options[i].style.visibility="hidden";}
			}
		}
		else{
			if (document.input.start_date_day.options[i].value == "29") {document.input.start_date_day.options[i].style.visibility="visible";}
			if (document.input.start_date_day.options[i].value == "30") {document.input.start_date_day.options[i].style.visibility="visible";}
			if (document.input.start_date_day.options[i].value == "31") {document.input.start_date_day.options[i].style.visibility="visible";}
		}
	}
	for (var i=0; i<document.input.end_date_day.length; i++){
		if ((end_month == 3) || (end_month == 5) || (end_month == 8) || (end_month == 10)){
			if (end_day > 30){
				document.input.end_date_day.value = "30";
				end_day = 30;
			}
			if (document.input.end_date_day.options[i].value == "29") {document.input.end_date_day.options[i].style.visibility="visible";}
			if (document.input.end_date_day.options[i].value == "30") {document.input.end_date_day.options[i].style.visibility="visible";}
			if (document.input.end_date_day.options[i].value == "31") {document.input.end_date_day.options[i].style.visibility="hidden";}
		}
		else if (end_month == 1){
			if (((end_year % 4 == 0) && (end_year % 100 != 0)) || (end_year % 400 == 0)) {
				if (end_day > 29){
					document.input.end_date_day.value = "29";
					end_day = 29;
				}
				if (document.input.end_date_day.options[i].value == "29") {document.input.end_date_day.options[i].style.visibility="visible";}
				if (document.input.end_date_day.options[i].value == "30") {document.input.end_date_day.options[i].style.visibility="hidden";}
				if (document.input.end_date_day.options[i].value == "31") {document.input.end_date_day.options[i].style.visibility="hidden";}
			}
			else {
				if (end_day > 28){
					document.input.end_date_day.value = "28";
					end_day = 28;
				}
				if (document.input.end_date_day.options[i].value == "29") {document.input.end_date_day.options[i].style.visibility="hidden";}
				if (document.input.end_date_day.options[i].value == "30") {document.input.end_date_day.options[i].style.visibility="hidden";}
				if (document.input.end_date_day.options[i].value == "31") {document.input.end_date_day.options[i].style.visibility="hidden";}
			}
		}
		else{
			if (document.input.end_date_day.options[i].value == "29") {document.input.end_date_day.options[i].style.visibility="visible";}
			if (document.input.end_date_day.options[i].value == "30") {document.input.end_date_day.options[i].style.visibility="visible";}
			if (document.input.end_date_day.options[i].value == "31") {document.input.end_date_day.options[i].style.visibility="visible";}
		}
	}

	// Check that the start and end dates are within one year of each other.
	if ((start_year > end_year) || ((start_year == end_year) && ((start_month > end_month) || ((start_month == end_month) && (start_day > end_day))))){
		alert("ERROR: The end date can not be before the start date.");
		return false;
	}
	else if ((end_year - start_year > 1) || ((end_year - start_year == 1) && (end_month - start_month > 0))){
		alert("ERROR: The end date should not be more than one year from the start date.");
		return false;
	}
	else {
		return true;
	}

	return true;

}

function newMonth(){
	numVisibleCalendars++;

	calendar = "calendar" + numVisibleCalendars + "_div";

	document.getElementById(calendar).style.visibility = 'visible';
	document.getElementById("numVisibleCalendars").value = numVisibleCalendars;
}
