function evm_validateRegistration()
{
	var f = $('evm_RegistrationForm');

	if ($F(f.EventID).blank())
	{
		alert("Please select an event.");
		f.EventID.focus();
		return false;
	}

	var ev = evm_Events.Event[$('evm_EventID').selectedIndex + evm_EventIndexOffset];
	if ($F(f.Attendees) > ev.AvailableAttendees)
	{
		if (ev.AvailableAttendees <= 0)
		{
			alert("There are no spots available for registration for the selected event.\n\nPlease call Good Samaritan Ministries at 616-392-7159 for potential phone registration.");
			f.EventID.focus();
		}
		else
		{
			alert("Only " + ev.AvailableAttendees + " spots are available for the selected event.\n\nPlease adjust the number of attendees or call Good Samaritan Ministries at 616-392-7159 for potential phone registration.");
			f.Attendees.focus();
		}
		return false;
	}

	if ($F(f.FirstName).blank())
	{
		alert("Please enter a first name.");
		f.FirstName.focus();
		return false;
	}

	if ($F(f.LastName).blank())
	{
		alert("Please enter a last name.");
		f.LastName.focus();
		return false;
	}

	if ($F(f.AddressLine1).blank() && $F(f.AddressLine2).blank())
	{
		alert("Please enter a mailing address.");
		f.AddressLine1.focus();
		return false;
	}

	if ($F(f.City).blank())
	{
		alert("Please enter a city.");
		f.City.focus();
		return false;
	}

	if ($F(f.State).blank())
	{
		alert("Please enter a state.");
		f.State.focus();
		return false;
	}

	if ($F(f.ZipCode).blank())
	{
		alert("Please enter a zip code.");
		f.ZipCode.focus();
		return false;
	}

	if ($F(f.ZipCode).blank())
	{
		alert("Please enter a zip code.");
		f.ZipCode.focus();
		return false;
	}

	if (!isEmail($F(f.EmailAddress)))
	{
		alert("Please enter a valid email address.");
		f.EmailAddress.focus();
		return false;
	}

	return true;
}

function evm_PayPal_Complete(request)
{
	if (evm_EventRegistration.status == 'failed')
	{
		alert('An error occurred attempting to process your event registration.\n\nIf this problem persists, please call Good Samaritan Ministries at 616-392-7159 for phone registration.\n\n' + evm_EventRegistration.exception.toString());
		$('evm_RegisterButton').enable();
		return;
	}
	
	var f = $('evm_RegistrationForm');
	var f2 = $('evm_PaymentForm');

	f2.invoice.value = evm_EventRegistration.EventRegistrationID;
	f2.item_name.value = $F(f.EventDisplay);
	f2.item_number.value = $F(f.EventID);
	f2.amount.value = $F(f.EventCost);
	f2.quantity.value = $F(f.Attendees);
	
	f2.first_name.value = $F(f.FirstName);
	f2.last_name.value = $F(f.LastName);
	f2.address1.value = $F(f.AddressLine1);
	f2.address2.value = $F(f.AddressLine2);
	f2.city.value = $F(f.City);
	f2.state.value = $F(f.State);
	f2.zip.value = $F(f.ZipCode);
	f2.night_phone_a.value = $F(f.Phone1);
	
	f2.submit();
}

function evm_Free_Complete(request)
{
	if (evm_EventRegistration.status == 'failed')
	{
		alert('An error occurred attempting to process your event registration.\n\nIf this problem persists, please call Good Samaritan Ministries at 616-392-7159 for phone registration.\n\n' + evm_EventRegistration.exception.toString());
		$('evm_RegisterButton').enable();
		return;
	}
	
	location.href = "event_registration_free_complete.asp";
}

function evm_PayLater_Complete(request)
{
	if (evm_EventRegistration.status == 'failed')
	{
		alert('An error occurred attempting to process your event registration.\n\nIf this problem persists, please call Good Samaritan Ministries at 616-392-7159 for phone registration.\n\n' + evm_EventRegistration.exception.toString());
		$('evm_RegisterButton').enable();
		return;
	}
	
	location.href = "event_registration_paylater_complete.asp";
}

