| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 |
- @using LotteryWebApp.Languages
- @using Microsoft.AspNetCore.Http
- @{
- var shouldAutoCheckFreeTicket = Context.Session.GetString("Millions.FreeTicket.AutoChecked") != "1";
- }
- <link rel="stylesheet" href="~/Millions/css/popup-free-ticket.css" asp-append-version="true" />
- <aside class="free-ticket-popup" aria-labelledby="freeTicketTitle">
- <a class="free-ticket-popup__card"
- href="#"
- id="freeTicketClaimButton"
- aria-label="Get your free ticket">
- <img class="free-ticket-popup__image"
- src="~/Millions/assets/images/free-ticket-floating-icon.png"
- alt="" aria-hidden="true" />
- <strong class="free-ticket-popup__ticket-text">
- @Lang.millions_free<br />@Lang.millions_ticket
- </strong>
- <strong class="free-ticket-popup__button-text" id="freeTicketTitle">
- @Lang.millions_free @Lang.millions_ticket
- </strong>
- </a>
- </aside>
- <div class="free-ticket-result" id="freeTicketResultModal" role="dialog" aria-modal="true"
- aria-labelledby="freeTicketResultTitle" aria-describedby="freeTicketResultDescription" hidden>
- <div class="free-ticket-result__backdrop" data-free-ticket-close></div>
- <section class="free-ticket-result__panel">
- <h2 class="free-ticket-visually-hidden" id="freeTicketResultTitle">@Lang.free_ticket_waiting_title</h2>
- <p class="free-ticket-visually-hidden" id="freeTicketResultDescription">@Lang.free_ticket_waiting_description</p>
- <img class="free-ticket-result__image"
- src="~/Millions/assets/images/free-ticket-success-no-text.png"
- alt="" aria-hidden="true" />
- <strong class="free-ticket-result__copy free-ticket-result__copy--badge">@Lang.free_ticket_success_badge</strong>
- <h2 class="free-ticket-result__copy free-ticket-result__copy--title">@Lang.free_ticket_success_title</h2>
- <p class="free-ticket-result__copy free-ticket-result__copy--received">@Lang.free_ticket_success_received</p>
- <p class="free-ticket-result__copy free-ticket-result__copy--ticket">@Lang.free_ticket_success_ticket</p>
- <p class="free-ticket-result__copy free-ticket-result__copy--chance">@Lang.free_ticket_success_chance</p>
- <strong class="free-ticket-result__copy free-ticket-result__copy--prize">30,000,000 HTG!</strong>
- <span class="free-ticket-result__copy free-ticket-result__copy--use">@Lang.free_ticket_success_use</span>
- <span class="free-ticket-result__copy free-ticket-result__copy--later">@Lang.free_ticket_success_later</span>
- <p class="free-ticket-result__copy free-ticket-result__copy--validity">@Lang.free_ticket_success_validity</p>
- <button type="button" class="free-ticket-result__action free-ticket-result__action--dismiss-icon"
- data-free-ticket-close aria-label="@Lang.millions_close"></button>
- <a class="free-ticket-result__action free-ticket-result__action--use"
- href="@Url.Action("BuyTicket", "Home", new { area = "Millions", freeTicketMode = "1" })"
- aria-label="@Lang.free_ticket_buy_now"></a>
- <button type="button" class="free-ticket-result__action free-ticket-result__action--later"
- data-free-ticket-close aria-label="@Lang.millions_close"></button>
- </section>
- </div>
- <div class="free-ticket-error-43" id="freeTicketError43Modal" role="dialog" aria-modal="true"
- aria-labelledby="freeTicketError43Title" aria-describedby="freeTicketError43Description" hidden>
- <div class="free-ticket-error-43__backdrop" data-free-ticket-error-43-close></div>
- <section class="free-ticket-error-43__panel">
- <h2 class="free-ticket-visually-hidden" id="freeTicketError43Title">@Lang.free_ticket_error_43_title</h2>
- <p class="free-ticket-visually-hidden" id="freeTicketError43Description">
- @Lang.free_ticket_error_43_description
- </p>
- <img class="free-ticket-error-43__image"
- src="~/Millions/assets/images/free-ticket-error-43-no-text.png"
- alt="" aria-hidden="true" />
- <strong class="free-ticket-error-43__copy free-ticket-error-43__copy--badge">@Lang.free_ticket_error_43_badge</strong>
- <h2 class="free-ticket-error-43__copy free-ticket-error-43__copy--title">@Lang.free_ticket_error_43_title</h2>
- <p class="free-ticket-error-43__copy free-ticket-error-43__copy--description">@Lang.free_ticket_error_43_description</p>
- <strong class="free-ticket-error-43__copy free-ticket-error-43__copy--daily-title">@Lang.free_ticket_error_43_daily_title</strong>
- <p class="free-ticket-error-43__copy free-ticket-error-43__copy--daily-description">@Lang.free_ticket_error_43_daily_description</p>
- <span class="free-ticket-error-43__copy free-ticket-error-43__copy--buy">@Lang.millions_buy_ticket_label</span>
- <span class="free-ticket-error-43__copy free-ticket-error-43__copy--close">@Lang.millions_close</span>
- <p class="free-ticket-error-43__copy free-ticket-error-43__copy--footer">@Lang.free_ticket_error_43_footer</p>
- <button type="button" class="free-ticket-error-43__action free-ticket-error-43__action--dismiss-icon"
- data-free-ticket-error-43-close aria-label="@Lang.millions_close"></button>
- <a class="free-ticket-error-43__action free-ticket-error-43__action--buy"
- href="@Url.Action("BuyTicket", "Home", new { area = "Millions" })"
- aria-label="@Lang.millions_buy_ticket_label"></a>
- <button type="button" class="free-ticket-error-43__action free-ticket-error-43__action--close"
- data-free-ticket-error-43-close aria-label="@Lang.millions_close"></button>
- </section>
- </div>
- <div class="free-ticket-error-44" id="freeTicketError44Modal" role="dialog" aria-modal="true"
- aria-labelledby="freeTicketError44Title" aria-describedby="freeTicketError44Description" hidden>
- <div class="free-ticket-error-44__backdrop" data-free-ticket-error-44-close></div>
- <section class="free-ticket-error-44__panel">
- <h2 class="free-ticket-visually-hidden" id="freeTicketError44Title">@Lang.free_ticket_waiting_title</h2>
- <p class="free-ticket-visually-hidden" id="freeTicketError44Description">
- @Lang.free_ticket_waiting_description
- </p>
- <img class="free-ticket-error-44__image"
- src="~/Millions/assets/images/free-ticket-error-44-no-text.png"
- alt="" aria-hidden="true" />
- <strong class="free-ticket-error-44__copy free-ticket-error-44__copy--badge">@Lang.free_ticket_waiting_badge</strong>
- <h2 class="free-ticket-error-44__copy free-ticket-error-44__copy--title">@Lang.free_ticket_waiting_title</h2>
- <p class="free-ticket-error-44__copy free-ticket-error-44__copy--description">@Lang.free_ticket_waiting_description</p>
- <p class="free-ticket-error-44__copy free-ticket-error-44__copy--chance">@Lang.free_ticket_success_chance</p>
- <strong class="free-ticket-error-44__copy free-ticket-error-44__copy--prize">30,000,000 HTG!</strong>
- <span class="free-ticket-error-44__copy free-ticket-error-44__copy--buy">@Lang.free_ticket_buy_now</span>
- <span class="free-ticket-error-44__copy free-ticket-error-44__copy--close">@Lang.millions_close</span>
- <p class="free-ticket-error-44__copy free-ticket-error-44__copy--footer">@Lang.free_ticket_waiting_validity</p>
- <button type="button" class="free-ticket-error-44__action free-ticket-error-44__action--dismiss-icon"
- data-free-ticket-error-44-close aria-label="@Lang.millions_close"></button>
- <a class="free-ticket-error-44__action free-ticket-error-44__action--buy"
- href="@Url.Action("BuyTicket", "Home", new { area = "Millions", freeTicketMode = "1" })"
- aria-label="@Lang.free_ticket_buy_now"></a>
- <button type="button" class="free-ticket-error-44__action free-ticket-error-44__action--close"
- data-free-ticket-error-44-close aria-label="@Lang.millions_close"></button>
- </section>
- </div>
- <div class="free-ticket-error-45" id="freeTicketError45Modal" role="dialog" aria-modal="true"
- aria-label="Free Tickets Are Sold Out" hidden>
- <div class="free-ticket-error-45__backdrop" data-free-ticket-error-45-close></div>
- <section class="free-ticket-error-45__panel">
- <img class="free-ticket-error-45__image"
- src="~/Millions/assets/images/free-ticket-error-45-no-text.png"
- alt="" aria-hidden="true" />
- <strong class="free-ticket-error-45__copy free-ticket-error-45__copy--ticket-free">@Lang.free_ticket_error_45_ticket_free</strong>
- <strong class="free-ticket-error-45__copy free-ticket-error-45__copy--ticket-tickets">@Lang.free_ticket_error_45_ticket_tickets</strong>
- <strong class="free-ticket-error-45__copy free-ticket-error-45__copy--ticket-sold-out">@Lang.free_ticket_error_45_ticket_sold_out</strong>
- <h2 class="free-ticket-error-45__copy free-ticket-error-45__copy--title">
- @Lang.free_ticket_error_45_title <span>@Lang.free_ticket_error_45_title_emphasis</span>
- </h2>
- <p class="free-ticket-error-45__copy free-ticket-error-45__copy--description">@Lang.free_ticket_error_45_description</p>
- <strong class="free-ticket-error-45__copy free-ticket-error-45__copy--next-title">@Lang.free_ticket_error_45_next_title</strong>
- <p class="free-ticket-error-45__copy free-ticket-error-45__copy--next-primary">@Lang.free_ticket_error_45_next_primary</p>
- <p class="free-ticket-error-45__copy free-ticket-error-45__copy--next-secondary">@Lang.free_ticket_error_45_next_secondary</p>
- <span class="free-ticket-error-45__copy free-ticket-error-45__copy--buy">@Lang.millions_buy_ticket_label</span>
- <span class="free-ticket-error-45__copy free-ticket-error-45__copy--close">@Lang.millions_close</span>
- <p class="free-ticket-error-45__copy free-ticket-error-45__copy--footer">@Lang.free_ticket_error_45_footer</p>
- <button type="button" class="free-ticket-error-45__action free-ticket-error-45__action--dismiss-icon"
- data-free-ticket-error-45-close aria-label="@Lang.millions_close"></button>
- <a class="free-ticket-error-45__action free-ticket-error-45__action--buy"
- href="@Url.Action("BuyTicket", "Home", new { area = "Millions" })"
- aria-label="@Lang.millions_buy_ticket_label"></a>
- <button type="button" class="free-ticket-error-45__action free-ticket-error-45__action--close"
- data-free-ticket-error-45-close aria-label="@Lang.millions_close"></button>
- </section>
- </div>
- <script>
- (function () {
- var popup = document.querySelector('.free-ticket-popup');
- var claimButton = document.getElementById('freeTicketClaimButton');
- var resultModal = document.getElementById('freeTicketResultModal');
- var error43Modal = document.getElementById('freeTicketError43Modal');
- var error44Modal = document.getElementById('freeTicketError44Modal');
- var error45Modal = document.getElementById('freeTicketError45Modal');
- var error43ReturnFocus = null;
- var error44ReturnFocus = null;
- var error45ReturnFocus = null;
- if (!popup) return;
- function showFreeTicketResult(result) {
- if (!resultModal || !result || String(result.responseCode) !== '0' || !result.code) {
- return false;
- }
- resultModal.hidden = false;
- document.body.classList.add('free-ticket-result-open');
- return true;
- }
- function showFreeTicketError43() {
- if (!error43Modal) return false;
- error43ReturnFocus = document.activeElement;
- error43Modal.hidden = false;
- document.body.classList.add('free-ticket-result-open');
- var closeButton = error43Modal.querySelector('[data-free-ticket-error-43-close]');
- if (closeButton) closeButton.focus();
- return true;
- }
- function closeFreeTicketError43() {
- if (!error43Modal) return;
- error43Modal.hidden = true;
- document.body.classList.remove('free-ticket-result-open');
- if (error43ReturnFocus && typeof error43ReturnFocus.focus === 'function') {
- error43ReturnFocus.focus();
- }
- }
- if (error43Modal) {
- error43Modal.querySelectorAll('[data-free-ticket-error-43-close]').forEach(function (closeButton) {
- closeButton.addEventListener('click', closeFreeTicketError43);
- });
- error43Modal.addEventListener('keydown', function (event) {
- if (event.key === 'Escape') closeFreeTicketError43();
- });
- }
- function showFreeTicketError44(result) {
- if (!error44Modal) return false;
- error44ReturnFocus = document.activeElement;
- error44Modal.hidden = false;
- document.body.classList.add('free-ticket-result-open');
- var closeButton = error44Modal.querySelector('[data-free-ticket-error-44-close]');
- if (closeButton) closeButton.focus();
- return true;
- }
- function closeFreeTicketError44() {
- if (!error44Modal) return;
- error44Modal.hidden = true;
- document.body.classList.remove('free-ticket-result-open');
- if (error44ReturnFocus && typeof error44ReturnFocus.focus === 'function') {
- error44ReturnFocus.focus();
- }
- }
- if (error44Modal) {
- error44Modal.querySelectorAll('[data-free-ticket-error-44-close]').forEach(function (closeButton) {
- closeButton.addEventListener('click', closeFreeTicketError44);
- });
- error44Modal.addEventListener('keydown', function (event) {
- if (event.key === 'Escape') closeFreeTicketError44();
- });
- }
- function showFreeTicketError45() {
- if (!error45Modal) return false;
- error45ReturnFocus = document.activeElement;
- error45Modal.hidden = false;
- document.body.classList.add('free-ticket-result-open');
- var closeButton = error45Modal.querySelector('[data-free-ticket-error-45-close]');
- if (closeButton) closeButton.focus();
- return true;
- }
- function closeFreeTicketError45() {
- if (!error45Modal) return;
- error45Modal.hidden = true;
- document.body.classList.remove('free-ticket-result-open');
- if (error45ReturnFocus && typeof error45ReturnFocus.focus === 'function') {
- error45ReturnFocus.focus();
- }
- }
- if (error45Modal) {
- error45Modal.querySelectorAll('[data-free-ticket-error-45-close]').forEach(function (closeButton) {
- closeButton.addEventListener('click', closeFreeTicketError45);
- });
- error45Modal.addEventListener('keydown', function (event) {
- if (event.key === 'Escape') closeFreeTicketError45();
- });
- }
- if (resultModal) {
- resultModal.querySelectorAll('[data-free-ticket-close]').forEach(function (closeButton) {
- closeButton.addEventListener('click', function () {
- resultModal.hidden = true;
- document.body.classList.remove('free-ticket-result-open');
- });
- });
- }
- if (claimButton) {
- var freeTicketMessages = {
- '38': @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Lang.get_free_ticket_code_38)),
- '39': @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Lang.get_free_ticket_code_39)),
- '40': @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Lang.get_free_ticket_code_40)),
- '41': @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Lang.get_free_ticket_code_41)),
- '42': @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Lang.get_free_ticket_code_42)),
- '43': @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Lang.get_free_ticket_code_43)),
- '44': @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Lang.get_free_ticket_code_44))
- };
- if (@(shouldAutoCheckFreeTicket ? "true" : "false") && document.getElementById('playNowSection')) {
- document.addEventListener('DOMContentLoaded', function () {
- var initialVerificationToken = document.querySelector('input[name="__RequestVerificationToken"]');
- $.ajax({
- url: subDomain + '@Url.Action("GetFreeTicket", "Home", new { area = "Millions" })',
- type: 'POST',
- data: {
- __RequestVerificationToken: initialVerificationToken ? initialVerificationToken.value : '',
- type: '1'
- },
- success: function (result) {
- if (result && String(result.responseCode) === '0' && result.code) {
- showFreeTicketError44(result);
- }
- }
- });
- });
- }
- claimButton.addEventListener('click', function (event) {
- event.preventDefault();
- if (claimButton.dataset.loading === 'true') return;
- var verificationToken = document.querySelector('input[name="__RequestVerificationToken"]');
- claimButton.dataset.loading = 'true';
- claimButton.classList.add('free-ticket-popup__card--loading');
- $.ajax({
- url: subDomain + '@Url.Action("GetFreeTicket", "Home", new { area = "Millions" })',
- type: 'POST',
- data: {
- __RequestVerificationToken: verificationToken ? verificationToken.value : ''
- },
- success: function (result) {
- if (showFreeTicketResult(result)) {
- return;
- }
- var responseCode = result && result.responseCode
- ? String(result.responseCode)
- : '';
- if (responseCode === '43' && showFreeTicketError43()) {
- return;
- }
- if (responseCode === '44' && showFreeTicketError44(result)) {
- return;
- }
- if (responseCode === '45' && showFreeTicketError45()) {
- return;
- }
- var responseMessage = freeTicketMessages[responseCode]
- || (result && result.responseMessage)
- || 'Unable to get free ticket.';
- window.alert(responseMessage);
- },
- error: function () {
- window.alert('Unable to get free ticket.');
- },
- complete: function () {
- claimButton.dataset.loading = 'false';
- claimButton.classList.remove('free-ticket-popup__card--loading');
- }
- });
- });
- }
- function alignFreeTicketIcon() {
- var millionsFrame = document.querySelector('.main-content, .main-container');
- var playNowSection = document.getElementById('playNowSection');
- if (!millionsFrame) {
- popup.style.left = '';
- popup.style.right = '10px';
- return;
- }
- var frameRect = millionsFrame.getBoundingClientRect();
- var popupWidth = popup.getBoundingClientRect().width;
- popup.style.left = Math.max(8, frameRect.right - popupWidth - 15) + 'px';
- popup.style.right = 'auto';
- if (playNowSection) {
- var playRect = playNowSection.getBoundingClientRect();
- popup.style.top = (playRect.top - 7) + 'px';
- popup.style.bottom = 'auto';
- }
- }
- alignFreeTicketIcon();
- window.addEventListener('resize', alignFreeTicketIcon, { passive: true });
- window.addEventListener('scroll', alignFreeTicketIcon, { passive: true, capture: true });
- })();
- </script>
|