﻿_CLICKEDBUTTON = "";

_DEFAULTBUTTON = "";

_GenericValidationError = "Oops, I think you forgot something.";

$(document).ready(function () {
    ClearErrors();

    $("#LoginButton").click(function (event) {
        ClearErrors();
        Login(event);
    });

    $("#RegisterButton").click(function (event) {
        ClearErrors();
        Register(event);
    });

    $("#GuestButton").click(function (event) {
        disablePopup();
        $(window.location).attr('href', '/checkout.aspx');
    });

    $(".reply-to-comment").click(function (event) {
        alert("comment reply");
    });

    $(".checkoutbutton").click(function (e) {
        _CLICKEDBUTTON = "checkout";
        if ($("#LoggedInUserId").val() === undefined || $("#LoggedInUserId").val() == "") {
            e.preventDefault();
            centerPopup(); //centering with css
            loadPopup(); //load popup
        }
    });

    $("input").bind("keypress", function (event) {
        // track enter key - if login/register popup, we don't want any other buttons firing when Enter key is pressed
        var keycode = (event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode));
        if (keycode == 13 && _DEFAULTBUTTON != "") { // keycode is 13 for enter key
            if (_DEFAULTBUTTON == "GUEST")
                $("#GuestButton").click();
            else if (_DEFAULTBUTTON == "REGISTER")
                $("#RegisterButton").click();
            else
                $("#LoginButton").click();
            event.preventDefault();
            return false;
        } else {
            return true;
        }
    }); // end of function

    $("#UserName").blur(function () {
        _DEFAULTBUTTON = "LOGIN";
    });
    $("#Password").blur(function () {
        _DEFAULTBUTTON = "LOGIN";
    });
    $("#NewCustomerEmailField").blur(function () {
        _DEFAULTBUTTON = "REGISTER";
    });
    $("#NewCustomerPasswordField").blur(function () {
        _DEFAULTBUTTON = "REGISTER";
    });
    $("#NewCustomerPasswordConfirmField").blur(function () {
        _DEFAULTBUTTON = "REGISTER";
    });
});

function CheckoutLink_Click() {
    _CLICKEDBUTTON = "checkout";
    if ($("#LoggedInUserId").val() === undefined || $("#LoggedInUserId").val() == "") {
        centerPopup(); //centering with css
        loadPopup(); //load popup
    }
    else
        $(window.location).attr('href', '/checkout.aspx');
}

function Login(event) {
    var formIsValid = true;
    $("#LoginButton").attr("disabled", "disabled");

    //validate email and password
    var emailBox = document.getElementById("UserName");
    if (emailBox.value.search(/^[a-zA-Z]+([_\.-]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([\.-]?[a-zA-Z0-9]+)*(\.[a-zA-Z]{2,4})+$/) == -1) {
        $("#UserName").addClass("error-border");
        event.preventDefault();
        formIsValid = false;
        //$("#LoginErrorLabel").html("Please enter a valid email.");
        $("#UserNameErrorLabel").show();
    }
    if (!ValidateControl("#Password")) {
        event.preventDefault();
        formIsValid = false;
        $("#PasswordErrorLabel").show();
    }

    if (formIsValid) {
        // Validate the user against the Membership framework user store
        //Remember Me checkbox is to keep track of user name, NOT to keep the user persistently logged in over time
        $.ajax({
            type: "POST",
            url: "/userservice.asmx/ValidateUserAndLogin",
            data: "{'userName':'" + $('#UserName').val() + "','password':'" + $('#Password').val() + "','rememberMe':'" + $('#RememberMe').is(':checked') + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d == true) {
                    $.cookie("FlavrzEmail", $('#UserName').val(), { domain: location.host, expires: 365, path: '/' });
                    //Global variable _CLICKEDBUTTON should get set in the Click event of the calling button or link
                    switch (_CLICKEDBUTTON) {
                        case "checkout":
                            $(window.location).attr('href', '/checkout.aspx'); //checkoutbillingaddress.aspx
                        default:
                            //disablePopup();
                            var returnUrl = GetReturnUrl();
                            if (returnUrl && returnUrl != "")
                                window.location.href = unescape(returnUrl);
                            else
                                window.location.href = window.location.href; //reloads after popup closes
                    }
                }
                else {
                    $("#LoginErrorLabel").html("Invalid Email/Password.");
                    $(".login-error-block").show();
                    $("#LoginErrorLabel").show();
                }
            },
            //error: AjaxFailed
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                var message = jQuery.parseJSON(XMLHttpRequest.responseText);
                $("#LoginErrorLabel").html("Error Loggin In -" + message.Message);
                $(".login-error-block").show();
                $("#LoginErrorLabel").show();
            }
        });
    }
    else {
        $("#LoginErrorLabel").html(_GenericValidationError);
        $(".login-error-block").show();
        $("#LoginErrorLabel").show();
    }

    $("#LoginButton").removeAttr("disabled");
}

