"use strict";function Invitations(){(this.groups=[],typeof window.global.currentUserId!="number"||window.global.currentUserId<=0)||(this.acceptInviteRequest=new $.tabletopia.post.playground.players.acceptInvite,this.declineInviteRequest=new $.tabletopia.delete.playground.players.declineInvite,window.global.signalrManager.extendQueryString({userId:window.global.currentUserId}),this.initHubMethods($.connection.rih))}Invitations.prototype.initHubMethods=function(proxy){var self=this;proxy.client.addInvitation=function(invitation){self.addInvitation(invitation)};proxy.client.addInvitations=function(invitations){self.addInvitations(invitations)};proxy.client.removeInvitation=function(id){self.removeInvitation(id)};proxy.client.removeInvitations=function(ids){self.removeInvitations(ids)}};Invitations.prototype.registerInvitations=function(data){this.groups.push(data);this.initInvitations(data.$invitations)};Invitations.prototype.initInvitations=function($invitations){const self=this;if($invitations&&$invitations.length!==0){$invitations.on("mouseover",function(){var row=$(window).width()>window.global.breakpointLg?3:2;$(this).find(".invitation__message").ellipsis({row:row})});$invitations.find(".accept-inv-btn").click(function(){const $this=$(this);self.acceptInviteRequest.isLoading()||(self.acceptInviteRequest.setUrl($.tabletopia.routes.playground.api("inviteplayers","invite",$this.attr("data-inv-id"))),self.acceptInviteRequest.load().then(function(){window.location.href=$this.attr("data-room-url")}))});$invitations.find(".reject-inv-btn").click(function(){const $this=$(this);self.declineInviteRequest.isLoading()||(self.declineInviteRequest.setUrl($.tabletopia.routes.playground.api("inviteplayers","invite",$this.attr("data-inv-id"))),self.declineInviteRequest.load())})}};Invitations.prototype.removeInvitation=function(id){for(var deletedCnt,$filteredInvs,$inv,itemIndex,$cnt,value,valueInt,newValue,slidesCnt,j,i=0;i<this.groups.length;++i){if(deletedCnt=0,this.groups[i].$invitations&&this.groups[i].$invitations.length>0){if($filteredInvs=this.groups[i].$invitations.filter("[data-inv-id="+id+"]"),$filteredInvs.length===0)break;for(j=0;j<$filteredInvs.length;++j)$inv=$($filteredInvs[j]),itemIndex=this.groups[i].$carousel.find(".carousel__item").index($inv),this.groups[i].$carousel.slick("slickRemove",itemIndex,!1),this.groups[i].$carousel.slick("setPosition");this.groups[i].$invitations=this.groups[i].$invitations.not($filteredInvs);deletedCnt=$filteredInvs.length}if(deletedCnt!==0){if(this.groups[i].$counters)for(j=0;j<this.groups[i].$counters.length;++j)$cnt=$(this.groups[i].$counters[j]),value=$cnt.text(),value&&(valueInt=parseInt(value),newValue=valueInt-deletedCnt,newValue>0?$cnt.text(newValue):$cnt.text(""));slidesCnt=this.groups[i].$carousel.slick("getSlick").slideCount;slidesCnt===0&&(this.groups[i].hideControls&&this.groups[i].hideControls(),this.groups[i].$carousel.attr("data-carousel-destroyed","1"))}}};Invitations.prototype.removeInvitations=function(ids){if(ids&&ids.length!==0)for(var i=0;i<ids.length;++i)this.removeInvitation(ids[i])};Invitations.prototype.addInvitations=function(invitations){if(invitations&&invitations.length!==0)for(var i=0;i<invitations.length;++i)this.addInvitation(invitations[i])};Invitations.prototype.addInvitation=function(invitation){var j,i,$invitation,carouselIsDestroyed,$cnt,value,valueInt;if(invitation)for(i=0;i<this.groups.length;++i)if(!this.groups[i].onBeforeAdd||this.groups[i].onBeforeAdd(invitation)){if($invitation=this.createInvitationFromTemplate(invitation),this.groups[i].$invitations=this.groups[i].$invitations&&this.groups[i].$invitations.length>0?this.groups[i].$invitations.add($invitation):$invitation,this.groups[i].$carousel&&this.groups[i].$carousel.length>0&&(this.groups[i].$carousel.prepend($invitation),carouselIsDestroyed=this.groups[i].$carousel.attr("data-carousel-destroyed")==="1"||this.groups[i].$invitations.length===1&&!this.groups[i].$carousel.attr("data-carousel-destroyed"),carouselIsDestroyed?(this.groups[i].$carousel.slick("unslick"),this.groups[i].$carousel.slick(window.global.carouselSettings),this.groups[i].$carousel.attr("data-carousel-destroyed","0")):this.groups[i].$carousel.slick("slickAdd",$invitation[0],0,!0)),this.groups[i].$counters)for(j=0;j<this.groups[i].$counters.length;++j)$cnt=$(this.groups[i].$counters[j]),value=$cnt.text(),value?(valueInt=parseInt(value),++valueInt,$cnt.text(valueInt)):$cnt.text(1);this.groups[i].showControls&&this.groups[i].showControls()}};Invitations.prototype.createInvitationFromTemplate=function(invitation){var $invitation=$("#room-invitation-template").clone().removeClass("hidden").removeAttr("id").attr("data-inv-id",invitation.Id),$background=$invitation.find(".item__image"),$acceptBtn,isCurrentUserReciver,$avatar;return invitation.ZoneBackgroundImageUrl?$background.attr("src",invitation.ZoneBackgroundImageUrl+$background.attr("data-url-query")).attr("alt",invitation.GameName):$background.remove(),$invitation.find(".item__title").text(invitation.GameName),invitation.SetupName?$invitation.find(".item-setup-name").text(invitation.SetupName):$invitation.find(".item-setup-name").remove(),invitation.SetupLangIdentity?$invitation.find(".item__flag").addClass("_"+invitation.SetupLangIdentity):$invitation.find(".item__flag").remove(),$acceptBtn=$invitation.find(".accept-inv-btn"),isCurrentUserReciver=window.global.currentUserId===invitation.ToUserId,isCurrentUserReciver?$acceptBtn.attr("data-inv-id",invitation.Id).attr("data-room-url",$acceptBtn.attr("data-room-url").replace("user-short-url",invitation.UserShortUrl).replace("room-short-url",invitation.RoomShortUrl.toUpperCase())):$acceptBtn.addClass("hidden"),$invitation.find(".reject-inv-btn").attr("data-inv-id",invitation.Id),$avatar=$invitation.find(".invitation__avatar img"),isCurrentUserReciver?($avatar.attr("src",invitation.FromUserAvatarUrl+$avatar.attr("data-url-query")).attr("alt",invitation.FromUserName),$invitation.find(".invitation__title").text(invitation.FromUserName+", "+invitation.CreationDate)):($avatar.attr("src",invitation.ToUserAvatarUrl+$avatar.attr("data-url-query")).attr("alt",invitation.ToUserAvatarUrl),$invitation.find(".invitation__title").text(invitation.ToUserName+", "+invitation.CreationDate)),invitation.InvitationComment?$invitation.find(".invitation__message").text(invitation.InvitationComment):$invitation.find(".invitation__message").remove(),this.initInvitations($invitation),$invitation};var UserProvider=function(){function UserProvider(unity){this.unity=unity;this.addToFriendUrl=location.protocol+"//"+location.host+"/api/friends/add/";this.removeFromFriendUrl=location.protocol+"//"+location.host+"/api/friends/remove/"}return UserProvider.prototype.initAddOrRemoveFriend=function($addFriendBtn,onAddFriend,onRemoveFriend){var self=this;$addFriendBtn.click(function(e){var $selfButton,url,userId;(e.stopPropagation(),e.preventDefault(),$selfButton=$(this),$selfButton.hasClass("_disabled"))||(userId=$(this).attr("data-user-id"),url=$selfButton.hasClass("_active")?self.removeFromFriendUrl:self.addToFriendUrl,$.ajax({url:url+userId+"?format=json",method:"POST",global:!1,cache:!1,dataType:"json",contentType:"application/json",success:function(){$selfButton.hasClass("_active")?($selfButton.removeClass("_active"),typeof onRemoveFriend=="function"&&onRemoveFriend(userId)):($selfButton.addClass("_active"),typeof onAddFriend=="function"&&onAddFriend(userId))}}))})},UserProvider.prototype.inviteToTT=function(userId,onSuccessCallback){var self=this;userId&&$.ajax({url:"/api/steam/invitetott",cache:!1,data:{steamFriendId:userId},success:function(){typeof onSuccessCallback=="function"&&onSuccessCallback();self.unity&&typeof self.unity.sendMessage=="function"&&self.unity.sendMessage("InviteUserToGame",{user:userId})}})},UserProvider.prototype.openUserPreview=function(shortUrl){var self=this;typeof shortUrl=="string"&&shortUrl.length!==0&&$.ajax({url:window.urls.getUserPreview,data:{shortUrl:shortUrl},dataType:"html",cache:!1,success:function(html){if(typeof html!="undefined"&&html!==""){var $dlg=$(html),$favoriteBtn=$dlg.find(".favorite");self.initAddOrRemoveFriend($favoriteBtn,function(){$favoriteBtn.attr("data-original-title",window.SR.RemoveFromFriends)},function(){$favoriteBtn.attr("data-original-title",window.SR.AddToFriends)});$dlg.find(".profile-invite-play-btn").click(function(e){if($(this).hasClass("disabled")){e.preventDefault();e.stopPropagation();return}});$("#user-profile-preview-placeholder").empty().append($dlg);window.global.app.carousel($dlg.find(".carousel"));$dlg.modal()}},error:function(){$("#error-dlg").modal()}})},UserProvider}();Date.prototype.toScheduledGameNoti=function(){const now=Date.now(),diff=this.getTime()-now,seconds=Math.floor(diff/1e3),minutes=Math.floor(diff/6e4),hours=Math.floor(diff/36e5),days=Math.floor(diff/864e5);let result=$.tabletopia.localization.scheduledGameNoti;return days>0?(result=result.replace("{0}",days+" "+$.tabletopia.localization.daysLowercase),result=result.replace("{1}",this.toTimeFormatWithGmt()),result.replace("{2}",this.toDateFormat())):hours>0?(result=result.replace("{0}",hours+" "+$.tabletopia.localization.hoursLowercase),result=result.replace("{1}",this.toTimeFormatWithGmt()),result.replace("{2}",this.toDateFormat())):minutes>=0||seconds>=0?(result=result.replace("{0}",minutes+" "+$.tabletopia.localization.minutesLowercase),result=result.replace("{1}",this.toTimeFormatWithGmt()),result.replace("{2}",this.toDateFormat())):(result=$.tabletopia.localization.scheduledGameNotiOverdue,days<0)?(result=result.replace("{0}",days*-1+" "+$.tabletopia.localization.daysLowercase),result=result.replace("{1}",this.toTimeFormatWithGmt()),result.replace("{2}",this.toDateFormat())):hours<0?(result=result.replace("{0}",hours*-1+" "+$.tabletopia.localization.hoursLowercase),result=result.replace("{1}",this.toTimeFormatWithGmt()),result.replace("{2}",this.toDateFormat())):minutes<=0||seconds<=0?(result=result.replace("{0}",minutes*-1+" "+$.tabletopia.localization.minutesLowercase),result=result.replace("{1}",this.toTimeFormatWithGmt()),result.replace("{2}",this.toDateFormat())):""};Date.prototype.toScheduledGameDescriptionForCalendar=function(gameName,setupName,welcomeMessage,roomShortUrl,roomFullUrl){const now=Date.now();let result=$.tabletopia.localization.scheduledGameAt;const diff=this.getTime()-now,minutes=diff/6e4;return minutes>0?(result=result.replace("{0}",this.toTimeFormatWithGmt()),result=result.replace("{1}",this.toDateFormat()),welcomeMessage!==""&&(welcomeMessage="\r\n"+welcomeMessage),gameName+", "+setupName+"\r\n"+result.uppercaseFirst()+welcomeMessage+"\r\n\r\n"+$.tabletopia.localization.room+" #"+roomShortUrl+":\r\n"+roomFullUrl):welcomeMessage};Date.prototype.toRelativeDate=function(){const now=Date.now(),diff=now-this,seconds=diff/1e3;if(seconds<=60)return $.tabletopia.localization.justNowLowercase;const minutes=diff/6e4;if(minutes<=60)return minutes>1?minutes.toFixed()+" "+$.tabletopia.localization.agoMinutes:$.tabletopia.localization.agoMinute;const hours=diff/36e5;if(hours<=24)return hours>1?hours.toFixed()+" "+$.tabletopia.localization.agoHours:$.tabletopia.localization.agoHour;const days=diff/864e5;if(days<=30)return days>1?days.toFixed()+" "+$.tabletopia.localization.agoDays:$.tabletopia.localization.yesterdayLowercase;if(days<=365)return days>30?(days/30).toFixed()+" "+$.tabletopia.localization.agoMonths:$.tabletopia.localization.agoMonth;const years=days/365;return years>1?years.toFixed()+" "+$.tabletopia.localization.agoYears:$.tabletopia.localization.AgoYear};Date.prototype.toDateFormatExt=function(){const now=Date.now(),diff=this.getTime()-now,seconds=Math.round(diff/1e3),minutes=Math.round(diff/6e4),hours=Math.round(diff/36e5),days=Math.round(diff/864e5);return days===1?$.tabletopia.localization.tomorrow:days===0&&hours>=0?$.tabletopia.localization.today:this.toDateFormat()};Date.prototype.toDateTimeFormat=function(){return this.toDateFormat()+" "+$.tabletopia.localization.atLowerCase+" "+this.toTimeFormat()};Date.prototype.toTimeFormat=function(){return this.toLocaleTimeString(navigator.language,{hour:"2-digit",minute:"2-digit"})};Date.prototype.toTimeFormatWithGmt=function(){return this.toLocaleTimeString(navigator.language,{timeZoneName:"short",hour:"2-digit",minute:"2-digit"})};Date.prototype.toDateFormat=function(){return this.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric"})};Date.prototype.toDateFormatShort=function(){return this.toLocaleDateString(navigator.language,{day:"numeric",month:"long",year:"numeric"})},function(unity){function init(){$("#see-all-description").click(function(e){e.preventDefault();$("#compact-description").remove();$("#full-description").removeClass("hidden")});const $buyDlcBtn=$(".js-steam-dlc-buy-button"),dlcId=$buyDlcBtn.attr("data-steam-app-id");$buyDlcBtn.length>0&&$.ajax({url:"/api/2.0/subscriptions/steam/dlc/synchronize",type:"POST",data:{SteamDlcId:dlcId},success:function(response){response.userOwnedSteamApp?$buyDlcBtn.remove():$buyDlcBtn.click(function(){const steamAppId=$(this).attr("data-steam-app-id");ko.postbox&&ko.postbox.publish($.tabletopia.postbox.subscriptions.buySteamDlc,steamAppId)})}})}function initCommentBlock(){window.global.app.initCommentBlock()}function initPlayNow(){var $hotSeatButton=$(".play-hot-seat-button-js"),$playOnlineButton;$hotSeatButton.click(function(){window.location.href=$(this).attr("data-url")});$playOnlineButton=$(".play-now-button-js");$playOnlineButton.click(function(e){e.preventDefault();window.location.href=$(this).attr("data-url")})}function initGallery(){var i18n={current:window.game.SR.galleryTextCurrent,previous:window.game.SR.previous,next:window.game.SR.next,close:window.game.SR.close,xhrError:window.game.SR.failedToLoad,imgError:window.game.SR.failedToLoad};$(".colorbox").colorbox($.extend({},i18n,{rel:"screenshots",width:"85%",height:"85%"}));$(".colorbox-youtube-video").colorbox($.extend({},i18n,{rel:"screenshots",iframe:!0,innerWidth:853,innerHeight:480}));$(".colorbox-video").colorbox($.extend({},i18n,{rel:"screenshots",inline:!0,onComplete:function(){$(this).colorbox.resize()}}))}function initScreenshots(){$("#show-more-screenshots").click(function(e){e.preventDefault();$(".screenshot, .screenshot-video").removeClass("hidden");$(this).hide()})}function initInvitations(){var $invitationCounterPlaceHolder=$("#game-invitations-indicator"),$invitationCounter=$invitationCounterPlaceHolder.find("#game-invitation-value"),$invitationsDlg=$("#game-invitations-dlg"),$invitationsCarousel=$invitationsDlg.find(".carousel"),$invitations=$invitationsCarousel.find(".item");window.game.invitations.registerInvitations({$counters:$invitationCounter,$carousel:$invitationsCarousel,$invitations:$invitations,showControls:function(){$invitationCounterPlaceHolder.removeClass("hidden")},hideControls:function(){$invitationsDlg.modal("hide");$invitationCounterPlaceHolder.addClass("hidden")},onBeforeAdd:function(invitation){return window.global.currentUserId===invitation.ToUserId&&window.game.publicId===invitation.GamePublicId}})}function initActiveRooms(){window.global.activeRooms.add($("#game-playing-now-room-dlg"),function(){var $cnt=$("#game-active"),roomsCount=parseInt($cnt.text().trim());roomsCount--;roomsCount>0?$cnt.text(roomsCount):($("#game-active").parent().addClass("hidden"),$("#game-playing-now-room-dlg").modal("hide"))})}function initGameRules(){$(".game-rules-js").click(function(e){e.preventDefault();var url=$(this).attr("href");if(window.game.userInSteamBrowser===1)url&&typeof unity.sendMessage=="function"&&unity.sendMessage("OpenPdf",{openUrl:$(this).attr("href")});else{const newTab=window.open(url,"_blank","noopener,noreferrer");newTab.opener=null}return!1});$("#see-all-rules").click(function(e){e.preventDefault();$(this).parent().remove();$("#see-all-rules-container").removeClass("hidden")})}function initSetups(){$("#see-all-setups").click(function(e){e.preventDefault();$(this).parent().remove();$("#see-all-setups-container").removeClass("hidden")})}function initAmazon(){if(window.user.isInSteamBrowser===1)$(".amazon-widget").on("click","a",function(e){e.stopPropagation();e.preventDefault();var url=$(this).attr("href");url&&typeof unity.sendMessage=="function"&&unity.sendMessage("OpenUrl",{openUrl:$(this).attr("href")})})}$(function(){window.game.invitations=new Invitations;init();initCommentBlock();initPlayNow();initGallery();initScreenshots();initInvitations();initActiveRooms();initGameRules();initSetups();initAmazon()})}(typeof window.unity.client=="undefined"?{}:window.unity.client)