function checkout() 
{
	var myTotal = 0;
	
	// Update the ticket price here
	var ticket_price1 = 20; // W1- Beginner & Advanced Beginner Flamenco (La Conja) - 12:00 - 1:15 pm
	var ticket_price11 = 19; // with Student/Instructor/Senior Discount
	var ticket_price2 = 20; // W2- All Levels Palmas &amp; Cante (La Conja) - 1:30 - 2:45 pm
	var ticket_price22 = 19; // with Student/Instructor/Senior Discount
	var ticket_price3 = 20; // W3- Intermediate/Advanced Flamenco (La Conja) - 3:00 - 4:15 pm
	var ticket_price33 = 19; // with Student/Instructor/Senior Discount
	var ticket_price4 = 35; // W1 & W2 Combo Deal - 12:00 - 2:45 pm
	var ticket_price44 = 33; // with Student/Instructor/Senior Discount
	var ticket_price5 = 35; // W2 & W3 Combo Deal - 1:30 - 4:15 pm
	var ticket_price55 = 33; // with Student/Instructor/Senior Discount
	var ticket_price6 = 50; // W1, W2 & W3 Combo Deal - 12:00 - 4:15 pm
	var ticket_price66 = 47; // with Student/Instructor/Senior Discount
	var ticket_price7 = 10; // Juerga (Flamenco Improv Jam) - 7:00 - 9:30 pm
	var ticket_price77 = 9; // with Student/Instructor/Senior Discount

	var description = '03 - La Conja Flamenco Master Workshops and Jam - ';
	var quantity = 0;
	eventName = 'La Conja Flamenco Master Workshops and Jam';
	//Calculate Values...
	
	//Cast all the form fields to integers...
	document.donation.user1.value=parseInt(document.donation.user1.value);
	document.donation.user11.value=parseInt(document.donation.user11.value);
	document.donation.user2.value=parseInt(document.donation.user2.value);
	document.donation.user22.value=parseInt(document.donation.user22.value);
	document.donation.user3.value=parseInt(document.donation.user3.value);
	document.donation.user33.value=parseInt(document.donation.user33.value);
	document.donation.user4.value=parseInt(document.donation.user4.value);
	document.donation.user44.value=parseInt(document.donation.user44.value);
	document.donation.user5.value=parseInt(document.donation.user5.value);
	document.donation.user55.value=parseInt(document.donation.user55.value);
	document.donation.user6.value=parseInt(document.donation.user6.value);
	document.donation.user66.value=parseInt(document.donation.user66.value);
	document.donation.user7.value=parseInt(document.donation.user7.value);
	document.donation.user77.value=parseInt(document.donation.user77.value);
	document.donation.user49.value=parseInt(document.donation.user49.value);

	myTotal += (ticket_price1 * parseInt(document.donation.user1.value));
	myTotal += (ticket_price11 * parseInt(document.donation.user11.value));
	myTotal += (ticket_price2 * parseInt(document.donation.user2.value));
	myTotal += (ticket_price22 * parseInt(document.donation.user22.value));
	myTotal += (ticket_price3 * parseInt(document.donation.user3.value));
	myTotal += (ticket_price33 * parseInt(document.donation.user33.value));
	myTotal += (ticket_price4 * parseInt(document.donation.user4.value));
	myTotal += (ticket_price44 * parseInt(document.donation.user44.value));
	myTotal += (ticket_price5 * parseInt(document.donation.user5.value));
	myTotal += (ticket_price55 * parseInt(document.donation.user55.value));
	myTotal += (ticket_price6 * parseInt(document.donation.user6.value));
	myTotal += (ticket_price66 * parseInt(document.donation.user66.value));
	myTotal += (ticket_price7 * parseInt(document.donation.user7.value));
	myTotal += (ticket_price77 * parseInt(document.donation.user77.value));
	myTotal += parseInt(document.donation.user49.value);
	myTotal += parseInt(document.donation.hiddendonationlevel.value);

	document.donation.total.value=myTotal;
	document.donation.AMOUNT.value=myTotal;
	
	if (document.donation.user1.value != 0)	{
		description += document.donation.user1.value + ' $20 Workshop 1 (12:00 to 1:15 pm) Registration(s) ';}

	if (document.donation.user11.value != 0)	{
		description += ', ' + document.donation.user11.value + ' $19 S/I/S Workshop 1 (12:00 to 1:15 pm) Registration(s) ';}

	if (document.donation.user2.value != 0)	{
		description += ', ' + document.donation.user2.value + ' $20 Workshop 2 (1:30 to 2:45 pm) Registration(s) ';}

	if (document.donation.user22.value != 0)	{
		description += ', ' + document.donation.user22.value + ' $19 S/I/S Workshop 2 (1:30 to 2:45 pm) Registration(s) ';}

	if (document.donation.user3.value != 0)	{
		description += ', ' + document.donation.user3.value + ' $20 Workshop 3 (3:00 to 4:15 pm) Registration(s) ';}

	if (document.donation.user33.value != 0)	{
		description += ', ' + document.donation.user33.value + ' $19 S/I/S Workshop 3 (3:00 to 4:15 pm) Registration(s) ';}	

	if (document.donation.user4.value != 0)	{
		description += ', ' + document.donation.user4.value + ' $35 Workshops 1 & 2 Combo Deal (12:00 - 2:45 pm) Registration(s) ';}

	if (document.donation.user44.value != 0)	{
		description += ', ' + document.donation.user44.value + ' $33 S/I/S Workshops 1 & 2 Combo Deal (12:00 - 2:45 pm) Registration(s) ';}	

	if (document.donation.user5.value != 0)	{
		description += ', ' + document.donation.user5.value + ' $35 Workshops 2 & 3 Combo Deal (1:30 - 4:15 pm) Registration(s) ';}

	if (document.donation.user55.value != 0)	{
		description += ', ' + document.donation.user55.value + ' $33 S/I/S Workshops 2 & 3 Combo Deal (1:30 - 4:15 pm) Registration(s) ';}	

	if (document.donation.user6.value != 0)	{
		description += ', ' + document.donation.user6.value + ' $50 Workshops 1, 2 & 3 Combo Deal (12:00 - 4:15 pm) Registration(s) ';}

	if (document.donation.user66.value != 0)	{
		description += ', ' + document.donation.user66.value + ' $47 S/I/S Workshops 1, 2 & 3 Combo Deal (12:00 - 4:15 pm) Registration(s) ';}	

	if (document.donation.user7.value != 0)	{
		description += ', ' + document.donation.user7.value + ' $10 Juerga (Flamenco Improv Jam - 7:00 to 9:30 pm) Registration(s) ';}

	if (document.donation.user77.value != 0)	{
		description += ', ' + document.donation.user77.value + ' $9 S/I/S Juerga (Flamenco Improv Jam - 7:00 to 9:30 pm) Registration(s) ';}	
		
	description += ' for ' + document.donation.eventDate.value;

	// If there is a donation level, then add it to the description.
	if (document.donation.hiddendonationlevel.value != 0) 
	{ description += ', and a $' + document.donation.hiddendonationlevel.value + ' donation.';}

	if (document.donation.user49.value != 0) 
	{ description += ', and a $' + document.donation.user49.value + ' donation.';}

	quantity = eval(parseInt(document.donation.user1.value) + parseInt(document.donation.user11.value) + parseInt(document.donation.user2.value) + parseInt(document.donation.user22.value) + parseInt(document.donation.user3.value) + parseInt(document.donation.user33.value) + parseInt(document.donation.user4.value) + parseInt(document.donation.user44.value) + parseInt(document.donation.user5.value) + parseInt(document.donation.user55.value) + parseInt(document.donation.user6.value) + parseInt(document.donation.user66.value) + parseInt(document.donation.user7.value) + parseInt(document.donation.user77.value));
	//alert(document.donation.hiddendonationlevel.value);

	//Assign Values to the form fields...
	document.donation.USER8.value = quantity;
	document.donation.DESCRIPTION.value = description;
	document.donation.USER9.value = eventName + ' - ' + document.donation.eventDate.value;
	
} // end checkout()
	
