$(function() {
// requires validdate.js
// requires additional-methods.js

/* show or hide the rest of form based on birthdate */
function toggleRegisterFormElements(dob) {
	if (isDate(dob) && isThirteen(dob)) {
		$('#register_form_elements').slideDown();
	}
	else {
		$('#register_form_elements').slideUp();
	}
}

/* bind birthdate select fields */
$('#dob_fields select').change(function() {
	$('#dob').val(	 $('#Month').val() + '/' + 	 $('#Day').val() + '/' +	 $('#Year').val()	);
	toggleRegisterFormElements($('#dob').val());
});
toggleRegisterFormElements($('#dob').val()); // initial show/hide

/* add new validators */
$.validator.addMethod(
    "validBirthdate",
    function(value, element) {
		return this.optional(element) || isDate(value);
    },
    "Please enter a valid date in the format mm/dd/yyyy"
);
$.validator.addMethod(
    "isThirteen",
    function(value, element) {
		return this.optional(element) || isThirteen(value);
    },
    "You must be at least thirteen years old."
);

$('form').validate({
	rules: {
		dob: {
			required: true,
			validBirthdate: true,
			isThirteen: true
		},
		first_name: "required",
		last_name: "required",
		zip: {
			rangelength: [5, 5],
			digits: true
		},
		cell: {
			phoneUS: true
		},
		email: {
			required: true,
			email: true,
			remote: "/global/functions/_email_taken.cfm"
		},
		username: {
			required: true,
			alphanumeric: true,
			rangelength: [6, 15],
			remote: "/global/functions/_username_taken.cfm"
		},
		password: {
			required: true,
			alphanumeric: true,
			rangelength: [6, 15]
		},
		confirm_password: {
			required: true,
			equalTo: "#password"
		},
		tos: "required"
	},
	messages: {
		dob: {
			required: "Please enter your birthdate.",
			validBirthdate: "Please enter a valid birthdate.",
			isThirteen: "You must be at least thirteen to register."
		},
		zip: {
			rangelength: "Please enter a valid zip code.",
			digits: "Please enter a valid zip code."
		},
		cell: "Please enter a valid phone number.",
		email: {
			required: "Please enter your email address.",
			email: "Please enter a valid email address.",
			remote: jQuery.validator.format("This e-mail address is already taken.")
		},
		username: {
			required: "Please enter a username.",
			alphanumeric: "Must be 6-15 alphanumeric characters.",
			rangelength: "Must be 6-15 alphanumeric characters.",
			remote: jQuery.validator.format("This username is already taken.")
		},
		password: {
			required: "Please provide a password.",
			alphanumeric: "Must be 6-15 alphanumeric characters.",
			rangelength: "Must be 6-15 alphanumeric characters."
		},
		confirm_password: {
			required: "Please provide a password.",
			equalTo: "Please enter the same password as above."
		},
		tos: "You must agree to the Terms &amp; Conditions to register."
	}
});

$('#submit').click(function(e) {
	if ($('#RegisterProfile').valid()) {
		$('#RegisterProfile').submit();
	}
	else {
		$.scrollTo('label.error:first');
	}
});

});