1function logAccountLogin(s) { 2 ferve.log(s, "border-left:2px solid brown;padding-left: 4px;"); 3} 4 5// V3 6var email = "", continued = false; 7 8window.onload = function () { 9 FTMailCheck.init(["LoginViewModel_Email", "SignupViewModel_Email"]); 10}; 11 12$(document).ready(function () { 13 $(".ft_loginTab").click(function () { 14 var selected = $(this).attr("id").replace("ft_tab-", ""); 15 $(".ft_loginTab").removeClass("ft_loginTab-active"); 16 $("#ft_tab-" + selected).addClass("ft_loginTab-active"); 17 $(".ft_loginPanel").hide(); 18 $("#ft_panel-" + selected).show(); 19 20 window.localStorage.setItem("ft-login", selected); 21 }); 22 var selected = window.localStorage.getItem("ft-login"); 23 if (selected) $("#ft_tab-" + selected).trigger("click"); 24 25 var m = ferve.utility.queryStringValue("m"); 26 if (m.length > 0) { 27 $("#Login").attr("action", $("#Login").attr("action") + ($("#Login").attr("action").indexOf("?") == -1 ? "?" : "&") + "m=" + m); 28 $("#Signup").attr("action", $("#Signup").attr("action") + ($("#Signup").attr("action").indexOf("?") == -1 ? "?" : "&") + "m=" + m); 29 } 30 31 32 // V3 33 if ($(".ft_login-single .ft_loginForm-submit button[name=ft_submit]").text("Continue").get(0)) { 34 $(".ft_login-single .ft_loginForm-submit button[name=ft_submit]").text("Continue").get(0).type = "button"; 35 } 36 $(".ft_login-single .ft_loginForm-submit button").click(function (e) { 37 ft_loginContinue(e.target); 38 }); 39 40 41 if ($(".ft_login-single").hasClass("ft_login-return")) { 42 continued = true; 43 $(".ft_login-single .ft_loginForm-submit button[name=ft_submit]").text("Login"); 44 ft_loginStep(2); 45 } 46 47 var ft_loginResetTimer = null; 48 $(".ft_login-single form input[name='LoginViewModel.Email']").on("change input", function () { 49 var $input = $(this); 50 var newEmail = $input.val(); 51 52 if (typeof (email) == "undefined" || email.length == 0) email = newEmail; 53 54 if (continued && email != newEmail) { 55 clearTimeout(ft_loginResetTimer); 56 57 ft_loginResetTimer = setTimeout(function () { 58 var x = $input.get(0); 59 if (ft_inputAutofilled(x)) { 60 email = newEmail; 61 return; 62 } 63 64 ferve.log("----- Resetting -----"); 65 $(".ft_login-single .ft_loginForm-password").css("max-height", 0); 66 $(".ft_login-single .ft_loginForm-submit button[name=ft_submit]").text("Continue").blur(); 67 $(".ft_login-single .ft_loginForm-guest").hide(400); 68 69 ft_loginStep(1); 70 continued = false; 71 72 email = newEmail; 73 74 }, 250); 75 76 return; 77 } 78 79 email = newEmail; 80 81 }).change(); 82 83 $(".ft_login-single form input[name='LoginViewModel.Email']").on("keypress", function (e) { 84 if (e.keyCode == 13) $(".ft_login-single .ft_loginForm-submit button[name=ft_submit]").click(); 85 }); 86 87 var chromeDesktop = ((/Chrome/i.test(navigator.userAgent)) && !(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i.test(navigator.userAgent))); 88 if (!chromeDesktop && !ferve.recaptcha()) { 89 $(".ft_login-single form input[name='LoginViewModel.Email']").on("change", function () { 90 setTimeout(function () { 91 var x = $(".ft_login-single form input[name='LoginViewModel.Email']").get(0); 92 if (ft_inputAutofilled(x)) { 93 if (ferve.recaptcha()) { 94 if (grecaptcha.getResponse() != "") ft_loginContinue("Continue"); 95 } else { 96 ft_loginContinue("Continue"); 97 } 98 } 99 }, 200); 100 }); 101 } 102}); 103 104function ft_inputAutofilled(input) { 105 return input && window.getComputedStyle(input).animationName == "autofilled"; 106} 107 108function ft_loginContinue(element) { 109 var action = (typeof (element) == "string" ? element.toLowerCase() : element.innerHTML.toLowerCase()); 110 if ($(element).attr("sso") == true) action = "sso-" + action; 111 112 logAccountLogin("ft_loginContinue(" + action + ")"); 113 114 if (ferve.recaptcha() && grecaptcha.getResponse() == "") { 115 ferve.notification.show("alert", "red", "Please complete the captcha.", null, null, null); 116 return; 117 } 118 119 if (action == "continue") { 120 var token = $(".ft_login-single form input[name='__RequestVerificationToken']").val(); 121 var timestamp = $(" input[name='LoginViewModel.TimeStamp']").val(); 122 email = $(".ft_login-single form input[name='LoginViewModel.Email']").val(); 123 var returnUrl = $("input[name=returnUrl]").val(); 124 125 var data = { RequestVerificationToken: token, Timestamp: timestamp, Hash: ferve.visitor.hash, Email: email, ReturnUrl: returnUrl }; 126 data = JSON.stringify(data) 127
128 ferve.xmlHttpRequest(ferve.url + "api/v1/Visitors/LoginContinue", "POST", data, "", "", "ftd_loginContinue("); 129 130 } else if (action == "login") { 131 $(".ft_login-single form").submit(); 132 133 } else if (action == "sso-login") { 134 document.location.href = "/Account/SSO?action=login"; 135 136 } else if (action == "sso-existing") { 137 document.location.href = "/Account/SSO?action=signup"; 138 139 } else { 140 ft_createAccount(action); 141 } 142} 143 144function ftd_loginContinue(s) { 145 logAccountLogin("ftd_loginContinue()"); 146 var ftReturn = ferve.parseFTReturn(s); 147 if (!ftReturn) { 148 return; 149 } else if (!ftReturn.Success) { 150 ferve.notification.show("alert", "red", ftReturn.Errors[0].CustomerMessage, null, null, null); 151 return; 152 } 153 ferve.log(ftReturn.SuccessMessages[0]); 154 155 continued = true; 156 if (ftReturn.SuccessMessages[0] == "existing") { 157 $(".ft_login-single .ft_loginForm-password").css("max-height", "200px"); 158 $(".ft_login-single .ft_loginForm-submit button[name=ft_submit]").text("Login").blur(); 159 ft_loginStep(2); 160 161 } else if (ftReturn.SuccessMessages[0] == "new") { 162 if ((ftReturn.SuccessMessages.length == 2 && ftReturn.SuccessMessages[1] == "skip") || $("input[name=returnUrl]").val().indexOf("Checkout") == -1) { 163 ft_createAccount("create account"); 164 return; 165 } 166 $(".ft_login-single .ft_loginForm-guest").show(400); 167 $(".ft_login-single .ft_loginForm-submit button[name=ft_submit]").text("Create Account").blur(); 168 if ($("#ft_loginForm-guest").length) { 169 ft_loginStep(4); 170 } else { 171 ft_loginStep(3); 172 } 173 174 } else if (ftReturn.SuccessMessages[0].substring(0, 3) == "sso") { 175 document.location.href = "/Account/SSO?hash=" + encodeURIComponent(ftReturn.SuccessMessages[1]); 176 } 177} 178 179function ft_loginStep(n) { 180 logAccountLogin("ft_loginStep(" + n + ")"); 181 for (var i = 1; i < 5; i++) { 182 $("#ft_loginForm-step" + i).hide(400); 183 } 184 $("#ft_loginForm-step" + n).show(400); 185 186 if (n == 2 & typeof grecaptcha == "object") setTimeout(function () { grecaptcha.render("ft_recaptcha-container"); }, 500); 187} 188 189function ft_createAccount(action) { 190 logAccountLogin("ft_createAccount()"); 191 $(".ft_login-single form").attr("action", "/Account/SignupShort"); 192 $(".ft_login-single form input[name='LoginViewModel.Email']").attr("name", "SignupViewModel.Email"); 193 $(".ft_login-single form input[name='LoginViewModel.Password']").remove(); 194 $(".ft_login-single form input[name='Guest']").val((action.indexOf("guest") > -1).toString().toLowerCase()); 195 $(".ft_login-single form").submit(); 196}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.