// Regular expression used to test that form fields have a value
var regex = /\w/;
// Regular expression used to test that zipcode is of 5 digits or 9 digits with hyphen
var zip_regex = /(^\s*\d{5}\s*$)|(^\s*\d{5}-\d{4}\s*$)|(^\s*\w{6}\s*$)/;
// alert message for invalid zip code
var zip_message = "You must enter a valid US or Canadian zip code.\n\nExamples:\n\tUS 5-digit: 12345\n\tUS zip + 4: 12345-4321\n\tCanada: N6H3P8"; 
// alert message for invalid phone number
var phone_message = "You must enter a ten digit phone number";
// Regular expression for emails
var email_regex = /\w+@\w+(\.\w+)+$/;
// Regular expression for numbers
var num_regex = /^\d+$/;
	
function validate(form){
	
/*	
  mjw 4-5-05 dummy out client side validation
  
	// Team type
	var club_type;
	for(var i = 0; i < form.club_type.length; i++){
		if(form.club_type[i].checked){
			club_type = form.club_type[i].value;
		}
	}
	
	if(club_type == null){
		alert("You must select which type of membership you are applying for.");
		return false;
	}
	
	// If this is a league membership make sure league is selected
	if(club_type == "league" && form.league_id[form.league_id.selectedIndex].value == 0){
		alert("You must select a league if you're applying for a league membership.");
		form.league_id.focus();
		return false;
	}
	
	if(club_type == "state_cup" && form.state_cup_id[form.state_cup_id.selectedIndex].value == 0){
		alert("You must select a state cup if you're applying for a state cup membership.");
		form.state_cup_id.focus();
		return false;
	}
	
	// Club name
	if(!regex.test(form.clName.value)){
		alert("You must enter a club name.");
		form.clName.focus();
		return false;
	}
	
	// Club Street
	if(!regex.test(form.clStreet.value)){
		alert("You must enter a street address for your club");
		form.clStreet.focus();
		return false;
	}
	
	// Club city
	if(!regex.test(form.clCity.value)){
		alert("You must enter a city for your club.");
		form.clCity.focus();
		return false;
	}
	
	// Club State
	if(!regex.test(form.clState[form.clState.selectedIndex].value)){
		alert("You must specify the state your club is in.");
		form.clState.focus();
		return false;
	}
	
	// Club Zip
	if(!zip_regex.test(form.clZip.value)){
		alert(zip_message);
		form.clZip.focus();
		return false;
	}
	
	// Club Phone
	if(!check_phone(form.clPhone.value)){
		alert(phone_message);
		form.clPhone.focus();
		return false;
	}
	
	
	// Validate registrars info
	if(!validate_staff(form,"R")){
		return false;
	}
	
	// Validate president's info if necessary
	if(form.sameAsPresident.checked == false && !validate_staff(form,"P")){
		return false;
	}
	
	// Validate coaching director's info if necessary
	if(form.sameAsCD.checked == false && !validate_staff(form,"D")){
		return false;
	}
	
	var ageGroups = new Array(3);
	ageGroups[0] = 8;
	ageGroups[1] = 11;
        ageGroups[2] = 19;

	// Validate boys' team numbers
	for(var i = 0; i < ageGroups.length; i++){
	
		field = eval("form.boys_U" + ageGroups[i]);
		
		// trim whitespace
		field.value = field.value.replace(/^\s+/, "");
		field.value = field.value.replace(/\s+$/, "");
		
		if(!num_regex.test(field.value)){
			alert("Please enter the number of players you have in the Boys U" + ageGroups[i] + " group.");
			field.focus();
			return false; 		
		} 
	}
	
	// Validate girls' team numbers
	for(var i = 0; i < ageGroups.length; i++){
	
		field = eval("form.girls_U" + ageGroups[i]);
		
		// trim whitespace
		field.value = field.value.replace(/^\s+/, "");
		field.value = field.value.replace(/\s+$/, "");
		
		if(!num_regex.test(field.value)){
			alert("Please enter the number of players you have in the Girls U" + ageGroups[i] + " group.");
			field.focus();
			return false; 		
		} 
	
	}
*/	
	return true;								
}

/*
function validate_staff(form,suffix){
	var field;
	// Staff first name
	field = eval("form.stFName_" + suffix);
	if(!regex.test(field.value)){
		alert("Please enter a first name for the staff member.");
		field.focus();
		return false;
	}
	
	// Staff last name
	field = eval("form.stLName_" + suffix);
	if(!regex.test(field.value)){
		alert("Please enter a last name for the staff member.");
		field.focus();
		return false;
	}
	
	// Staff street
	field = eval("form.stStreet_" + suffix);
	if(!regex.test(field.value)){
		alert("Please enter the staff member's street address.");
		field.focus();
		return false;
	}
	
	//Registrar city
	field = eval("form.stCity_" + suffix);
	if(!regex.test(field.value)){
		alert("Please enter the staff member's city.");
		field.focus();
		return false;
	}
	
	// Staff state
	field = eval("form.stState_" + suffix);
	if(!regex.test(field[field.selectedIndex].value)){
		alert("Please enter the staff member's state.");
		field.focus();
		return false;
	}
	
	// Staff zip
	field = eval("form.stZip_" + suffix);
	if(!zip_regex.test(field.value)){
		alert(zip_message);
		field.focus();
		return false;
	}
	
	// Staff Phone
	field = eval("form.stPhone_" + suffix);
	if(!check_phone(field.value)){
		alert(phone_message);
		field.focus();
		return false;
	}
	
	// Staff email
	field = eval("form.stEmail_" + suffix);
	field.value = field.value.replace(/\s+$/, "");
	if(!email_regex.test(field.value)){
		alert("Please enter a valid email address for the staff member.");
		field.focus();
		return false;
	}
	
	return true;
}
*/

// Function tests whether a phone number contains 10 digits
function check_phone(number){
	var phone_pattern = /^\d{10}$/;
	// Remove any character that is not a number
	number = number.replace(/\D/g, "");
	// Return result of regular expression test
	return phone_pattern.test(number);
}
