const api = 'https://wallet.web-t1.rbqund.xyz'; const mission = 'https://mission.web-t1.rbqund.xyz'; const pageName = location.pathname.split('/').pop().replace('.html', ''); const Token = { set: (token) => { localStorage.setItem('access_token', token); }, get: () => { return localStorage.getItem('access_token'); }, delete: () => { localStorage.removeItem('access_token'); } } const Loader = { show: () => { $("#freezescreen").show(); }, hide: () => { $("#freezescreen").delay(500).fadeOut(); }, isLoading: () => { return $("#freezescreen").is(':visible'); } } window.swalInit = Swal.mixin({ buttonsStyling: false, customClass: { confirmButton: 'btn btn-orange', cancelButton: 'btn btn-orange btn-swal-cancel', denyButton: 'btn btn-orange btn-swal-deny', input: 'form-control' } }); const showToast = (icon, message) => { let intval = setInterval(() => { if (Loader.isLoading()) return; clearInterval(intval); swalInit.fire({ toast: true, position: 'top-end', icon: icon, text: message, showConfirmButton: false, timer: 3000, timerProgressBar: true, didOpen: (toast) => { toast.addEventListener('mouseenter', Swal.stopTimer) toast.addEventListener('mouseleave', Swal.resumeTimer) } }); }, 500); } const intVal = (i) => { return typeof i === 'string' ? i.replace(/[\$,]/g, '') * 1 : typeof i === 'number' ? i : 0; } const formatNumber = (x, fract = 0) => intVal(x).toLocaleString('id-ID', {minimumFractionDigits: fract, maximumFractionDigits: fract}); const handleResize = () => { // Handle resizing if ($(window).width() > 999) { $('.wrapper').addClass('body_main_container'); // Add the class for large screens $(".header_hamburger").removeClass("close_menu"); $(".left_menu_container_wrap").removeClass("close_menu_container"); } else { $(".left_menu_container_wrap").addClass("close_menu_container"); $('.wrapper').removeClass("body_main_container"); // Close the menu for screens <= 999 } } const getGameProvider = (filter) => { $.getJSON(`${api}/func/cms/getCmsPageInfo?page=home.game`, function(res) { if (res.code != '0') { swalInit.fire({ icon: 'error', text: tr('Unable load data provider'), confirmButtonText: tr('Ok'), }); return; } if (!filter) { // mobile home page res.result.categoryList.forEach(r => { let el = $(`.box.${r.category}`); if (el.length) { let items = r.data[0].obj; let provider = el.find('.game-providers'); items.forEach((item, x) => { provider.append(`
${item.providerName}
`); }); getMobileGameList(items[0].lobbyKey, el.find('.game-list')); } }); } else { let provider = res.result.categoryList.filter(f => f.category == filter).pop().data[0].obj; let max = 14; for (let x = 0; x < provider.length; x++) { $('.game-providers').append(`
${provider[x].providerName}
`); } getGameList(provider[0].lobbyKey); } }); } const getMobileGameList = (key, el) => { el.empty(); $.getJSON(`${api}/func/comm/getCmsSetting?key=${key}`, function(res) { res.result.menuList.forEach((item, i) => { if (i >= 8) { return true; } el.append(` ${item.gameName} `); }); }); } const getGameList = (p) => { let pageLimit = 42; let provider = typeof p === 'object' ? p.data('provider') : p, listEl = $('.game-list'), gameFilter = $('.game-filter'); listEl.empty(); gameFilter.addClass('--loading'); $('.missing-find').remove(); // Placeholder for(i=0; i<21; i++) { listEl.append(`
`); } $.getJSON(`${api}/func/comm/getCmsSetting?key=${provider}`, function(res) { let el = $('.game-list'), pag = $('.paging'), listLength = res.result.menuList.length; pag.empty().toggle(listLength > pageLimit); el.empty(); if (listLength === 0) { el.after(`
${tr('Could not find the game you were looking for, please try search others game.')}
`); } res.result.menuList.forEach((item, i) => { let page = Math.ceil((i + 1) / pageLimit); el.append(` ${item.gameName} `); }); let pageLength = Math.ceil(listLength / pageLimit); if (pageLength > 1) { for (i = 1; i <= pageLength; i++) { pag.append(`${i}`); } } // Hide all not in first page $('.game-item[page!="1"]').hide(); // Enable filter gameFilter.removeClass('--loading'); }); } const getHotGameList = () => { $.getJSON(`${api}/func/comm/getCmsSetting?key=lobby_menu_slot`, function(res) { let el = $('.game-list.hot'); el.empty(); res.result.menuList.filter(f => ['slot', 'lc', 'arcade', 'fish'].includes(f.category)).forEach((item, i) => { el.append(` ${item.gameName} `); }); }); } const getGeneralData = (page) => { $.getJSON(`${api}/func/comm/getWebInfo`, (res) => { let contact = res.result.contact; if (contact[0]) { $('img.line, .line-sidebar').data('link', contact[0].link); } let popup = res.result.popUpText; let el = $('.popup'); // Home page before login if (!page && popup.beforeLogin) { el.find('.modal-body').html(popup.beforeLogin); el.modal('show'); } // Home page after login if (page === 'home' && popup.afterLogin) { el.find('.modal-body').html(popup.afterLogin); el.modal('show'); } }); if ($('.mySwiperslider').length) { $.getJSON(`${api}/func/comm/getCmsSetting?key=lobby_web_banner`, function(res) { if (res.code === '0' && res.result.bannerList.length) { let el = $('.mySwiperslider .swiper-wrapper').empty() res.result.bannerList.forEach(r => { let img = r.language['en-US']; el.append(`
${img.bannerTitle}
`); }); new Swiper(".mySwiperslider", { clickable: true, loop: true, speed: 500, slidesPerView: 1, spaceBetween: 0, autoplay: { delay: 5000, disableOnInteraction: false }, pagination: { el: '.swiper-pagination', }, }); } }); } } jQuery.extend(jQuery.validator.messages, { required: tr('This field is required.'), email: tr('Please enter a valid email.'), equalTo: tr("Confirm password must same with password"), digits: tr("This field accept number only"), minlength: tr("Please enter at least {0} character"), maxlength: tr("Please enter at most {0} character"), alnum: tr("Please insert alphanumeric value only") }); $.validator.addMethod("alnum", function(value, element) { return this.optional(element) || /^[a-zA-Z0-9]+$/i.test(value); }); $.validator.addMethod("alphabetsonly", function(value, element) { return this.optional(element) || /^[a-zA-Z]+$/i.test(value); }); $.validator.addMethod('filesize', function(value, element, param) { return this.optional(element) || (element.files[0].size / 1000000 <= param) }); String.prototype.toDecimalPoint = function(n) { var amt = parseFloat(this); var pow = parseFloat(n); if (!isNaN(amt) && !isNaN(pow)) { // if is number pow = Math.pow(10, n); return (Math.floor(amt * pow) / pow).toFixed(n); } else { amt = 0; return amt.toFixed(n); } }; Number.prototype.toDecimalPoint = function(n) { var amt = parseFloat(this); var pow = parseFloat(n); if (!isNaN(amt) && !isNaN(pow)) { // if is number pow = Math.pow(10, n); return (Math.floor(amt * pow) / pow).toFixed(n); } else { amt = 0; return amt.toFixed(n); } }; window.onload = function() { if (lang === 'th') { $('#current_language').html($('#language_menu a[lang="th"]').html()); } Loader.hide(); } // Add event listener for window resize $(window).resize(function() { // Delay the execution of handleResize to prevent performance issues during rapid window resizing clearTimeout(window.handleResizeTimeout); window.handleResizeTimeout = setTimeout(handleResize, 100); }); $(document).ready(function() { // Initial call to handleResize handleResize(); getGeneralData(pageName); // Handle Hamburger Clicks $(".header_hamburger").click(function() { $(this).toggleClass("close_menu"); $(".left_menu_container_wrap").toggleClass("close_menu_container"); if ($(".left_menu_container_wrap").hasClass("close_menu_container")) { // If menu is closed, remove the body_main_container class $(".wrapper").removeClass("body_main_container"); } else { // If menu is open, add the body_main_container class $(".wrapper").addClass("body_main_container"); } }); $('#language_menu a').click(function() { if ($(this).attr('lang') === 'th') { localStorage.setItem('lang', 'th'); } else { localStorage.removeItem('lang'); } location.reload(); }); // Home page mobile $('.box .title').click(function() { $(this).parent().toggleClass('closed'); $(this).next().slideToggle(); // Reset search if ($(this).parent().hasClass('closed')) { $(this).parent().find('[name="search"]').val('').trigger('keyup'); } }); // Handle paging click $(document).on('click', '.paging a:not(.active)', function() { let _this = $(this), num = _this.text(); _this.parent().find('a').removeClass('active'); _this.addClass('active'); $(`.game-item[page!="${num}"]`).hide(); $(`.game-item[page="${num}"]`).show(); return false; }); // Handle sub click $(document).on('click', '.game-filter:not(.--loading) a', function() { $('.missing-find').remove(); $(this).parent().find('a').removeClass('active'); let txt = $(this).attr('cat'), gFilter = $(this).closest('.game-filter'), gList = gFilter.next(); // gList for compatible with mobile home page if (txt !== 'all') { $.each(gList.find('.game-item'), function(i, item) { $(item).toggle($(item).attr('cat').toLowerCase().includes(txt)); }); gList.next('.paging, .mob-more-wrap').hide(); } else { // Restore all tab items let activePaging = $('.paging .active').text(); gList.find(`.game-item[page!="${activePaging}"]`).hide(); gList.find(`.game-item[page="${activePaging}"]`).show(); gList.next('.paging, .mob-more-wrap').show(); if (pageName.includes('casino') || gFilter.hasClass('mob-filter')) { gList.find(`.game-item`).show(); } } if (gList.find('.game-item:visible').length === 0) { gList.after(`
${tr('Could not find the game you were looking for, please try search others game.')}
`); } gFilter.find('[name="search"]').val(''); $(this).addClass('active'); }); // Handle search $(document).on('keyup', '.game-filter:not(.--loading) [name="search"]', function() { let val = this.value.toLowerCase(), txt = $(this).closest('.game-filter').find('a.active').text().toLowerCase().replace(' games', ''), // Provider game have text: Slot Games, Fish Games, Arcade Games gFilter = $(this).closest('.game-filter'), gList = gFilter.next(); // gList for compatible with mobile home page $('.missing-find').remove(); if (val.length) { gList.find('.game-name').each(function() { const gi = $(this).closest('.game-item'); const matchesText = $(this).text().toLowerCase().includes(val); const matchesCategory = txt === 'all' || gi.attr('cat').includes(txt); gi.toggle(matchesText && matchesCategory); }); if (gList.find('.game-item:visible').length === 0) { gList.after(`
${tr('Could not find the game you were looking for, please try search others game.')}
`); } gList.next('.paging, .mob-more-wrap').hide(); } else if (txt === 'all') { // Hide all not in active paging page let activePaging = $('.paging .active').text(); gList.find(`.game-item[page!="${activePaging}"]`).hide(); gList.find(`.game-item[page="${activePaging}"]`).show(); gList.next('.paging, .mob-more-wrap').show(); if (pageName.includes('casino') || gFilter.hasClass('mob-filter')) { gList.find(`.game-item`).show(); } } else { gList.find(`.game-item[cat*="${txt}"]`).show(); } }); // Provider item $(document).on('click', '.provider-item:not(.active)', function() { $(this).closest('.game-providers').find('.provider-item').removeClass('active'); $(this).addClass('active'); if ($(window).innerWidth() <= 999 && (pageName === '' || pageName === 'home')) { getMobileGameList($(this).data('provider'), $(this).closest('.box').find('.game-list')); } else { getGameList($(this)); } }); if (pageName === '' || pageName === 'home' || pageName === 'hot') { getHotGameList(); if (pageName != 'hot' && $(window).innerWidth() <= 999) { getGameProvider(); // mobile home page } } if (['slot', 'casino', 'fish', 'arcade'].includes(pageName)) { getGameProvider(pageName == 'casino' ? 'lc' : pageName); } $('.see-more-provider').click(function () { $('.provider-item').removeClass('hide'); $(this).remove(); return false; }); // Whatsapp contact $('img.line, .line-sidebar').click(function () { let link = $(this).data('link'); if (link) { window.open(link, '_blank'); } }); $('body').append(`
tournament
`); $('.tournament-pop').click(function() { window.open('/tournament.html', '', 'width=1024,height=768'); }); // Copyright year $('.copyright .year').text(new Date().getFullYear()); });