$(document).ready(function(){
	var zipRE = /^[0-9]{5}(|-[0-9]{4})$/;
	var emailRE = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
	var validateForm = (function(){
		var noErrors = true;
		
		$("#ErrorsBelow").css("display", "none");
		$("#NewsletterForm input").removeClass("error");
		if( $("#SubscriberFN").val() == "" ) {
			$("#SubscriberFN").addClass("error");
			noErrors = false;
		}
		
		if( $("#SubscriberLN").val() == "" ) {
			$("#SubscriberLN").addClass("error");
			noErrors = false;
		}
		
		if( $("#subscriber_captcha").val() == "" ) {
			$("#subscriber_captcha").addClass("error");
			noErrors = false;
		}
		
		if( !$("#SubscriberZip").val().match(zipRE) ) {
			$("#SubscriberZip").addClass("error");
			noErrors = false;
		}
		
		if( !$("#SubscriberEmail").val().match(emailRE) ) {
			$("#SubscriberEmail").addClass("error");
			noErrors = false;
		}
		
		if( !noErrors ) {
			$("#ErrorsBelow").css("display", "block");
		}
		
		return noErrors;
	});
	
	// Search the zip codes to find city and state information.
	var zipSearch = (function(zip){
		$.get("http://gomashup.com/json.php?fds=geo/usa/zipcode/"+ zip, function(response){
			if( typeof response == "object" && response.result[0] ) {
				$("#AddtlAddressFields").fadeOut("fast");
				$("#SubscriberCity").val(response.result[0].City);
				$("#SubscriberState").val(response.result[0].State);
			} else {
				$("#AddtlAddressFields").fadeOut("slow");
			}
		}, 'jsonp');
	});

	$("#SubscriberZip").keyup(function(){
		if( $("#SubscriberZip").val().match(zipRE) ) {
			zipSearch($("#SubscriberZip").val().substring(0, 5));
		}
	});

	$("#AddtlAddressFields").fadeOut("fast");
	$("#NewsletterForm").submit(validateForm);
});
