var register = {

    validator: null,

    init: function(){
        register.validate();

        $('span.error').each(function(){
            $(this).parent().children('input').addClass('error');
        });

        $('#password').pstrength();

        $('input').click(function(){
            register.checkInvalids();
        });

        $('input[type="text"]').keyup( function(){
            register.checkInvalids();
        });

        $('input[type="password"]').keyup(function(){
            register.checkInvalids();
        });

    },
    validate: function() {
        $('input[type="hidden"][name="agree"]').remove();
        this.validator = $("#registerForm").validate({
                errorElement: 'span',
                errorClass: 'error',
                errorPlacement: function(error, element) {
                    if (element.attr("name") == "gender"){
                        var genderPlacement = $("#gender-0").parent();
                        error.insertAfter(genderPlacement);
                    } else if (element.attr("name") == "password"){
                        error.insertAfter(element.siblings('strong'));
                    } else
                        error.appendTo( element.parent() );
                },
		rules: {
                        gender: "required",
			fname: "required",
			name: "required",
			nickname: "required",
			password: {
				required: true,
				minlength: 6
			},
			confirm_password: {
				required: true,
				equalTo: "#password"
			},
			email: {
				required: true,
				email: true
			},
                        agree: "required"
		},
		messages: {
                        gender: labels.requiredGender,
			fname: labels.requiredFname,
			name: labels.requiredName,
			nickname: labels.requiredNickname,
                        email: {
                            required: labels.requiredEmail,
                            email: labels.validEmail
                        },
                        password: {
				required: labels.requiredPassword,
				minlength: labels.requiredPassword
			},
			confirm_password: {
				required: labels.requiredConfirmPassword,
				minlength: labels.requiredPassword,
				equalTo: labels.matchPassword
			},
                        agree: labels.requiredAgree
		},
                showErrors: function(errorMap, errorList){
                    this.defaultShowErrors();
                    $('span.error').each(function(){
                        $(this).siblings('.formnote').hide();
                    });
                }
	});
    },
    checkInvalids: function(){

        if(parseInt(register.validator.numberOfInvalids())>0){
             $('input[name="submit"][id="submit"]').attr('disabled', 'disabled');
             $('input[name="submit"][id="submit"]').addClass('disabled');
            
        } else {
            $('input[name="submit"][id="submit"]').removeAttr('disabled');
            $('input[name="submit"][id="submit"]').removeClass('disabled');
        }
        if($('#agree').is(':checked')){
            $('input[name="submit"][id="submit"]').removeAttr('disabled');
            $('input[name="submit"][id="submit"]').removeClass('disabled');
        }
    }
}

$(document).ready(function() {
    register.init();
});

