1/*ç»å ¥ç¸éåè½*/ 2 3//å¸¸ç¨æ¹æ³ Login.showLoginModal(); 4 5//å¨consoleè¨æfalse, åä¸å¯¦éç¼éç°¡è¨, ç¨ä¾æ¸¬è©¦ç¨å¼ 6var IsSMSSend = true; 7var Login = { 8 AjaxReady: false,//é¿å Ajax éè¤ POST} 9 10 ReturnUrl: "/", 11 12 //ç°¡è¨ç¼éæ¬¡æ¸ 13 SMSSendCount: 1, 14 15 //æ¯å¦è¦ç¶éæ´»å註å 16 isRegisterMemberEvent: false, 17 18 isRegisterMobileRequire: false, 19 20 isCongrationShow: false, 21 22 init: function (ReturnUrl) { 23 //åå§åå URL 24 Login.ReturnUrl = ReturnUrl; 25 26 //ç¬¬ä¸æ¹ SDK åå§å 27 //ååº 2021/8/27 çå¡åé¡ä¸é å è¼å ¥çå°éè¦è§¸ç¼ç»å ¥æå¨è¼å ¥å§ 28 //Facebook.initialFacebookSDK(); 29 //Google.initialGoogleSDK(); 30 31 //æ¦å®å¿«éç»å ¥è註åç AnchorClick é¡å¥ 32 Login.initAnchorClickEvent(); 33 34 //å¿«é註å 35 Login.initialFastRegisterEvent(); 36 37 //å¿«éç»å ¥ 38 Login.initialFastLoginEvent(); 39 40 //FBç»å ¥ 41 Login.initialFaceBookLoginEvent(); 42 43 //ä¸è¬è¨»å 44 Login.initialGeneralRegisterEvent(); 45 46 //GPç»å ¥ 47 Login.initialGoogleLoginEvent(); 48 49 //æ´»å註åç»å ¥è註å 50 Login.initialEventRegistLoginEvent(); 51 52 Login.FancyEffectEvent(); 53 54 //è¨å®æ¯å¦è¦æå¡è¨»åæ´»å 55 Login.setIsRegisterMemberEvent(); 56 }, 57 58 initialUserInfo: function () { 59 if (typeof (window.memberId) == "undefined") { 60 CookieTool.CreateCookieInRoot("guestId", window.guestId, 30); 61 } 62 }, 63 64 setReturnUrl: function (ReturnUrl) { 65 Login.ReturnUrl = ReturnUrl; 66 67 if ($("#SocialForm input[name=ReturnUrl]").length > 0) { 68 $("#SocialForm input[name=ReturnUrl]").val(ReturnUrl); 69 } 70 }, 71 72 //延鲿¯«ç§å¾ focusTextbox 73 DelayFocusInputText: function (selector) { 74 setTimeout(function () { 75 $(selector).focus(); 76 }, 500); 77 }, 78 79 //CR888 20150210 80 //çµ¦å ¶ä»é é¢ç¨ç 妿éè¦ç»å ¥çè¡çº å½åºModal Login.showLoginModal(); 81 //ååº 2022/8/11 å¢å ä¸åæ§å¶ 顯示éé(å³ä¸è§åå,䏿¹footeråå¡)çæéåå¡ ç忏 82 showLoginModal: function (IsLogonFirst, IsShowCloseButton) { 83 var meLogin = this; 84 85 if ($('#fastLoginModal_V2').hasClass('in') == false) { 86 $('#fastLoginModal_V2').modal('show'); 87 } 88 89 if (global.isNull(IsLogonFirst)) 90 IsLogonFirst = true; 91 if (global.isNull(IsShowCloseButton)) 92 IsShowCloseButton = true; 93 94 //顯示註å/ç»å ¥ 95 if (IsLogonFirst) { 96 $('.FastReg').hide(); 97 $('.FastLogon').show(); 98 meLogin.DelayFocusInputText('#FastlogonForm #Account'); 99 $('#login-form-link').click(); 100 } 101 else { 102 $('.FastReg').show(); 103 $('.FastLogon').hide(); 104 meLogin.DelayFocusInputText('#FastRegisterForm #Name'); 105 $('#register-form-link').click(); 106 } 107 //顯示éé(å³ä¸è§åå,䏿¹footeråå¡) 108 if (IsShowCloseButton) { 109 $('#fastLoginModal_V2 .close').show(); 110 $('#fastLoginModal_V2 .modal-footer').show(); 111 } 112 else { 113 $('#fastLoginModal_V2 .close').hide(); 114 $('#fastLoginModal_V2 .modal-footer').hide(); 115 } 116 }, 117 118 //åå§å A Tag ç Click äºä»¶ç¶å® 119 initAnchorClickEvent: function () { 120 var meLogin = this; 121 122 //æ¦å® ç»å ¥ è¡çºçé£çµ 123 //UNDONE 20160804 å ç· åè³¼éè¦å æ¤æ¹ælive 124 //ååº 2021/8/27 æ¡ç»å ¥æè¼å ¥fbågoogleæä»¶ 125 $(".LoginAnchorClick").on("click", function (e) { 126 e.preventDefault(); 127 Facebook.initialFacebookSDK(); 128 Google.initialGoogleSDK(); 129 meLogin.showLoginModal(true); 130 }); 131 //ååº 2021/8/27 æ¡è¨»åæè¼å ¥fbågoogleæä»¶ 132 //æ¦å® 註å è¡çºçé£çµ 133 $(".RegistAnchorClick").click(function (e) { 134 e.preventDefault(); 135 Facebook.initialFacebookSDK(); 136 Google.initialGoogleSDK(); 137 meLogin.showLoginModal(false); 138 }); 139 }, 140 141 validateCheck: function (event) { 142 var rules = { 143 //購買人ç¸é 144 "Name": { required: true, minlength: 2, maxlength: 32 }, 145 "MobilePhone": { required: Login.isRegisterMobileRequire.toLowerCase()=="true" , mobile: true }, 146 "EMail": { required: true, email: true }, 147 "RegisterAccount": { required: true, minlength: 6, maxlength: 32 }, 148 "RegisterPassword": { required: true, minlength: 6, maxlength: 32 }, 149 "ConfirmPassword": { required: true, minlength: 6, maxlength: 32 } 150 }; 151 152 var messages = { 153 "Name": { required: "è«å¡«å¯«å§å" }, 154 "MobilePhone": { required: "è«å¡«å¯«é»è©±" }, 155 "EMail": { required: "è«å¡«å¯«ä¿¡ç®±" }, 156 "RegisterAccount": { required: "è«å¡«å¸³è" }, 157 "RegisterPassword": { required: "è«å¡«å¯«å¯ç¢¼" }, 158 "ConfirmPassword": { required: "è«å¡«å¯«å¯ç¢¼" } 159 }; 160 161 //é©èå¿ å¡«æ¬ä½ä»¥åæ ¼å¼ 162 $(event.target).validate({ 163 rules: rules, 164 messages: messages, 165 success: function (label) { 166 label.html("").removeClass("pic-wrong").addClass("note-pic checked"); 167 }, 168 highlight: function (element, errorClass) { 169 $(element).next().removeClass("checked").addClass("note-pic pic-wrong"); 170 } 171 }); 172 173 //é©è失æ,表å®ä¸éåº 174 if (!$(event.target).valid()) { 175 isGONext = false; 176 if (event.preventDefault) { 177 event.preventDefault(); 178 } else { 179 } //䏿¢submitåä½ 180 } else { 181 event.preventDefault();
182 Login.ajaxSubmitFastRegister(); 183 //mask.start(); 184 } 185 }, 186 187 //ä¸äºç°¡æç¹æ 188 FancyEffectEvent: function () { 189 //åæé ç±¤ç¹æ 190 $("#messageBox").addClass("animated bounceInLeft"); 191 }, 192 193 //åå§å æ¹å¯« Register submit 194 initialFastRegisterEvent: function () { 195 $("#FastRegisterForm").submit(function (e) { 196 Login.validateCheck(e); 197 }); 198 }, 199 200 //ä¸è¬å¿«é註å 201 ajaxSubmitFastRegister: function () { 202 if (Login.AjaxReady == true) { 203 return false; 204 } else { 205 Login.AjaxReady = true; 206 } 207 208 var ajaxURL = WEBROOT + "/Account/FastRegisterPost"; 209 var url = $("#freeRegisterUrl").val(); 210 211 //$('#FastRegisterForm input[name=ReturnUrl]').val() 212 if ($("#FastRegisterForm input[name=ReturnUrl]").val() == '') { 213 $("#FastRegisterForm input[name=ReturnUrl]").val(url); 214 } 215 216 //å° hash å¸¶å ¥ Returl 217 if (location.hash != "") { 218 var url = $("#FastRegisterForm input[name=ReturnUrl]").val(); 219 var hash = location.hash; 220 $("#FastRegisterForm input[name=ReturnUrl]").val(url + hash); 221 } 222 223 //var RVT = "__RequestVerificationToken"; 224 ////å çºé¦é æ¯Catchï¼æä»¥Razorç @Html.AntiForgeryToken()ä¸ææ´æ°ï¼åªè½æåæ´æ° 225 //$.ajax({ 226 // url: WEBROOT + "/Common/GetAntiForgeryToken", 227 // async: false, 228 // success: function (json) { 229 // //document.cookie = "__RequestVerificationToken=; expires=Thu, 01 Jan 1970 00:00:00 GMT"; 230 // //document.cookie = "__RequestVerificationToken=" + json.cookieToken; 231 // if (CookieToolV2.hasItem(RVT)) { 232 // CookieToolV2.removeItem(RVT, "/", DomainName); 233 // } 234 // CookieToolV2.setItem(RVT, json.cookieToken, null, "/", DomainName); 235 // $('input[name=__RequestVerificationToken]').val(json.formToken); 236 // } 237 //}) 238 239 var data = $("#FastRegisterForm").serialize(); 240 241 $.ajax({
242 url: ajaxURL, 243 data: data, 244 dataType: "json", 245 type: "POST", 246 beforeSend: function () { 247 mask.start(); 248 }, 249 success: function (response) { 250 Login.AjaxReady = false; 251 if (response.SuccessFul) { 252 253 if (Login.isCongrationShow.toLowerCase() == "true") { 254 //å¤ä¸å 2020/6/4 æµç¨è®æ´ï¼ä¸é¡¯ç¤ºæåç«é¢ 255 //ææ°¸å¹³ 2021/6/29 æ¹æé¡¯ç¤ºæåç«é¢ 256 bindLoginModalEvent.bindBeforeRedirect(response.ReturnUrl); 257 Login.ajaxCongratulation(); 258 } else { 259 //ææ°¸å¹³ 2021/2/23 æ¹æå å½åºè¨æ¯ 260 alert("註åæå"); 261 Login.LoginRedirect(response.ReturnUrl); 262 } 263 264 } 265 else { 266 mask.stop(); 267 alert(response.ErrorMessage); 268 LoginCaptchaMVC.RefreshWithKey(response.key); 269 } 270 }, 271 error: function (xhr, ajaxOptions, thrownError) { 272 //global.log(xhr); 273 mask.stop(); 274 }, 275 complete: function (xhr, textStatus) { 276 Login.AjaxReady = false; 277 mask.stop(); 278 }, 279 }); 280 return false; 281 }, 282 283 //===================================== 註å徿åç¸éè¡çº ================================================ 284 //å¼å«æåé é¢ 285 ajaxCongratulation: function () { 286 if (Login.AjaxReady == true) { 287 return false; 288 } else { 289 Login.AjaxReady = true; 290 } 291 292 //mask.start(); 293 $.ajax({
294 type: "GET", 295 url: WEBROOT + "/Account/Congratulation", 296 data: "", 297 dataType: "html", 298 beforeSend: function () { 299 mask.start(); 300 }, 301 success: function (response) { 302 Login.AjaxReady = false; 303 $('#CongratulationModalContent').html(response); 304 $('#CongratulationModal').modal('show'); 305 setTimeout(function () { 306 $('#MobilePhone').focus(); 307 }, 500); 308 mask.stop(); 309 CookieTool.CreateCookieInRoot("PromotionModalShow", true, 1); 310 }, 311 error: function (xhr, ajaxOptions, thrownError) { 312 //global.log(xhr); 313 mask.stop(); 314 }, 315 complete: function (xhr, textStatus) { 316 Login.AjaxReady = false; 317 mask.stop(); 318 }, 319 }); 320 mask.stop(); 321 return false; 322 }, 323 //ææ©é©è 181003 Yida 324 MobileVerifyCodeConfirm: function () { 325 var VerifyCode = parseInt($('.MobileVerifyCode').val()); 326 327 if (!Number.isInteger(VerifyCode)) 328 return alert('é©èç¢¼æ ¼å¼éçºæ¸å'); 329 330 var mobile = $('#MobilePhone').val().replace(/[^0-9\.]/g, ''); 331 if (mobile.length < 10) return alert('ææ©èç¢¼æ ¼å¼ä¸æ£ç¢º'); 332 333 mask.start('ç¢ºèªææ©ç°¡è¨èªè碼'); 334 $.ajax({
335 url: WEBROOT + '/Member/Member/MobileVerify', 336 method: 'POST', 337 data: JSON.stringify({ 338 VerifyCode: VerifyCode, 339 MemberID: '00000000-0000-0000-0000-000000000000', 340 Mobile: mobile 341 }), 342 contentType: 'application/json', 343 dataType: 'json', 344 success: function (resp) { 345 mask.stop(); 346 if (resp.Successful) { 347 Login.closeModal(); 348 } else { 349 console.error(resp.ErrorMessage); 350 alert(resp.ErrorMessage); 351 } 352 }, 353 error: function (jqXHR, textStatus) { 354 mask.stop(); 355 console.error(jqXHR); 356 alert('ææ©èªè失æ: 系統é¯èª¤'); 357 } 358 }); 359 }, 360 361 //å¯é©è碼 181003 Yida 362 MobileVerifySMSSend: function () { 363 var mobile = $('#MobilePhone').val().replace(/[^0-9\.]/g, ''); 364 365 if (mobile.length < 10) return alert('ææ©èç¢¼æ ¼å¼ä¸æ£ç¢º'); 366 367 mask.start('ç¼éææ©ç°¡è¨'); 368 $.ajax({
369 url: WEBROOT + "/Member/Member/MobileVerifySMSSend", 370 method: 'POST', 371 data: JSON.stringify({ Mobile: mobile, IsSMSSend: IsSMSSend, MemberID: '00000000-0000-0000-0000-000000000000' }), 372 contentType: 'application/json', 373 dataType: 'json', 374 success: function (resp) { 375 mask.stop(); 376 //console.log(resp); 377 if (resp.Successful) { 378 $('.MobileVerifySMSSendMsg').html('<span class="green">å·²ç¼é(' + Login.SMSSendCount++ + ')</span>'); 379 } else { 380 console.error(resp.ErrorMessage); 381 alert(resp.ErrorMessage); 382 } 383 }, 384 error: function (jqXHR, textStatus) { 385 mask.stop(); 386 console.error(jqXHR); 387 alert('坿æ©èªèç°¡è¨å¤±æ: 系統é¯èª¤'); 388 } 389 }); 390 }, 391 392 //éåºæåé é¢ 393 CongratulationSubmit: function () { 394 //è¥æ²å¡«å¯«é»è©± ç´æ¥å次å·è¡å è²»è§ç >> å å ¥æ¸ å® >> è·³è½å°æ¸ å®é 395 if ($('#MobilePhone').val().trim() == "") { 396 if ($('.js_FreeRegister').length) { 397 //bindLoginModalEvent.ExcutecallBackFunction(); 398 event.preventDefault(); 399 } 400 } 401 if (Login.AjaxReady == true) { 402 return false; 403 } else { 404 Login.AjaxReady = true; 405 } 406 407 $('#MobilePhone').val($('#MobilePhone').val().trim()); 408 var data = $("#CongratulationForm").serialize(); 409 $.ajax({
410 type: "POST", 411 url: WEBROOT + "/Account/Congratulation", 412 data: data, 413 dataType: "json", 414 beforeSend: function () { 415 mask.start(); 416 }, 417 success: function (response) { 418 Login.closeModal(); 419 }, 420 error: function (xhr, ajaxOptions, thrownError) { 421 Login.closeModal(); 422 }, 423 complete: function (xhr, textStatus) { 424 Login.AjaxReady = false; 425 Login.closeModal(); 426 }, 427 }); 428 return false; 429 }, 430 closeModal: function () { 431 $('#CongratulationModal').html(""); 432 $('#CongratulationModal').modal('hide'); 433 Login.AjaxReady = false; 434 bindLoginModalEvent.ExcutecallBackFunction(); 435 mask.stop(); 436 }, 437 //====================================== å ±ç¨ ç»å ¥äºä»¶ ====================================== 438 //ç»å ¥å¾çè¡çº 439 LoginCallBack: function () { 440 }, 441 442 //è¨å®ç»å ¥å¾è¡çº 443 SetLoginCallBack: function (fn) { 444 //global.log("è¨å®ç»å ¥å¾è¡çº"); 445 Login.LoginCallBack = fn; 446 //global.log(Login.LoginCallBack); 447 //Login.LoginCallBack = fn; 448 }, 449 450 //æ¸ é¤ç»å ¥å¾çè¡çº 451 ClearLoginCallBack: function (fn) {
452 //global.log("æ¸ é¤ç»å ¥å¾çè¡çº"); 453 Login.LoginCallBack = function () { 454 }; 455 }, 456 457 //å·è¡ç»å ¥å¾è¡çº 458 ExcuteLoginCallBack: function () { 459 //global.log("å·è¡ç»å ¥å¾è¡çº"); 460 Login.LoginCallBack(); 461 Login.ClearLoginCallBack(); 462 }, 463 464 //ç»å ¥å¾çè·³è½å¤æ· 465 LoginRedirect: function (url) { 466 //global.log("è·³è½"); 467 //夿·æ¯å¦å¨ä¸è¬ç»å ¥é é¢ 468 if (url != undefined && url.indexOf("/Account/Login") > 0) { 469 470 url = "/æå¡å°å"; 471 } 472 473 //夿·æ¯å¦æ hash 忏 474 //global.log(url); 475 //global.log(location.hash); 476 //global.log(url != undefined && url.indexOf('#') > 0); 477 if (url != undefined && url.indexOf('#') > 0) { 478 479 //global.log(".reload();"); 480 window.location.reload(); 481 } else { 482 //æ£å¸¸æ æ³ä¸ ä¾ç § Server 端åå³è·¯å¾è·³è½ 483 if (url) { 484 if (url.indexOf("http:") > 0 == false) { 485 url = url.substring(0, 1) === "/" ? location.origin + url : location.origin + "/" + url; 486 } 487 //alert(url); 488 if (BrowserTool.isIE()) { 489 window.location.href = url; 490 } 491 else { 492 //location.replace(url); 493 location.href = url; 494 } 495 } 496 else { 497 //global.log("reload(true)"); 498 //å ¶ä»éé ææ æ³ä¸ éæ°å·æ°é é¢ 499 window.location.reload(true); 500 } 501 } 502 }, 503 504 //====================================== ä¸è¬è¨»å ====================================== 505 //åå§åä¸è¬ç»å ¥è¨»åäºä»¶ç¶å® (å»ºç«æ°å¸³æ¶) 506 initialGeneralRegisterEvent: function () { 507 //var url = BrowserTool.getLocationOrigin() + "/æå¡è¨»å"; 508 var url = "/æå¡è¨»å"; 509 510 if ($(".RegisterByGeneral").length > 0) { 511 $(".RegisterByGeneral").click(function (e) { 512 //Login.LoginRedirect(url); //å宿´è¨»åæµç¨ 513 //ååº 2021/8/27 æ¡è¨»åæè¼å ¥fbågoogleæä»¶ 514 e.preventDefault(); 515 Facebook.initialFacebookSDK(); 516 Google.initialGoogleSDK(); 517 Login.showLoginModal(false); //æ¹ç箱快é註å 518 }); 519 } 520 521 if ($("#RegisterByGeneral").length > 0) { 522 $("#RegisterByGeneral").click(function (e) { 523 //Login.LoginRedirect(url); //å宿´è¨»åæµç¨ 524 //ååº 2021/8/27 æ¡è¨»åæè¼å ¥fbågoogleæä»¶ 525 Facebook.initialFacebookSDK(); 526 Google.initialGoogleSDK(); 527 Login.showLoginModal(false); //æ¹ç箱快é註å 528 }); 529 } 530 }, 531 //====================================== ä¸è¬ç»å ¥ ====================================== 532 //åå§åä¸è¬ç»å ¥äºä»¶ç¶å® 533 initialGeneralLoginEvent: function () { 534 if ($(".loginByGeneral").length > 0) { 535 $(".loginByGeneral").click(function (e) { 536 Login.GeneralLogin(Login.ReturnUrl); 537 }); 538 } 539 540 if ($("#loginByGeneral").length > 0) { 541 $("#loginByGeneral").click(function (e) { 542 Login.GeneralLogin(Login.ReturnUrl); 543 }); 544 } 545 }, 546 547 //ä¸è¬ç»å ¥ 548 GeneralLogin: function (ReturnUrl) { 549 $('#logonForm').validate(); 550 551 if (!$('#logonForm').valid()) { 552 return false; 553 } 554 555 //global.log("ä¸è¬ç»å ¥"); 556 if (Login.AjaxReady == true) { 557 return false; 558 } else { 559 Login.AjaxReady = true; 560 } 561 562 //å¯«å ¥æå®è·³è½ 563 if (ReturnUrl != "") { 564 $("#logonForm input[name=ReturnUrl]").val(ReturnUrl); 565 } 566 567 //å° hash å¸¶å ¥ Returl 568 if (location.hash != "") { 569 //var url = $("#FastlogonForm input[name=ReturnUrl]").val(); 570 $("#logonForm input[name=ReturnUrl]").val(ReturnUrl + hash); 571 ReturnUrl = ReturnUrl + hash; 572 } 573 var url = WEBROOT + "/Account/FastLogOn"; 574 var data = $('#logonForm').serialize(); 575 $.ajax({
576 type: "POST", 577 url: url, 578 data: data, 579 dataType: "json", 580 beforeSend: function () { 581 mask.start(); 582 }, 583 success: function (response) { 584 Login.AjaxReady = false; 585 if (response.SuccessFul == true) { 586 //mask.start(); 587 if (ReturnUrl == "" || ReturnUrl == undefined) { 588 Login.LoginRedirect(response.returnUrl); 589 } else { 590 Login.LoginRedirect(ReturnUrl); 591 } 592 } 593 else { 594 alert(response.ErrorMessage); 595 } 596 }, 597 error: function (xhr, ajaxOptions, thrownError) { 598 Login.AjaxReady = false; 599 }, 600 complete: function (xhr, textStatus) { 601 Login.AjaxReady = false; 602 mask.stop(); 603 }, 604 }); 605 return false; 606 }, 607 608 //====================================== å¿«éä¸è¬ç»å ¥ ====================================== 609 //åå§åå¿«éç»å ¥äºä»¶ç¶å® 610 initialFastLoginEvent: function () { 611 if ($(".loginByFast").length > 0) { 612 $(".loginByFast").click(function (e) { 613 Login.FastLogin(Login.ReturnUrl); 614 }); 615 } 616 617 if ($("#loginByFast").length > 0) { 618 $("#loginByFast").click(function (e) { 619 Login.FastLogin(Login.ReturnUrl); 620 }); 621 } 622 }, 623 624 //å¿«éç»å ¥ 625 FastLogin: function (ReturnUrl) { 626 if (!$('#FastlogonForm').valid()) { 627 return false; 628 } 629 630 //global.log("å¿«éä¸è¬ç»å ¥"); 631 if (Login.AjaxReady == true) { 632 return false; 633 } else { 634 Login.AjaxReady = true; 635 } 636 637 //å¯«å ¥æå®è·³è½ 638 if (ReturnUrl != "") { 639 $("#FastlogonForm input[name=ReturnUrl]").val(ReturnUrl); 640 } 641 642 //å° hash å¸¶å ¥ Returl 643 if (location.hash != "") { 644 //var url = $("#FastlogonForm input[name=ReturnUrl]").val(); 645 var hash = location.hash; 646 647 $("#FastlogonForm input[name=ReturnUrl]").val(ReturnUrl + hash); 648 ReturnUrl = ReturnUrl + hash; 649 650 } 651 var url = WEBROOT + "/Account/FastLogOn"; 652 var data = $('#FastlogonForm').serialize(); 653 $.ajax({
654 type: "POST", 655 url: url, 656 data: data, 657 dataType: "json", 658 beforeSend: function () { 659 mask.start(); 660 }, 661 success: function (response) { 662 Login.AjaxReady = false; 663 if (response.SuccessFul == true) { 664 Login.LoginRedirectChooser(ReturnUrl || response.returnUrl); 665 } 666 else { 667 if (response.Result == 14) { 668 //é©èæ¯å¦çºé 註åè£ç½®çæ 669 Login.setValidDeviceInterface(); 670 } else if (response.Result == 15) { 671 //é©èæ¯å¦è¶ éè¨»åæ¸éä¸é 672 Login.setDeviceListInterface(); 673 } else { 674 alert(response.ErrorMessage); 675 } 676 } 677 }, 678 error: function (xhr, ajaxOptions, thrownError) { 679 Login.AjaxReady = false; 680 }, 681 complete: function (xhr, textStatus) { 682 Login.AjaxReady = false; 683 mask.stop(); 684 }, 685 }); 686 return false; 687 }, 688 689 //===================================== 社群ç¸éå ±ç¨ ================================================ 690 //社群ç»å ¥æ¨¡å¼ 691 LoginBySocial: function (access_token, ReturnUrl) { 692 //global.log("LoginBySocial"); 693 //global.log(response); 694 if (Login.AjaxReady == true) { 695 return false; 696 } else { 697 Login.AjaxReady = true; 698 } 699 700 if ($("#SocialForm input[name=ReturnUrl]").val() == '') { 701 $("#SocialForm input[name=ReturnUrl]").val(ReturnUrl); 702 } 703 704 if ($("#fastLoginModal").length > 0) { 705 $("#fastLoginModal").modal('hide'); 706 } 707 708 //確èªè¡¨å®åå¨ 709 if ($('#SocialForm').length < 1) { 710 //global.log("å·²ç¶ç»å ¥"); 711 //global.log("æ²æç¤¾ç¾¤è¡¨å®"); 712 return false; 713 } 714 715 //å° hash å¸¶å ¥ Returl 716 if (location.hash != "" && ReturnUrl.indexOf('#') <= 0) { 717 var hash = location.hash; 718 719 $("#SocialForm #ReturnUrl").val(ReturnUrl + hash); 720 ReturnUrl = ReturnUrl + hash; 721 722 } 723 //global.log($("#SocialForm #ReturnUrl").val()); 724 725 var sourceType = $("#SocialForm input[name='SourceType']").val(); 726 var ajaxURL = WEBROOT + "/Account/LogOnByFacebookEmail/"; // é è¨ 727 728 switch (sourceType) { 729 case "7": // Facebook 730 ajaxURL = WEBROOT + "/Account/LogOnByFacebook/"; 731 break; 732 case "8": // Google 733 ajaxURL = WEBROOT + "/Account/LogOnByGoogle/"; 734 break; 735 default: 736 console.warn("æªç¥ç SourceTypeï¼ä½¿ç¨é è¨ /LogOnByFacebookEmail/"); 737 break; 738 } 739 //var data = $('#SocialForm').serialize(); 740 741 $.ajax({
742 url: ajaxURL, 743 data: { 744 accessToken: access_token, 745 }, 746 type: "post", 747 beforeSend: function () { 748 mask.start(); 749 }, 750 success: function (response) { 751 mask.stop(); 752 if (response.SuccessFul) { 753 Login.AjaxReady = false; 754 //已註åæä¸èª²æå¡ 755 //global.log("已註å éå§ç»å ¥"); 756 757 758 //永平 2021/6/29 ç»å ¥å¾è©¢å使ç¨è åçåç«é¢ææ¯å°åå¸å¡å°å 759 Login.LoginRedirectChooser(ReturnUrl || response.returnUrl); 760 //if (ReturnUrl == "" || ReturnUrl == undefined) { 761 // Login.LoginRedirect(response.returnUrl); 762 //} else { 763 // Login.LoginRedirect(ReturnUrl); 764 //} 765 } 766 else { 767 if (response.Result == 14) { 768 //é©èæ¯å¦çºé 註åè£ç½®çæ 769 Login.setValidDeviceInterface(); 770 } else if (response.Result == 15) { 771 //é©èæ¯å¦è¶ éè¨»åæ¸éä¸é 772 Login.setDeviceListInterface(); 773 } 774 775 Login.AjaxReady = false; 776 //èªå幫註å 777 //global.log("æªè¨»å èªå幫註å"); 778 779 // 顯示伺æå¨è¿åçé¯èª¤è¨æ¯ 780 if (response.Message) { 781 alert("ç»å ¥å¤±æï¼" + response.Message); 782 return; 783 } 784 785 Login.ajaxSubmitSocialRegister(); 786 } 787 }, 788 error: function (xhr, ajaxOptions, thrownError) { 789 //global.log(xhr); 790 mask.stop(); 791 }, 792 complete: function (xhr, textStatus) { 793 Login.AjaxReady = false; 794 mask.stop(); 795 }, 796 }); 797 return false; 798 }, 799 800 LoginRedirectChooser: function (targetUrl) { 801 var normalizedTargetUrl = targetUrl; 802 803 // è¥ç®æ¨æ¯é¦é ( / )æç©ºå¼ï¼å徿å¡å°åæéæ¹å°åæå¡å°å 804 if (!normalizedTargetUrl || normalizedTargetUrl === "/") { 805 normalizedTargetUrl = "/æå¡å°å"; 806 } 807 808 var finalTargetUrl = normalizedTargetUrl || Login.ReturnUrl || '/æå¡å°å'; 809 810 $("#fastLoginModal_V2").modal("hide"); 811 $("#LoginRedirectModal").modal("show"); 812 $("#StayHere").off("click").on("click", function () { 813 mask.start(); 814 location.reload(); 815 }); 816 $("#GoToMember").off("click").on("click", function () { 817 mask.start(); 818 Login.LoginRedirect(finalTargetUrl); 819 }); 820 }, 821 822 //社群註å 823 ajaxSubmitSocialRegister: function () { 824 if (Login.AjaxReady == true) { 825 return false; 826 } else { 827 Login.AjaxReady = true; 828 } 829 830 //æ¯å¦è¦ç¶éæ´»å註å 831 if (Login.isRegisterMemberEvent) { 832 var postUrl = WEBROOT + "/Register/RegisterSocialStepOne"; 833 $('body').append('<form action="' + postUrl + '" method="post" id="RegisterSocialForm">' + $("#SocialForm").html() + '</form>'); 834 var form = $('#RegisterSocialForm'); 835 form.submit(); 836 return false; 837 } 838 839 var ajaxURL = WEBROOT + "/Account/FastRegisterPost"; 840 var data = $("#SocialForm").serialize(); 841 842 $.ajax({
843 url: ajaxURL, 844 data: data, 845 dataType: "json", 846 type: "post", 847 beforeSend: function () { 848 mask.start(); 849 }, 850 success: function (response) { 851 Login.AjaxReady = false; 852 if (response.SuccessFul) { 853 $("#fastLoginModal").modal("hide"); 854 bindLoginModalEvent.bindBeforeRedirect(response.ReturnUrl); 855 Login.ajaxCongratulation(); 856 } else { 857 mask.stop(); 858 alert(response.ErrorMessage); 859 } 860 }, 861 error: function (xhr, ajaxOptions, thrownError) { 862 //global.log(xhr); 863 mask.stop(); 864 Login.AjaxReady = false; 865 }, 866 complete: function (xhr, textStatus) { 867 Login.AjaxReady = false; 868 mask.stop(); 869 }, 870 }); 871 return false; 872 }, 873 874 //è¨å®ç¤¾ç¾¤è³è¨å°è¡¨å® 875 setSocialInfoToRegisterValue: function (response) { 876 //global.log("setSocialInfoToRegisterValue"); 877 //global.log(response); 878 try { 879 $("#SocialForm input[name='SourceType']").val(response.sourcetype); //Google = 8 880 $("#SocialForm input[name='Account']").val(response.email); 881 $("#SocialForm input[name='Name']").val(response.name); 882 $("#SocialForm input[name='EMail']").val(response.email); 883 $("#SocialForm input[name='FacebookAccount']").val(response.email); 884 $("#SocialForm input[name='FacebookID']").val(response.id); 885 $("#SocialForm input[name='Birthday']").val(response.birthday); 886 $("#SocialForm input[name='AvatorImageUrl']").val(response.picture); 887 return true; 888 } catch (err) { 889 //global.log(err.message); 890 return false; 891 } 892 }, 893 894 //åæé¡å¥ç©ä»¶ 895 responseClass: (function () { 896 function responseClass() { 897 } 898 return responseClass; 899 })(), 900 901 //====================================== Google ç»å ¥ä½¿ç¨ ====================================== 902 //åå§å GOOGLE ç»å ¥è¡çºäºä»¶ 903 initialGoogleLoginEvent: function () { 904 if ($(".loginByGP").length > 0) { 905 $(".loginByGP").click(function () { 906 //ååº 2021/8/27 æ¡ä¸æè¼å ¥googleæä»¶(確ä¿è¼å ¥) 907 Google.initialGoogleSDK(); 908 Login.GPLogin(Login.ReturnUrl); 909 }); 910 } 911 912 if ($("#loginByGP").length > 0) { 913 $("#loginByGP").click(function () { 914 //ååº 2021/8/27 æ¡ä¸æè¼å ¥googleæä»¶(確ä¿è¼å ¥) 915 Google.initialGoogleSDK(); 916 Login.GPLogin(Login.ReturnUrl); 917 }); 918 } 919 }, 920 921 //ä½¿ç¨ Google 帳èç»å ¥ 922 GPLogin: function (ReturnUrl) { 923 //global.log("GPLogin"); 924 var clientId = Google.ClientID; 925 var apiKey = Google.ApiKey; 926 var scopes = "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email "; 927 928 gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: true }, handleAuthResult); 929 930 function handleAuthResult(authResult) { 931 //ç»å ¥çæ 夿· 932 if (authResult && !authResult.error) { 933 var access_token = authResult.access_token; 934 //å·²ç»å ¥ 935 Login.GetAllGoogleInfo(function (response) { 936 //global.log("éå§ç»å ¥"); 937 Login.LoginBySocial(access_token, ReturnUrl); 938 }); 939 } else { 940 //åè©¦å¨æ²è¾¦æ³èªåç»å ¥ææå ç»å ¥è¦çª 941 if (authResult.error == "immediate_failed") { 942 //æªç»å ¥ 943 gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: false }, handleAuthResult); 944 } 945 } 946 } 947 }, 948 949 //åå¾ Google ç»å ¥è³è¨ 950 GetAllGoogleInfo: function (callBack) { 951 //global.log("GetAllGoogleInfo"); 952 var response = new Login.responseClass(); 953 954 gapi.client.load('oauth2', 'v2', function () { 955 var request = gapi.client.oauth2.userinfo.get(); 956 request.execute(function (profile) { 957 if (profile) { 958 //global.log("request.execute"); 959 response.sourcetype = 8; //Google 960 response.id = profile.id; 961 response.name = profile.name; 962 response.email = profile.email; 963 response.link = profile.link; 964 response.picture = profile.picture; 965 response.successful = true; 966 Login.setSocialInfoToRegisterValue(response); 967 callBack(response); 968 } 969 }); 970 }); 971 }, 972 973 //====================================== FaceBook ç»å ¥ä½¿ç¨ ====================================== 974 //åå§å FaceBook ç»å ¥è¡çºäºä»¶ 975 initialFaceBookLoginEvent: function () { 976 //global.log(Login.ReturnUrl); 977 if ($(".loginByFB").length > 0) { 978 $(".loginByFB").click(function () { 979 Login.FBLogin(Login.ReturnUrl); 980 }); 981 } 982 983 //å¸å¡ç»å ¥é ç¨ID ææå®æ¹æç¨ class 984 //if ($("#loginByFB").length > 0) { 985 // $("#loginByFB").click(function () { 986 // Login.FBLogin(Login.ReturnUrl); 987 // });
988 //} 989 990 // åå§å éè¦ä¸»å檢測FBç»å ¥çå ç´ é¡å¥ 991 Login.InitInitiativeFBLogin(); 992 }, 993 994 //ä½¿ç¨ FaceBook 帳èç»å ¥ 995 FBLogin: function (ReturnUrl) { 996 //global.log("FBLogin"); 997 if (Login.AjaxReady == true) { 998 return false; 999 } else { 1000 Login.AjaxReady = true; 1001 } 1002 1003 //var Scope = 'publish_stream,email,user_birthday,user_mobile_phone,user_hometown,user_location,publish_actions'; 1004 var Scope = 'email,public_profile,'; 1005 1006 FB.login(function (response) { 1007 Login.AjaxReady = false; 1008 //å 夿·æ¯å¦å·²ç¶ç»å ¥äº 1009 1010 if (response.authResponse) { 1011 access_token = response.authResponse.accessToken; //get access token 1012 user_id = response.authResponse.userID; //get FB UID 1013 1014 FB.api('/me', function (response) { 1015 Login.GetAllFBInfo(function (response) { 1016 //global.log("éå§ç»å ¥æä¸èª²"); 1017 //console.log(response); 1018 Login.LoginBySocial(access_token, ReturnUrl); 1019 }); 1020 }); 1021 } 1022 //ä¸é¢æ¯æ²æç»å ¥æææåçï¼æå»subscribeä¸åeventï¼å°±æ¯å»ç£è½ä¸ålogin eventï¼ä¹å°±æ¯èªªloginæå以å¾ï¼ææ¥æ¶å°è¨æ¯ï¼ 1023 else { 1024 //global.log("éå§ç»å ¥FB"); 1025 FB.Event.subscribe('auth.login', function (response) { 1026 if (response.authResponse) { 1027 FB.api('/me', function (response) { 1028 //global.log(response.email); 1029 }); 1030 } 1031 }); 1032 } 1033 }, { scope: Scope }); 1034 return false; 1035 }, 1036 1037 //$.cookie('the_cookie'); // 读å cookie 1038 //$.cookie('the_cookie', 'the_value'); // åå¨ cookie 1039 //$.cookie('the_cookie', 'the_value', { expires: 7 }); // åå¨ä¸ä¸ªå¸¦7天æéç cookie 1040 1041 initiativeFBLogin: false, 1042 1043 SetInitiativeFBLogin: function (bool) { 1044 Login.initiativeFBLogin = bool; 1045 }, 1046 1047 InitiativeFBLogin: function () { 1048 if (CookieTool.GetCookie('initiativeFBLogin') !== null) { 1049 return; 1050 } 1051 1052 if (Login.initiativeFBLogin === false || CookieTool.GetCookie('initiativeFBLogin') === false) { 1053 return; 1054 } 1055 FB.getLoginStatus(function (response) { 1056 1057 if (response.status === 'connected' || response.status === 'not_authorized') { 1058 1059 //åæª¢æ¥ä¸æ¬¡ 1060 if (CookieTool.GetCookie('initiativeFBLogin') !== null) { 1061 return; 1062 } 1063 if (Login.initiativeFBLogin === false || CookieTool.GetCookie('initiativeFBLogin') === false) { 1064 return; 1065 } 1066 Login.initiativeFBLogin = false; 1067 CookieTool.CreateCookieInRoot('initiativeFBLogin', false, 30); //éµè師修æ¹20150930 1068 Login.LoginByGlobalModal(); 1069 } 1070 }); 1071 }, 1072 1073 InitInitiativeFBLogin: function () { 1074 Login.SetInitiativeFBLogin(true); 1075 var bindAction = function () { 1076 Login.InitiativeFBLogin(); 1077 } 1078 1079 $('.LoginAnchorClick').bind("click", function () { 1080 bindAction(); 1081 }); 1082 $('.js_checkLoginBeforeAction').bind("click", function () { 1083 bindAction(); 1084 }); 1085 $('.moreInfo').bind("click", function () { 1086 bindAction(); 1087 }); 1088 }, 1089 1090 LoginByGlobalModal: function () { 1091 if ($('#globalModal .loginByFB').length > 0) { 1092 $('#globalModal .loginByFB').remove(); 1093 } 1094 $("#globalModal").bind("hidden", function () { 1095 $('.modal-dialog').css("width", null) 1096 $('#globalModal #globalModalTitle').text("") 1097 $('#globalModal #globalModalContent').text("") 1098 $('#globalModal .loginByFB').remove(); 1099 }); 1100 1101 $('#globalModal .modal-dialog').css("width", 480) 1102 $('#globalModal #globalModalTitle').text("è¨æ¯éç¥") 1103 $('#globalModal #globalModalContent').text("æ¯å¦ä½¿ç¨ Facebook 帳èç»å ¥ï¼") 1104 1105 var btnYes = "<button type=\"button\" class=\"btn btn-small btn-success loginByFB\" data-dismiss=\"modal\">ç»å ¥</button>"; 1106 1107 $('#globalModal .modal-footer').prepend(btnYes); 1108 $('#globalModal .loginByFB').bind("click", function () { 1109 Login.FBLogin(Login.ReturnUrl); 1110 }); 1111 1112 $("#globalModal").modal({ 1113 "backdrop": "static", 1114 "keyboard": true, 1115 "show": true 1116 }); 1117 }, 1118 //åå¾ FaceBook ç»å ¥è³è¨ 1119 GetAllFBInfo: function (callBack) { 1120 //global.log("GetAllFBleInfo"); 1121 var response = new Login.responseClass(); 1122 1123 FB.api('/me?fields=id,name,email,link', function (profile) { 1124 response.sourcetype = 7; //FaceBook 1125 response.id = profile.id; 1126 response.name = profile.name; 1127 response.email = profile.email; 1128 response.link = profile.link; 1129 //ååº 2026/9/14 å° Facebook Graph API åºå®çº v23.0ï¼ä¸¦ä½¿ç¨ HTTPS 1130 response.picture = 'https://graph.facebook.com/v23.0/' + profile.id + '/picture'; 1131 response.successful = true; 1132 Login.setSocialInfoToRegisterValue(response); 1133 callBack(response); 1134 }); 1135 }, 1136 1137 //====================================== æ´»åäºä»¶ ç»å ¥è註å ä½¿ç¨ ====================================== 1138 //åå§å æ´»åäºä»¶ ç»å ¥è註å ç»å ¥è¡çºäºä»¶ 1139 initialEventRegistLoginEvent: function () { 1140 if ($(".loginByEventRegist").length > 0) { 1141 $(".loginByEventRegist").click(function (e) { 1142 e.preventDefault(); 1143 $("#EventRegistForm").validate(); 1144 if ($("#EventRegistForm").valid()) { 1145 location.hash = "login"; 1146 Login.EventRegistLogin(Login.ReturnUrl); 1147 } 1148 else { 1149 //global.log("失æ"); 1150 } 1151 return false; 1152 }); 1153 } 1154 1155 if ($("#loginByEventRegist").length > 0) { 1156 $("#loginByEventRegist").click(function (e) { 1157 e.preventDefault(); 1158 $("#EventRegistForm").validate(); 1159 if ($("#EventRegistForm").valid()) { 1160 location.hash = "login"; 1161 Login.EventRegistLogin(Login.ReturnUrl); 1162 } 1163 else { 1164 //global.log("失æ"); 1165 } 1166 return false; 1167 }); 1168 } 1169 }, 1170 1171 //æ´»å註åç»å ¥ 1172 EventRegistLogin: function (ReturnUrl) { 1173 if (Login.AjaxReady == true) { 1174 return false; 1175 } else { 1176 Login.AjaxReady = true; 1177 } 1178 1179 //å¯«å ¥æå®è·³è½ 1180 if (ReturnUrl != "" && ReturnUrl != undefined) { 1181 //alert(ReturnUrl); 1182 $("#EventRegistForm input[name=ReturnUrl]").val(ReturnUrl); 1183 } 1184 1185 //å° hash å¸¶å ¥ Returl 1186 if (location.hash != "") { 1187 var hash = location.hash; 1188 var s = $("#EventRegistForm input[name=ReturnUrl]").val(); 1189 $("#EventRegistForm input[name=ReturnUrl]").val(s + hash); 1190 ReturnUrl = ReturnUrl + hash; 1191 //global.log($("#EventRegistForm input[name=ReturnUrl]").val()); 1192 } 1193 1194 //var url = location.origin + "/Account/FastRegisterPost"; 1195 var url = BrowserTool.getLocationOrigin() + "/Account/FastRegisterPost"; 1196 var data = $('#EventRegistForm').serialize(); 1197 1198 $.ajax({
1199 type: "POST", 1200 timeout: 15000, 1201 url: url, 1202 data: data, 1203 dataType: "json", 1204 beforeSend: function () { 1205 mask.start(); 1206 }, 1207 success: function (response) { 1208 Login.AjaxReady = false; 1209 if (response.SuccessFul == true) { 1210 if (ReturnUrl == "" || ReturnUrl == undefined) { 1211 //global.log(response.ReturnUrl); 1212 Login.LoginRedirect(response.ReturnUrl); 1213 } else { 1214 //global.log(ReturnUrl); 1215 Login.LoginRedirect(ReturnUrl); 1216 } 1217 } 1218 else { 1219 alert(response.ErrorMessage); 1220 } 1221 }, 1222 error: function (xhr, ajaxOptions, thrownError) { 1223 Login.AjaxReady = false; 1224 mask.stop(); 1225 }, 1226 complete: function (XMLHttpRequest, status) { 1227 //è«æ±å®æå¾æçµå·è¡åæ¸ 1228 //global.log(status); 1229 if (status == 'timeout' || status == 'error') { 1230 //è¶ æ, status éæ success, error çå¼çæ æ³ 1231 //global.log(status == 'timeout'); 1232 setTimeout(function () { 1233 mask.stop(); 1234 $('#AjaxErrorModal').modal('show'); 1235 }, 250); 1236 return; 1237 } 1238 1239 mask.stop(); 1240 } 1241 }); 1242 return false; 1243 }, 1244 1245 setIsRegisterMemberEvent: function () { 1246 //æª¢æ¥æ¯å¦ è¦ç¶éæ´»å註å 1247 var IsRMEStr = $('#isRegisterMemberEvent').val(); 1248 if (IsRMEStr.length > 0) 1249 Login.isRegisterMemberEvent = JSON.parse(IsRMEStr.toLowerCase()) 1250 }, 1251 1252 setDeviceListInterface: function () { 1253 var $logonpartial = $('.logonpartial'); 1254 1255 $.ajax({
1256 type: "get", 1257 url: "/Account/DeviceList", 1258 dataType: "html", 1259 data: {}, 1260 beforeSend: function () { 1261 mask.start(); 1262 }, 1263 success: function (response) { 1264 $logonpartial.html(response) 1265 }, 1266 error: function (xhr, ajaxOptions, thrownError) { 1267 Login.AjaxReady = false; 1268 mask.stop(); 1269 }, 1270 complete: function (XMLHttpRequest, status) { 1271 //è«æ±å®æå¾æçµå·è¡åæ¸ 1272 //global.log(status); 1273 if (status == 'timeout' || status == 'error') { 1274 //è¶ æ, status éæ success, error çå¼çæ æ³ 1275 //global.log(status == 'timeout'); 1276 setTimeout(function () { 1277 mask.stop(); 1278 $('#AjaxErrorModal').modal('show'); 1279 }, 250); 1280 return; 1281 } 1282 1283 mask.stop(); 1284 } 1285 }); 1286 }, 1287 1288 setValidDeviceInterface: function () { 1289 var $logonpartial = $('.logonpartial'); 1290 1291 $.ajax({
1292 type: "get", 1293 url: "/Account/ValidDevice", 1294 dataType: "html", 1295 data: {}, 1296 beforeSend: function () { 1297 mask.start(); 1298 }, 1299 success: function (response) { 1300 $logonpartial.html(response) 1301 }, 1302 error: function (xhr, ajaxOptions, thrownError) { 1303 Login.AjaxReady = false; 1304 mask.stop(); 1305 }, 1306 complete: function (XMLHttpRequest, status) { 1307 //è«æ±å®æå¾æçµå·è¡åæ¸ 1308 //global.log(status); 1309 if (status == 'timeout' || status == 'error') { 1310 //è¶ æ, status éæ success, error çå¼çæ æ³ 1311 //global.log(status == 'timeout'); 1312 setTimeout(function () { 1313 mask.stop(); 1314 $('#AjaxErrorModal').modal('show'); 1315 }, 250); 1316 return; 1317 } 1318 1319 mask.stop(); 1320 } 1321 }); 1322 } 1323}; 1324 1325//ç»åºæ¨¡çµ 1326var Logout = 1327{ 1328 init: function () { 1329 Logout.initialLogoutEvent(); 1330 }, 1331 1332 initialLogoutEvent: function () { 1333 if ($(".logout").length > 0) { 1334 $(".logout").click(function (e) { 1335 //e.preventDefault(); 1336 Logout.ClearCookie(); 1337 }); 1338 } 1339 1340 if ($("#logout").length > 0) { 1341 $("#logout").click(function (e) { 1342 //e.preventDefault(); 1343 Logout.ClearCookie(); 1344 }); 1345 } 1346 }, 1347 1348 ClearCookie: function () { 1349 CookieTool.DeleteCookieInRoot("EventEmail"); 1350 CookieTool.DeleteCookieInRoot("EventMobilePhone"); 1351 CookieTool.DeleteCookieInRoot("EventName"); 1352 CookieTool.DeleteCookieInRoot("guestId"); 1353 } 1354}
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.