if ($.validator) {
    $.validator.addMethod("birthday", function(value, element) {

        var today = new Date();
        today.setDate(today.getDate() - 4748);

        var myDate = new Date(value);

        //value.setDate(value.getDate()+4748);

        if (myDate > today) {
            return false;
        }
        else {
            return true;
        }


    }, "You must be at least 13 to join the YOU club");
}


$(document).ready(function() {
	
	$("#content.signup.community input[name='dob1'],#content.signup.community input[name='dob2']").blur(function() {
		var n = $(this).val().length;
		var v = $(this).val();
		if (n == 1) {
			$(this).val("0"+v);
		}
	});


    if ($.validator) {
        $("#signup").validate({
            rules: {
                fname: "required",
                lname: "required",
                email: {
                    required: true,
                    email: true
                },
                password: {
                    required: true,
                    minlength: 5
                },
                password2: {
                    required: true,
                    minlength: 5,
                    equalTo: "#password"
                },
                username: {
                    required: true,
                    minlength: 2
                },
                dob1: {
                    required: true,
                    minlength: 2
                },
                dob2: {
                    required: true,
                    minlength: 2
                },
                dob3: {
                    required: true,
                    minlength: 4
                },
                dob: {
                    required: true,
                    birthday: true
                },
                accept: "required",
                forumalias: {
                	minlength: 3,
                	maxlength: 64
                },
                acceptforum: {
                	required: "input[name='forumalias']:filled"
                }, debug: true
            },
            groups: {
                doball: "dob1 dob2 dob3"
            },

            messages: {
                fname: "Enter your first name",
                lname: "Enter your last name",
                username: {
                    required: "Enter a username",
                    minlength: jQuery.format("Enter at least {0} characters")
                },
                password: {
                    required: "Provide a password",
                    rangelength: jQuery.format("Enter at least {0} characters")
                },
                password2: {
                    required: "Repeat your password",
                    minlength: jQuery.format("Enter at least {0} characters"),
                    equalTo: "Enter the same password as above"
                },
                email: {
                    required: "Please enter a valid email address",
                    minlength: "Please enter a valid email address"
                },
                dob1: {
                    required: "",
                    minlength: ""
                },
                dob2: {
                    required: "",
                    minlength: ""
                },
                dob3: {
                    required: "",
                    minlength: ""
                },
                dob: {
                    required: "You must be at least 13 to join the YOU club",
                    birthday: "You must be at least 13 to join the YOU club"
                },
                accept: "You must accept the Terms &amp; Conditions to continue",
                forumalias: {
                	minlength: "Please enter at least 3 characters",
                	maxlength: "Please enter no more than 64 characters"
                },
                acceptforum: "You must accept the Code of Conduct to continue"
            },
            errorPlacement: function(error, element) {
                if (element.is(":checkbox"))
                    error.appendTo(element.next().find('span'));
                else if (element.attr('name') == 'dob1' || element.attr('name') == 'dob2' || element.attr('name') == 'dob3' || element.attr('name') == 'dob')
                    error.appendTo(element.parents('.dob').find('span'));

                error.appendTo(element.prev().find('span'));
            },
//            // specifying a submitHandler prevents the default submit, good for the demo
//            submitHandler: function() {
//                //alert("submitted!");
//                form.submit();
//            },

            // set this class to error-labels to indicate valid fields
            success: function(label) {
                // set &nbsp; as text for IE
                label.parents('label');
            }
        });
        
		$("input[name='forumalias']").blur(function() {
			$("#acceptforum").valid();
		});
    }
    
    if ($.validator) {
        $("#editprofile").validate({
            rules: {
                fname: "required",
                lname: "required",
                email: {
                    required: true,
                    email: true
                },
                password: {
                    required: true,
                    minlength: 5
                },
                password2: {
                    required: true,
                    minlength: 5,
                    equalTo: "#password"
                },
                username: {
                    required: true,
                    minlength: 2
                },
                dob1: {
                    required: true,
                    minlength: 2
                },
                dob2: {
                    required: true,
                    minlength: 2
                },
                dob3: {
                    required: true,
                    minlength: 4
                },
                dob: {
                    required: true,
                    birthday: true
                },
                accept: "required",
                forumalias: {
                	minlength: 3,
                	maxlength: 64
                },
                acceptforum: {
                	required: "input[name='forumalias']:filled"
                }, debug: true
            },
            groups: {
                doball: "dob1 dob2 dob3"
            },

            messages: {
                fname: "Enter your first name",
                lname: "Enter your last name",
                username: {
                    required: "Enter a username",
                    minlength: jQuery.format("Enter at least {0} characters")
                },
                password: {
                    required: "Provide a password",
                    rangelength: jQuery.format("Enter at least {0} characters")
                },
                password2: {
                    required: "Repeat your password",
                    minlength: jQuery.format("Enter at least {0} characters"),
                    equalTo: "Enter the same password as above"
                },
                email: {
                    required: "Please enter a valid email address",
                    minlength: "Please enter a valid email address"
                },
                dob1: {
                    required: "",
                    minlength: ""
                },
                dob2: {
                    required: "",
                    minlength: ""
                },
                dob3: {
                    required: "",
                    minlength: ""
                },
                dob: {
                    required: "You must be at least 13 to join the YOU club",
                    birthday: "You must be at least 13 to join the YOU club"
                },
                accept: "You must accept the Terms &amp; Conditions to continue",
                forumalias: {
                	minlength: "Please enter at least 3 characters",
                	maxlength: "Please enter no more than 64 characters"
                },
                acceptforum: "You must accept the Code of Conduct to continue"
            },
            errorPlacement: function(error, element) {
                if (element.is(":checkbox"))
                    error.appendTo(element.next().find('span'));
                else if (element.attr('name') == 'dob1' || element.attr('name') == 'dob2' || element.attr('name') == 'dob3' || element.attr('name') == 'dob')
                    error.appendTo(element.parents('.dob').find('span'));

                error.appendTo(element.prev().find('span'));
            },

            // set this class to error-labels to indicate valid fields
            success: function(label) {
                // set &nbsp; as text for IE
                label.parents('label');
            }
        });
        
		$("input[name='forumalias']").blur(function() {
			$("#acceptforum").valid();
		});
    }


	// Limitations on what can be entered in certain fields
    $('input[name=dob1], input[name=dob2], input[name=dob3], input[name=phone1], input[name=phone2], input[name=phone3]').bind('keypress', function(e) {
        return (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) ? false : true;
    });
    $('input[name=name], input[name=fname], input[name=lname]').bind('keydown', function(evt) {
        evt = (evt) ? evt : event;
        var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
        ((evt.which) ? evt.which : 0));
        if (charCode > 31 && (charCode < 65 || charCode > 90) &&
        (charCode < 97 || charCode > 122) && charCode != 32 && charCode != 37 && charCode != 39) {
            return false;
        }
        return true;
    });


	// Feedback form validation
    if ($.validator) {
        $("#feedback").validate({
            rules: {
                name: "required",
                email: {
                    required: true,
                    email: true
                },
                description: {
                    required: true,
                    minlength: 10
                }
            },

            messages: {
                name: "Enter your name",
                email: {
                    required: "Enter a valid email address",
                    minlength: "Enter a valid email address"
                },
                description: {
                    required: "Enter a description",
                    minlength: "Enter a minimum of 10 characters"
                }
            },
            errorPlacement: function(error, element) {
                error.appendTo(element.prev().find('span'));
            },
//            submitHandler: function() {
//                //alert("submitted!");
//                form.submit();
//            },
            // set this class to error-labels to indicate valid fields
            success: function(label) {
                // set &nbsp; as text for IE
                label.parents('label');
            }
        });
    }


	// Change the month/day DOB fields to two digits if they're entered as one
	$('input[name=dob1,input[name=dob2]]').change(function() {
	        if($(this).val().length < 2 && $(this).val().length > 0){
	            var month = $(this).val();
	            $(this).val(0 + month);
	        }
	});


	// Set the hidden input "dob" from the dob1, dob2, and dob3 inputs
    var dob = '';
    var dob1 = '';
    var dob2 = '';
    var dob3 = '';

    $('input[name=dob1], input[name=dob2], input[name=dob3]').change(function() {
        var dob1 = $('input[name=dob1]').val();
        dob1--;
        var dob2 = $('input[name=dob2]').val();
        var dob3 = $('input[name=dob3]').val();

        var myDate = new Date();
        myDate.setFullYear(dob3, dob1, dob2);
        myDate = myDate.toDateString();

        $('input[name=dob]').val(myDate);
    });



	// Fade the infield labels for the help/hints
	// E.g. jane.smith@domain.com in e-mail field
    $("label.help").inFieldLabels({ fadeOpacity: 0.4 });



}); 