function vrc_nth_ocurrence(n,t,r){for(i=0;i<n.length;i++)if(n.charAt(i)==t&&!--r)return i;return!1}function switchToDeck(n){var t,i;deckObj.legend.venues([]);deckObj.legend.staterooms([]);deckObj.legend.stateroomIds([]);t=getSelectedDeck(n);deckObj.selectedDeck(t);deckObj.decks=deckObj.ship.shipType.deckPlans[0].decks;i=$("#svg-1-placeholder");loadDeckSVG(i,t);loadSideView(n)}function postProcessDeck(n,t){var r=[],u=[],f=[],i=n.children(":first"),e=i.attr("id");i.children("[id^='room-']").each(function(){var n=$(this),s=n.attr("id"),o=s.substring(s.lastIndexOf("-")+1),l=getStateroomUrl(o),v=vrc_nth_ocurrence(s,"-",2),t=s.substring(v+1),y=t.replace("-"+o,""),c=n.prop("tagName").toLowerCase()==="g",r,h,a;n.attr("data-href",l);n.addClass("room__detailslink");n.mouseover(function(){c?highlightFromDeck(i.find("[id*='"+t+"-']")):highlightFromDeck(i.find("[id*='"+t+"']"))});n.mouseout(function(){c?removeHighlightFromDeck(i.find("[id*='"+t+"-']")):removeHighlightFromDeck(i.find("[id*='"+t+"']"))});f.indexOf(o)==-1&&(r=window.getComputedStyle(n[0]).getPropertyValue("fill"),h=n.children("rect,polygon,polyline"),h!=null&&h.length>0&&(a=h[0],r=window.getComputedStyle(a).getPropertyValue("fill")),(isNotASolidColor(r)||r==="rgb(0, 0, 0)")&&(r=deckObj.legend.defaultColor),u.push({code:y,label:o,catColor:r,catUrl:l,grouped:c,svgId:e,stateroomCategory:t}),f.push(o))});i.children("[id^='venue-']").each(function(){var n=$(this),h=n.attr("id"),t=window.getComputedStyle(n[0]).getPropertyValue("fill"),c=h.replace("venue-",""),l=getVenueUrl(c),e=n.prop("tagName").toLowerCase()==="g",a,i,o,u,s,v,f;if(e){for(i=n.children("rect,polygon,path,polyline"),o=!1,u=0;u<i.length;u++)if((s=$(i[u]),v=s.attr("id"),v)&&(o=!0,t=window.getComputedStyle(s[0]).getPropertyValue("fill"),t!=="rgb(0, 0, 0)"))break;e=o}else i=n.children("rect,polygon"),i!=null&&i.length>0&&(a=i[0],t=window.getComputedStyle(a).getPropertyValue("fill"));(isNotASolidColor(t)||t==="rgb(0, 0, 0)")&&(t=deckObj.legend.defaultColor);f={code:h,label:c,catColor:t,venUrl:l,grouped:e};n.mouseover(function(){highlightVenueByCode(f)});n.mouseout(function(){removeHighlightVenueByCode(f)});n.attr("data-href",l);n.addClass("room__detailslink");r.push(f)});r=r.sort(function(n,t){return n.label<t.label?-1:n.label>t.label?1:0});u=u.sort(function(n,t){return n.label<t.label?-1:n.label>t.label?1:0});f=f.sort();t!=null&&(processLegendVenues(t,r),processStaterooms(t,u));deckObj.legend.venues(r);deckObj.legend.staterooms(u);deckObj.legend.stateroomIds(f);applyDeckBindings()}function isNotASolidColor(n){return!n||n==null||n.indexOf("url")>-1?!0:!1}function replaceLegacyFont(n){if(!n)return n;var t=n;return t=t.replace(/font-family="NeueFrutigerWorld-Bold, Neue Frutiger World"/g,'font-family="\'Open Sans\', sans-serif" style="font-weight: 600"'),t=t.replace(/font-family="NeueFrutigerWorld-Regular, Neue Frutiger World"/g,"font-family=\"'Open Sans', sans-serif\""),t=t.replace(/font-family="NeueFrutigerWorld-Bold, 'Neue Frutiger World'"/g,'font-family="\'Open Sans\', sans-serif" style="font-weight: 600"'),t=t.replace(/font-family="NeueFrutigerWorld-Regular, 'Neue Frutiger World'"/g,"font-family=\"'Open Sans', sans-serif\""),t=t.replace(/font-family="NeueFrutigerWorld-Bold, &apos;Neue Frutiger World&apos;"/g,'font-family="\'Open Sans\', sans-serif" style="font-weight: 600"'),t.replace(/font-family="NeueFrutigerWorld-Regular, &apos;Neue Frutiger World&apos;"/g,"font-family=\"'Open Sans', sans-serif\"")}function loadDeckSVG(n,t){var i=getDeckSvgUrl(t);$.ajax({url:i,type:"GET",dataType:"html",success:function(i){var r=replaceLegacyFont(i);n.html(r);postProcessDeck(n,t)},error:function(n){console.log(n)}})}function setAccessibilityAttributes(n){var t=document.getElementById("sideview-side-view"),i=getSelectedDeck(n),o=`Side-view of the ship ${deckObj.ship.shipName} with selected deck ${i.deckName.displayName.toLowerCase()}.`,s=`Selected deck ${i.deckName.displayName.toLowerCase()} includes the following features: ${htmlListToPlainText(i.features)}.`,f,r,e,u;t!=null&&i!=null&&(t.setAttribute("role","img"),t.setAttribute("aria-labelledby","sideview-deckplan-title"),t.setAttribute("aria-describedby","sideview-deckplan-desc"),f=document.querySelector("#sideview-side-view desc"),f!=null?f.textContent=s:(r=document.createElement("desc"),r.setAttribute("id","sideview-deckplan-desc"),r.textContent=s,t.prepend(r)),e=document.querySelector("#sideview-side-view title"),e!=null?e.textContent=o:(u=document.createElement("title"),u.setAttribute("id","sideview-deckplan-title"),u.textContent=o,t.prepend(u)))}function postProcessSideView(n,t){var f="deck-side-view-highlight",e=t.find("#"+f),r,u,o,i;e.size()>0&&e.remove();r=n.toString().length==1&&n.toString()!="0"?"0"+n.toString():n.toString();u=t.find("#deck-"+r+"-side-view");u.size()>0&&(o=t.children("svg").first(),i=u.clone(),i.attr("id",f),i.addClass("deckplan__highlight"),o.append(i));t.find("[id$='-callouts-side-view']").css("visibility","hidden");t.find("#deck-"+r+"-callouts-side-view").css("visibility","visible");setAccessibilityAttributes(n)}function loadSideView(n){var t=$("#svg-2-placeholder");t.children().length==0?loadSideViewSVG(n,t):postProcessSideView(n,t)}function loadSideViewSVG(n,t){var i=getSideViewSvgUrl();$.ajax({url:i,type:"GET",dataType:"html",success:function(i){var r=replaceLegacyFont(i);r=r.replace(/id="(.*?)"/g,'id="$1-side-view"');r=r.replace(/(cls-\d+)/g,"$1-side-view");r=r.replace(/(cls-\d+)/g,"$1-side-view");t.html(r);postProcessSideView(n,t)},error:function(n){console.log(n)}})}function getDeckSvgUrl(n){return n==null||n.deckPlanAsset==null||n.deckPlanAsset[0]==null||n.deckPlanAsset[0].url==null?null:n.deckPlanAsset[0].url}function getSideViewSvgUrl(){return deckObj.ship.shipType.deckPlans[0]==null||deckObj.ship.shipType.deckPlans[0].sideViewDeckPlanAsset==null||deckObj.ship.shipType.deckPlans[0].sideViewDeckPlanAsset[0]==null||deckObj.ship.shipType.deckPlans[0].sideViewDeckPlanAsset[0].url==null?null:deckObj.ship.shipType.deckPlans[0].sideViewDeckPlanAsset[0].url}function getShipPdfUrl(){var n,t;if(deckObj.ship.shipType.deckPlans[0]==null||deckObj.ship.shipType.deckPlans[0].deckPlanImages==null||deckObj.ship.shipType.deckPlans[0].deckPlanImages.length==0)return null;for(n=0;n<deckObj.ship.shipType.deckPlans[0].deckPlanImages.length;n++)if(t=deckObj.ship.shipType.deckPlans[0].deckPlanImages[n],t.url!=null&&t.url.endsWith(".pdf"))return t.url;return null}function getStateroomUrl(n){return urlRoot+"ships/stateroomcategory/roomdetail?categoryId="+n+"&shipId="+deckObj.ship.shipId}function getVenueUrl(n){return urlRoot+"ships/venue/venuedetail?venueId="+n+"&shipId="+deckObj.ship.shipId}function getDefaultInteractiveDeck(){return deckObj.ship.shipType.deckPlans[0]==null||deckObj.ship.shipType.deckPlans[0].interactiveDefaultDeck==null?3:deckObj.ship.shipType.deckPlans[0].interactiveDefaultDeck}function processStaterooms(n,t){var o,u,i,f,r,e,s;if(deckObj.legend.staterooms!=null)for(o=getSelectedDeckStateroomCategories(n),u=0;u<t.length;u++){for(i=t[u],f=0;f<o.length;f++)if(r=o[f],r!=null){if(r.jcrName==i.code){i.displayName=i.label+": "+r.Header.replace(" Stateroom","").replace(/\W\([A-Z]*\)/,"");continue}for(e=0;e<r.categoryId.length;e++)s=r.categoryId[e],s==i.label&&(i.displayName=i.label+": "+r.Header.replace(" Stateroom","").replace(/\W\([A-Z]*\)/,""))}typeof i.displayName=="undefined"&&(i.displayName=i.label)}}function processLegendVenues(n,t){var u,f,i,r;if(t!=null)for(u=getSelectedDeckVenueCards(n),f=0;f<t.length;f++){for(i=t[f],r=0;r<u.length;r++)u[r].jcrName==i.label&&(i.displayName=u[r].title);typeof i.displayName=="undefined"&&(i.displayName=i.label)}}function getSelectedDeck(n){for(var i=shipObj.shipType.deckPlans[0],t=0;t<i.decks.length;t++)if(i.decks[t].deckNumber==n)return i.decks[t];return null}function getSelectedDeckVenueCards(n){var u=[],t,i,r;if(n.onboardVenues==null)return u;for(t=0;t<n.onboardVenues.length;t++)if(i=n.onboardVenues[t],i.cards!=null)for(r=0;r<i.cards.length;r++)u.push(i.cards[r]);return u}function getSelectedDeckStateroomCategories(n){var i=[],t;if(n.staterooms==null)return i;for(t=0;t<n.staterooms.length;t++)i.push(n.staterooms[t].stateroomCategory);return i}function highlightVenue(n){highlightVenueByCode(n)}function removeHighlightVenue(n){removeHighlightVenueByCode(n)}function highlightVenueByCode(n){var i=$("[id='"+n.code+"']"),r,t,u,f;if(n.grouped)for(r=i.children("rect,polygon,path,polyline"),t=0;t<r.length;t++)(u=$(r[t]),f=u.attr("id"),f)&&u.addClass("deckplan__highlight");else i.addClass("deckplan__highlight"),i.children("rect,polygon").addClass("deckplan__highlight")}function removeHighlightVenueByCode(n){var i=$("[id='"+n.code+"']"),r,t,u,f;if(n.grouped)for(r=i.children("rect,polygon,path,polyline"),t=0;t<r.length;t++)(u=$(r[t]),f=u.attr("id"),f)&&u.removeClass("deckplan__highlight");else i.removeClass("deckplan__highlight"),i.children("rect,polygon").removeClass("deckplan__highlight")}function removeHighlightStaterooms(n){var t=$("#"+n.svgId),r=n.grouped,i=n.stateroomCategory;r?removeHighlightFromDeck(t.find("[id*='"+i+"-']")):removeHighlightFromDeck(t.find("[id*='"+i+"']"))}function highlightStaterooms(n){var t=$("#"+n.svgId),r=n.grouped,i=n.stateroomCategory;r?highlightFromDeck(t.find("[id*='"+i+"-']")):highlightFromDeck(t.find("[id*='"+i+"']"))}function highlightFromDeck(n){n.addClass("deckplan__highlight")}function removeHighlightFromDeck(n){n.removeClass("deckplan__highlight")}function toggleDeckplan(n){var t=$(n).toggleClass("deckplan__highlight")}function applyDeckBindings(){$("#deckplan_container .room__detailslink").click(function(n){n.preventDefault();var t=$(this),i=t.attr("href")||t.attr("data-href");SubPageManager.clearModalLoader();SubPageManager.showLoading();vFrmBeaconMgr.init(i,t,SubPageBootstrapModalCallBack,!1)});$("#deckplan_container .svgship__legenditem a").click(function(n){n.preventDefault();var t=$(this),i=t.attr("href")||t.attr("data-href");SubPageManager.clearModalLoader();SubPageManager.showLoading();vFrmBeaconMgr.init(i,t,SubPageBootstrapModalCallBack,!1)})}function toggleDeckMenu(){deckObj.deckMenuOpen()?deckObj.deckMenuOpen(!1):deckObj.deckMenuOpen(!0)}function closeDeckMenu(){deckObj.deckMenuOpen()&&deckObj.deckMenuOpen(!1)}function htmlListToPlainText(n){var f=document.createElement("div"),i,r,u,t;if(f.innerHTML=n,i=f.querySelector("ul, ol"),i){for(r=i.getElementsByTagName("li"),u=[],t=0;t<r.length;t++)u.push(r[t].textContent.trim());return u.join(", ")}return""}String.prototype.endsWith||(String.prototype.endsWith=function(n,t){return(t===undefined||t>this.length)&&(t=this.length),this.substring(t-n.length,t)===n});$(document).ready(function(){$("body").on("click",function(){closeDeckMenu()})});var deckObj={legend:{venues:ko.observableArray(),staterooms:ko.observableArray(),stateroomIds:ko.observableArray(),defaultColor:"rgb(172, 194, 209)"},ship:null,decks:[],selectedDeck:ko.observable(null),pdfUrl:"",deckMenuOpen:ko.observable(!1),deckMenuAria:ko.pureComputed(function(){return deckObj.deckMenuOpen()?"true":"false"},null)}