﻿
var bValid = false;
function updateSignUp() {

    // First check the text boxes to see if they are valid.
    $("#frmRegister :text").each(function(ui) {
        bValid = $(this).hasClass("valid");
        if (!bValid) return false;
    });
    // If we pass the top one, then check the password text boxes.
    if (bValid) {
        $("#frmRegister :password").each(function(ui) {
            bValid = $(this).hasClass("valid");
            if (!bValid) return false;
        });
    }
    // Now check the agreement checkbox.
    if (bValid) {
        bValid = ($("#agreement").hasClass("valid"));
    }
}

jQuery(document).ready(function() {
    $("input.focus:last").focus();
    $(".validation").hide();
    $("span#indicator").hide();

    // Validations
    $("#FirstName").unbind("blur");
    $("#FirstName").bind("blur", function(e) {
        if ($(this).val() == "") {
            $(this).removeClass("valid");
            $(this).parent().find(".validation").show();
        } else {
            $(this).addClass("valid");
            $(this).parent().find(".validation").hide();
        }
        updateSignUp();
    });

    $("#LastName").unbind("blur");
    $("#LastName").bind("blur", function(e) {
        if ($(this).val() == "") {
            $(this).removeClass("valid");
            $(this).parent().find(".validation").show();
        } else {
            $(this).addClass("valid");
            $(this).parent().find(".validation").hide();
        }
        updateSignUp();
    });

    // email
    $("#UserEMail").unbind("blur");
    $("#UserEMail").bind("blur", function(e) {
        var re = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
        if (re.test($(this).val())) {
            $(this).addClass("valid");
            $(this).parent().find(".validation").hide();
        } else {
            $(this).removeClass("valid");
            $(this).parent().find(".validation").show();
        }
        updateSignUp();
    });

    $("#confemail").unbind("blur");
    $("#confemail").bind("blur", function(e) {
        var re = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
        if (re.test($(this).val())) {
            var cem = $("#UserEMail").val();
            // Do they match?
            if (cem == $(this).val()) {
                $(this).addClass("valid");
                $(this).parent().find(".validation").hide();
            } else {
                $(this).removeClass("valid");
                $(this).parent().find(".validation-msg").text("EMails do not match.");
                $(this).parent().find(".validation").show();
            }
        } else {
            $(this).removeClass("valid");
            $(this).parent().find(".validation-msg").text("Confirm EMail is required.");
            $(this).parent().find(".validation").show();
        }
        updateSignUp();
    });

    // check the username.
    $("#UserName").unbind("blur");
    $("#UserName").bind("blur", function(e) {
        var usr = $("#UserName").val();
        if (usr.length > 0) {
            if (usr.indexOf(" ") > -1) {
                $(this).removeClass("valid");
                $(this).parent().find(".validation-msg").text("Spaces are not allowed in the user name.");
                $(this).parent().find(".validation").show();
                $("#validUserName").text("");
            } else {
                $(this).parent().find(".validation").hide();
                $.ajax({
                    url: "/Service/isValidUserName?n=" + $("#UserName").val(),
                    type: "POST",
                    dataType: 'json',
                    contentType: "application/json; charset=utf-8",
                    beforeSend:
                        function() {
                            $("span#indicator").show();
                            $("#validUserName").hide();
                        },
                    success:
                        function(result) {
                            var returnedData = JSON.parse(result);
                            $("span#indicator").hide();
                            $("#validUserName").show();
                            $("#validUserName").text(returnedData.msg);
                            if (returnedData.valid) {
                                $("#UserName").addClass("valid");
                                $("#validUserName").removeClass("valid-no").addClass("valid-ok");
                            } else {
                                $("#UserName").removeClass("valid");
                                $("#validUserName").addClass("valid-no").removeClass("valid-ok");
                            }
                            updateSignUp();
                        }
                });
            }
            updateSignUp();
        } else {
            $(this).addClass("valid");
            $(this).parent().find(".validation").show();
            $("#validUserName").text("");
        }
        updateSignUp();
    });

    $("#UserPassword").unbind("blur");
    $("#UserPassword").bind("blur", function(e) {
        if ($(this).val() == "") {
            $(this).removeClass("valid");
            $(this).parent().find(".validation").show();
        } else {
            $(this).addClass("valid");
            $(this).parent().find(".validation").hide();
        }
        updateSignUp();
    });

    $("#cpassword").unbind("blur");
    $("#cpassword").bind("blur", function(e) {
        if ($(this).val() == "") {
            $(this).removeClass("valid");
            $(this).parent().find(".validation-msg").text("Confirm Password is required.");
            $(this).parent().find(".validation").show();
        } else {
            var pw = $("#UserPassword").val();
            // Do they match?
            if (pw != $(this).val()) {
                $(this).removeClass("valid");
                $(this).parent().find(".validation-msg").text("Passwords do not match.");
                $(this).parent().find(".validation").show();
            } else {
                $(this).addClass("valid");
                $(this).parent().find(".validation").hide();
            }
        }
        updateSignUp();
    });

    $("#agreement").unbind("click");
    $("#agreement").bind("click", function(e) {
        if ($(this).is(":checked")) {
            $(this).addClass("valid");
        } else {
            $(this).removeClass("valid");
        }
        updateSignUp();
    });

    // If we are using invite codes.
    if ($("#invitecode").is(":visible")) {
        $("#invitecode").unbind("blur");
        $("#invitecode").bind("blur", function(e) {
            if ($(this).val() == "") {
                $(this).removeClass("valid");
                $(this).parent().find(".validation").show();
            } else {
                $(this).addClass("valid")
                $(this).parent().find(".validation").hide();
            }
            updateSignUp();
        });
    }
    updateSignUp();
});

