// contactus.js

function validateZipCode(value) {
	var regExp = /^\d{5}([\-]\d{4})?$/;
	return regExp.test(value);
}



function validateNEPArequestForm(){
	//trim all text fields	
	document.NEPArequest.firstname.value = trim(document.NEPArequest.firstname.value);
	document.NEPArequest.lastname.value = trim(document.NEPArequest.lastname.value);
	document.NEPArequest.address1.value = trim(document.NEPArequest.address1.value);
	document.NEPArequest.address2.value = trim(document.NEPArequest.address2.value);
	document.NEPArequest.city.value = trim(document.NEPArequest.city.value);
	document.NEPArequest.state.value = trim(document.NEPArequest.state.value);
	document.NEPArequest.zip.value = trim(document.NEPArequest.zip.value);
	document.NEPArequest.organization.value = trim(document.NEPArequest.organization.value);
	document.NEPArequest.phone.value = filterFaxNumber(document.NEPArequest.phone.value);
	document.NEPArequest.fax.value = filterFaxNumber(document.NEPArequest.fax.value);
	document.NEPArequest.email.value = trim(document.NEPArequest.email.value);
	document.NEPArequest.ORPSUserName.value = trim(document.NEPArequest.ORPSUserName.value);
	document.NEPArequest.contact.value = trim(document.NEPArequest.contact.value);
	document.NEPArequest.contactphone.value = filterFaxNumber(document.NEPArequest.contactphone.value);
	document.NEPArequest.comment.value = trim(document.NEPArequest.comment.value);

	//check firstname is filled out
	if (document.NEPArequest.firstname.value == ''){
		alert('The First Name Field is Required.');
		return false;
	}

	//check lastname is filled out
	if (document.NEPArequest.lastname.value == ''){
		alert('The Last Name Field is Required.');
		return false;
	}

	//check address1 is filled out
	if (document.NEPArequest.address1.value == ''){
		alert('The Address 1 Field is Required.');
		return false;
	}

	//check city is filled out
	if (document.NEPArequest.city.value == ''){
		alert('The City Field is Required.');
		return false;
	}

	//check state is filled out
	if (document.NEPArequest.state.value == ''){
		alert('The State Field is Required.');
		return false;
	}

	//check zip is filled out
	if (document.NEPArequest.zip.value == ''){
		alert('The Zip Field is Required.');
		return false;
	} else {
		if (!validateZipCode(document.NEPArequest.zip.value)){
			alert('The Zip Field is Invalid.');
			return false;
		}
	}

	//check organization is filled out
	if (document.NEPArequest.organization.value == ''){
		alert('The Organization Field is Required.');
		return false;
	}

	//check phone is filled out
	if (document.NEPArequest.phone.value == ''){
		alert('The Phone Field is Required.');
		return false;
	} else {
		if (document.NEPArequest.phone.value.length < 10){
			alert('Please enter a valid Phone number of at least 10 digits including the area code.');
			document.NEPArequest.phone.focus();
			return false;
		}
	}

	//check email is filled out
	if (document.NEPArequest.email.value == ''){
		alert('The E-mail Field is Required.');
		return false;
	} else {
		if (!validateEmailAddress(document.NEPArequest.email.value)){
			alert('The E-mail Field is Invalid.');
			return false;
		}
	}

	//check if the first option of ORPS/CAIRS Account Holder is selected
	if (document.NEPArequest.orpsuser[0].checked){
		//check ORPSUserName is filled out
		if (document.NEPArequest.ORPSUserName.value == ''){
			alert('The ORPS/CAIRS UserName Field is Required.');
			return false;
		}
	}

	//check contact is filled out
	if (document.NEPArequest.contact.value == ''){
		alert('The DOE Contact Field is Required.');
		return false;
	}

	//check contactphone is filled out
	if (document.NEPArequest.contactphone.value == ''){
		alert('The DOE Contact Phone Field is Required.');
		return false;
	} else {
		if (document.NEPArequest.contactphone.value.length < 10){
			alert('Please enter a valid DOE Contact Phone number of at least 10 digits including the area code.');
			document.NEPArequest.contactphone.focus();
			return false;
		}
	}

	//check comment is filled out
	if (document.NEPArequest.comment.value == ''){
		alert('The Justification Field is Required.');
		return false;
	}

	return true;
}








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;
}