jQuery.validator.addMethod("usr_mail",
function(value)
{
return /^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*.(([0-9]{1,3})|([a-zA-Z]{2,6}))$/.test(value) || value == "";
}, "&nbsp;"
);

jQuery.validator.addMethod("usr_plz",
function(value)
{
	return /^[0-9]{4,5}$/.test(value);
}, "&nbsp;"
);

jQuery.validator.addMethod("usr_plzInt",
function(value)
{
return /^[0-9]{4,5}$/.test(value) || value == "";
}, "&nbsp;"
);
jQuery.validator.addMethod("usr_required",
function(value)
{
return /^[^ ]+$/.test(value) || value == "";
}, "&nbsp;"
);
jQuery.validator.addMethod("usr_numeric",
function(value)
{
return /^[0-9]+$/.test(value) || value == "";
}, "&nbsp;"
);
jQuery.validator.addMethod("check_select",
	function(value)
	{
		return value > -1;
	}, "&nbsp;"
);

jQuery.validator.addMethod("checkClassificationRequired",
	function(value)
	{
		var cDone = $("#classification_done").val();
		
		if (cDone == -1)
		{
			return false;
		}
		
		var req = cDone > 0;
		
		if (req)
		{
			return (value > -1);
		}
		else
		{
			return true;
		}
	}, "&nbsp;"
);

$(document).ready(
	function()
	{
		
		$("#classification_done").change(
			function() 
			{
				$("#classification").valid();
			}
		);
		
		
		$("input", document.registrationForm).keypress (
			function (event)
			{
				if (event.keyCode == 13)
				{
					isValid = valid.form();
					$(".success").hide();
					if (isValid)
					{
						$("#registrationForm").submit ();
					}
					else
					{
						invalidForm ();
					}
				}
			}
		);
		
		$("#registrationSubmit").click(
			function() 
			{
				isValid = valid.form();
				$(".success").hide();
				
				if (isValid)
				{
					$("#registrationForm").submit();
				}
				else
				{
					invalidForm ();
				}
				
				return false;
				});/* validate signup form on keyup and submit */
				valid = $("#registrationForm").validate({
				focusInvalid: true,
				errorContainer: $("#errMsg"),
				rules: 
				{
					step:{check_select: true, usr_numeric: true}, 
					registrationType: {check_select: true}, 
					house: {check_select: true},
					gender: {check_select: true}, 
					title: {required: false}, 
					first_name:	{required: true}, 
					last_name: {required: true}, 
					street:	{required: true}, 
					zip:{required: true, usr_plz: true}, 
					city: {required: true}, 
					phone1:	{required: true, usr_numeric: true}, 
					phone2:	{required: true, usr_numeric: true}, 
					birthdayDay: {check_select: true}, 
					birthdayMonth: {check_select: true}, 
					birthdayYear: {check_select: true}, 
					birth_name:	{required: true}, 
					birth_place: {required: true}, 
					family_status: {required: true}, 
					confession:	{required: false}, 
					nationality: {check_select: true, usr_numeric: true}, 
					classification_done: {check_select: true}, 
					classification: {checkClassificationRequired: true},
					findings: {required: false}
				},
				submitHandler: 
					function (form) 
					{ 
						var continueSubmission = true;
						if (continueSubmission)
						{
							form.submit();
						}
					},
				success: 
					function(label) 
					{
						label.addClass("success");
						
						var lblFor = label.attr ("for");
						if ($("#"+lblFor).attr ("type") == "checkbox")
						{
							$("#"+lblFor).parent("span").removeClass("error");
						}
					},
				errorElement: "span",
				errorPlacement: 
					function (error, element) 
					{
						if (element.attr("type") == "checkbox")
						{
							error.appendTo( element.parent("span").parent("td").next("td") );
							element.parent("span").addClass("error");
						}
						else
						{
							error.appendTo( element.next("span") );
						}
					},
				
				messages: 
				{
					step:{required: " ", 
					usr_numeric: " "}, 
					registrationType:{required: " "}, 
					house: {check_select: " "},
					gender:{required: " "}, 
					title:	{required: " "}, 
					first_name:	{required: " "}, 
					last_name:{required: " "}, 
					street:	{required: " "}, 
					zip: {
						required: " ", 
						usr_plz: " ", 
						minLength: " ", 
						maxLength: " "
					}, 
					city: {required: " "}, 
					phone1:	{required: " ", usr_numeric: " "}, 
					phone2:	{required: " ", usr_numeric: " "}, 
					birthdayDay: {required: " "}, 
					birthdayMonth:	{required: " "}, 
					birthdayYear:{required: " "}, 
					birth_name:	{required: " "}, 
					birth_place: {required: " "}, 
					family_status:	{required: " "}, 
					confession:	{required: " "}, 
					nationality: {required: " ", usr_numeric: " "}, 
					classification_done: {required: " "}, 
					classification:	{check_select: " "}, 
					findings: {required: " "}
				}
			}
		);
	}
);
