$(document).ready(function() {
    $(".watermarkEmail").watermark("for customer service only, not for marketing");
    $(".watermarkUn").watermark("create a unique username");
    $(".watermarkPw").watermark("5 character minimum");
    $(".watermarkConfirm").watermark("confirm password from above");
    $(".watermarkPromo").watermark("optional");
    
    $(".txtUN").keyup(function(e) {
        $("#spanAvailability").text("checking...");
        $("#spanAvailability").css("text-align:", "left");
    });

    $(".txtEmail").keyup(function(e) {
        $("#spanEmailAvailable").text("checking...");
        $("#spanEmailAvailable").css("text-align:", "left");
    });

    $(".txtUN").blur(function(e) {
        username = $(this).val();
        if (username.length < 5) {
            $("#spanAvailability").text("username must be at least 5 characters");
            $("#spanAvailability").css("color", "DarkRed");
        } else {
            var url = "signup.aspx/IsUserAvailable";
            var sColor = "DarkGreen";
            if (location.pathname.indexOf("personal") != -1) {
                url = "personal.aspx/IsUserAvailable";
                sColor = "Green";
            } else if (location.pathname.indexOf("business") != -1) {
                url = "business.aspx/IsUserAvailable";
                sColor = "Green";
            }

            $.ajax({
                type: "POST",
                url: url,
                data: "{'strUn':'" + username + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(response) {
                    if (response.d == true) {
                        $("#spanAvailability").text("username available");
                        $("#spanAvailability").css("color", sColor);
                    }
                    else {
                        $("#spanAvailability").text("username already taken");
                        $("#spanAvailability").css("color", "DarkRed");
                    }
                }
            });
        }
    });

    $(".txtEmail").blur(function(e) {
        eMail = $(this).val();
        var url = "signup.aspx/IsEmailAvailable";
        var sColor = "DarkGreen";
        if (location.pathname.indexOf("personal") != -1) {
            url = "personal.aspx/IsEmailAvailable";
            sColor = "Green";
        } else if (location.pathname.indexOf("business") != -1) {
            url = "business.aspx/IsEmailAvailable";
            sColor = "Green";
        }

        $.ajax({
            type: "POST",
            url: url,
            data: "{'strEmail':'" + eMail + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {
                if (response.d == true) {
                    $("#spanEmailAvailable").text("Email address available");
                    $("#spanEmailAvailable").css("color", sColor);
                }
                else {
                    $("#spanEmailAvailable").text("Email address NOT available");
                    $("#spanEmailAvailable").css("color", "DarkRed");
                }
            }
        });
    });

    jQuery.validator.addMethod("password", function(value, element) {
        var result = this.optional(element) || value.length >= 5;
        if (!result) {
            element.value = "";
            var validator = this;
            setTimeout(function() {
                validator.blockFocusCleanup = true;
                element.focus();
                validator.blockFocusCleanup = false;
            }, 1);
        }
        return result;
    }, "Your password must be at least 5 characters long.");

    jQuery.validator.messages.required = "";
    $("#aspnetForm").validate({
        errorClass: "invalid",
        invalidHandler: function(e, validator) {
            var errors = validator.numberOfInvalids();
            if (errors) {
                var message = errors == 1
                            ? 'You missed 1 field.'
                            : 'You missed ' + errors + ' fields.';
                $("div.error span").html(message);
                $("div.error").show();
            } else {
                $("div.error").hide();
            }
        },
        onkeyup: false,
        messages: {
            email: {
                required: '',
                email: 'enter a valid email'
            }
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.parent("td").next("td"));
        }
    });

    $('.CUButton').click(function() {
        var isValid = $("#aspnetForm").valid();
        if (isValid) {
            $("div.error").hide();
        }
    });
});