v2.dsl.expose();

/* Some of our messages that we use more than once. */
var explain = {
	"email": "Please enter a valid email",
	"email_confirm": "Email does not match",
	"zip": "Please enter a valid zip code",
	"phone_number": "Please enter a valid phone number",
	"first_name": "Please enter a valid first name",
	"last_name": "Please enter a valid last name"
};

/* Our actual validation rules. */
validateAll(
	"first_name".is("required").explain(explain["first_name"]).andIsAn("alpha").explain(explain["first_name"]),
	"last_name".is("required").explain(explain["last_name"]).andIsAn("alpha").explain(explain["last_name"]),
	"email".is("required").explain(explain["email"]).andIsAn("email").explain(explain["email"]),
	"email_confirmation".is("required").explain(explain["email_confirm"]).andIsAn("confirmation-of", "email").explain(explain["email_confirm"]),
	"address1".is("required").explain("Please enter a valid address"),
	"city".is("required").explain("Please enter a valid city"),
	"state".is("required").andHas("min-length", 2).andHas("max-length", 3).explain("State is required"),
	"zip".is("required").explain(explain["zip"]).andHas("min-length", 5).explain(explain["zip"]).andHas("max-length", 6).explain(explain["zip"]),
	"phone_number".is("required").explain(explain["phone_number"]).andHas("min-length", 10).explain(explain["phone_number"])
);