function Register(event) {
    var formIsValid = true, emailIsValid = true;
    $("#RegisterButton").attr("disabled", "disabled");

    //validate email and password(s)
    var emailBox = document.getElementById("NewCustomerEmailField");
    if (emailBox.value.search(/^[a-zA-Z]+([_\.-]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([\.-]?[a-zA-Z0-9]+)*(\.[a-zA-Z]{2,4})+$/) == -1) {
        $("#NewCustomerEmailField").addClass("error-border");
        event.preventDefault();
        formIsValid = false;
        emailIsValid = false;
        $("#NewEmailErrorLabel").show();
    }
    if (!ValidateControl("#NewCustomerPasswordField")) {
        event.preventDefault();
        formIsValid = false;
        $("#NewPasswordErrorLabel").show();
    }
    if (!ValidateControl("#NewCustomerPasswordConfirmField")) {
        event.preventDefault();
        formIsValid = false;
        $("#PasswordConfirmErrorLabel").show();
    }

    if (formIsValid) {
        $.ajax({
            type: "POST",
            url: "/userservice.asmx/CreateUser",
            data: "{'email':'" + $('#NewCustomerEmailField').val() + "','password':'" + $('#NewCustomerPasswordField').val() + "','subscribeToNewsletter':'" + $('#chkNewsletterSubscribe').is(':checked') + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                $.cookie("FlavrzEmail", $('#NewCustomerEmailField').val(), { domain: location.host, expires: 365, path: '/' });
                //Global variable _CLICKEDBUTTON should get set in the Click event of the calling button or link
                switch (_CLICKEDBUTTON) {
                    case "checkout":
                        $(window.location).attr('href', '/checkout.aspx'); //checkoutbillingaddress.aspx
                    default:
                        //disablePopup();
                        var returnUrl = GetReturnUrl();
                        if (returnUrl && returnUrl != "")
                            window.location.href = unescape(returnUrl);
                        else
                            window.location.href = window.location.href; //reloads after popup closes
                }
            },
            //error: AjaxFailed
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                var message = jQuery.parseJSON(XMLHttpRequest.responseText);
                $("#RegisterErrorLabel").html("Error Registering -" + message.Message);
                $(".register-error-block").show();
                $("#RegisterErrorLabel").show();
            }
        });
    }
    else {
        if (!emailIsValid)
            $("#RegisterErrorLabel").html("Please enter a valid email.");
        else
            $("#RegisterErrorLabel").html(_GenericValidationError);
        $(".register-error-block").show();
        $("#RegisterErrorLabel").show();
    }

    $("#RegisterButton").removeAttr("disabled");
}

function GetReturnUrl() {
    // get querystring as an array split on "&"
    var querystring = location.search.replace('?', '').split('&');
    // declare object
    var queryObj = {};
    // loop through each name-value pair and populate object
    for (var i = 0; i < querystring.length; i++) {
        // get name and value
        var name = querystring[i].split('=')[0];
        var value = querystring[i].split('=')[1];
        // populate object
        queryObj[name] = value;
    }

    return queryObj["returnurl"];
}

function ValidateControl(controlIdToValidate) {
    //border: 2px solid #000;
    if ($(controlIdToValidate).val() == "") {
        $(controlIdToValidate).addClass("error-border");
        return false;
    }
    else {
        $(controlIdToValidate).removeClass("error-border");
        return true;
    }
}

function ClearErrors() {
    $("#UserName").removeClass("error-border");
    $("#Password").removeClass("error-border");
    $("#NewCustomerEmailField").removeClass("error-border");
    $("#NewCustomerPasswordField").removeClass("error-border");
    $("#NewCustomerPasswordConfirmField").removeClass("error-border");
    
    $(".login-error-block").hide();
    $("#LoginErrorLabel").hide();
    $(".register-error-block").hide();
    $("#RegisterErrorLabel").hide();    
    $("#UserNameErrorLabel").hide();
    $("#PasswordErrorLabel").hide();    
    $("#NewEmailErrorLabel").hide();
    $("#NewPasswordErrorLabel").hide();
    $("#PasswordConfirmErrorLabel").hide();
}

function GetResourceTextValue(resourceName, controlId) {
    $.ajax({
        type: "POST",
        url: "/userservice.asmx/GetLocaleResourceString",
        data: "{'resourceName': '" + resourceName + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d != "")
                $("#" + controlId).html(msg.d);
        },
        error: function (msg) {
            $("#DebugLabel").html(msg.d);
        }
    });
}

function GetResourceButtonValue(resourceName, controlId) {
    $.ajax({
        type: "POST",
        url: "/userservice.asmx/GetLocaleResourceString",
        data: "{'resourceName': '" + resourceName + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d != "")
                $("#" + controlId).val(msg.d);
        },
        error: function (msg) {
            $("#DebugLabel").val(msg.d);
        }
    });
}

function AjaxSucceeded(result) {
    alert(result.d);
}
function AjaxFailed(result) {
    alert(result.status + ' ' + result.statusText);
}
