// Add the Date validation function we require
jQuery.validator.addMethod(
	"dateUS",
	function(value, element) {
		var check = false;
		var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
		if( re.test(value)){
			var adata = value.split('/');
			var mm = parseInt(adata[0],10);
			var dd = parseInt(adata[1],10);
			var aaaa = parseInt(adata[2],10);
			var xdata = new Date(aaaa,mm-1,dd);
			if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == dd ) )
				check = true;
			else
				check = false;
		} else
			check = false;
		return this.optional(element) || check;
	}, 
	"Please enter a correct date"
);

$(function() {
	// Calendar popup
	$('#date_of_birth').datepicker({
		showOn: 'both', 
		buttonImage: '/images/icons/calendar.gif', 
		buttonImageOnly: true,
		changeMonth: true,
		changeYear: true,
		showButtonPanel: true,
		yearRange: '1900:2009'
	});
});

$.validator.setDefaults({
//	submitHandler: function() { alert("submitted!"); } // Used primarily for debugging
});

$().ready(function() {
	// Signup Form
	$("#signupform").validate({
		rules: {
			login: {
				required: true,
				minlength: 4,
				maxlength: 16
			},
			name: {
				required: true,
				minlength: 2
			},
			email: {
				required: true,
				maxlength: 255,
				email: true
			},
			email_confirm: {
				required: true,
				email: true,
				maxlength: 255,
				equalTo: "#email"
			},
			password: {
				required: true,
				minlength: 5,
				maxlength: 32
			},			
			password_confirm: {
				required: true,
				minlength: 5,
				maxlength: 32,
				equalTo: "#password"
			},			
			first_name: {
				minlength: 2,
				maxlength: 255,
				required: true
			},
			last_name: {
				minlength: 2,
				maxlength: 255,
				required: true
			},
			terms: {
				required: true
			},
			gender: {
				required: true
			},
			zip_postal: {
				maxlength: 10
			},
			date_of_birth: {
				required: true,
				dateUS: true
			},			
			code: {
				required: true,
				minlength: 5
			}
		},
		messages: {
			login: {
				required: "Please enter a login name",
				minlength: jQuery.format("Enter at least {0} characters"),
				maxlength: jQuery.format("Enter max {0} characters")
			},
			name: {
				required: "Please enter your name",
				minlength: jQuery.format("Enter at least {0} characters")
			},
			email: {
				required: "Please enter your email address",
				maxlength: jQuery.format("Enter max {0} characters")
			},
			email_confirm: {
				required: "Please confirm your email address",
				maxlength: jQuery.format("Enter max {0} characters"),
				equalTo: "Email addresses do not match"
			},
			password: {
				required: "Please enter a password",
				minlength: jQuery.format("Enter at least {0} characters"),
				maxlength: jQuery.format("Enter max {0} characters")
			},			
			password_confirm: {
				required: "Please confirm your password",
				minlength: jQuery.format("Enter at least {0} characters"),
				maxlength: jQuery.format("Enter max {0} characters"),
				equalTo: "Passwords do not match"
			},			
			first_name: {
				minlength: jQuery.format("Enter at least {0} characters"),
				maxlength: jQuery.format("Enter max {0} characters"),
				required: "Please provide your first name"
			},
			last_name: {
				minlength: jQuery.format("Enter at least {0} characters"),
				maxlength: jQuery.format("Enter max {0} characters"),
				required:  "Please provide your last name"
			},
			terms: {
				required: "Please agree to our terms before submitting"
			},
			gender: {
				required:  "Please select a gender"
			},
			zip_postal: {
				maxlength: jQuery.format("Enter max {0} characters")
			},
			date_of_birth: {
				required: "Please enter your birthday",
				dateUS: "Please use a valid date format: mm/dd/yyyy"
			},				
			code: {
				required: "Please enter the characters in the image above",
				minlength: jQuery.format("Enter at least {0} characters")
			}
		}
	});
});


