// JavaScript Document

var daysOfWeek = new Array("Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat");

function updatePreview() {
	if (!validateEventForm(document.getElementById("eventForm"))) {
		return false;
	}

	var previewEventField= document.getElementById("previewEvent");

	var eventPreview = "";
	eventPreview += "<span style=\"color: #0033FF;\"><B>WHAT: " + document.getElementById("Etitle").innerHTML + "</b></span><BR>";

	if (document.getElementById("Esponsor").innerHTML != "") {
		eventPreview += "<B>Sponsored By:</B> " + document.getElementById("Esponsor").innerHTML + "<BR>";
	}

	var dateStartMsg = document.getElementById("EmonthStart").selectedIndex + "/" + document.getElementById("EdayStart").selectedIndex + "/" + document.getElementById("EyearStart").value;
	var timeStartMsg = document.getElementById("EhourStart").selectedIndex + ":" + document.getElementById("EminuteStart").value + document.getElementById("EampmStart").value;
	var dateFinishMsg = document.getElementById("EmonthFinish").selectedIndex + "/" + document.getElementById("EdayFinish").selectedIndex + "/" + document.getElementById("EyearFinish").value;
	var timeFinishMsg = document.getElementById("EhourFinish").selectedIndex + ":" + document.getElementById("EminuteFinish").value + document.getElementById("EampmFinish").value;

	var dateMsg = dateStartMsg;
	if (document.getElementById("EdateFinishNA").checked == false) {
		if (dateStartMsg != dateFinishMsg) {
			dateMsg = dateMsg + " - " + dateFinishMsg + " " + timeStartMsg + " - " + timeFinishMsg;
		} else {
			dateMsg = dateMsg + " " + timeStartMsg + " - " + timeFinishMsg;
		}
	} else {
		dateMsg = dateMsg + " " + timeStartMsg;
	}

	eventPreview += "<B>WHEN:</B> " + dateMsg + "<BR>";
	eventPreview += "<B>WHERE:</B> " + document.getElementById("Elocation").value + " " + document.getElementById("Eaddr").value + "<BR>";
	eventPreview += "<B>DETAILS:</B> " + document.getElementById("Edescr").innerHTML + "<BR>";

	if (document.getElementById("Ecost").value != "") {
		eventPreview += "<B>COST:</B> " + document.getElementById("Ecost").value + "<BR>";
	}

	eventPreview += "<B>CONTACT:</B> " + document.getElementById("Econtact").value + "<BR>";

	previewEventField.innerHTML = eventPreview;
}

function disableFinishDateFields() {
	var dateFieldsDisabled = false;

	if (document.getElementById("EdateFinishNA").checked == true) {
		dateFieldsDisabled = true;
	}

	document.getElementById("EmonthFinish").disabled = dateFieldsDisabled;
	document.getElementById("EdayFinish").disabled = dateFieldsDisabled;
	document.getElementById("EyearFinish").disabled = dateFieldsDisabled;
	document.getElementById("EhourFinish").disabled = dateFieldsDisabled;
	document.getElementById("EminuteFinish").disabled = dateFieldsDisabled;
	document.getElementById("EampmFinish").disabled = dateFieldsDisabled;
}

function validateEventForm(f) {
	if (!validateEventFields(f)) {
		return false;
	}
	
	if (!validateEventDates(f)) {
		return false;
	}

	return true;
}

function validateEventFields(f) {
	if (f.Etitle.value == "") {
		alert("Please specify an event title and try again...");
		return false;
	}

	if (f.Eaddr.value == "") {
		alert("Please specify an event address and try again...");
		return false;
	}

	if (f.Edescr.value == "") {
		alert("Please specify an event description and try again...");
		return false;
	}

	var description = f.Edescr.value + "";
	if (description.length > 1000) {
		alert("The event description can not be longer than a 1000 characters (currently: " + description.length + " characters).\nPlease shorten the event description and try again...");
		return false;
	}

	if (f.Econtact.value == "") {
		alert("Please specify an event contact and try again...");
		return false;
	}

	if (f.Esubmitter.value == "") {
		alert("Please provide your email address (for event verificaton purposes only) and try again...");
		return false;
	}

	return true;
}

