/*
* Called when DOM is ready.
*
*/
$(function() {
	//set the click event.
	$("#contactUsFormButton").click(verifyContactUsForm);
		   
	// highlight 
	var elements = $("input[type!='button'], textarea, select");
	elements.focus(function(){
		$(this).parents('li').addClass('highlight');
	});
	elements.blur(function(){
		$(this).parents('li').removeClass('highlight');
	});
});

/*
* Verify the contact us form contains value values.  Display error
* messages detailing any problems. If no problems form post to a
* script.
*
* @param {Object} evt - event object.
*/
function verifyContactUsForm(evt) {
	evt.preventDefault();
	
	var nameElement = $("#name");
	var emailElement = $("#email");
	var commentsElement = $("#comments");
	
	var nameValue = nameElement.val();
	var emailValue = emailElement.val();
	var commentsValue = commentsElement.val();
	
	var continueFlg = true;
	var errorMessage = "";
	
	//remove any error highlighting.
	$("#name, #email, #comments").parents('li').removeClass('error-highlight');
	
	//check name has a value.
	if(nameValue.length == 0) {
		nameElement.parents('li').addClass('error-highlight');
		errorMessage = "Please enter your name.\n";
		continueFlg = false;
	}
	
	//check email has a value.
	if(emailValue.length == 0) {
		emailElement.parents('li').addClass('error-highlight');
		errorMessage += "Please enter your email.\n";
		continueFlg = false;
	}
	
	//validate email address.
	else {
		if(!isValidEmailAddress(emailValue)) {
			emailElement.parents('li').addClass('error-highlight');
			errorMessage += "Please enter a valid Email.\n";
			continueFlg = false;
		}		
	}
		
	//check comments has a value.
	if(commentsValue.length == 0) {
		commentsElement.parents('li').addClass('error-highlight');
		errorMessage += "Please enter your comments.\n";
		continueFlg = false;
	}
	
	//verify comments are actual alphanumeric characters.
	else {
		if(!(/[a-zA-Z]/.test(commentsValue))) {
			commentsElement.parents('li').addClass('error-highlight');
			errorMessage += "Please enter your comments.\n";
			continueFlg = false;
		}
	}
	
	//everything is ok.
	if(continueFlg) {
		$.post(
			"/scripts/php/contactUsForm.php",
			{
				name: nameValue,
				email: emailValue,
				comments: commentsValue
			},
			function(response) {
				if(response == "1") {
					nameElement.val("");
					emailElement.val("");
					commentsElement.val("");
					
					alert("Thank You! Your comments have been submitted.");	
				}
			},
			"json"
		);			
	}
	
	//display error messages.
	else {
		alert(errorMessage);	
	}
}

/*
* Determine if the email address is formatted properly.  Returns true if valid and
* false if invalid.
*
* @param {Object} emailAddress.
*
*/
function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	
	return pattern.test(emailAddress);
}