// contactus.js

function resetRespond(){	//reply no was checked, clear all selected repsond radio button
	for (var i = 0; i < document.feedback.respond.length; i++)
		document.feedback.respond[i].checked = false;
	return true;
}

function resetReply(thisMethod){	//some respond radio button was seleced, set focus to the corresponding input field, check the reply yes radio button
	if (thisMethod == 'email')
		document.feedback.emailaddress.focus();
	else if (thisMethod == 'letter')
		document.feedback.post1.focus();
	else if (thisMethod == 'fax')
		document.feedback.faxnumber.focus();
	document.feedback.yes.checked = true;
	return true;
}

function trim(thisString){	//use a regular expression to replace leading and trailing spaces with the empty string
  	return thisString.replace(/(^\s*)|(\s*$)/g,"");
}

function validateEmailAddress(thisEmailAddress){	//top level domain names have two to four characters only
	var regExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;
	return regExp.test(thisEmailAddress);
}

function filterFaxNumber(thisFaxNumber){	//extract integers only
	return thisFaxNumber.replace(/[^0-9]/g, '');	//[^0-9] matches any non-digit, replacing it by '' globally
}

function validateContactUsForm(){
	//check topic selected
	if (document.feedback.topic.options[document.feedback.topic.options.selectedIndex].value == 0){
		alert('Please select a valid Topic or Category.');
		return false;
	}

	//trim all text fields	
	document.feedback.subject.value = trim(document.feedback.subject.value);
	document.feedback.message.value = trim(document.feedback.message.value);
	document.feedback.emailaddress.value = trim(document.feedback.emailaddress.value);
	document.feedback.post1.value = trim(document.feedback.post1.value);
	document.feedback.post2.value = trim(document.feedback.post2.value);
	document.feedback.post3.value = trim(document.feedback.post3.value);
	document.feedback.faxnumber.value = filterFaxNumber(document.feedback.faxnumber.value);

	//check message is filled out
	if (document.feedback.message.value == ''){
		alert('Please enter your comment in the Message box.');
		return false;
	}

	//check reply is selected out
	if ((document.feedback.yes.checked) || (document.feedback.no.checked)) {
		;	//checked, let it pass
	}
	else {		
		alert('Please specify you want a reply or not.');
		return false;
	}

	//validate email address as long as it is filled out
	if (document.feedback.emailaddress.value.length > 0){
		if (!validateEmailAddress(document.feedback.emailaddress.value)){
			alert('Please enter a valid E-mail address.');
			document.feedback.emailaddress.focus();
			return false;
		}
	}

	//validate (filtered) fax number as long as it is non-empty
	if (document.feedback.faxnumber.value.length > 0){
		if (document.feedback.faxnumber.value.length < 10){
			alert('Please enter a valid Fax number of at least 10 digits including the area code.');
			document.feedback.faxnumber.focus();
			return false;
		}
	}

	if (document.feedback.yes.checked){
		if (document.feedback.email.checked){	//validated already, make sure it is not blank
			if (document.feedback.emailaddress.value.length == 0){
				alert('Please enter a valid E-mail address.');
				document.feedback.emailaddress.focus();
				return false;
			}
		}
		else if (document.feedback.letter.checked){
			if ((document.feedback.post1.value.length == 0) &&
				(document.feedback.post2.value.length == 0) &&
				(document.feedback.post3.value.length == 0)){
					alert('Please enter a valid Mailing address.');
					document.feedback.post1.focus();
					return false;
			}
		}
		else if (document.feedback.fax.checked){	//extracted already, make sure it is not blank
			if (document.feedback.faxnumber.value.length == 0){
				alert('Please enter a valid Fax number of at least 10 digits including the area code.');
				document.feedback.faxnumber.focus();
				return false;
			}
		}
		else {
			alert('Please select a valid respond method.');
			return false;
		}
	}
	return true;
}