// ========== Distances (begin) ==========
function verifyDistance()
{
	var errMsg = '';
	var USATFCertifiedCoursePattern = /^[A-Za-z]{2}[0-9]{5}[A-Za-z]{2,3}$/
	
	var distance = document.CalendarAddition.distance.value;
	var units = document.CalendarAddition.distanceUnits[document.CalendarAddition.distanceUnits.selectedIndex].value;
	var eventType = document.CalendarAddition.distanceType[document.CalendarAddition.distanceType.selectedIndex].value;
	var eventDate = document.CalendarAddition.distanceDate.value;
	var eventTime = document.CalendarAddition.distanceTime.value;
	var eventTimeOfDay = document.CalendarAddition.distanceTimeOfDay[document.CalendarAddition.distanceTimeOfDay.selectedIndex].value;
	var USATFCertifiedCourse = document.CalendarAddition.USATFCertifiedCourse.value;
	
	if ( ((distance == 26.2 || distance == 26) && units == 'mi') || ((distance == 42 || distance == 42.2) && units == 'km') )
	{
		if (confirm('Is this distance a marathon? If so, click \'OK\' to change it to the exact metric distance of 42.195 km (this is required if you want your event to show up in searches for \'marathons\').'))
		{
			document.CalendarAddition.distance.value = 42.195;
			document.CalendarAddition.distanceUnits.value = 'km';
		}
	}
	else if ( ((distance == 13.1 || distance == 13) && units == 'mi') || ((distance == 21 || distance == 21.1) && units == 'km') )
	{
		if (confirm('Is this distance a half marathon? If so, click \'OK\' to change it to the exact metric distance of 21.0975 km (this is required if you want your event to show up in searches for \'half marathons\').'))
		{
			document.CalendarAddition.distance.value = 21.0975;
			document.CalendarAddition.distanceUnits.value = 'km';
		}
	}
	
	if (! isNumeric(distance))
		errMsg += 'Distance must be a number only ("5", "10", etc.).\n';
	if (units == '')
		errMsg += 'Please select the distance units from the menu ("km", "mi", etc.).\n';
	if (eventType == '')
		errMsg += 'Please select the event type from the menu ("run", "walk", etc.).\n';
	
	if (eventTime != '' || eventTimeOfDay != '')		// ignore date-only without time
	{
		if (eventDate == '' || eventTime == '' || eventTimeOfDay == '')
			errMsg += 'Please be sure date and time are both entered, and a.m. or p.m. is selected.\n';
		else if (! isDate(eventDate + ' ' + eventTime + ' ' + eventTimeOfDay))
			errMsg += 'The date/time you entered is invalid.\n';
	}
	
	if (USATFCertifiedCourse != '')
	{
		if (! USATFCertifiedCoursePattern.test(USATFCertifiedCourse))
			errMsg += 'Invalid course certification number.\n';
	}
	
	return errMsg;
	
}

function addThisDistance()
{
	var errMsg = verifyDistance();
	
	if (errMsg != '')
		alert(errMsg);
	else
	{
		var eventToAdd = getDistanceString();
		
		if (! isDuplicate(eventToAdd, document.CalendarAddition.distanceList))
		{
			addEvent(eventToAdd, document.CalendarAddition.distanceList);
			
			// update visible listing
			displayDistances();
			
			// clear the event fields
			clearDistanceForm();
		}
		else
			alert('This event is already listed on the schedule (see right).');
	}
}