function validateForm(theForm)
	{
	  //Assume everything to be ok.
	  var returnVal=true;
	
	  //But return false if the name has not been entered.
	  if (!validRequired(theForm.name,"Name"))
		return returnVal=false;

	  //But return false if the phone number has not been entered.
	  if (!validRequired(theForm.phone,"Phone number"))
		return returnVal=false;

	  //Return false if the email is not valid.
	  //Don't require the email though, validate only if they enter something.
	  if (theForm.email != "") {
	  if (!validEmail(theForm.email,"Email Address",false))
		return returnVal=false;
	  }

	  //Make sure they enter a quantity of tickets.
	  if ( parseInt(theForm.user1.value)==0 && parseInt(theForm.user11.value)==0 && parseInt(theForm.user2.value)==0 && parseInt(theForm.user22.value)==0 && parseInt(theForm.user3.value)==0 && parseInt(theForm.user33.value)==0 && parseInt(theForm.user4.value)==0 && parseInt(theForm.user44.value)==0 && parseInt(theForm.user5.value)==0 && parseInt(theForm.user55.value)==0 && parseInt(theForm.user6.value)==0 && parseInt(theForm.user66.value)==0 && parseInt(theForm.user7.value)==0 && parseInt(theForm.user77.value)==0)
	  {
		alert("Ticket quantity cannot be zero, please enter a quantity.");
		theForm.user1.focus();
		return returnVal=false;
	  }
	  
	  if (!isNotNum(theForm.user1,'$20 Workshop 1 (12:00 to 1:15 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user1,'$20 Workshop 1 (12:00 to 1:15 pm) Registration(s)')) {return returnVal=false;}
	  
	  if (!isNotNum(theForm.user11,'$19 S/I/S Workshop 1 (12:00 to 1:15 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user11,'$19 S/I/S Workshop 1 (12:00 to 1:15 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user2,'$20 Workshop 2 (1:30 to 2:45 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user2,'$20 Workshop 2 (1:30 to 2:45 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user22,'$19 S/I/S Workshop 2 (1:30 to 2:45 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user22,'$19 S/I/S Workshop 2 (1:30 to 2:45 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user3,'$20 Workshop 3 (3:00 to 4:15 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user3,'$20 Workshop 3 (3:00 to 4:15 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user33,'$19 S/I/S Workshop 3 (3:00 to 4:15 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user33,'$19 S/I/S Workshop 3 (3:00 to 4:15 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user4,'$35 Workshops 1 & 2 Combo Deal (12:00 - 2:45 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user4,'$35 Workshops 1 & 2 Combo Deal (12:00 - 2:45 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user44,'$33 S/I/S Workshops 1 & 2 Combo Deal (12:00 - 2:45 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user44,'$33 S/I/S Workshops 1 & 2 Combo Deal (12:00 - 2:45 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user5,'$35 Workshops 2 & 3 Combo Deal (1:30 - 4:15 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user5,'$35 Workshops 2 & 3 Combo Deal (1:30 - 4:15 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user55,'$33 S/I/S Workshops 2 & 3 Combo Deal (1:30 - 4:15 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user55,'$33 S/I/S Workshops 2 & 3 Combo Deal (1:30 - 4:15 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user6,'$50 Workshops 1, 2 & 3 Combo Deal (12:00 - 4:15 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user6,'$50 Workshops 1, 2 & 3 Combo Deal (12:00 - 4:15 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user66,'$47 S/I/S Workshops 1, 2 & 3 Combo Deal (12:00 - 4:15 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user66,'$47 S/I/S Workshops 1, 2 & 3 Combo Deal (12:00 - 4:15 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user7,'$10 Juerga (Flamenco Improv Jam - 7:00 to 9:30 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user7,'$10 Juerga (Flamenco Improv Jam - 7:00 to 9:30 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user77,'$9 S/I/S Juerga (Flamenco Improv Jam - 7:00 to 9:30 pm) Registration(s)')) {return returnVal=false;}
	  if (!isPositive(theForm.user77,'$9 S/I/S Juerga (Flamenco Improv Jam - 7:00 to 9:30 pm) Registration(s)')) {return returnVal=false;}

	  if (!isNotNum(theForm.user49,'Donation')) {return returnVal=false;}
	  if (!isPositive(theForm.user49,'Donation')) {return returnVal=false;}
	  
	  return returnVal;
	}
	
function isNotNum(theField, fieldLabel) { 
	if (isNaN(theField.value)) {
		alert('Please check the "' + fieldLabel + '" quantity field!');
		theField.value=0;
		return false;
	} else {return true;}
}

function isPositive(theField, fieldLabel) {
	if (theField.value < 0) {
		alert ('The "' + fieldLabel + '" field cannot be negative!');
		theField.focus();
		return false;
	} else {return true;}
}