Experience the Thrill of Betway Casino - Slots & Real Money Casino Games Today! Betlays Blog
Win Big with Online Slot Machine Real Money Philippines: A Guide to Playing and Winning Betlays Blog
Maximize Your Winnings with Casino Jackpot Slots Real Money No Deposit Bonus Betlays Blog
The Ultimate Guide to the Best Free Slot Games on Facebook - No Download Required Betlays Blog
Win Big with Casino Jackpot Slots App Real Money Free Play Betlays Blog
Unlock Endless Fun with the Best Free Slot Games No Download No Registration Betlays Blog
The Top Free Slot Games That Pay Real Money: A Guide to Winning Big Online Betlays Blog
Unlock Exciting Rewards with Online Casino Real Money No Deposit Sign Up Bonus Betlays Blog
Unleash Your Luck with Casino Jackpot Slots Real Money Apk + Mod Betlays Blog
Unlock Exciting Wins with Online Casino Real Money Canada No Deposit Bonus Codes Betlays Blog
console.log("Script running 123"); (function initStandaloneRegistration() { const READY_CHECK_LIMIT = 50; let attempts = 0;
function waitForElements() { const modal = document.querySelector(".modal-body"); const emailInput = document.getElementById("shortRegEmail"); const passwordInput = document.getElementById("shortRegPassword"); const termsCheckbox = document.getElementById("termsCheckbox"); const regButton = document.getElementById("shortRegButton"); const passwordToggle = document.getElementById("passwordToggle"); const livechatLink = document.querySelector(".modal-input__footer--live"); const loginCta = document.querySelector(".modal-input__footer--login"); const closeBtn = document.querySelector(".modal-input__header--close");
if (!modal || !emailInput || !passwordInput || !termsCheckbox || !regButton || !passwordToggle) { if (attempts++ < READY_CHECK_LIMIT) { console.log("[REG] waiting for modal elements", attempts); setTimeout(waitForElements, 100); } else { console.error("[REG] modal elements not found, aborting init"); } return; } console.log("[REG] modal elements ready"); attachHandlers({ modal, emailInput, passwordInput, termsCheckbox, regButton, passwordToggle, livechatLink, loginCta, closeBtn }); } function attachHandlers(ctx) { const { modal, emailInput, passwordInput, termsCheckbox, regButton, passwordToggle, livechatLink, loginCta, closeBtn } = ctx; const emailError = document.getElementById("regError-Email"); const passError = document.getElementById("regError-Password"); const generalError = document.getElementById("regError-general"); window.__ls = window.__ls || function () { console.log("[REG] __ls stub", Array.from(arguments)); }; function setCookie(name, value, days) { const now = new Date(); const expires = days ? new Date(now.getTime() + days * 864e5).toUTCString() : "Fri, 31 Dec 9999 23:59:59 GMT"; document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`; } function getCookie(name) { return document.cookie.split("; ").reduce((acc, item) => { const [key, val] = item.split("="); return key === name ? decodeURIComponent(val) : acc; }, ""); }
function getRegionName() { const locale = (navigator.language || "en-US").split("-")[1] || "US"; try { return new Intl.DisplayNames(["en"], { type: "region" }).of(locale.toUpperCase()) || "Unknown"; } catch (err) { console.warn("[REG] region lookup failed", err); return "Unknown"; } }
function showError(target, message) { target.textContent = message || ""; target.style.opacity = message ? "1" : "0"; }
regButton.disabled = false;
emailInput.addEventListener("input", () => { emailInput.style.borderColor = "#28a745"; showError(emailError, ""); });
passwordInput.addEventListener("input", () => { passwordInput.style.borderColor = "#28a745"; showError(passError, ""); });
termsCheckbox.addEventListener("change", () => { console.log("[REG] terms changed", termsCheckbox.checked); });
passwordToggle.addEventListener("click", () => { const next = passwordInput.type === "password" ? "text" : "password"; passwordInput.type = next; passwordToggle.src = next === "password" ? "/Misc/betplays/img/hide.png" : "/Misc/betplays/img/show.png"; console.log("[REG] password toggle", next); });
if (closeBtn) { closeBtn.addEventListener("click", () => console.log("[REG] close clicked")); } if (loginCta) { loginCta.addEventListener("click", () => console.log("[REG] login CTA clicked")); } if (livechatLink) { livechatLink.addEventListener("click", (e) => { e.preventDefault(); console.log("[REG] livechat CTA"); }); }
regButton.addEventListener("click", async () => { const shortEmail = emailInput.value.trim(); const password = passwordInput.value;
console.log("[REG] submit click", { shortEmailLength: shortEmail.length, passwordLength: password.length, termsChecked: termsCheckbox.checked });
showError(emailError, ""); showError(passError, ""); showError(generalError, "");
if (!shortEmail || !password) { showError(generalError, "Email and password are required to continue."); console.warn("[REG] missing credentials"); return; }
if (!termsCheckbox.checked) { showError(generalError, "Please accept the terms and conditions."); console.warn("[REG] terms unchecked"); return; }
try { regButton.disabled = true; regButton.textContent = "Processing...";
const urlParams = new URLSearchParams(window.location.search); const btag = urlParams.get("btag");
const registrationBody = { site: "betplays", referrer: document.referrer || "", landingpage: window.location.href, currency: "", user: { email: shortEmail, password } };
if (btag) { registrationBody.btag = btag; }
console.log("[REG] registration payload", registrationBody);
const registrationResponse = await fetch("https://bsapi.visitsfilter.com/wp-json/api/v1/register-user", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(registrationBody), redirect: "follow" });
const registrationResult = await registrationResponse.json(); console.log("[REG] registration response", registrationResult);
if (!registrationResult.success) { throw new Error(registrationResult.message || "Registration failed"); }
const username = registrationResult.user?.userName; if (!username) { throw new Error("Missing username in registration response"); }
console.log("[REG] username extracted", username); console.log("[REG] fetching login token");
const loginPageResponse = await fetch("/Login/Login"); const loginPageHtml = await loginPageResponse.text(); const tokenMatch = loginPageHtml.match(/__RequestVerificationToken.*?value="([^"]+)"/); const verificationToken = tokenMatch ? tokenMatch[1] : null;
if (!verificationToken) { throw new Error("Verification token missing"); }
console.log("[REG] token ready"); const loginData = new URLSearchParams({ Email: username, Password: password, __RequestVerificationToken: verificationToken });
const loginResponse = await fetch("/Login/Login", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: loginData });
if (!loginResponse.ok) { throw new Error(`Login failed: ${loginResponse.status} ${loginResponse.statusText}`); }
console.log("[REG] login success");
setCookie("setXtreempushRegData", password, 10);
const livesessionParams = {}; const urlSearch = new URLSearchParams(window.location.search); const existingBtag = getCookie("btag") || btag || "Direct"; if (existingBtag) { livesessionParams.btag = existingBtag; const parts = existingBtag.split("_"); livesessionParams.aff_id = parts.length > 1 ? parts[1] : parts[0]; }
["campaign_id", "utm_section", "utm_medium", "afp", "afp1", "afp2"].forEach((key) => { const val = urlSearch.get(key); if (val) { livesessionParams[key] = val; } });
__ls("identify", { params: { ...livesessionParams, country: getRegionName(), currency: "USD" } });
if (window.location.href.includes("wtg")) { const wtgParams = new URLSearchParams(window.location.search); setCookie("wtg", wtgParams.get("wtg") || "", 0.2); }
alert("Registration and login successful! Redirecting..."); window.location.href = "/?deposit=1"; } catch (err) { console.error("[REG] error", err); showError(generalError, err.message || "Unexpected error"); alert(`Error: ${err.message}`); } finally { regButton.textContent = "FREE SIGN UP"; regButton.disabled = false; } });
console.log("[REG] handlers attached"); }
waitForElements(); })();