1/* 2 * aff_id 3 * */ 4const trackingParams = ["a","utm_campaign","utm_source","utm_medium","utm_term","utm_content"]; 5const urlParams = new URLSearchParams(window.location.search); 6const aValue = urlParams.get("a"); 7let aff_id = "kqbd"; 8if (aValue) { 9 localStorage.setItem("aff_id", aValue); 10 aff_id = aValue; 11} else if (localStorage.getItem("aff_id")) { 12 aff_id = localStorage.getItem("aff_id"); 13} 14jQuery(document).ready(function ($) { 15 if (aff_id) { 16 let affIdMetaTag = $('meta[name="affId"]'); 17 if (affIdMetaTag.length === 0) { 18 $("head").append('<meta name="affId" content="">'); 19 affIdMetaTag = $('meta[name="affId"]'); 20 } 21 affIdMetaTag.attr("content", aff_id); 22 if ($("form#loginForm").length) { 23 $("form#loginForm").append( 24 '<input type="hidden" name="aff_id" value="' + aff_id + '">' 25 ); 26 } 27 if ($("form#registerForm").length) { 28 $("form#registerForm").append( 29 '<input type="hidden" name="aff_id" value="' + aff_id + '">' 30 ); 31 } 32 } 33 $("form#registerForm").append( 34 '<input type="hidden" name="doibong" value="">' 35 ); 36 var dbArray = []; 37 $item = 1; 38 $('.doibong option').each(function(){ 39 var img = $(this).attr("data-thumbnail"); 40 var text = this.innerText; 41 var value = $(this).val(); 42 var item = '<li><img src="'+ img +'" alt="" value="'+value+'"/><span>'+ text +'</span></li>'; 43 dbArray.push(item); 44 if ( $item == 1 ) { 45 $("#registerForm").find('input[name="doibong"]').val(value); 46 } 47 $item += 1; 48 }) 49 50 $('#a').html(dbArray); 51 52 //Set the button value to the first el of the array 53 $('.btn-select').html(dbArray[0]); 54 $('.btn-select').attr('value', 'en'); 55 56 //change button stuff on click 57 $('#a li').click(function(){ 58 var img = $(this).find('img').attr("src"); 59 var value = $(this).find('img').attr('value'); 60 var text = this.innerText; 61 var item = '<li><img src="'+ img +'" alt="" /><span>'+ text +'</span></li>'; 62 $('.btn-select').html(item); 63 $('.btn-select').attr('value', value); 64 $("#registerForm").find('input[name="doibong"]').val(value); 65 $(".b").toggle(); 66 //console.log(value); 67 }); 68 69 $(".btn-select").click(function(){ 70 $(".b").toggle(); 71 }); 72 73 //check local storage for the lang 74 var sessionLang = localStorage.getItem('lang'); 75 if (sessionLang){ 76 //find an item with value of sessionLang 77 var langIndex = dbArray.indexOf(sessionLang); 78 $('.btn-select').html(dbArray[langIndex]); 79 $('.btn-select').attr('value', sessionLang); 80 } else { 81 var langIndex = dbArray.indexOf('ch'); 82 console.log(langIndex); 83 $('.btn-select').html(dbArray[langIndex]); 84 //$('.btn-select').attr('value', 'en'); 85 } 86}); 87 88var utm_campaign = ""; 89var utm_source = ""; 90var utm_medium = ""; 91var utm_term = ""; 92var utm_content = "form"; 93const dynamic_params = true; // Change to true if want to use the tracking params from url 94const linkClassName = '.btn-utm-link a'; // Add links class to replace dynamic params 95for (const trackingParam of trackingParams) { 96 let fieldParam = (trackingParam == 'a') ? 'aff_id' : trackingParam; 97 const aValue = dynamic_params ? urlParams.get(trackingParam) : window[fieldParam]; 98 if (aValue) { 99 localStorage.setItem(fieldParam, aValue); 100 window[fieldParam] = dynamic_params ? aValue : window[fieldParam]; 101 } else if (localStorage.getItem(fieldParam)) { 102 window[fieldParam] = dynamic_params ? localStorage.getItem(fieldParam) : window[fieldParam]; 103 } 104} 105if (linkClassName.length > 0) { 106 let utmLinks = document.querySelectorAll(linkClassName); 107 if (utmLinks.length > 0) { 108 for (const utmLink of utmLinks) { 109 const linkUrl = new URL(utmLink.href); 110 const linkHref = linkUrl.origin + linkUrl.pathname; 111 let linkParams = new URLSearchParams(linkUrl.search); 112 for (const trackingParam of trackingParams) { 113 let fieldParam = trackingParam == 'a' ? 'aff_id' : trackingParam; 114 if (trackingParam != 'utm_content' && window[fieldParam] && window[fieldParam] != 'null') { 115 linkParams.set(trackingParam,window[fieldParam]); 116 } 117 } 118 const dymamicLink = linkHref + '?' + linkParams.toString(); 119 utmLink.setAttribute('href', dymamicLink); 120 } 121 } 122} 123 124/* 125 * Register Form 126 * */ 127jQuery(document).ready(function ($) { 128 /* $("#email").on({ 129 keyup: function() { 130 $(this).val($(this).val().replace(/"|'| /g, '')); 131 }, 132 mouseout: function() { 133 $(this).val($(this).val().replace(/"|'| /g, '')); 134 } 135 }); 136 $("#phone, #dudoan").on({ 137 keyup: function() { 138 $(this).val($(this).val().replace(/[^0-9]/g, '')); 139 }, 140 mouseout: function() { 141 $(this).val($(this).val().replace(/[^0-9]/g, '')); 142 } 143 }); /**/ 144 $(".j-register-form .show-pass").on("click", function (e) { 145 const inputEl = $(this).closest(".form-group").find("input"); 146 $(this).hasClass("fa-eye-slash") 147 ? ($(this).removeClass("fa-eye-slash"), $(this).addClass("fa-eye"), inputEl.attr("type", "password")) 148 : ($(this).removeClass("fa-eye"), $(this).addClass("fa-eye-slash"), inputEl.attr("type", "text")); 149 }); 150 $('.j-register-bg, .j-register-x').click(function() { 151 $('.j-register').hide(); 152 }); 153 $('.j-show-form').click(function() { 154 $('.j-register').show(); 155 }); 156 $('.tablinks').click(function() { 157 const dataTab = $(this).attr("data-tab") 158 $('.tablinks').removeClass("active"); 159 $(".tabCont").hide(); 160 $(this).addClass("active") 161 $("." + dataTab).show(); 162 if(dataTab == 'vip') { 163 $(".errors").hide(); 164 } else { 165 $(".errors").show(); 166 } 167 }); 168 // $('.btnsubmit').click(function() { 169 // $(".j-otp").attr("disabled", "disabled"); 170 // $(".otp-error").html('OTP Äang ÄÆ°á»£c gá»i, vui lòng chá» trong giây lát.'); 171 // $(".otp-error").removeClass('hidden'); 172 // let min = Math.ceil(100); 173 // let max = Math.floor(6000); 174 // let randomNumber = Math.floor(Math.random() * (max - min) + min); 175 // setTimeout(function() { 176 // // Function to be executed after the delay 177 // console.log (randomNumber); 178 // onRegister(); 179 // }, randomNumber); 180 // return !1; 181 // }); 182 $.validator.addMethod( 183 "regex", 184 function (n, e, t) { 185 var r = new RegExp(t); 186 return this.optional(e) || r.test(n); 187 }, 188 "" 189 ), 190 onRegisterFrmSubmit(); 191}); 192var showErrors = function () { 193 if (!jQuery(".phone-error").hasClass('hidden')) { 194 jQuery(".phone-error").addClass('hidden'); 195 } 196 if (!jQuery(".otp-error").hasClass('hidden')) { 197 jQuery(".otp-error").addClass('hidden'); 198 } 199 jQuery(".phone-error, .otp-error").html(''); 200 if ((!jQuery('#phone-error').length || (jQuery('#phone-error').length && jQuery('#phone-error').is(":hidden"))) && jQuery('#phone').val() 201 && (!jQuery('#email-error').length || (jQuery('#email-error').length && jQuery('#email-error').is(":hidden"))) && jQuery('#email').val() 202 && (!jQuery('#username-error').length || (jQuery('#username-error').length && jQuery('#username-error').is(":hidden"))) && jQuery('#username').val()) { 203 jQuery(".j-otp").removeAttr("disabled"); 204 } else { 205 jQuery(".j-otp").attr("disabled", "disabled"); 206 } 207}; 208var onRegisterFrmSubmit = function () { 209 jQuery.validator.addMethod( 210 "phoneVN", 211 function (phone_number, element) { 212 phone_number = phone_number.replace(/\s+/g, ""); 213 return ( 214 this.optional(element) || 215 (phone_number.length >= 10 && phone_number.match(/^\+?[0-9]+$/)) 216 ); 217 }, 218 "Sá» Äiá»n thoại không hợp lá»." 219 ); 220 jQuery.validator.addMethod( 221 "pwdSpecial", 222 function (pwd, element) { 223 pwd = pwd.replace(/\s+/g, ""); 224 return ( 225 this.optional(element) || 226 (pwd.match(/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*?&-_]{6,32}$/g)) 227 ); 228 }, 229 "Máºt khẩu chứa Ãt nhất 1 ký tá»± sá», 1 ký tá»± chữ." 230 ); 231 jQuery("#registerForm").validate({ 232 rules: { 233 phone: { 234 required: !0, 235 regex: /^0[0-9]*$/g, 236 minlength: 10, 237 maxlength: 10, 238 phoneVN: true, 239 }, 240 username: { 241 required: !0, 242 regex: /^[A-Za-zÃ-ỹ ]*$/g, 243 minlength: 6, 244 maxlength: 29, 245 }, 246 password: { 247 required: !0, 248 minlength: 8, 249 maxlength: 29, 250 regex: /^[A-Za-z\d@$!%*?&-_]{6,32}$/g, 251 pwdSpecial: true, 252 }, 253 repeat_pwd: { 254 required: !0, 255 equalTo: "#pwd", 256 }, 257 email: { 258 required: !0, 259 // regex: /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/g, 260 regex: /^[A-Za-z\d]+@[A-Za-z\d]+\.[A-Za-z\d\.]{2,}$/g, 261 minlength: 6, 262 }, 263 otp: { 264 required: !0, 265 regex: /^[A-Za-z0-9]*$/g, 266 minlength: 6, 267 maxlength: 20, 268 }, 269 dudoan: { 270 required: !0, 271 regex: /^[1-9][0-9]*$/g, 272 minlength: 1, 273 maxlength: 10, 274 }, 275 }, 276 messages: { 277 phone: { 278 required: "Nháºp sá» Äiá»n thoại.", 279 minlength: "Vui lòng không nháºp Ãt hÆ¡n 10 ký tá»±.", 280 maxlength: "Vui lòng không nháºp nhiá»u hÆ¡n 10 ký tá»±.", 281 regex: "Sá» Äiá»n thoại bắt Äầu từ 0. Và dụ: 0909123456.", 282 }, 283 username: { 284 required: "Vui lòng nháºp há» tên.", 285 minlength: "Há» tên Ãt nhất 6 kà tá»±.", 286 maxlength: "Há» tên tá»i Äa 29 ký tá»±.", 287 regex: "Há» tên không hợp lá».", 288 }, 289 password: { 290 required: "Vui lòng nháºp máºt khẩu.", 291 minlength: "Máºt khẩu Ãt nhất 8 kà tá»±.", 292 maxlength: "Máºt khẩu tá»i Äa 29 ký tá»±.", 293 regex: "Máºt khẩu không chứa ký tá»± dấu.", 294 }, 295 repeat_pwd: { 296 required: "Vui lòng nháºp xác nháºn máºt khẩu.", 297 equalTo: "Xác nháºn máºt khẩu không trùng khá»p.", 298 }, 299 email: { 300     required: "Vui lòng nháºp email.", 301 minlength: "Email Ãt nhất 6 kà tá»±.", 302 regex: "Email không hợp lá».", 303 }, 304 otp: { 305 required: "Vui lòng nháºp OTP.", 306 minlength: "OTP Ãt nhất 6 kà tá»±.", 307 maxlength: "OTP tá»i Äa 20 ký tá»±.", 308 regex: "OTP không hợp lá».", 309 }, 310 dudoan: { 311 required: "Nháºp sá» ngưá»i dá»± Äoán giá»ng bạn.", 312 minlength: "Vui lòng không nháºp Ãt hÆ¡n 1 ký tá»±.", 313 maxlength: "Vui lòng không nháºp nhiá»u hÆ¡n 10 ký tá»±.", 314 regex: "Sá» ngưá»i dá»± Äoán giá»ng bạn phải > 0", 315 }, 316 }, 317 errorElement: "div", 318 errorPlacement: function (n, e) { 319 n.addClass("errors"), 320 "checkbox" === e.prop("type") 321 ? n.insertAfter(e.parent("label")) 322 : n.insertAfter(e); 323 }, 324 highlight: function (n, e, t) {}, 325 unhighlight: function (n, e, t) {}, 326 showErrors: function (n, e) { 327 this.defaultShowErrors(); 328 showErrors(); 329 }, 330 submitHandler: function (n) { 331 jQuery(".btnsubmit").css('pointer-events','none'); 332 jQuery(".otp-error").html('Thông tin ÄÄng ký Äang ÄÆ°á»£c gá»i Äi.'); 333 jQuery(".otp-error").removeClass('hidden'); 334 // let min = Math.ceil(100); 335 // let max = Math.floor(6000); 336 // let randomNumber = Math.floor(Math.random() * (max - min) + min); 337 // setTimeout(function() { 338 // // Function to be executed after the delay 339 // console.log (randomNumber); 340 // onRegister(); 341 // }, randomNumber); 342 // return !1;
343 return onRegister(), !1; 344 // return onUpdate(), !1; 345 }, 346 }); 347}; 348var conf = { 349wg: "kqbd", 350}; 351 352function httpGet(theUrl) 353{ 354 let xmlhttp; 355 356 if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari 357 xmlhttp=new XMLHttpRequest(); 358 } else { // code for IE6, IE5 359 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 360 } 361 362 xmlhttp.onreadystatechange=function() { 363 if (xmlhttp.readyState==4 && xmlhttp.status==200) { 364 return xmlhttp.responseText; 365 } 366 } 367 xmlhttp.open("GET", theUrl, false); 368 xmlhttp.send(); 369 370 return xmlhttp.response; 371} 372 373var onRegister = function () { 374 var $ = jQuery; 375 376 var formData = {}; 377 $("#registerForm") 378 .find("input, select") 379 .each(function (index, element) { 380 formData[$(element).attr("name")] = $(element).val(); 381 }); 382 383 $.ajax({ 384 url: "/wp-json/custom-api/v1/add-khach-hang", 385 type: "POST", 386 contentType: "application/json", 387 data: JSON.stringify(formData), 388 beforeSend: function (xhr) { 389 xhr.setRequestHeader( 390 "X-CSRF-Token", 391 $('meta[name="csrf-token"]').attr("content") 392 ); 393 }, 394 dataType: "json", 395 success: function (e, t) { 396 console.log('e', e); 397 // Tracking DataLayer 398 if (typeof dataLayer !== "undefined") { 399 dataLayer.push({ event: "formSubmitted", formName: "Form_Register" }); 400 // dataLayer.push({ event: "formRegister", formName: "Form_Register" }); 401 } 402 if (typeof _mgq !== "undefined") _mgq.push(["MgSensorInvoke", "DangKy"]); 403 if (typeof fbq !== "undefined") fbq("track", "CompleteRegistration"); 404 405 // Remove value on field when request success and navigation to back 406 // $("#registerForm").find('input[name="username"]').val(""); 407 $("#registerForm").find('input[name="dudoan"]').val(""); 408 $("#registerForm").find('input[name="phone"]').val(""); 409 $("#registerForm").find('input[name="email"]').val(""); 410 // $(".phone-error").html(''); 411 // $(".phone-error").addClass('hidden'); 412 $(".otp-error").html('Cám Æ¡n bạn Äã tham gia.'); 413 $(".otp-error").removeClass('hidden'); 414 $('.btnsubmit').css('pointer-events','auto');/**/ 415 416 // Make the AJAX request 417 $.ajax({ 418 url: "/wp-json/custom-api/v1/ds", 419 type: 'POST', 420 data: { 421 action: 'lay_danh_sach_khach_hang_cpt' 422 }, 423 success: function(response) { 424 if (response) { 425 $('.participant-table tbody').html(response); 426 } 427 } 428 }); 429 430 // const uri = '#'; 431 // const encoded = encodeURI(uri); 432 433 // Remove loading state 434 }, 435 error: function (e, t, n) { 436 $("#alert-modal").append( 437 `<button type="button" class="mfp-close"></button>` 438 ); 439 $("#alert-modal h4").html("Thông báo"); 440 441 let type = e?.responseJSON?.type; 442 let error = e?.responseJSON?.error; 443 444 console.log('e', e); 445 446 console.log('error', error); 447 448 // $("#alert-modal p").html(message); 449 // $('[href="#alert-modal"]').click(); 450 // $(".otp-error").addClass('hidden'); 451 $(".otp-error").html(error); 452 $(".otp-error").removeClass('hidden'); 453 // $(".j-success").addClass('hidden'); 454 // $(".j-success").removeClass('free'); 455 }, 456 }); 457}; 458 459var onUpdate = function () { 460 var $ = jQuery; 461 462 $(".btnsubmit").attr("disabled", "disabled"); 463 $(".otp-error").html('Há» thá»ng Äang xá» lý, vui lòng chá» trong giây lát.'); 464 $(".otp-error").removeClass('hidden'); 465 466 var formData = {}; 467 $("#registerForm") 468 .find('input[type="text"], select, input[type="radio"]:checked') 469 .each(function (index, element) { 470 formData[$(element).attr("name")] = $(element).val(); 471 }); 472 473 $.ajax({ 474 url: "/wp-json/custom-api/v1/update-khach-hang", 475 type: "POST", 476 contentType: "application/json", 477 data: JSON.stringify(formData), 478 beforeSend: function (xhr) { 479 xhr.setRequestHeader( 480 "X-CSRF-Token", 481 $('meta[name="csrf-token"]').attr("content") 482 ); 483 }, 484 dataType: "json", 485 success: function (e, t) { 486 console.log('e', e); 487 // Tracking DataLayer 488 if (typeof dataLayer !== "undefined") { 489 dataLayer.push({ event: "formSubmitted", formName: "Form_Register" }); 490 // dataLayer.push({ event: "formRegister", formName: "Form_Register" }); 491 } 492 if (typeof _mgq !== "undefined") _mgq.push(["MgSensorInvoke", "DangKy"]); 493 if (typeof fbq !== "undefined") fbq("track", "CompleteRegistration"); 494 495 // Remove value on field when request success and navigation to back 496 $("#registerForm").find('input[name="username"]').val(""); 497 $("#registerForm").find('input[type="password"]').val(""); 498 $("#registerForm").find('input[name="phone"]').val(""); 499 $("#registerForm").find('input[name="email"]').val(""); 500 $(".phone-error, .otp-error").html(''); 501 $(".phone-error, .otp-error").addClass('hidden'); 502 /*$('.btnsubmit').css('pointer-events','none');/**/ 503 const uri = '#'; 504 const encoded = encodeURI(uri); 505 506 // Remove loading state 507 document.querySelector(".mfp-close").click(); 508 let dateString = $('input[name="ngay"]:checked').val(); 509 let formattedDate = new Date(dateString); 510 var d = formattedDate.getDate(); 511 var m = formattedDate.getMonth(); 512 m += 1; 513 var y = formattedDate.getFullYear(); 514 if (d < 10) { 515 d = "0" + d; 516 } 517 if (m < 10) { 518 m = "0" + m; 519 } 520 let newDate = d + "/" + m + "/" + y; 521 522 $(".date").html(newDate); 523 $(".tabCont").hide(); 524 $(".free").addClass('hidden'); 525 $(".j-success").addClass('free'); 526 $(".j-success").removeClass('hidden'); 527 $(".j-success").show(); 528 }, 529 error: function (e, t, n) { 530 $("#alert-modal").append( 531 `<button type="button" class="mfp-close"></button>` 532 ); 533 $("#alert-modal h4").html("Thông báo"); 534 535 let error = e?.responseJSON?.error; 536 537 console.log('e', e); 538 539 console.log('error', error); 540 541 // $("#alert-modal p").html(message); 542 // $('[href="#alert-modal"]').click(); 543 $(".phone-error, .otp-error").html(''); 544 $(".phone-error, .otp-error").addClass('hidden'); 545 if (error === 'phone') { 546 $(".phone-error").html('Sá» Äiá»n thoại nà y chưa xác thá»±c.'); 547 $(".phone-error").removeClass('hidden'); 548 } else { 549 if (error === 'otp') { 550 $(".otp-error").html('Mã OTP không chÃnh xác.'); 551 } else if (error === 'email') { 552 $(".otp-error").html('Email Äã ÄÆ°á»£c sá» dụng.'); 553 } else if (error === 'exists') { 554 $(".otp-error").html('Sá» Äiá»n thoại nà y Äã nháºn vé.'); 555 } else { 556 $(".otp-error").html(error); 557 } 558 $(".otp-error").removeClass('hidden'); 559 } 560 $(".j-success").addClass('hidden'); 561 $(".j-success").removeClass('free'); 562 $(".btnsubmit").removeAttr("disabled"); 563 }, 564 }); 565};
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.