function getDistanceString()
{
	var eventToAdd = '';
	
	var distance = document.CalendarAddition.distance.value;
	var units = document.CalendarAddition.distanceUnits[document.CalendarAddition.distanceUnits.selectedIndex].value;
	var distanceType = document.CalendarAddition.distanceType[document.CalendarAddition.distanceType.selectedIndex].value;
	var sex = document.CalendarAddition.distanceSex[document.CalendarAddition.distanceSex.selectedIndex].value;
	var ageGroup = document.CalendarAddition.distanceAgeGroup[document.CalendarAddition.distanceAgeGroup.selectedIndex].value;
	var disabledDivision = document.CalendarAddition.distanceDisabledDivision[document.CalendarAddition.distanceDisabledDivision.selectedIndex].value;
	var distanceDate = document.CalendarAddition.distanceDate.value;
	var distanceTime = document.CalendarAddition.distanceTime.value;
	var distanceTimeOfDay = document.CalendarAddition.distanceTimeOfDay[document.CalendarAddition.distanceTimeOfDay.selectedIndex].value;
	var USATFCertifiedCourse = document.CalendarAddition.USATFCertifiedCourse.value;
	var round = document.CalendarAddition.distanceRound[document.CalendarAddition.distanceRound.selectedIndex].value;
	
	if (distanceTime != '')		// omit date/time if just the date is indicated (otherwise it'll become midnight on that date)
	{
		// compensate for Y2K
		var temp = new Date(distanceDate);
		if (temp.getFullYear() < 2000)
			distanceDate = (temp.getMonth() + 1) + '/' + temp.getDate() + '/' + (temp.getFullYear() + 100);
		temp = null;
		
		eventToAdd = getXMLDate(distanceDate + ' ' + distanceTime + ' ' + distanceTimeOfDay);
	}
	
	eventToAdd = eventToAdd + ',' + round + ',' + sex + ',' + ageGroup + ',' + disabledDivision + ',' + distance + ',' + units + ',' + distanceType + ',' + USATFCertifiedCourse.toUpperCase();
	
	return eventToAdd;
}

function displayDistances()
{
	var events = '';
	var eventsStr = document.CalendarAddition.distanceList.value;
	
	if (eventsStr != '')
	{
		var eventsArray = eventsStr.split(';');
		var temp;
		
		for (var i = 0; i < eventsArray.length; i++)
		{
			temp = eventsArray[i].split(',');
			
			events = events + '<img src="/calendars/update/images/remove.gif" title="delete" onClick="javascript:deleteEvent(' + i + ',\'distanceList\');" /> ';
			events = events + '<img src="/calendars/update/images/edit.gif" title="modify" onClick="javascript:modifyEventPopoff(\'distanceList\',' + i + ');" /> ';
			if (temp[2].length > 0)
				events = events + getSexGroup(temp[2]);
			else
				events = events + 'Men/Women';
			events = events + ' ' + temp[5] + ' ' + temp[6] + ' ' + getDistanceTypeName(temp[7]);
			if (temp[3].length > 0)
				events = events + ' - ' + temp[3];
			if (temp[4].length > 0)
				events = events + ' - ' + temp[4];
			if (temp[1].length > 0)
				events = events + ' - ' + getRoundName(temp[1]);
			if (temp[0].length > 0)
				events = events + ' - ' + getFormattedDate(temp[0]);
			if (temp[8].length > 0)
				events = events + ' - ' + temp[8];
			events = events + '<br />';
		}
	}
	else
		events = '<i>Add distances using the form at left</i>';
	
	document.getElementById('DistancesDisplay').innerHTML = events;
}

function clearDistanceForm()
{
	document.CalendarAddition.distance.value = '';
	document.CalendarAddition.distanceUnits.selectedIndex = 0;
	document.CalendarAddition.distanceType.selectedIndex = 0;
	document.CalendarAddition.distanceSex.selectedIndex = 0;
	document.CalendarAddition.distanceAgeGroup.selectedIndex = 0;
	document.CalendarAddition.distanceDisabledDivision.selectedIndex = 0;
	document.CalendarAddition.distanceTime.value = '';
	document.CalendarAddition.distanceTimeOfDay.selectedIndex = 0;
	document.CalendarAddition.USATFCertifiedCourse.value = '';
	document.CalendarAddition.distanceRound.selectedIndex = 0;
	// don't clear distanceDate -- leave it for data-entry efficiency
}

function updateThisDistance(arrayPosition)
{
	var errMsg = verifyDistance();
	
	if (errMsg != '')
		alert(errMsg);
	else
	{
		var eventToAdd = getDistanceString();
		replaceEvent(eventToAdd, arrayPosition, opener.document.CalendarAddition.distanceList);
		
		// update visible listing
		opener.displayDistances();
		
		window.close();
	}
}
// ========== Distances (end) ==========

