(function(n,t){var i={init:function(){var i=this;n.BookingModel={UiLayer:new n.UILayerModel({id:"UiLayer",url:n.modelUrl}),BookingLayer:new n.BookingLayerModel({id:"BookingLayer",url:n.modelUrl})};n.getJSON=function(n,i,r){t.ajax({beforeSend:function(n){n.setRequestHeader("AppDyn-Step-Action",r||"StenaLineTravelPublicWeb-NoAction")},dataType:"json",url:n,success:i})};n.tripTypeEnum={Efp:"Efp",Daytrip:"Daytrip",Cruise:"Cruise",FerryAccommodation:"FerryAccommodation",SpecialOffer:"SpecialOffer",Transfer:"Transfer"};this.checkStorageEnabled()&&this.checkCookie()&&i.fetchLayersFromServer()},checkCookie:function(){var n=Modernizr.cookies;return n||this.showCookieFail(),n},showCookieFail:function(){var i=n.m_CookieMessage_texts,r;i&&i.bodymessage&&i.confirmmessage&&(r=t("#CookieMessage"),r.modal())},checkStorageEnabled:function(){function t(){try{return localStorage.setItem("__test","data"),localStorage.removeItem("__test"),!0}catch(n){return!1}}var n=Modernizr.sessionstorage&&Modernizr.localstorage;if(n&&!t()){try{localStorage.clear();sessionStorage.clear()}catch(i){}n=t()}return n||this.showCookieFail(),n},fetchLayersFromServer:function(){var r=this,t="",i="routeStorage";_.isEmpty(n.destinationPageId)||(window.localStorage.setItem("destinationPageId",n.destinationPageId),i+="_"+n.destinationPageId);storage=localStorage.getItem(i);storage!=="undefined"&&storage&&(t+=n.modelUrl.indexOf("?")>-1||t.indexOf("?")>-1?"&"+i+"="+storage:"?"+i+"="+storage);storage=localStorage.getItem("dateStorage");storage!=="undefined"&&storage&&(t+=n.modelUrl.indexOf("?")>-1||t.indexOf("?")>-1?"&dateStorage="+storage:"?dateStorage="+storage);storage=localStorage.getItem("partyCompStorage");storage!=="undefined"&&storage&&(t+=n.modelUrl.indexOf("?")>-1||t.indexOf("?")>-1?"&partyCompStorage="+storage:"?partyCompStorage="+storage);this.fetchLayer||(this.fetchLayer=n.getJSON(n.modelUrl+t,function(t){_.each(t,function(n,t){n&&(n.inSync=!0,t==="BookingLayer"&&(storage=localStorage.getItem("partyCompStorage"),storage!=="undefined"&&storage&&(n.PartyCompStorageStr=storage),n=_.omit(n,["ActiveStep","CurrentAction","ActivePage"])),r.initBookingModel(n,t))});n.$window.trigger("app:ready")},"FindAndBook-Init"))},initBookingModel:function(t,i){n.BookingModel[i]&&(n.BookingModel[i].initSet(t),(n.usingSessionStorage||n.useSessionStorageWithSession)&&n.BookingModel[i].saveLayerToSessionStorage())}};i.init()})(window.STENA=window.STENA||{},jQuery)