// Share your story validation script
// requires jquery

// alias $ function
(function($) {
	// set up validations object
	validations = {
		name: {
			selector: function() { return $("#name"); },
			testCase: function() {
				if($("#name").val() == "") return false;
				else return true;
			},
			errMsg: "Please enter your name."
		},
		email: {
			selector: function() { return $("#email"); },
			testCase: function() {
				var str = $("#email").val();
				if(!str.match(/^[a-z0-9\_\.\-\%\+]+@[a-z0-9\_\.\-\%\+]+\.[a-z]{2,4}$/i)) return false;
				else return true;
			},
			errMsg: "Please enter a valid email address."
		},
		story: {
			selector: function() { return $("#Comments"); },
			testCase: function() {
				if($("#Comments").val() == "") return false;
				else return true;
			},
			errMsg: "Please share your story."
		},
		age: {
			selector: function() { return $("#age"); },
			testCase: function() {
				if($("#age").get(0).selectedIndex == 0) return false;
				else return true;
			},
			errMsg: "Please choose an age range."
		},
		city: {
			selector: function() { return $("#city"); },
			testCase: function() {
				if($("#city").val() == "") return false;
				else return true;
			},
			errMsg: "Please enter your city."
		},
		state: {
			selector: function() { return $("#state"); },
			testCase: function() {
				if($("#state").get(0).selectedIndex == 0) return false;
				else return true;
			},
			errMsg: "Please choose a state."
		},
		months: {
			selector: function() { return $("#last3months"); },
			testCase: function() {
				if($("#last3months").get(0).selectedIndex == 0) return false;
				else return true;
			},
			errMsg: "Have you landed a job in the last 3 months?"
		},
		fullorpart: {
			selector: function() { return $("#FTorPT") },
			testCase: function() {
				if($("#last3months").get(0).selectedIndex == 1) {
					if($("#FTorPT").get(0).selectedIndex != 0 ) {
						return true;
					}
					else {
						return false;
					}
				}
				else {
					return true;
				}
			},
			errMsg: "Is the job full or part time?"
		},
		howlong: {
			selector: function() { return $("#looking_for_job") },
			testCase: function() {
				if($("#last3months").get(0).selectedIndex == 2) {
					if($("#looking_for_job").get(0).selectedIndex != 0) {
						return true;
					}
					else {
						return false;
					}
				}
				else {
					return true;
				}
			},
			errMsg: "How long have you been looking?"
		},		
		kindofjob: {
			selector: function() { return $("#Kind_of_job") },
			testCase: function() {
				if($("#Kind_of_job").get(0).selectedIndex == 0) return false;
				else return true;
			},
			errMsg: "Please choose what kind of job."
		}		
	};
	// checks each validation
	function checkTheForm() {
		// setup flag variable
		var formOK = true;
		
		// loop through validations
		for(var check in validations) {
			var valid = validations[check].testCase();
			if(!valid) {
				alert(validations[check].errMsg);
				var field = validations[check].selector();
				field.focus();
				formOK = false;
				break;
			}
		}
		
		// return value
		if(formOK) return true;
		else return false;
	}
	
	// set the validation actions
	$(document).ready(function() {
		$(".LeftCol :submit").click(function() {
			var goodToGo = checkTheForm();
			if(!goodToGo) return false;
		});
		$(".LeftCol :text, .LeftCol select").onReturn(function() {
			$(".LeftCol :submit").trigger("click");
		});
	});
})(jQuery);