$.validator.setDefaults({
	submitHandler: function() { alert("submitted!"); }
});

$().ready(function validateForm() {
	// validate the comment form when it is submitted
	$("#commentForm").validate();
	
	// validate add activity form on keyup and submit
	$("#related_smartie").validate({
		rules: {
			title: "required",
			summary: "required"
		},
		messages: {
			title: "Please enter activity title",
			summary: "Please enter activity description"
		}
	});
	
	$("#related_local").validate({
		rules: {
			title: "required",
			summary: "required",
			address01: "required",
			street: "required",
			city: "required",
			postcode: "required",
			country: "required"
		},
		messages: {
			title: "Please enter activity title",
			summary: "Please enter activity description",
			address01: "Please enter your first address line",
			street: "Please enter street name",
			city: "Please enter city",
			postcode: "Pease enter postcode",
			country: "Please select country"
		}
	});
	
	// validate signup form on keyup and submit
	$("#related_individual").validate({
		rules: {
			firstname: "required",
			lastname: "required",
			username: {
				required: true,
				minlength: 2
			},
			password: {
				required: true,
				minlength: 5
			},
			confirm_password: {
				required: true,
				minlength: 5,
				equalTo: "#password"
			},
			email: {
				required: true,
				email: true
			},
			confirm_email: {
				required: true,
				minlength: 5,
				equalTo: "#email"
			},
			topic: {
				required: "#newsletter:checked",
				minlength: 2
			},
			dateOfbirth:{
				required: true,
				minlength: 10
			}
		},
		messages: {
			firstname: "Please enter your first name",
			lastname: "Please enter your last name",
			username: {
				required: "Please enter a username",
				minlength: "Your username must consist of at least 2 characters"
			},
			password: {
				required: "Please provide a password",
				minlength: "Your password must be at least 5 characters long"
			},
			confirm_password: {
				required: "Please provide a password",
				minlength: "Your password must be at least 5 characters long",
				equalTo: "Please enter the same password as above"
			},
			email: "Please enter a valid email address",
			confirm_email: "Please enter same as email",
			dateOfbirth:{
				required: "Please enter your date of birth",
				minlength: "Please enter a valid date"
			}
		}
	});
	
	// validate signup form on keyup and submit
	$("#editProfile").validate({
		rules: {
			firstname: "required",
			lastname: "required",
			username: {
				required: true,
				minlength: 2
			},
			password: {
				required: true,
				minlength: 5
			},
			confirm_password: {
				required: true,
				minlength: 5,
				equalTo: "#password"
			},
			email: {
				required: true,
				email: true
			},
			confirm_email: {
				required: true,
				minlength: 5,
				equalTo: "#email"
			},
			topic: {
				required: "#newsletter:checked",
				minlength: 2
			},
			postcode: {
				required: true,
				minlength: 6
			}
		},
		messages: {
			firstname: "Please enter your first name",
			lastname: "Please enter your last name",
			username: {
				required: "Please enter a username",
				minlength: "Your username must consist of at least 2 characters"
			},
			password: {
				required: "Please provide a password",
				minlength: "Your password must be at least 5 characters long"
			},
			confirm_password: {
				required: "Please provide a password",
				minlength: "Your password must be at least 5 characters long",
				equalTo: "Please enter the same password as above"
			},
			email: "Please enter a valid email address",
			confirm_email: "Please enter same as email",
			postcode: "Please enter your postcode"
		}
	});
	
	// validate signup form on keyup and submit
	$("#sendToFriend").validate({
		rules: {
			from: "required",
			to: {
				required: true,
				email: true
			}
		},
		messages: {
			from: "Please enter your email",
			to: {
				required: "Please enter your friend's email",
				email: "Please enter a valid email"
			}
		}
	});
	
	$("#comment").validate({
		rules: {
			fromC: "required",
			subjectC: "required",
			comment: "required"
		},
		messages: {
			fromC: "Please enter your email",
			subjectC: "Please enter subject",
			comment: "Please enter comments"
		}
	});
	
	// propose username by combining first- and lastname
	$("#username").focus(function() {
		var firstname = $("#firstname").val();
		var lastname = $("#lastname").val();
		if(firstname && lastname && !this.value) {
			this.value = firstname + "." + lastname;
		}
	});
	
	// check if confirm password is still valid after password changed
	$("#password").blur(function() {
		$("#confirm_password").valid();
	});
	
	//code to hide topic selection, disable for demo
	var newsletter = $("#newsletter");
	// newsletter topics are optional, hide at first
	var inital = newsletter.is(":checked");
	var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray");
	var topicInputs = topics.find("input").attr("disabled", !inital);
	// show when newsletter is checked
	newsletter.click(function() {
		topics[this.checked ? "removeClass" : "addClass"]("gray");
		topicInputs.attr("disabled", !this.checked);
	});
});

