﻿
$(document).ready(function () {
    var privateVariables = {
        Context: {
            VerifyLogin: "VerifyLogin",
            ForgetPassword: "ForgetPassword",
            UpdatePassword: "UpdatePassword"
        },
        ServerValidationMessage: {
            CreateUserSuccess: "1",
            CreateUserNotAcivated: "2",
            CreateUserBlocked: "3",
            CreateUserInvalid: "4",
            CreateUserWrongPassword: "5",
            PasswordSend: "6",
            PasswordNotSend: "7",
            AdminOrSuperAdmin: "8",
            PwdChangeRequired: "9",
            PwdChangeNewPasswordWrong: "10"
        },
        ServicePath: "/App_Handlers/AsyncSignin.ashx",
        Path: ""
    };
    var privateMethods = {
        init: function () {
            try {
                $("#" + div_Login).show();
                $("#" + div_FrgtPassword + ",#" + div_passwordRecovery).hide();
                privateVariables.Path = siteBase + privateVariables.ServicePath;
                privateMethods.attachEvents();
            }
            catch (Error)
            { }
        },
        attachEvents: function () {
            try {
                $("#" + div_Login).unbind("keydown").bind("keydown", function (e, response) {
                    e = e || window.event;
                    if (window.event) { keynum = e.keyCode; }
                    else if (e.which) { keynum = e.which; }
                    switch (keynum) {
                        case 13:
                            $("#" + LoginButton).click();
                            break;
                    }
                });


                $("#" + lnkfrgtPassword).bind("click", function () {
                    $("#" + div_Login + ",#" + div_passwordRecovery).hide();
                    $("#" + div_FrgtPassword).show();
                    return false;
                });
                $("#" + LoginButton).bind("click", function () {
                    $("#ErrorMsgLabel").hide();
                    var userid = $("#" + UserName).val();
                    var Pass = $("#" + Password).val();
                    var RememberMe = $("#" + RememberMe).attr("checked") ? true : false;
                    if (privateMethods.validateInputs(userid, Pass)) {
                        privateMethods.asyncLogin(userid, Pass, RememberMe);
                    }
                    return false;
                });
                /*Forget Password*/
                $("#" + lnkBackToLogin).bind("click", function () {
                    $("#" + div_FrgtPassword + ",#" + div_passwordRecovery + ",#" + div_UpdatePassword).hide();
                    $("#" + div_Login).show();
                    return false;
                });
                $("#" + frgtButton).bind("click", function () {
                    var userid = $("#" + txtfrgtUserName).val();
                    if (privateMethods.validatefrgtInputs(userid)) {

                        privateMethods.asyncForgetPassWord(userid);
                    }
                    return false;
                });
                /*Update Password*/
                $("#" + lnkUpdateBackToLogin).bind("click", function () {
                    $("#" + div_FrgtPassword + ",#" + div_passwordRecovery + ",#" + div_UpdatePassword).hide();
                    $("#" + div_Login).show();
                    return false;
                });
                $("#" + frgtLoginButton).bind("click", function () {
                    $("#ErrorCurrentPassword").hide();
                    $("#ErrorNewPasswordSame").hide();
                    $("#ErrorNewPasswordsNotMatch").hide();
                    $("#ErrorNewPasswordLength").hide();
                    var userid = $("#" + txtfrgtUpdateUserName).val();
                    var Pass = $("#" + txtfrgtOldPassword).val();
                    var NewPass = $("#" + txtfrgtNewPassword).val();
                    var ConfirmPass = $("#" + txtfrgtConfirmPassword).val();
                    if (privateMethods.validateUpdateInputs(userid, Pass, NewPass, ConfirmPass)) {
                        privateMethods.asyncUpdateLogin(userid, Pass, NewPass, ConfirmPass);
                    }
                    //                    var RememberMe = $("#" + RememberMe).attr("checked") ? true : false;
                    //                    if (privateMethods.validateInputs(userid, Pass)) {
                    //                        privateMethods.asyncLogin(userid, Pass, RememberMe);
                    //                    }
                    return false;
                });
            }
            catch (Error)
            { }
        },
        validatefrgtInputs: function (PrmUserName) {
            var blnValid = false;
            try {
                if (PrmUserName === '') {
                    $("#" + spn_async_frgtusername).show();
                    $("#" + txtfrgtUserName).focus();
                    blnValid = false;
                }
                else if (PrmUserName !== '') {
                    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
                    blnValid = emailPattern.test(PrmUserName);
                    if (!blnValid) {
                        $("#" + spn_async_frgtusername).show();
                        $("#" + txtfrgtUserName).focus();
                    }
                    else {
                        $("#" + spn_async_frgtusername).hide();
                        blnValid = true;
                    }
                }
                else {
                    $("#" + spn_async_frgtusername).hide();
                    blnValid = true;
                }
                if (PrmUserName === '')
                { blnValid = false; }
            }
            catch (Error)
            { }
            return blnValid;
        },
        validateInputs: function (PrmUserName, PrmPass) {
            var blnValid = false;
            try {
                if (PrmPass === '') {
                    $("#" + spn_async_password).show();
                    $("#" + Password).focus();
                    blnValid = false;
                }

                else {
                    $("#" + spn_async_password).hide();
                    blnValid = true;
                }

                if (PrmUserName === '') {
                    $("#" + spn_async_username).show();
                    $("#" + UserName).focus();
                    blnValid = false;
                }
                else if (PrmUserName !== '') {
                    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
                    blnValid = emailPattern.test(PrmUserName);
                    if (!blnValid) {
                        $("#" + spn_async_username).show();
                        $("#" + UserName).focus();
                    }
                    else {
                        $("#" + spn_async_username).hide();
                        blnValid = true;
                    }
                }
                else {
                    $("#" + spn_async_username).hide();
                    blnValid = true;
                }
                if (PrmPass === '' || PrmUserName === '')
                { blnValid = false; }
            }
            catch (Error)
            { }
            return blnValid;
        },
        validateUpdateInputs: function (PrmUserName, PrmPass, PrmNewPass, PrmConfirmPass) {
            var blnValid = false;
            try {
                if (PrmPass === '') {
                    $("#" + spn_async_frgtOldPassword).show();
                    $("#" + txtfrgtOldPassword).focus();
                    blnValid = false;
                }
                else {
                    $("#" + spn_async_frgtOldPassword).hide();
                    blnValid = true;
                }
                if (PrmNewPass === '') {
                    $("#" + spn_async_frgtNewPassword).show();
                    $("#" + txtfrgtNewPassword).focus();
                    blnValid = false;
                }
                else if (PrmNewPass != '') {
                    $("#" + spn_async_frgtNewPassword).hide();
                    if (PrmNewPass.length < 6) {
                        $("#ErrorNewPasswordLength").show();
                        $("#" + txtfrgtNewPassword).val("");
                        $("#" + txtfrgtConfirmPassword).val("");
                        $("#" + txtfrgtNewPassword).focus();
                        blnValid = false;
                    }
                    else if (PrmNewPass === PrmPass) {
                        $("#ErrorNewPasswordSame").show();
                        $("#" + txtfrgtNewPassword).val("");
                        $("#" + txtfrgtConfirmPassword).val("");
                        $("#" + txtfrgtNewPassword).focus();
                        blnValid = false;
                    }
                    else {
                        $("#ErrorNewPasswordLength").hide();
                        $("#ErrorNewPasswordSame").hide();
                        $("#ErrorNewPasswordsNotMatch").hide();
                        blnValid = true;
                    }
                }
                if (PrmConfirmPass === '') {
                    $("#" + spn_async_frgtConfirmPassword).show();
                    $("#" + txtfrgtConfirmPassword).focus();
                    blnValid = false;
                }
                else if (PrmConfirmPass != '') {
                    $("#" + spn_async_frgtConfirmPassword).hide();
                    if (PrmNewPass != PrmConfirmPass) {
                        $("#ErrorNewPasswordsNotMatch").show();
                        $("#" + txtfrgtNewPassword).val("");
                        $("#" + txtfrgtConfirmPassword).val("");
                        $("#" + txtfrgtNewPassword).focus();
                        blnValid = false;
                    }
                    else {
                        $("#ErrorNewPasswordLength").hide();
                        $("#ErrorNewPasswordSame").hide();
                        $("#ErrorNewPasswordsNotMatch").hide();
                        blnValid = true;
                    }
                }
                if (PrmUserName === '') {
                    $("#" + spn_async_frgtUpdateUserName).show();
                    $("#" + txtfrgtUpdateUserName).focus();
                    blnValid = false;
                }
                else if (PrmUserName !== '') {
                    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
                    blnValid = emailPattern.test(PrmUserName);
                    if (!blnValid) {
                        $("#" + spn_async_frgtUpdateUserName).show();
                        $("#" + txtfrgtUpdateUserName).focus();
                    }
                    else {
                        $("#" + spn_async_frgtUpdateUserName).hide();
                        blnValid = true;
                    }
                }
                else {
                    $("#" + spn_async_frgtUpdateUserName).hide();
                    blnValid = true;
                }
            }
            catch (Error)
            { }
            return blnValid;
        },
        asyncLogin: function (PrmUserName, PrmPass, PrmremmemberMe) {
            try {
                var PostServerData = {};
                if (LoginType === 'FB' && AsyncUserID !== null && AsyncUserID !== "") {
                    PostServerData = {
                        "ID": AsyncUserID,
                        "LoginType":AsyncLoginType,
                        "CurrentCustomerID": CurrentCustomerID,
                        "UserName": PrmUserName,
                        "Password": PrmPass,
                        "RememberMe": PrmremmemberMe,
                        "Context": privateVariables.Context.VerifyLogin
                    };
                }
                else {
                    PostServerData = {
                        "CurrentCustomerID": CurrentCustomerID,
                        "UserName": PrmUserName,
                        "Password": PrmPass,
                        "RememberMe": PrmremmemberMe,
                        "Context": privateVariables.Context.VerifyLogin
                    };
                }

                privateMethods.PostDataToServer(privateVariables.Path, PostServerData, true);
            }
            catch (Error)
            { }
        },
        asyncUpdateLogin: function (PrmUserName, PrmPass, PrmNewPass, PrmConfirmPass) {
            try {
                var PostServerData = {
                    "CurrentCustomerID": CurrentCustomerID,
                    "UserName": PrmUserName,
                    "Password": PrmPass,
                    "NewPassword": PrmNewPass,
                    "ConfirmPassword": PrmConfirmPass,
                    "RememberMe": false,
                    "Context": privateVariables.Context.UpdatePassword
                };
                privateMethods.PostDataToServer(privateVariables.Path, PostServerData, true);
            }
            catch (Exception)
            { }
        },
        asyncForgetPassWord: function (PrmUserName) {
            try {
                var PostServerData = {};
                PostServerData = {
                    "UserName": PrmUserName,
                    "Context": privateVariables.Context.ForgetPassword
                };
                privateMethods.PostDataToServer(privateVariables.Path, PostServerData, true);
            }
            catch (Error)
            { }
        },
        PostDataToServer: function (PrmStrPath, PrmData, PrmAsync) {
            try {
                $.ajax({
                    url: PrmStrPath,
                    type: "POST",
                    data: PrmData,
                    error: function (response) { alert("error"); },
                    success: function (response) {
                        privateMethods.ReceiveServerData(response, PrmData.Context);
                    },
                    async: PrmAsync
                });
            } catch (e) {

            }
        },
        ReceiveServerData: function (PrmResponse, PrmContext) {
            try {
                if (privateMethods.ValidateServerData(PrmResponse, PrmContext)) {
                    switch (PrmContext) {
                        case privateVariables.Context.VerifyLogin:
                            if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserSuccess) {
                                $("#ErrorMsgLabel").hide();
                                window.location.href = window.location.href;
                                return true;
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserNotAcivated) {
                                $("#ErrorMsgLabel").hide();
                                window.location.href = siteBase + "/Signin.aspx?StatusCode=2&Key=" + PrmResponse.key;
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserBlocked) {
                                $("#" + Password).val("");
                                $("#" + Password).focus();
                                $("#ErrorMsgLabel").html(PrmResponse.message);
                                $("#ErrorMsgLabel").show()
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserInvalid) {
                                $("#ErrorMsgLabel").hide();
                                window.location.href = siteBase + "/Signin.aspx?StatusCode=4";
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserWrongPassword) {
                                $("#" + Password).val("");
                                $("#" + Password).focus();
                                $("#ErrorMsgLabel").html(PrmResponse.message);
                                $("#ErrorMsgLabel").show()
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.PwdChangeRequired) {
                                $("#" + div_FrgtPassword + ",#" + div_passwordRecovery).hide();
                                $("#" + div_Login).hide();
                                $("#" + div_UpdatePassword).show();
                                $("#" + txtfrgtUpdateUserName).val($("#" + UserName).val());
                                return false;
                            }

                            break;
                        case privateVariables.Context.ForgetPassword:
                            if (PrmResponse.status === privateVariables.ServerValidationMessage.PasswordSend) {
                                $("#" + Password).val("");
                                $("#" + Password).focus();
                                $("#" + div_FrgtPassword + ",#" + div_passwordRecovery).hide();
                                $("#" + div_Login).show();
                                $("#ErrorMsgLabel").html(PrmResponse.message);
                                $("#ErrorMsgLabel").show()
                                return false;
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserInvalid) {
                                $("#ErrorMsgLabel").hide();
                                window.location.href = siteBase + "/Signin.aspx?StatusCode=4";
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.PasswordNotSend) {
                                $("#" + div_FrgtPassword + ",#" + div_passwordRecovery).hide();
                                $("#" + div_Login).show();
                                $("#ErrorMsgLabel").html(PrmResponse.message);
                                $("#ErrorMsgLabel").show()
                                return false;
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.AdminOrSuperAdmin) {
                                $("#" + div_FrgtPassword + ",#" + div_passwordRecovery).hide();
                                $("#" + div_Login).show();
                                $("#ErrorMsgLabel").html(PrmResponse.message);
                                $("#ErrorMsgLabel").show()
                                return false;
                            }
                            break;
                        case "UpdatePassword":
                            if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserSuccess) {
                                $("#ErrorCurrentPassword").hide();
                                window.location.href = window.location.href;
                                return true;
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserNotAcivated) {
                                $("#ErrorCurrentPassword").hide();
                                window.location.href = siteBase + "/Signin.aspx?StatusCode=2&Key=" + PrmResponse.key;
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserBlocked) {
                                $("#" + Password).val("");
                                $("#" + Password).focus();
                                $("#ErrorMsgLabel").html(PrmResponse.message);
                                $("#ErrorMsgLabel").show()
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserInvalid) {
                                $("#ErrorMsgLabel").hide();
                                window.location.href = siteBase + "/Signin.aspx?StatusCode=4";
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.CreateUserWrongPassword) {
                                $("#" + Password).val("");
                                $("#" + Password).focus();
                                $("#ErrorMsgLabel").html(PrmResponse.message);
                                $("#ErrorMsgLabel").show()
                            }
                            else if (PrmResponse.status === privateVariables.ServerValidationMessage.PwdChangeNewPasswordWrong) {
                                $("#" + div_FrgtPassword + ",#" + div_passwordRecovery).hide();
                                $("#" + div_Login).hide();
                                $("#" + ErrorNewPasswordLength).show();
                                $("#" + txtfrgtUpdateUserName).val($("#" + UserName).val());
                                $("#ErrorCurrentPassword").html(PrmResponse.message);
                                $("#ErrorCurrentPassword").show()
                                return false;
                            }

                            break;
                        default:
                            break;
                    }
                }
                else {
                    alert('Out of Scope');
                }
            } catch (e) {

            }
        },
        ValidateServerData: function (PrmResponse, PrmContext) {
            try {
                var boolReturnValue = false;

                switch (PrmContext) {
                    case privateVariables.Context.VerifyLogin:

                        boolReturnValue = true;
                        break;
                    case privateVariables.Context.ForgetPassword:

                        boolReturnValue = true;
                        break;

                    case privateVariables.Context.UpdatePassword:

                        boolReturnValue = true;
                        break;
                    default:
                        break;
                }
            } catch (e) {

            }
            return boolReturnValue;
        }
    };
    privateMethods.init();
});
