function Validate(Valdata, feedback) {
    var result = !feedback;
    $.ajax({
        cache: false,
        async: false,
        type: "POST",
        data: Valdata,
        url: "page.php?s=checkform",
        success: function (msg) {
            result = (msg == 'TRUE') ? feedback : !feedback;
        }
    });
    return result;
}



function initValidateRegisterForm() {
    var frm = $("#frmRegister").validate({
        onkeyup: false,
        rules: {
            username: {
                required: true,
                minlength: 3,
                maxlength: 32,
                validChars: true,
                usernameCheck: true,
                userPlayerCheck: true
            },
            email_first: {
                required: true,
                email: true,
                minlength: 6,
                maxlength: 255,
                emailCheck: true
            },
            email_second: {
                required: true,
                maxlength: 128,
                equalTo: "#email_first"
            },
            password_first: {
                required: true,
                minlength: 6,
                maxlength: 128
            },
            password_second: {
                required: true,
                equalTo: "#password_first"
            }
        },
        messages: {
            username: {
                required: "username is required!",
                minlength: jQuery.format("username must be at least {0} characters in length."),
                maxlength: jQuery.format("username can not exceed {0} characters in length."),
                validChars: "please supply valid characters only.",
                usernameCheck: "this username is already in use.",
                userPlayerCheck: "please use your Minecraft-Username. You also have to log on to the server at least one time!"
            },
            email_first: {
                required: "email address is required.",
                email: "email address must be valid.",
                maxlength: jQuery.format("email address can not exceed {0} characters in length."),
                emailCheck: "this email address is already in use."
            },
            email_second: {
                required: "confirmed email address is required.",
                equalTo: "confirmed email address does not match."
            },
            password_first: {
                required: "password is required.",
                minlength: jQuery.format("password must be at least {0} characters in length."),
                maxlength: jQuery.format("password can not exceed {0} characters in length.")
            },
            password_second: {
                required: "confirmed password is required.",
                equalTo: "confirmed password does not match."
            }
        },
        submitHandler: function (form) {
            jQuery(form).ajaxSubmit({
                target: "#formdiv"
            });
        }
    });

    jQuery.validator.addMethod('userPlayerCheck', function (username) {
        return Validate("playername=" + username, true);
    }, '');
    // extend the validation plugin to do remote username and email dupe checking
    jQuery.validator.addMethod('usernameCheck', function (username) {
        return Validate("username=" + username, true);
    }, '');

    jQuery.validator.addMethod('emailCheck', function (email) {
        return Validate("email=" + email, true);
    }, '');

    $.validator.addMethod('validChars', function (value) {
        var result = true;
        var iChars = "!@#$%^&*()+=-[]\\\';,/{}|\":<>?";
        for (var i = 0; i < value.length; i++) {

            if (iChars.indexOf(value.charAt(i)) != -1) {

                return false;

            }

        }
        return result;
    }, '');



    jQuery("#reset").click(function () {
        frm.resetForm();
    });


}

function initValidateResetPWForm() {
    $("#frmResetPW").validate({
        onkeyup: false,
        rules: {
            userOrMail: {
                required: true,
                minlength: 3,
                maxlength: 128,
                userOrMailCheck: true
            }
        },
        messages: {
            userOrMail: {
                required: "username/email is required!",
                minlength: jQuery.format("username/email must be at least {0} characters in length."),
                maxlength: jQuery.format("username/email can not exceed {0} characters in length."),
                userOrMailCheck: "username/email not found"
            }
        },
        submitHandler: function (form) {
            jQuery(form).ajaxSubmit({
                target: "#formdiv"
            });
        }
    });
    // extend the validation plugin to do remote username and email dupe checking
    jQuery.validator.addMethod('userOrMailCheck', function (userOrMail) {
        return Validate("userOrMail=" + userOrMail, true);
    }, '');


}


function initValidateRestorePWForm() {
    $("#frmRestorePW").validate({
        onkeyup: false,
        rules: {
            password_first: {
                required: true,
                minlength: 6,
                maxlength: 128
            },
            password_second: {
                required: true,
                equalTo: "#password_first"
            }
        },
        messages: {
            password_first: {
                required: "password is required.",
                minlength: jQuery.format("password must be at least {0} characters in length."),
                maxlength: jQuery.format("password can not exceed {0} characters in length.")
            },
            password_second: {
                required: "confirmed password is required.",
                equalTo: "confirmed password does not match."
            }
        },
        submitHandler: function (form) {
            jQuery(form).ajaxSubmit({
                target: "#formdiv"
            });
        }
    });
}
function initValidateChangeEmailForm() {
    $("#frmChangeMail").validate({
        onkeyup: false,
        rules: {

            email_first: {
                required: true,
                email: true,
                minlength: 6,
                maxlength: 255,
                emailCheck: true
            },
            email_second: {
                required: true,
                maxlength: 128,
                equalTo: "#email_first"
            }
        },
        messages: {
            email_first: {
                required: "email address is required.",
                email: "email address must be valid.",
                maxlength: jQuery.format("email address can not exceed {0} characters in length."),
                emailCheck: "this email address is already in use."
            },
            email_second: {
                required: "confirmed email address is required.",
                equalTo: "confirmed email address does not match."
            }
        },
        submitHandler: function (form) {
            jQuery(form).ajaxSubmit({
                target: "#formdiv"
            });
        }
    });

    jQuery.validator.addMethod('emailCheck', function (email) {
        return Validate("email=" + email, true);
    }, '');
}
