app.initViewModel(function(n,t){function e(){var e=r,o=function(r){let f=[];if(n.utils.arrayForEach(r.products,function(s){Enumerable.from(s.productItemTypes).select(function(n){!!n.shoppingCartDataItemData==!1&&(n.shoppingCartDataItemData=t.shoppingCart.getBindableShoppingCartProductItemData(null,e,s.productId,n.itemTypeId))}).toArray();s.minPrice=n.computed(function(){var n=this;return n.productItemTypes&&n.productItemTypes.length>0?Enumerable.from(n.productItemTypes).select(function(t){return n.totalPrice+t.additionalChargeAbsolute}).min():n.totalPrice},s);s.shopDisplayState=n.observable(s.shopDisplayState);s.isReservationChecking=n.pureComputed(function(){var f=this,h=0,c=f.shopDisplayState(),n=function(){h++;h<=50&&t.ajaxRequest("POST","Reservation/CheckAvailability",{ProductId:s.productId}).done(function(s){var h,c;s&&s.timeoutSeconds!==undefined&&s.timeoutSeconds>0?(h=s.timeoutSeconds,h<10&&(h=10),h>30&&(h=30),h=h+Math.floor(Math.random()*30),setTimeout(n,h*1e3)):(c={eventId:e,initSpecialData:u},t.ajaxRequest("POST","Data/GetEventDetails",c).done(function(t){var u=Enumerable.from(t.products).firstOrDefault(function(n){return n.productId==f.productId},null),e=Enumerable.from(i.peek().products).firstOrDefault(function(n){return n.productId==f.productId},null);u&&e?(e.shopDisplayState(u.shopDisplayState),e.shopDisplayState.peek()==u.shopDisplayState&&u.shopDisplayState=="CHECKING_RESERVATION"&&setTimeout(n,30+Math.floor(Math.random()*30)*1e3)):i(o(r))}))}).fail(function(){setTimeout(n,3e4)})};return c=="CHECKING_RESERVATION"?(setTimeout(n,60+Math.floor(Math.random()*30)*1e3),!0):!1},s);s.isSoonAvailableChecking=n.computed(function(){let n=this,t=n.shopDisplayState();return t=="SOON_AVAILABLE"?(f.indexOf(n.productId)===-1&&f.push(n.productId),!0):!1},s);s.availableTimeoutUTC=null;s.isSoonAvailableChecking.peek()&&s.availableSinceEpoch>0&&(s.availableTimeoutUTC=new Date(s.availableSinceEpoch))}),f.length>0){var h=t.registerWebSocket("checkSoonAvailableContingents");h&&(h.onopen=function(){let n={timestamp:Date.now(),data:{productIds:f}};h.send(JSON.stringify(n))},h.onmessage=function(n){let t=JSON.parse(n.data);if(t&&t.data.avlIds){let n=r.products.filter(n=>f.indexOf(n.productId)!==-1&&t.data.avlIds.indexOf(n.productId)!==-1);n.forEach(n=>n.shopDisplayState("UNSET"));f=f.filter(t=>n.indexOf(t.productId)===-1)}})}n.utils.arrayForEach(r.floorPlanProducts,function(i){i.shoppingCartDataItems=n.computed(function(){var r=t.shoppingCart.cartData(),n;return r?(n=Enumerable.from(r.items).where(function(n){return n._item.productId==i.productId}).select(function(n){return t.shoppingCart.getBindableShoppingCartProductItemData(n._item.id,e,i.productId,n._item.itemType)}).toArray(),n.length===0)?null:n:null});i.selectedItemTypeId=n.computed(function(){var n=this.shoppingCartDataItems();return n!=null&&n.length>0?n[0].itemTypeId:-1},i)});let s=[];return n.utils.arrayForEach(r.productGroups,function(n,t){if(n.isEmptyInlineGroupCard=n.displayOptions.indexOf("SHOP|ALWAYS")!==-1&&n.displayOptions.indexOf("SHOP|CARD")!==-1&&!n.groupedProductIds.some(n=>r.products.some(t=>t.productId===n)),t===0||n.displayOptions.indexOf("SHOP|CARD")===-1){let t=common.clone(n);t._inlineCardGroups=[];t.getInlineGroupCard=function(n){let i=t;return i._inlineCardGroups.find(t=>t.groupedProductIds.indexOf(n)==0)};s.push(t);n.displayOptions.indexOf("SHOP|CARD")!==-1&&s[0]._inlineCardGroups.push(n);return}if(n.displayOptions.indexOf("SHOP|CARD")!==-1){let t=s.length-1,i=s[t].groupedProductIds,r=n.groupedProductIds;s[t].groupedProductIds=i.concat(r);s[t]._inlineCardGroups.push(n)}}),r.productGroups=s,r.localizable=t.createLocalizable(r.i18n,["eventI18NId","description"]),r},s;f?i(o(f)):(s={eventId:e,initSpecialData:u},t.ajaxRequest("POST","Data/GetEventDetails",s).done(function(n){i(o(n))}))}function o(){r&&e()}function s(n,t,i){u=t;r=n;!!t==!1&&(f=i)}function h(n){var t=Enumerable.from(i.peek().products).firstOrDefault(function(t){return t.productId==n},null);t!==null&&t.shopDisplayState("CHECKING_RESERVATION")}var r=null,u=null,f=null,i=n.observable(null);return{eventDetailsData:i,onInitialized:o,setEventId:s,setProductReserved:h}}(ko,app))