function evm_Register(event)
{
	Event.stop(event);
	
	if (!evm_validateRegistration())
		return;
	
	$('evm_RegisterButton').disable();
	
	var f = $('evm_RegistrationForm');
	if (DEBUG && !prompt('q', $H(f.serialize(true)).toJSON())) return;
	
	var completeFunction;
	if ($F('evm_EventCost') == 0)
		completeFunction = evm_Free_Complete;
	else if ($F('evm_PayLaterFlag') == 1)
		completeFunction = evm_PayLater_Complete;
	else
		completeFunction = evm_PayPal_Complete;

	evm_EventRegistration = new Data(f.action, completeFunction, f.serialize());
}

var evm_Events;
var evm_EventRegistration;
var evm_EventIndexOffset = -1;

function evm_EventID_Load()
{
	if (evm_Events.status == 'failed')
	{
		alert('An error occurred attempting to load the available events.\n\n' + evm_Events.exception.toString());
		return;
	}
	
	$('evm_EventID').loadFromObjArray(evm_Events.Event, 'EventID', 'EventDisplay', 1);
	if (Prototype.Browser.IE)
		Event.observe('evm_EventID', 'change', evm_EventID_Change);

	if (QueryParams.EventID)
	{
		$('evm_EventID').value = QueryParams.EventID;
		evm_EventID_Change();
	}
	
}

function evm_RegisterButton_SetValue()
{
	if ($F('evm_PayLaterFlag') == 1 || $F('evm_EventCost') == 0)
		$('evm_RegisterButton').value = 'Register';
	else
		$('evm_RegisterButton').value = 'Register & Pay Online';
}

function evm_EventID_Change()
{
	$('evm_EventDateDisplay').value = "";
	try
	{
		var ev = evm_Events.Event[$('evm_EventID').selectedIndex + evm_EventIndexOffset];
		if ((new Date(ev.RegisterByDate)).isBefore((new Date()).clearTime()))
		{
			alert("The event you have selected is no longer available for online registration.\n\nPlease call Good Samaritan Ministries at 616-392-7159 for late registration.");
			$('evm_EventID').selectedIndex = 0;
			return;
		}
		
		$('evm_CreatedDate').value = ev.CreatedDate;
		$('evm_EventDisplay').value = ev.EventDisplay;
		$('evm_EventDateDisplay').value = ev.EventDateDisplay;
		$('evm_EventCost').value = ev.EventCost;
		$('evm_AmountDueDisplay').value = formatNumber(ev.EventCost * $F('evm_Attendees'), 2, '$');
		$('evm_AmountDue').value = ev.EventCost * $F('evm_Attendees');
		
		if (ev.EventCost == 0)
		{
			$('evm_EventCostDisplay').value = 'FREE';
			$('evm_PayLaterFlag').checked = false;
			$('evm_PayLaterFlag').disable();
		}
		else
		{
			$('evm_EventCostDisplay').value = formatNumber(ev.EventCost, 2, '$');
			$('evm_PayLaterFlag').enable();
		}

		evm_RegisterButton_SetValue();
	}
	catch(e) {}
}

Event.observe(window, 'load', function(event)
{
	$('evm_RegistrationForm').reset();

	evm_Events = new Data('/DB/data/GetEventAvailableList.asp', evm_EventID_Load);
	
	Event.observe('evm_RegistrationForm', 'submit', evm_Register);
	Event.observe('evm_EventID', 'change', evm_EventID_Change);
	Event.observe('evm_PayLaterFlag', 'click', evm_RegisterButton_SetValue);
	Event.observe('evm_Attendees', 'change', function(event)
	{
		var ev = evm_Events.Event[$('evm_EventID').selectedIndex + evm_EventIndexOffset];
		$('evm_AmountDueDisplay').value = formatNumber(ev.EventCost * $F('evm_Attendees'), 2, '$');
		$('evm_AmountDue').value = ev.EventCost * $F('evm_Attendees');
	});
});
