$(document).ready(function() {
		
	// Globals to make referencing easier
	var form = $("#gylb_form");
	var name = $("#name");
	var nameInfo = $("#nameInfo");
	var address = $("#address");
	var addressInfo = $("#addressInfo");
	var city = $("#city");
	var cityInfo = $("#cityInfo");
	var state = $("#state");
	var stateInfo = $("#stateInfo");
	var zip = $("#zip");
	var zipInfo = $("#zipInfo");
	var email = $("#customer_email");
	var emailInfo = $("#customerEmailInfo");
	var phone = $("#phone");
	var phoneInfo = $("#phoneInfo");
	var time = $("#call_time");
	var timeInfo = $("#callTimeInfo");

	
	function validateName(){
		
		var nameString = name.val();
		var strippedName = nameString.replace(/\s/g, "");
		// If it is invalid
		if(strippedName.length < 3) {
			name.addClass("error");
			nameInfo.text("Please enter your name.");
			nameInfo.addClass("error");
			return false;
		}
		else
		{
			name.removeClass("error");
			nameInfo.text("");
			nameInfo.removeClass("error");
			return true;
		}
	}
	
	function validateAddress(){
		
		var addressString = address.val();
		var strippedAddress = addressString.replace(/\s/g, "");
		//alert(strippedAddress.length);
		// If it is invalid
		if(strippedAddress.length < 3) {
			address.addClass("error");
			addressInfo.text("Please enter your address.");
			addressInfo.addClass("error");
			return false;
		}
		else
		{
			address.removeClass("error");
			addressInfo.text("");
			addressInfo.removeClass("error");
			return true;
		}
	}
	
	function validateCity(){
		
		var cityString = city.val();
		var strippedCity = cityString.replace(/\s/g, "");
		//alert(strippedCity.length);
		// If it is invalid
		if(strippedCity.length < 3) {
			city.addClass("error");
			cityInfo.text("Please enter your city.");
			cityInfo.addClass("error");
			return false;
		}
		else
		{
			city.removeClass("error");
			cityInfo.text("");
			cityInfo.removeClass("error");
			return true;
		}
	}
	
	function validateState(){
		
		var stateString = state.val();
		var strippedState = stateString.replace(/\s/g, "");
		// If it is invalid
		if(strippedState=="noinput") {
			state.addClass("error");
			stateInfo.text("Please enter your State.");
			stateInfo.addClass("error");
			return false;
		}
		else
		{
			state.removeClass("error");
			stateInfo.text("");
			stateInfo.removeClass("error");
			return true;
		}
	}
	
	function validateZip(){
		
		var zipString = zip.val();
		var strippedZip = zipString.replace(/\s/g, "");
		//alert(strippedCity.length);
		// If it is invalid
		if(strippedZip.length < 3) {
			zip.addClass("error");
			zipInfo.text("Please enter your zip code.");
			zipInfo.addClass("error");
			return false;
		}
		else
		{
			zip.removeClass("error");
			zipInfo.text("");
			zipInfo.removeClass("error");
			return true;
		}
	}
	
	function validateEmail(){
		
		var emailString = email.val();
		var strippedEmail = emailString.replace(/\s/g, "");
		//alert(strippedCity.length);
		// If it is invalid
		if(strippedEmail.length < 3) {
			email.addClass("error");
			emailInfo.text("Please enter your email address.");
			emailInfo.addClass("error");
			return false;
		}
		else
		{
			email.removeClass("error");
			emailInfo.text("");
			emailInfo.removeClass("error");
			return true;
		}
	}
	
	/*function validateFEmail(){
		
		var femailString = femail.val();
		var strippedFEmail = femailString.replace(/\s/g, "");
		//alert(strippedCity.length);
		// If it is invalid
		if(strippedFEmail.length < 3) {
			femail.addClass("error");
			femailInfo.text("Please enter your email address.");
			femailInfo.addClass("error");
			return false;
		}
		else
		{
			femail.removeClass("error");
			femailInfo.text("");
			femailInfo.removeClass("error");
			return true;
		}
	}
	*/
	function validatePhone(){
		
		var phoneString = phone.val();
		var phoneRegex = /^\D?\d{3}\D?\D?\d{3}\D?\d{4}$/;
		if(phoneRegex.test(phoneString) == true) {
			// Valid result
			phone.removeClass("error");
			phoneInfo.text("");
			phoneInfo.removeClass("error");
			return true;
		}
		else
		{
			phone.addClass("error");
			phoneInfo.text("Please enter a valid phone number (including area code) where we can contact you.");
			phoneInfo.addClass("error");
			return false;
		}
	}
	
	function validateTime(){
		
		var timeString = time.val();
		var strippedTime = timeString.replace(/\s/g, "");
		// If it is invalid
		if(strippedTime=="Chooseatime") {
			time.addClass("error");
			timeInfo.text("Please enter the best time for us to contact you.");
			timeInfo.addClass("error");
			return false;
		}
		else
		{
			time.removeClass("error");
			timeInfo.text("");
			timeInfo.removeClass("error");
			return true;
		}
	}
	
	//On blur  
	name.blur(validateName);
	address.blur(validateAddress);
	city.blur(validateCity);
	state.blur(validateState);
	zip.blur(validateZip);
	email.blur(validateEmail);
	//femail.blur(validateFEmail);
	phone.blur(validatePhone);
	time.blur(validateTime);
	
	//On key press  
	name.keyup(validateName);
	address.keyup(validateAddress);
	city.keyup(validateCity);
	state.keyup(validateState);
	zip.keyup(validateZip);
	email.keyup(validateEmail);
	//femail.keyup(validateFEmail);
	phone.keyup(validatePhone);
	time.keyup(validateTime);
	
	//On Submitting  
	form.submit(function(){
		if(validateName() & validateAddress() & validateCity() & validateState() & validateZip() & validateEmail() & validatePhone() & validateTime()){
			return true;  
		}
		else
		{
			return false; 
		}
	});  
});


