(function(n,t){n.AdobeLaunch=n.AdobeLaunch||{};n.AdobeLaunch={alreadyAddedEmail:new String,sessionStorageGUID:"CRM_GUID",sessionStorageSID:"CRM_SID",sessionStorageEmail:"loggedInEmail",setSID:function(){this.removeSessionItem(this.sessionStorageGUID);this.removeSessionItem(this.sessionStorageEmail);this.getSID()||this.setSessionItem(this.sessionStorageSID,Date.now())},getSID:function(){return this.getSessionItem(this.sessionStorageSID)},setGUID:function(n){this.setSessionItem(this.sessionStorageGUID,n)},getGUID:function(){return this.getSessionItem(this.sessionStorageGUID)},setSessionItem:function(n,t){sessionStorage.setItem(n,t)},getSessionItem:function(n){return sessionStorage.getItem(n)},removeSessionItem:function(n){return sessionStorage.removeItem(n)},loggedIn:function(n){var t=this.getSessionItem(this.sessionStorageEmail)||n,i=this.validateEmail(t),r=this.alreadyAddedEmail===t;if(this.getSID()||this.setSessionItem(this.sessionStorageSID,Date.now()),!r)return i?(this.alreadyAddedEmail=t,this.fetchGUIDFromCRM(t)):this.loggedOut()},loggedOut:function(){return this.setSID()},validateEmail:function(n){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(String(n).toLowerCase())},fetchGUIDFromCRM:function(n){var i=this,r;r={email:n};t.ajax({cache:!1,url:"/book/json/CRMContactGUID",dataType:"json",data:r,success:function(n){return n?i.setGUID(n):i.setSID()}}).fail(function(){return null})}}})(window.STENA=window.STENA||{},jQuery),function(n,t,i){n.ModelExtensions=n.ModelExtensions||{};n.ModelExtensions.trackers={getBookingVariables:function(){var f=n.BookingModel.BookingLayer,t=this.getCmsContext(),i=this.getBookingContext(),r=this.getPayingCustomer(),u=this.getActivePageOrStep();return{tripType:this.getTripType(),selectedTripType:this.getSelectedTripType(!0),originalTripType:t.OriginalTripType||this.getTripType(),isProdEnvironment:f.getIsProdEnvironment(),cmsLanguageCode:i.CmsLanguageCode,isAmendment:n.isAmendment,isAgentBooking:t.UsageModestr=="Agent",initBookingAction:n.initBookingAction,activePage:u,offerCode:t.OfferCode,isOneWay:this.getIsOneWay(),currency:i.Currency,depDetailsOut:this.getDepDetails("Out"),depDetailsHome:this.getDepDetails("Home"),custId:n.email||r&&r.Email,dialogName:"WebBook",confirmation:this.getTransactionVariables(n.transactionVariables),usageModeForGA:this.getGAUsageModeStr(t.UsageModeStr),bookingStateForGA:this.getGABookingStateStr(),activePageForGA:this.getActivePageForGA(u),google_conversion_language:this.getConversionLanguageForAdwords(i.CmsLanguageCode),notValidInThisContext:"--Not valid in this context--"}},getDepDetails:function(n){return{routeCode:this.getRouteCode(n),noOfPassengers:this.getNoOfPassengers(n),vehicleCode:this.getVehicleCodeInternal(n),depDate:this.getNoOfPassengers(n)}},getTransactionVariables:function(n){if(!n)return{};var t=[];return n.Trackers&&!_.isEmpty(n.Trackers.BtCookies)&&_.each(n.Trackers.BtCookies,function(n){t.push(n.split("|",2))}),{resCode:n.ResCode,resVersion:n.ResVersion,isAmendment:n.ResVersion&&n.ResVersion>1,totalPrice:n.TotalPrice||0,differenceInPriceFromOriginalReservation:n.DifferenceInPriceFromOriginalReservation,salesOwnerName:n.SalesOwnerName,depInfoList:n.DepInfoList,currency:n.Currency,offerCode:n.OfferCode,email:n.Email,trackers:{btCookies:_.object(t),activeAffiliate:n.Trackers&&n.Trackers.ActiveAffiliate,tradeDoubler:{tduid:n.Trackers&&n.Trackers.TradeDoubler.Tduid,checkSum:n.Trackers&&n.Trackers.TradeDoubler.CheckSum}}}},isAlreadyInSessionStorage:function(n,t,i){return t&&!_.isEmpty(t)&&window.sessionStorage.getItem(n+"_"+t)==i?!0:!1},isAlreadyConfirmedOnce:function(n,t){return this.isAlreadyInSessionStorage(n,"resCode",t.confirmation.resCode+"-"+t.confirmation.resVersion)},getActivePageOrStep:function(){return n.bookingPageName=="LoginPage"?n.bookingPageName:this.getActiveStep()||n.bookingPageName},getBookingContext:function(){return n.BookingModel.BookingLayer.get("BookingContext")},getNoOfPassengers:function(t){return t=="Home"&&this.getIsOneWay()?0:n.BookingModel.BookingLayer.getAmountOfPassengers(t)},getVehicleCodeInternal:function(t){return t=="Home"&&this.getIsOneWay()?"":n.BookingModel.BookingLayer.getVehicleCode(t)},getActivePageForGA:function(n){var t="Sailings"+this.getTripType();if(_.isEmpty(n))return t;switch(n){case"PassengersVehicles":return"PassVeh";case"SailingsFaresByTripType":return t;case"Cabins":return"Cabins";case"OnboardExtra":return"Onboard";case"DestinationDeals":return"DestDeal";case"PassengerDetails":return"PassDet";case"PayAndConfirm":return"PayDet";case"Confirmation":return"Confirm";default:return n}},getConversionLanguageForAdwords:function(n){return _.isEmpty(n)||n.length<2?"en":n.length==8?n.substr(6,2):n.substr(0,2)},getGAUsageModeStr:function(n){var t="Priv";if(_.isEmpty(n))return t;switch(n){case"NotInitialized":return t;case"WebCustomer":return t;case"StaffMember":return"Staff";case"Anonymous":return t;case"Agent":return"Agent";case"OnlinePartner":return"Olp";default:return t}},getGABookingStateStr:function(){return n.isAmendment?"Amend":"New"},getGAActivePage:function(){return n.isAmendment?"Amend":"New"},insertScriptTagAtBeginningOfHead:function(n,t){return this.insertScriptTag({element:"head",injectFirstInElement:!0},n,t)},insertScriptTagAtEndOfHead:function(n,t){return this.insertScriptTag({element:"head",injectFirstInElement:!1},n,t)},insertScriptTagAtBeginningOfBody:function(n,t){return this.insertScriptTag({element:"body",injectFirstInElement:!0},n,t)},insertScriptTagAtEndOfBody:function(n,t){return this.insertScriptTag({element:"body",injectFirstInElement:!1},n,t)},insertScriptTag:function(n,i,r){var s=[],u=document.createElement("script"),e,f,o;return u.type="text/javascript",e="inserted script tag ("+(r==!1?"_not_ async":"async")+") ",r!==!1&&(u.async=!0),u.src=i,f="",n.element=="head"?n.injectFirstInElement?(o=document.getElementsByTagName("script")[0],o.parentNode.insertBefore(u,o),f=e+"at beginning of head"):(t("head")[0].appendChild(u),f=e+"at end of head"):n.injectFirstInElement?(t(u).prependTo(t("body")),f=e+"at beginning of body"):(t("body")[0].appendChild(u),f=e+"at end of body"),s.push([f,i]),s},insertImagePixelAtBeginningOfBody:function(n){try{return this.insertImagePixel(!0,n)}catch(t){return[["FAILED insertImagePixelAtBeginningOfBody",n]]}},insertImagePixelAtEndOfBody:function(n){try{return this.insertImagePixel(!1,n)}catch(t){return[["FAILED insertImagePixelAtEndOfBody",n]]}},insertImagePixel:function(n,i){var f,r,u;try{f=[];r=document.createElement("img");r.setAttribute("style","width: 1px; height: 1px");r.src=i;u="";n?(t(r).prependTo(t("body")),u="inserted image pixel at beginning of body"):(t("body")[0].appendChild(r),u="inserted image pixel at end of body");f.push([u,i])}catch(e){return[["insertImagePixel failed",i],["atBeginningOfBody",n],["imgSrc",i]]}return f},insertIFrameAtBeginningOfBody:function(n,t,i){try{return this.insertIFrame(!0,n,t,i)}catch(r){return[["FAILED insertIFrameAtBeginningOfBody",n]]}},insertIFrameAtEndOfBody:function(n,t,i){try{return this.insertIFrame(!1,n,t,i)}catch(r){return[["FAILED insertIFrameAtEndOfBody",n]]}},insertIFrame:function(n,r,u,f){var c,e,o,l,a,s,h;try{if(c=[],e=null,u&&u.partialViewName?(o=document.getElementById(u.partialViewName),o&&(e=o)):f&&(o=document.getElementById(f),o&&(e=o)),e===null&&(e=document.createElement("iframe"),e.setAttribute("style","width: 0px; height: 0px; margin: 0px"),e.setAttribute("frameBorder","0"),f?e.id=f:u&&u.partialViewName&&(e.id=u.partialViewName)),l="",a=t(e),u){s={};for(h in u)s[h]=u[h]===i?"undefined":u[h]===null?null:u[h].toString();s.parentLocation=encodeURIComponent(document.location.href);s.parentReferrer=encodeURIComponent(document.referrer);s.time=(new Date).getTime();r+="?partialViewName="+u.partialViewName+"&frameDataStr="+JSON.stringify(s);t.ajax({url:r,dataType:"html",success:function(n){e.contentWindow.document.write(n);e.contentWindow.document.close()}})}else e.src=r;n?(a.prependTo(t("body")),l="inserted iframe at beginning of body"):(t("body")[0].appendChild(e),l="inserted iframe at end of body");c.push([l,r]);u&&c.push(["posted message to iframe",u])}catch(v){return[["insertIFrame failed",r,v.message]]}return c},logTrackerError:function(n,t){return["FAILED: "+t,n.message]}}}(window.STENA=window.STENA||{},jQuery),function(n,t){n.Trackers=n.Trackers||{};n.Trackers.ScriptHandler=n.MasterView.extend({el:"",triggerKey:"",template:"",init:function(){var n=this;this.el=this.options.el;this.triggerKey=this.el.replace(/_/g,"-");this.triggerKey=this.triggerKey.replace("#","");t(window).off(this.triggerKey+":pageLoad",null);t(window).on(this.triggerKey+":pageLoad",function(){n.renderView(n.options.getTrackerNamespace(),"pageLoad")});t(window).off(this.triggerKey+":pageReferrer",null);t(window).on(this.triggerKey+":pageReferrer",function(){n.renderView(n.options.getTrackerNamespace(),"pageReferrer")});t(window).off(this.triggerKey+":gtmEvent",null);t(window).on(this.triggerKey+":gtmEvent",function(t,i){n.trackGtmEvents(n.options.getTrackerNamespace(),"gtmEvent",i)})},renderView:function(t,i){var r=null,u,f;try{if(!t)return;this.options&&this.options.BookingLayer?r=this.options.BookingLayer.getBookingVariables():n.Trackers&&n.Trackers.Settings&&n.Trackers.Settings.Sitecore&&(r={activePage:n.Trackers.Settings.Sitecore.ActivePage,confirmation:{isAmendment:!1},isAgentBooking:!1,resCode:"Sitecore"});u=n.Trackers.Settings.getSettings();f=t.getTrackers(r,u,i);r&&this.addToTrackerLog(t.id,f,r,i)}catch(e){}},trackEvents:function(t,i,r,u){var f=null,e,o;try{if(!t)return;this.options.BookingLayer&&(f=this.options.BookingLayer.getBookingVariables());e=n.Trackers.Settings.getSettings();o=t&&t.trackEvents&&t.trackEvents(f,e,i,r,u);o}catch(s){}},trackPageView:function(t,i){var r=null,f,u;try{if(!t)return;this.options.BookingLayer&&(r=this.options.BookingLayer.getBookingVariables());f=n.Trackers.Settings.getSettings();u=t&&t.trackPageView&&t.trackPageView(r,i,f);u&&this.addToTrackerLog(t.id,u,r,i)}catch(e){}},trackGtmEvents:function(t,i,r){var f,u;try{if(!t)return;f=n.Trackers.Settings.getSettings();u=t&&t.trackGtmEvents&&t.trackGtmEvents(null,f,i,r);u&&this.addToTrackerLog(t.id,u,{},i+"-"+r.eventCategory)}catch(e){}},addToTrackerLog:function(n,t,i,r){var s,u,l,h;if(window.sessionStorage.getItem("logTrackingToSessionStorage")==="true"){s=window.sessionStorage.getItem("trackerLog");u=[];s!==null&&(u=JSON.parse(s));var c=new Date,f=c.getHours(),e=c.getMinutes(),o=c.getSeconds();f<10&&(f="0"+f);e<10&&(e="0"+e);o<10&&(o="0"+o);l=""+f+":"+e+"."+o;u.push({page:i&&i.activePage||window.location.pathname,cookieGroupId:n,event:r,time:l,trackers:t});h="trackerLog";window.sessionStorage.removeItem(h);window.sessionStorage.setItem(h,JSON.stringify(u))}}})}(window.STENA=window.STENA||{},jQuery)