function validateEventDates(f) {
	if (!validateMonthFields(f)) {
		return false;
	}
	
	if (!validateDayFields(f)) {
		return false;
	}
	

	if (!validateMonthDayCombination(f.EmonthStart.value, f.EdayStart.value)) {
		return false;
	}

	if (!validateMonthDayCombination(f.EmonthFinish.value, f.EdayFinish.value)) {
		return false;
	}

	if (!validateHourFields(f)) {
		return false;
	}
	
	if (!validateDateTimeSequence(f.EmonthStart.value, f.EdayStart.value, f.EyearStart.value, f.EhourStart.value, f.EminuteStart.value, f.EampmStart.value,
	                         f.EmonthFinish.value, f.EdayFinish.value, f.EyearFinish.value, f.EhourFinish.value, f.EminuteFinish.value, f.EampmFinish.value, f.EdateFinishNA)) {
		return false;
	}
	
	return true;
}

function validateDateTimeSequence(EmonthStart, EdayStart, EyearStart, EhourStart, EminuteStart, EampmStart,
	                         EmonthFinish, EdayFinish, EyearFinish, EhourFinish, EminuteFinish, EampmFinish, EdateFinishNA) {
	
	var startYear= 2000 + new Number(EyearStart);
	
	var currentDateTime= new Date();
	var startHour= new Number(EhourStart);
	if (startHour != 12 || EampmStart == "am") {
		startHour = ((EampmStart == "am") ? (startHour % 12) : (startHour + 12));
	}
	var startDateTime= new Date(startYear, EmonthStart - 1, new Number(EdayStart), startHour, EminuteStart, 0, 0);

	if (startDateTime.valueOf() <= currentDateTime.valueOf()) {
		alert("The event start date/time occurs in the past - please correct and try again...");
		return false;
	}

	if (EdateFinishNA.checked == true) {
		return true;
	}

	var finishYear= 2000 + new Number(EyearFinish);
	var finishHour= new Number(EhourFinish);
	if (finishHour != 12 || EampmFinish == "am") {
		finishHour = ((EampmFinish == "am") ? (finishHour % 12) : (finishHour + 12));
	}
	var finishDateTime= new Date(finishYear, EmonthFinish - 1, new Number(EdayFinish), finishHour, EminuteFinish, 0, 0);

	
	if (startDateTime.valueOf() >= finishDateTime.valueOf()) {
		alert("Please correct the finish date/time to be later than the start date/time.");
		return false;
	}
		
	return true;
}

/*
function setWeekday() {
	var startMonth = document.getElementById("EmonthStart").selectedIndex;
	var startDate = document.getElementById("EdayStart").selectedIndex;
	var startYear = document.getElementById("EyearStart").value;
	dayField = document.getElementById("EWeekday");


	if (startMonth == 0 || startDate == 0) {
		dayField.innerHTML = "&nbsp;";
		return;
	}

	if (startMonth == 2 && startDate > 29) {
		dayField.innerHTML = "&nbsp;";
		return;
	}

	if (startMonth == 4 || startMonth == 6 || startMonth == 9 || startMonth == 11) {
		if (startDate > 30) {
			dayField.innerHTML = "&nbsp;";
			return;
		}
	}

	var startDateTime= new Date(startYear, startMonth - 1, new Number(startDate - 1), 0, 0, 0, 0);
	dayField.innerHTML = "(" + daysOfWeek[startDateTime.getDay()] + ")";
}
*/

function validateMonthFields(f) {
	if (f.EmonthStart.selectedIndex == 0) {
		alert("Please select a valid start month.");
		return false;
	}
	if (f.EdateFinishNA.checked == false && f.EmonthFinish.selectedIndex == 0) {
		alert("Please select a valid finish month.");
		return false;
	}
	
	return true;
}

function validateDayFields(f) {
	if (f.EdayStart.selectedIndex == 0) {
		alert("Please select a valid start day.");
		return false;
	}

	if (f.EdateFinishNA.checked == false && f.EdayFinish.selectedIndex == 0) {
		alert("Please select a valid finish day.");
		return false;
	}

	return true;
}

function validateMonthDayCombination(month, date) {
	if (month == 0 || date == 0) {
		return true;
	}

	if (month == 2 && date > 29) {
		alert("The month of February cannot have more than 29 days, please correct the date and try again.");
		return false;
	}

	if (month == 4 || month == 6 || month == 9 || month == 11) {
		if (date > 30) {
			alert("The month you have selected has only 30 days, please correct the date and try again.");
			return false;
		}
	}

	return true;
}

function validateHourFields(f) {
	if (f.EhourStart.selectedIndex == 0) {
		alert("Please select a valid start hour.");
		return false;
	}
	if (f.EdateFinishNA.checked == false && f.EhourFinish.selectedIndex == 0) {
		alert("Please select a valid finish hour.");
		return false;
	}

	return true;
}
