$(document).ready(function(){

	//Reset button also removes validation classes
	$('input[type=reset]').click(function(){
		$('#contact-form input, #contact-form textarea').removeClass();
	});
	
	//Bind blur event to all input text fields
	$('#contact-form input[type="text"], #contact-form textarea').bind("blur", function(){
		rqCheckField(this);
	});
	//Bind change and keyup events, but only trigger it if the field is invalid
	//In other words, "innocent till proven guilty"
	$('#contact-form input[type="text"], #contact-form textarea').bind("change keyup", function(){
		if($(this).hasClass('invalid')){
			rqCheckField(this);
		}
	});

});

/*
*	Checks a field and provides appropriate class for stying
*/
function rqCheckField(fieldToCheck){
	var valid = isValid(fieldToCheck);
	if(valid){
		$(fieldToCheck).addClass("valid").removeClass("invalid");
	} else {
		$(fieldToCheck).addClass("invalid").removeClass("valid");
	}
	return valid;
}

/* 
* Checks field value against a regular expression and returns true or false 
*/
function isValid(fieldToCheck){
	var valid = new Boolean(true);
	var myReg = new String("");
	switch(fieldToCheck.name){
		//Required, allows alphanumeric characters, spaces, dashes, underscores, periods, colans
		case "fName":
		case "lName":
		case "comment":
			myReg = /^[\w\d_\-\s\.\,\;]+$/;
			break;
		
		//Allow one valid email or a blank
		case "email":
			myReg = /^([\w\d_\+\.\-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+){0,1}$/;
			break;

    //Not required. If a value is entered, allows alphanumeric characters, spaces, dashes, underscores, periods.
		default:
			myReg = /^([\w\d_\-\s\.]+){0,1}$/;
			break;
	}
	if(fieldToCheck.value.search(myReg) == -1){
		valid = false;
	}
	return valid;
}

