(function () { function uuid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { let r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } function isMobile() { return ( /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test( navigator.userAgent, ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( navigator.userAgent.substr(0, 4), ) ); } function openGameWindow(url) { const gameWindow = window.open(url, '_blank'); gameWindow.focus(); } function fitBox(width, height, maxWidth, maxHeight) { const ar = width / height; if (width > maxWidth) { width = maxWidth; height = width / ar; } if (height > maxHeight) { height = maxHeight; width = height * ar; } return {width, height}; } function openGameIframe(url, name) { const iframe = document.createElement('iframe'); iframe.src = url; iframe.allowFullscreen = true; iframe.autofocus = true; iframe.style.width = '100%'; iframe.style.height = 'calc(100% - 52px)'; iframe.style.padding = '0'; iframe.style.margin = '0'; iframe.style.margin = '0'; iframe.style.border = 'none'; iframe.style.background = 'black'; const header = document.createElement('div'); header.style.width = '100%'; header.style.height = '52px'; header.style.background = 'black'; header.style.padding = '10px 15px'; header.style.margin = '0'; header.style.border = 'none'; header.style.boxSizing = 'border-box'; const close = document.createElement('button'); close.innerHTML = ''; close.style.position = 'absolute'; close.style.top = '10px'; close.style.right = '10px'; close.style.width = '32px'; close.style.height = '32px'; close.style.padding = '0'; close.style.margin = '0'; close.style.border = 'none'; close.style.fontSize = '50px'; close.style.color = 'white'; close.style.cursor = 'pointer'; close.style.outline = 'none'; close.style.background = 'transparent'; close.addEventListener('click', () => { iframe.src = 'about:blank'; wrapper.remove(); header.remove(); container.remove(); iframe.remove(); window.removeEventListener('resize', resize); }); const title = document.createElement('div'); title.innerHTML = name; title.style.color = 'white'; title.style.verticalAlign = 'middle'; title.style.lineHeight = '32px'; title.style.fontSize = '20px'; title.style.fontWeight = 'bold'; const container = document.createElement('div'); container.style.position = 'absolute'; container.style.top = '50%'; container.style.left = '50%'; container.style.transform = 'translate(-50%, -50%)'; container.style.height = '100%'; container.style.width = '100%'; container.style.padding = '0'; container.style.margin = '0'; container.style.borderLeft = '6px solid #010101'; container.style.borderRight = '6px solid #010101'; container.style.background = '#010101'; container.style.borderRadius = '20px'; const wrapper = document.createElement('div'); wrapper.style.position = 'fixed'; wrapper.style.top = '0'; wrapper.style.left = '0'; wrapper.style.zIndex = '99999'; wrapper.style.width = '100%'; wrapper.style.height = '100%'; wrapper.style.padding = '0'; wrapper.style.margin = '0'; wrapper.style.border = 'none'; wrapper.style.background = 'rgba(0, 0, 0, 0.6)'; header.appendChild(title); header.appendChild(close); container.appendChild(header); container.appendChild(iframe); wrapper.appendChild(container); document.body.appendChild(wrapper); function resize() { if (window.innerWidth / window.innerHeight > 1 || window.innerWidth >= 1100) { const {width, height} = fitBox(1860, 1000, window.innerWidth, window.innerHeight - 52); container.style.width = width + 'px'; container.style.height = (height + 52) + 'px'; } else { const {width, height} = fitBox(820, 1440, window.innerWidth, window.innerHeight - 52); container.style.width = width + 'px'; container.style.height = (height + 52) + 'px'; } } resize(); window.addEventListener('resize', resize); window.addEventListener('message', (event) => { if (event.source !== container.firstChild.contentWindow) return; if (event.data.event === 'exit') { window.close(); } else if (event.data.event === 'reload') { window.location.reload(); } }); } function confirm18(callback) { if (confirmed18) { if (callback) callback(true); return; } const container = document.createElement('div'); container.style.position = 'absolute'; container.style.top = '50%'; container.style.left = '50%'; container.style.transform = 'translate(-50%, -50%)'; container.style.width = '500px'; container.style.height = '280px'; container.style.maxWidth = '100%'; container.style.padding = '0'; container.style.margin = '0'; container.style.border = 'none !important'; container.style.background = '#010101'; container.style.borderRadius = '20px'; const wrapper = document.createElement('div'); wrapper.style.position = 'fixed'; wrapper.style.top = '0'; wrapper.style.left = '0'; wrapper.style.zIndex = '99999'; wrapper.style.width = '100%'; wrapper.style.height = '100%'; wrapper.style.padding = '0'; wrapper.style.margin = '0'; wrapper.style.border = 'none'; wrapper.style.background = 'rgba(0, 0, 0, 0.6)'; const body = document.createElement('div'); body.innerHTML = '

Pateplay games are intended for people 18+ years old.

Please confirm that you are 18+ years old to continue.

'; body.style.position = 'relative'; body.style.color = '#fafafa'; body.style.width = '100%'; body.style.height = 'calc(100% - 80px)'; body.style.padding = '20px'; body.style.margin = '0'; body.style.border = 'none'; body.style.boxSizing = 'border-box'; body.style.textAlign = 'center'; const buttons = document.createElement('div'); buttons.style.position = 'relative'; buttons.style.width = '100%'; buttons.style.height = '80px'; buttons.style.padding = '0'; buttons.style.margin = '0'; buttons.style.border = 'none'; buttons.style.display = 'flex'; buttons.style.gap = '20px'; buttons.style.justifyContent = 'center'; buttons.style.alignItems = 'center'; const yes = document.createElement('button'); yes.innerText = 'Yes'; yes.className = 'button button--primary w-button'; const no = document.createElement('button'); no.innerText = 'No'; no.className = 'button button--secondary w-button'; yes.addEventListener('click', () => { wrapper.remove(); container.remove(); confirmed18 = true; if (callback) callback(true); }); no.addEventListener('click', () => { wrapper.remove(); container.remove(); confirmed18 = false; if (callback) callback(false); }); buttons.appendChild(yes); buttons.appendChild(no); container.appendChild(body); container.appendChild(buttons); wrapper.appendChild(container); document.body.appendChild(wrapper); } let confirmed18 = false; window.launchGame = function (game, title) { const launchUrl = 'https://fpee-relay.pateplay.net/relay/'; const siteCode = 'fpee'; const authToken = 'free-' + uuid(); const device = isMobile() ? 'mobile' : 'desktop'; const url = `${launchUrl.replace(/\/+$/, '')}/?authCode=${authToken}&siteCode=${siteCode}&device=${device}&game=${game}`; console.log(launchUrl, siteCode, authToken, device); console.log(url); confirm18((confirmed) => { if (!confirmed) return; if (isMobile()) openGameWindow(url); else openGameIframe(url, title); }); }; window.makeGameLinks = function (selector) { const elements = document.querySelectorAll(selector); for (let i = 0; i < elements.length; i++) { const element = elements[i]; if (!element.hasAttribute('data-game') || !element.hasAttribute('data-title')) continue; if (element._isGameLink) continue; element._isGameLink = true; const game = element.getAttribute('data-game'); const title = element.getAttribute('data-title'); element.addEventListener('click', (e) => { e.preventDefault(); window.launchGame(game, title); }); } } window.makeGameLinks('.game-demo-link'); })(); (function () { const elements = document.querySelectorAll('.swiper-partners'); for (let i = 0; i < elements.length; i++) { const prev = document.createElement('div'); const next = document.createElement('div'); prev.className = 'swiper-button-prev'; next.className = 'swiper-button-next'; elements[i].parentElement.style.setProperty('--swiper-navigation-size', '32px'); elements[i].parentElement.style.setProperty('--swiper-navigation-color', '#eaeaea'); elements[i].parentElement.style.setProperty('--swiper-navigation-sides-offset', '20px'); elements[i].parentElement.appendChild(prev); elements[i].parentElement.appendChild(next); //elements[i].style.setProperty('--swiper-navigation-sides-offset', '-100%'); const swiper = new Swiper(elements[i], { on: { breakpoint: function (swiper, breakpointParams) { if (!breakpointParams.navigation || !breakpointParams.navigation.enabled) { prev.style.display = 'none'; next.style.display = 'none'; } else { prev.style.display = 'block'; next.style.display = 'block'; } }, }, // effect: 'coverflow', centeredSlides: false, slidesPerView: 1, loop: true, createElements: true, pagination: false, autoplay: { delay: 5000, }, speed: 400, spaceBetween: 20, initialSlide: 0, navigation: { enabled: true, nextEl: next, prevEl: prev, }, breakpoints: { 320: { slidesPerView: 2, spaceBetween: 20, navigation: { enabled: true, nextEl: next, prevEl: prev, }, }, 400: { slidesPerView: 2, spaceBetween: 30, navigation: { enabled: true, nextEl: next, prevEl: prev, }, }, 480: { slidesPerView: 3, spaceBetween: 30, navigation: { enabled: true, nextEl: next, prevEl: prev, }, }, 640: { slidesPerView: 4, spaceBetween: 40, navigation: { enabled: true, nextEl: next, prevEl: prev, }, loop: false, }, 770: { slidesPerView: 5, spaceBetween: 40, navigation: { enabled: true, nextEl: next, prevEl: prev, }, loop: false, }, }, }); } const elementsSlots = document.querySelectorAll('.swiper-slots'); for (let i = 0; i < elementsSlots.length; i++) { const prev = document.createElement('div'); const next = document.createElement('div'); prev.className = 'swiper-button-prev'; next.className = 'swiper-button-next'; elementsSlots[i].parentElement.style.setProperty('--swiper-navigation-size', '40px'); elementsSlots[i].parentElement.style.setProperty('--swiper-navigation-color', '#eaeaea'); elementsSlots[i].parentElement.style.setProperty('--swiper-navigation-sides-offset', '20px'); elementsSlots[i].parentElement.appendChild(prev); elementsSlots[i].parentElement.appendChild(next); const swiper = new Swiper(elementsSlots[i], { // effect: 'coverflow', centeredSlides: true, slidesPerView: 1, loop: true, createElements: true, pagination: false, autoplay: false, speed: 400, spaceBetween: 0, initialSlide: 0, navigation: { enabled: true, nextEl: next, prevEl: prev, }, breakpoints: { 600: { slidesPerView: 2, spaceBetween: 0 }, 790: { slidesPerView: 3, spaceBetween: 0, }, 1000: { slidesPerView: 4, spaceBetween: 0, }, 1200: { slidesPerView: 5, spaceBetween: 0, }, }, }); } })();