(function(){
	
	var EMAIL_REGEX = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/,
			ZIP_REGEX		= /^\d{5}$|^\d{5}-\d{4}$/;
			
	function displaySubscribeFormErrors(errors) {
		if (!errors) return;
		var errorContent = errors.map(function(error){ return "<li>" + error + "</li>" }).join("\n");
		$('subscriber_form_errors').innerHTML = "<ul>" + errorContent + "</ul>";
	}
	
	document.observe("dom:loaded", function() {
		if( $('subscribe_form') ) {
			Event.observe('subscribe_form', 'submit', function(e) {
				var errors  = [],
						email   = $F('subscriber_email'),
						zip			= $F('subscriber_zip'),
						terms		= $F('subscriber_terms');

				if (!email.match(EMAIL_REGEX)) 
					errors.push("Please enter a valid email address.");

				if (!zip.match(ZIP_REGEX))
					errors.push("Please enter a valid zip code.");

				if (terms != 1)
					errors.push("Please accept the terms.")

				if (errors.length > 0) {
					displaySubscribeFormErrors(errors);
					Event.stop(e);
				}
			});
			
		}
	});
	
})();
