'+t[n]+"<\/div>"):$(this).css("margin-bottom","30px");n++})})});swedaviaApp=window.swedaviaApp||{};swedaviaApp.directive("equalizeCardHeight",["$timeout","$window",function(n,t){return{restrict:"A",controller:function(){function f(n,t){return t-n}var n=this,i=[],r=[],u;n.addElement=function(n){i.push(n.find(".parkingCard .parkingCard-page1 .parkingCard-topArea-Container"));r.push(n.find(".parkingCard .parkingCard-page1 .parkingCard-bottomArea-Container"))};n.resize=function(){clearTimeout(u);u=setTimeout(function(){var n=function(n){var t=$(n).map(function(){return this.is(":visible")?this[0]:null}),i,r;t.css("height","");i=t.map(function(){return $(this).outerHeight()});i.sort(f);r=i[0];t.css("height",r)};n(i);n(r)},50)};angular.element(t).bind("resize",function(){n.resize()});angular.element("body").bind("sa.menutabchange",function(){n.resize()});angular.element("body").bind("sa.hideparkingmap",function(){n.resize()})}}}]).directive("equalizeCardHeightAdd",[function(){return{restrict:"A",require:"^^equalizeCardHeight",link:function(n,t,i,r){r.addElement(t);r.resize()}}}]);swedaviaApp=window.swedaviaApp||{};swedaviaApp.filter("momentFilter",function(){return function(n,t){return n===undefined?"":n.format(t)}});swedaviaApp.filter("dateTimeStringFormat",function(){return function(n,t){return moment(n).format(t)}});window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ParkingCardContainerBlockController",["$scope","BookParkingServices","$timeout","$sce","$element",function(n,t,i,r){n.texts={};n.parkingCards=[];n.showSpinner=!1;var u=null;n.init=function(i){n.vm=i;n.VisibleCategories=i.CategoryTags;n.parkingPriceComparison=i.PriceComparisionMode;n.DiscountThresholdValue=i.ParkingDiscountThreshold;n.HasTerminals=i.HasTerminals;t.InitEpiTranslations(i.ParkingCardTexts,n.texts);n.ReturnUrl=i.ReturnUrl};n.loadDataToMultipleCards=function(i){u=i;n.showSpinner=!0;t.FindParking(i,!0).then(function(t){if(t.CarParks.length){var i=$.grep(t.CarParks,n.categoryFilter);$.each(i,function(t,i){i.IsFromApi=!0;i.HasTerminals=n.HasTerminals;i.texts=n.texts;i.ContainerBlockId=n.vm.BlockId});n.parkingCards=i.concat(n.parkingCards);n.sendDataToParentController(n.parkingCards);n.showSpinner=!1;n.errorText=""}}).catch(function(t){n.showSpinner=!1;n.errorText=t.status===503?sa.translate("errormessages/maintenance"):sa.translate("errormessages/managebookingservices")})};n.updateDateOnMultipleCards=function(t){$.each(n.parkingCards,function(n,t){t.IsFromApi&&(t.showPrice=!1,t.hidePricePerDayOrWeek=!0,angular.extend(t,t.originalObject))});t.CarParks.length&&$.each(t.CarParks,function(t,i){var u=$.grep(n.parkingCards,function(n){return n.CarParkId===i.CarParkId}),r;u.length===1&&(r=u[0],r.showPrice=!0,angular.extend(r,i))})};$("body").on("sa.priceupdate",function(t,i){n.updateDateOnMultipleCards(i);$(window).trigger("resize");n.showEmptyPriceArea=!0});n.loadContentAreaCards=function(t){t&&t.length&&($.each(t,function(t,i){i.IsFromApi=!1;i.DescriptionTrusted=r.trustAsHtml(i.Description);i.texts=n.texts;i.ContainerBlockId=n.vm.BlockId}),n.parkingCards=n.parkingCards.concat(t),n.sendDataToParentController(n.parkingCards))};n.sendDataToParentController=function(t){if(n.$parent&&n.$parent.registerGetOffersCallback){var i=function(){return n.mapIsInitialized=!0,$.grep(t,n.categoryFilter)};n.$parent.registerGetOffersCallback(i)}};n.parkingCardValueFunction=function(n){if(n.IsFromApi==!1)return"F";return{premium:"A",indoor:"B",outdoor:"C",longterm:"D",red:"E","":"F"}[n.CategoryTag]+n.ProductName};n.categoryFilter=function(t){return!n.VisibleCategories||n.VisibleCategories.length===0?!0:n.VisibleCategories.indexOf(t.CategoryTag)!=-1?!0:!1}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ParkingSpinnerModuleController",["$scope","BookParkingServices","ManageBookingServices","$timeout","$sce","$element",function(n){n.init=function(t){n.vm=t.vm}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("LanguageSelectorController",["$scope","$element",function(n){var t=[],i=function(n,i){var r=[];i&&i.params&&i.params.date&&(r.push(i.params.date),i.params.flightId&&r.push(i.params.flightId));t=r};n.$on("$routeChangeSuccess",i);n.getUrlWithHash=function(n){return!t||!t.length?n:n+"#/"+t.join("/")}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("IndoorMapController",["$scope","$timeout","$element",function(n,t,i){var o=!1,a=15,u,r,f,s=1,h=.7,e;n.init=function(t){n.vm=t;o=!0;e()};google.maps.event.addDomListener(window,"load",function(){u||e()});e=function(){o&&google&&google.maps&&mapsindoors&&(f=new google.maps.InfoWindow,v())};n.locations=[];var v=function(){var t=function(){this.getTile=function(){var n=document.createElement("div");return n.style.cssText="background:#f5f5f5;width:256px;height:256px;",n};this.tileSize=new google.maps.Size(256,256);this.maxZoom=20},r=$(i).find(".indoor-map-area")[0];u=new google.maps.Map(r,{center:{lat:n.vm.Latitude,lng:n.vm.Longitude},zoom:n.vm.ZoomLevel?n.vm.ZoomLevel:a,disableDefaultUI:!0,zoomControl:!0,fullscreenControl:!0,backgroundColor:"#f5f5f5"});u.mapTypes.set("blankTile",new t);u.setMapTypeId("blankTile");window.googleMap=u;y()},y=function(){r=new mapsindoors.MapsIndoors({map:u,locationVisible:!1,mapStyle:{folder:"kiosk",displayName:"Kiosk"}});window.mapsIndoors=r;google.maps.event.addListener(r,"ready",function(){var t=document.createElement("div"),e=new mapsindoors.FloorSelector(t,r),i;u.controls[google.maps.ControlPosition.RIGHT_TOP].push(t);google.maps.event.addListener(r,"click",function(n){l(n)});google.maps.event.addListener(u,"click",function(){f.close()});google.maps.event.addListener(r,"floor_changed",function(){k(n.locations,r.getFloor())});i=_.clone(n.vm.IndoorMapsIds);c(i,[],p)})},p=function(t){if(n.locations=t,t.length){var i=w(t);b(t,i)}},w=function(n){var u=_.countBy(n,function(n){return n.properties.floor}),t=[],i;return $.each(u,function(n,i){t.push({floor:n,count:i})}),t.sort(function(n,t){return t.count-n.count}),i=t[0].floor,r.setFloor(i),i},b=function(n,t){$.each(n,function(n,i){if(i&&i.geometry&&i.geometry.coordinates&&i.geometry.coordinates.length===2){var e={lat:i.geometry.coordinates[1],lng:i.geometry.coordinates[0]},o=r.getDisplayRule(i),c={url:o.icon,scaledSize:new google.maps.Size(30,30),origin:new google.maps.Point(0,0),anchor:new google.maps.Point(15,0)},f=new google.maps.Marker({position:e,map:u,title:i.properties.name,icon:c,opacity:i.properties.floor!==t?h:s,zIndex:100});google.maps.event.addListener(f,"click",function(){d(i);l(i)});i.googleMarker=f}})},k=function(n,t){n&&n.length&&t&&$.each(n,function(n,i){i.googleMarker.setOpacity(i.properties.floor!==t?h:s)})},c=function(n,t,i){if(n&&n.length){var r=n.shift();mapsindoors.LocationsService.getLocation(r).then(function(n){t.push(n)}).catch(function(n){console.warn(`Failed to get location with id '${r}'`,n)}).finally(function(){c(n,t,i)})}else i(t)},d=function(n){if(!n){console.debug("No location passed to ensureLocationFloorSelected().");return}n.properties.floor&&n.properties.floor!==r.getFloor()&&r.setFloor(n.properties.floor)},l=function(n,t){t===undefined&&(t=f);console.log(n);var i=nt(n);t.setContent(i);t.setPosition({lat:n.geometry.coordinates[1],lng:n.geometry.coordinates[0]});t.open(u);setTimeout(function(){var t=$(".gm-style-iw:not(.rendered)").parent(),i,r;t.addClass("gm-infowindow-container rendered");i=g(n);t.children().addClass(i);r=t.find("div:nth-child(1) > div:nth-child(4) ");r.addClass(i)})},g=function(n){return n.properties&&n.properties.categories.Shops?"green":n.properties&&n.properties.categories.Restaurants?"orange":""},nt=function(n){var r=n.properties.imageURL?'

<\/img>
':"",t=n.properties.name.split(" - "),i=t.length===2&&n.properties.building.indexOf(t[1])!==-1?t[1]+" | "+t[0]:n.properties.name;return i+="
Våning: "+n.properties.floorName,'
{0}{1}<\/div>'.format(r,i)}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("airlineListViewController",["$scope",function(n){n.init=function(t){n.vm=t;n.vm.DisplayCharterAirlines===!0&&(n.translations.listHeaders.airline=sa.translate("airlinelistblock/listheaders/charterOperator"))};n.translations={listHeaders:{airline:sa.translate("airlinelistblock/listheaders/airline"),contact:sa.translate("airlinelistblock/listheaders/contact"),luggageHandler:sa.translate("airlinelistblock/listheaders/luggageHandler"),checkin:sa.translate("airlinelistblock/listheaders/checkin"),terminal:sa.translate("airlinelistblock/listheaders/terminal")},checkin:{automat:sa.translate("airlinelistblock/checkin/automat"),desk:sa.translate("airlinelistblock/checkin/desk"),digital:sa.translate("airlinelistblock/checkin/digital"),checkinschengen:sa.translate("airlinelistblock/checkin/checkinschengen"),checkintext:sa.translate("airlinelistblock/checkin/checkintext")},accessability:{expand:sa.translate("airlinelistblock/accessability/expandtext"),collapse:sa.translate("airlinelistblock/accessability/collapsetext")}}}]);swedaviaApp.filter("html",["$sce",function(n){return function(t){return n.trustAsHtml(t)}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ParkingCardBlockController",["$scope","BookParkingServices","$timeout","$sce","$element",function(n,t,i,r,u){var o,e,c,f;n.setHtmlPropertiesAsTrusted=function(){n.vm.DescriptionTrusted=t.renderDescriptionString(n.vm.Description);n.vm.texts&&n.vm.texts.termsandconditionstext&&(n.vm.texts.termsandconditionstextTrusted=r.trustAsHtml(n.vm.texts.termsandconditionstext));n.vm.texts&&n.vm.texts.newslettertext&&(n.vm.texts.newslettertextTrusted=r.trustAsHtml(n.vm.texts.newslettertext));n.vm.texts&&n.vm.texts.newslettertextdecline&&(n.vm.texts.newslettertextdeclineTrusted=r.trustAsHtml(n.vm.texts.newslettertextdecline))};n.vm={};n.angularItem?n.vm=n.angularItem:n.parameter&&(o=n.parameter.model.carPark,n.vm=JSON.parse(JSON.stringify(o)),n.vm.hasDiscount=function(n,t){return!!t&&!!this.getDiscountPercent&&this.getDiscountPercent(n)>t},n.vm.getDiscountPercent=o.getDiscountPercent,n.ReturnUrl=n.$parent.$parent.$parent.ReturnUrl,n.DiscountThresholdValue=n.$parent.$parent.$parent.DiscountThresholdValue,n.parkingPriceComparison=n.$parent.$parent.$parent.parkingPriceComparison);n.setHtmlPropertiesAsTrusted();n.vm.DateInput=n.vm.DateInput||{};e={to:sa.translate("parkingcard/to"),prebookbuttontext:sa.translate("parkingcard/prebookbutton"),prebookprice:sa.translate("parkingcard/prebookprice"),nonprebookprice:sa.translate("parkingcard/nonprebookprice"),nonprebookpricepromotion:sa.translate("parkingcard/nonprebookpricepromotion"),showonmap:sa.translate("parkingcard/showonmap"),showinfo:sa.translate("parkingcard/showinfo"),arrival:sa.translate("parkingblock/arrival"),datetimeinplh:sa.translate("bookparking/datetimeinplh"),timeinplh:sa.translate("bookparking/timeinplh"),departure:sa.translate("parkingblock/departure"),datetimeoutplh:sa.translate("bookparking/datetimeoutplh"),timeoutplh:sa.translate("bookparking/timeoutplh"),viewpricebookbuttontext:sa.translate("parkingcard/viewprice"),bookbuttontext:sa.translate("parkingcard/book"),cancel:sa.translate("parkingcard/cancel"),paymentchange:sa.translate("parkingcardcontainer/paymentview/change"),paymenttopay:sa.translate("parkingcardcontainer/paymentview/topay"),paymententercredentials:sa.translate("parkingcardcontainer/paymentview/yourcredentials"),paymentcarregnr:sa.translate("parkingcardcontainer/paymentview/carregnr"),paymentemail:sa.translate("parkingcardcontainer/paymentview/email"),paymentpay:sa.translate("parkingcardcontainer/paymentview/pay"),paymentphonenr:sa.translate("parkingcardcontainer/paymentview/phonenr"),noparkingfound:sa.translate("bookparking/noparkingfound"),loadpriceplace:sa.translate("parkingcard/loadpriceplace"),loadreserveparking:sa.translate("parkingcard/loadreserveparking"),loadbookparking:sa.translate("parkingcard/loadbookparking"),soldoutmessage:sa.translate("bookparking/soldoutmessage")};n.vm.texts=$.extend({},e,n.vm.texts);n.vm.originalObject=angular.copy(n.vm);n.translate=function(n){return sa.translate(n)};n.init=function(){l();a();t.registerCardAsRendered(n)};n.RenderPriceComparision=function(){var u=n.vm.TotalPrice,t="0",i="",r;return(n.parkingPriceComparison==="originalPrice"?(t=n.vm.OriginalPrice,i=e.nonprebookpricepromotion):(t=n.vm.PayOnFootPrice,i=e.nonprebookprice),r=parseInt(t),(parseInt(u)
moment().add(r,"minutes")});n.dateValidator=i.validate({rules:{parkingCardInboundDateTime:{validateIsDate:!0,required:!0},parkingCardInboundTime:{CardCheckMinimumEntryTime:!0,required:!0},parkingCardOutboundDateTime:{validateIsDate:!0,required:!0},parkingCardOutboundTime:{required:!0}},messages:{parkingCardInboundDateTime:{validateIsDate:sa.translate("parkingblock/validationmessageselectfromdate"),required:sa.translate("bookparking/validationdatetimein")},parkingCardInboundTime:{CardCheckMinimumEntryTime:sa.translate("bookparking/validationdatetimemin").format(r),required:sa.translate("bookparking/validationtimein")},parkingCardOutboundDateTime:{validateIsDate:sa.translate("parkingblock/validationmessageselecttodate"),required:sa.translate("bookparking/validationdatetimeout")},parkingCardOutboundTime:{required:sa.translate("bookparking/validationtimeout")}}});n.updateDeclinedValidation=function(){setTimeout(function(){var n=$(u).find("[name='DeclineNewsLetter']");n.length&&n.valid()})};n.personalDataValidator=u.find(".parkingCard-form.personal-data-step").validate({rules:{CarRegistrationNumber:{required:!0,maxLength:20,onlyAllowAlphabeticalNumbersAndSpace:!0,validateOnceSwedishRegistrationNumber:!0},Email:{required:!0,email:!0,isCustomEmail:!0},TermsAndConditions:{required:!0},PhoneNumber:{validatePhoneNumber:!0},DeclineNewsLetter:{parkingAcceptOrDeclineHasBeenSelected:!0}},messages:{DeclineNewsLetter:{parkingAcceptOrDeclineHasBeenSelected:sa.translate("parkingblock/validationmessagechoosealternative")},CarRegistrationNumber:{required:sa.translate("parkingcardcontainer/validationregnr"),maxLength:sa.translate("formvalidation/tomanycharacters"),validateOnceSwedishRegistrationNumber:n.vm.texts&&n.vm.texts.registrationnumbervalidation?n.vm.texts.registrationnumbervalidation:sa.translate("parkingcardcontainer/validationregnr"),onlyAllowAlphabeticalNumbersAndSpace:sa.translate("formvalidation/invalidinput")},Email:{email:sa.translate("parkingcardcontainer/validationemail"),isCustomEmail:sa.translate("parkingcardcontainer/validationemail"),required:sa.translate("parkingcardcontainer/validationemail")},TermsAndConditions:{required:sa.translate("parkingcardcontainer/validationterms")},PhoneNumber:{validatePhoneNumber:sa.translate("parkingcardcontainer/validationphone")}},ignore:".treat-error-as-warning",errorPlacement:function(n,t){var i=t.attr("name");i==="TermsAndConditions"||i==="DeclineNewsLetter"?n.insertAfter(t.closest(".inputContainer").find(".errorContainer")):n.insertAfter(t)}})},a=function(){var i=u.find(".parkingCard-form.personal-data-step [name='PhoneNumber']"),n;t.initPhoneNumberRestrictions(i);n=u.find(".parkingCard-form.personal-data-step [name='CarRegistrationNumber']");t.initCarRegistrationRestrictions(n)},y=function(n){var t=moment(n);return{date:t.format("YYYY-MM-DD"),time:t.format("HH:mm")}}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("FindParkingModuleController",["$scope","BookParkingServices","$timeout","$sce","$element",function(n,t,i,r,u){var f,o,e,s;n.isStep1BookParking=!0;n.init=function(t){console.log(t);n.vm=t.vm;n.bookWithDatesInput={Iata:t.vm.Iata,Language:sa.utils.currentLanguage(),CampaignCode:null,AffiliateCode:typeof n.GetCurrentAffiliateCode=="function"?n.GetCurrentAffiliateCode():null,CarParkId:null,CategoryTags:null,ProductNameFilters:null};n.vm.MaxDate=moment(t.vm.MaxDate);n.vm.MinDate=moment(t.vm.MinDate);n.HasTerminals;n.initDatePickers();n.initValidation();n.initAutoComplete()};n.bookWithDates=function(t){t.preventDefault();$(u).find(".BookParkingBookWithDatesForm").valid()&&(n.bookWithDatesInput.SelectDatesByDefault=!0,e(n.bookWithDatesInput))};f=function(){var r,t;if(n.backingBookParkingFlyTo&&n.backingBookParkingFlyFrom){r=n.parkingInboundTime?n.parkingInboundTime:3;t=new Date(n.backingBookParkingFlyTo.dataitem.DepartureTime);t.setHours(t.getHours()-r);t.setMinutes(0);var i=new Date(n.backingBookParkingFlyFrom.dataitem.ArrivalTime),u=i.getMinutes()>0,f=n.parkingOutboundTime?u?n.parkingOutboundTime+1:n.parkingOutboundTime:u?4:3;i.setHours(i.getHours()+f);i.setMinutes(0)}return t=moment(t).format("YYYY-MM-DD HH:mm"),i=moment(i).format("YYYY-MM-DD HH:mm"),{inboundDateTime:t,outboundDateTime:i}};o=function(){var t=f();n.bookWithFlightNumberInput={InboundDateTime:t.inboundDateTime,OutboundDateTime:t.outboundDateTime,Terminal:n.backingBookParkingFlyTo.terminal,Iata:n.currentIata,Language:sa.utils.currentLanguage(),SelectDatesByDefault:!0,Carrier:n.backingBookParkingFlyTo.iata,Destination:n.backingBookParkingFlyTo.destination,AffiliateCode:n.affiliateCode,CampaignCode:n.campaignCode}};n.bookWithFlightNumber=function(t){if(t.preventDefault(),$(u).find(".BookParkingBookWithFlightForm").valid()){var i=f(),r=i.inboundDateTime,s=i.outboundDateTime;n.bookParkingDateTimeIn=r;n.bookParkingDateTimeOut=s;n.bookWithDatesInput.InboundDateTime=r;n.bookWithDatesInput.OutboundDateTime=s;n.bookWithDatesInput.Terminal=n.backingBookParkingFlyTo.terminal;o();e(n.bookWithFlightNumberInput)}};e=function(i){$(".is-in-app-context-extra-space").hide();n.searchResultHeading=sa.translate("bookparking/bestparkingsforyou");n.spinnerText=sa.translate("bookparking/loadparkings");n.showSpinner=!0;n.bookParkingFieldsDisabled=!0;n.showResult=!0;n.showNoResultsFound=!1;n.showNoFeaturedParkingsFound=!1;sa.eventHandler.triggerEvent("beforefindparking");t.FindParking(i,!1).then(function(i){if(n.showSpinner=!1,sa.eventHandler.triggerEvent("afterfindparking",i),n.isStep1BookParking=!1,t.TriggerPageView(t.VirtualPageNames.searchResults),n.offerSearchCallback&&n.offerSearchCallback(i.CarParks),i.CarParks&&i.CarParks.length){var r=$.grep(i.CarParks,function(n){return n.IsFeatured==!0&&n.IsSoldOut==!1});r.length==0&&(n.showNoFeaturedParkingsFound=!0)}else n.showNoResultsFound=!0;sa.utils.isMobileWidth()&&u.find(".parkingResultContainer").velocity("scroll",300)}).catch(function(){alert(sa.translate("errormessages/managebookingservices"));sa.eventHandler.triggerEvent("afterfindparking",{});n.showSpinner=!1;n.showNoResultsFound=!0;n.bookParkingFieldsDisabled=!1})};n.inputFlyToOnClick=function(){n.bookParkingFlyToValidEntryTo&&(n.bookParkingFlyToValidEntryTo=!1,n.backingBookParkingFlyTo=null,n.bookParkingFlyTo=n.lastSearchFlyTo)};n.inputFlyFromOnClick=function(){n.bookParkingFlyToValidEntryFrom&&(n.bookParkingFlyToValidEntryFrom=!1,n.backingBookParkingFlyFrom=null,n.bookParkingFlyFrom=n.lastSearchFlyFrom)};n.initAutoComplete=function(){function f(n,t,i,r){sa.bookparkingservice.searchFlyTo(n,t,i).then(function(n){r(n)})}function e(t){var r=n.HasTerminals,i=[];return t.length>0?$.each(t,function(n,t){i.push({time:moment(t.DepartureTime).format("HH:mm"),destination:t.ArrivalAirport,iata:t.FlightId,dataitem:t,terminal:r?t.Terminal:undefined})}):i.push({time:"",destination:sa.translate("bookflight/noflightfound"),iata:""}),i}function o(n){var t=[];return n.length>0?$.each(n,function(n,i){t.push({time:moment(i.ArrivalTime).format("HH:mm"),destination:i.DepartureAirport,iata:i.FlightId,dataitem:i})}):t.push({time:"",destination:sa.translate("bookflight/noflightfound"),iata:""}),t}var t=null,i=function(n){t||(t=$("<\/div>"),$("body").append(t));var i=n.position();i.width=n.width();i.height=n.outerHeight();t.css(i);t.show()},r=function(){t.hide()};angular.element(".input-bookParkingFlyTo").autocomplete({open:function(){var n=$(this).data("ui-autocomplete").menu.element;$(n).css({"min-width":$(this).outerWidth()+"px"});i(n)},close:function(){setTimeout(r,200)},focus:function(n){/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&$(n.toElement).trigger("click")},select:function(t,i){i.item!==undefined&&i.item.destination!==sa.translate("bookflight/noflightfound")?(n.bookParkingFlyToValidEntryTo=!0,n.backingBookParkingFlyTo=i.item,n.$apply(function(){n.bookParkingFlyTo=i.item.time+", "+i.item.destination+", "+i.item.iata}),$(this).valid(),t.preventDefault(),setTimeout(function(){u.find(".input-bookParkingToDate").val()?u.find(".input-bookParkingFlyFrom").focus():$('[name="bookParkingToDate"]').focus()},0)):(n.bookParkingFlyToValidEntryTo=!1,t.preventDefault())},source:function(t,i){t.term.length>2&&(n.lastSearchFlyTo=t.term,n.isSearchingBookParkingFlyTo=!0,f(t.term,n.bookParkingFromDate,!1,function(t){n.isSearchingBookParkingFlyTo=!1;var r=e(t);i(r);n.$apply()}),n.$apply())}}).autocomplete("widget").addClass("ui-autocomplete-white").addClass("bookParking");angular.element(".input-bookParkingFlyFrom").autocomplete({open:function(){var n=$(this).data("ui-autocomplete").menu.element;$(n).css({"min-width":$(this).outerWidth()+"px"});i(n)},close:function(){setTimeout(r,200)},focus:function(n){/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&$(n.toElement).trigger("click")},select:function(t,i){i.item!==undefined&&i.item.destination!==sa.translate("bookflight/noflightfound")?(n.bookParkingFlyToValidEntryFrom=!0,n.backingBookParkingFlyFrom=i.item,n.$apply(function(){n.bookParkingFlyFrom=i.item.time+", "+i.item.destination+", "+i.item.iata}),$(this).valid(),t.preventDefault()):(n.bookParkingFlyToValidEntryFrom=!1,t.preventDefault())},source:function(t,i){t.term.length>2&&(n.lastSearchFlyFrom=t.term,n.isSearchingBookParkingFlyFrom=!0,f(t.term,n.bookParkingToDate,!0,function(t){n.isSearchingBookParkingFlyFrom=!1;var r=o(t);i(r);n.$apply()}),n.$apply())}}).bind("focus",function(){var t=$(this);t.val().length===0&&n.backingBookParkingFlyTo&&n.backingBookParkingFlyTo.destination?(t.autocomplete("search",n.backingBookParkingFlyTo.destination).autocomplete("widget").addClass("bookParking ui-autocomplete-white"),t.autocomplete("widget").show()):t.autocomplete("widget").addClass("bookParking ui-autocomplete-white")});$(".input-bookParkingFlyTo, .input-bookParkingFlyFrom").each(function(){$(this).autocomplete("instance")._renderItem=function(n,t){return $("
").append(""+t.time+"<\/span>").append(""+t.destination+"<\/span>").append(""+t.iata+"<\/span>").appendTo(n)}})};n.initDatePickers=function(){n.dateTimePickerMinDate=n.vm.MinDate;var i="YYYY-MM-DD",e=t.dateTimePickerDateTimeFormat,r={locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:i,minDate:n.dateTimePickerMinDate,maxDate:t.dateTimePickerBaseMaxDate,useCurrent:!1,showClose:!1,tooltips:sa.utils.dateTimePickerGlobalTooltips},f=$.extend({},r,{format:e,customTimePicker:!0,toolbarPlacement:"none"});angular.element(".input-bookParkingFromDate").datetimepicker($.extend({},r,{maxDate:t.getDateTimePickerInboundMaxDate(t.dateTimePickerBaseMaxDateBookWithFlight)})).on("dp.change",function(t){n.bookParkingFromDate=t.date.format(i);n.backingBookParkingFlyTo=null;angular.element(".input-bookParkingToDate").data("DateTimePicker").minDate(t.date);n.bookParkingFlyTo="";n.$apply();$('[name="bookParkingFlyTo"]').focus()}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")});angular.element(".input-bookParkingToDate").datetimepicker($.extend({},r,{maxDate:t.getDateTimePickerInboundMaxDate(t.dateTimePickerBaseMaxDateBookWithFlight)})).on("dp.change",function(t){n.bookParkingToDate=t.date.format(i);n.backingBookParkingFlyFrom=null;angular.element(".input-bookParkingFromDate").data("DateTimePicker").maxDate(t.date);n.bookParkingFlyFrom="";n.$apply();u.find(".input-bookParkingFlyTo").val()?$('[name="bookParkingFlyFrom"]').focus():u.find(".input-bookParkingFlyTo").focus()}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")});angular.element(".input-bookParkingDateTimeIn").datetimepicker($.extend({widgetPositioning:{vertical:"bottom"}},f,{maxDate:t.getDateTimePickerInboundMaxDate(t.dateTimePickerBaseMaxDate)})).on("dp.change",function(i){var r=u.find(".input-bookParkingDateTimeOut").data("DateTimePicker");t.dateTimePickerChangeFunction(i,r,n.bookWithDatesInput,"InboundDateTime",!0,t.getDateTimePickerOutboundMinDate(n.dateTimePickerMinDate),null);$(this).find("input").trigger("input")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")}).on("dp.hide",function(){sa.utils.scrollElementIntoViewOnIos($(this),30)});angular.element(".input-bookParkingDateTimeOut").datetimepicker($.extend({widgetPositioning:{vertical:"bottom"}},f,{minDate:t.getDateTimePickerOutboundMinDate(n.dateTimePickerMinDate)})).on("dp.change",function(i){var r=u.find(".input-bookParkingDateTimeIn").data("DateTimePicker");t.dateTimePickerChangeFunction(i,r,n.bookWithDatesInput,"OutboundDateTime",!1,null,t.getDateTimePickerInboundMaxDate(t.dateTimePickerBaseMaxDate))}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")}).on("dp.hide",function(){sa.utils.scrollElementIntoViewOnIos($(this),30)})};n.initValidation=function(){$(u).find(".BookParkingBookWithFlightForm").validate({rules:{bookParkingFromDate:{required:!0},bookParkingFlyTo:{required:!0,CheckValidFlightEntryTo:!0},bookParkingToDate:{required:!0},bookParkingFlyFrom:{required:!0,CheckValidFlightEntryFrom:!0}},messages:{bookParkingFromDate:{required:sa.translate("bookparking/validationfromdate")},bookParkingFlyTo:{required:sa.translate("bookparking/validationflyto"),CheckValidFlightEntryTo:sa.translate("bookparking/validationentryflyto")},bookParkingToDate:{required:sa.translate("bookparking/validationtodate")},bookParkingFlyFrom:{required:sa.translate("bookparking/validationflyfrom"),CheckValidFlightEntryFrom:sa.translate("bookparking/validationentryflyfrom")}}});$(u).find(".BookParkingBookWithDatesForm").validate({onfocusout:function(n){s(n)||this.element(n)},onkeyup:!1,onclick:!1,focusCleanup:!0,rules:{bookParkingDateTimeIn:{required:!0,CheckTimeIsSelected:!0},bookParkingDateTimeOut:{required:!0,CheckTimeIsSelected:!0},bookParkingDateTerminal:{required:!0}},messages:{bookParkingDateTimeIn:{required:sa.translate("bookparking/validationdatetimein"),CheckTimeIsSelected:sa.translate("bookparking/validationselecttime")},bookParkingDateTimeOut:{required:sa.translate("bookparking/validationdatetimeout"),CheckTimeIsSelected:sa.translate("bookparking/validationselecttime")},bookParkingDateTerminal:{required:sa.translate("bookparking/validationterminal")}}})};$.validator.addMethod("CheckTimeIsSelected",function(n){return n.split(" ").length===2?!0:!1});$.validator.addMethod("CheckValidFlightEntryTo",function(){return n.bookParkingFlyToValidEntryTo?!0:!1});$.validator.addMethod("CheckValidFlightEntryFrom",function(){return n.bookParkingFlyToValidEntryFrom?!0:!1});s=function(n){return angular.element(angular.element(n).siblings(".bootstrap-datetimepicker-widget")[0]).is(":visible")}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ChartBlockController",["$scope","$element",function(n,t){var i,r,u,f,e,o;n.init=function(t){n.vm=t;n.initChart()};n.initChart=function(){i();var r=$(t).find(".ChartBlockCanvas");r.length===1&&(n.chart&&n.chart.destroy(),n.chart=new Chart(r,n.vm.ChartInitObj))};n.resizeChart=function(){n.initChart()};i=function(){var n=16,t=sa.utils.getCurrentWidthMode();switch(t){case"mobile":n=10;break;case"tablet":n=12;break;case"landscapeTablet":n=12;break;case"desktop":n=16}Chart.defaults.global.defaultFontSize=n};$(window).on("resize",function(){var t=sa.utils.getCurrentWidthMode();Chart.defaults.global.currentWidthMode!==t&&(n.resizeChart(),Chart.defaults.global.currentWidthMode=t)});Chart.HasSetInitOptions!==!0&&(Chart.defaults.global.defaultFontFamily="'Helvetica Neue Medium', 'Arial', 'Verdana', 'Tahoma'",Chart.defaults.global.legend.labels.usePointStyle=!1,Chart.defaults.global.legend.labels.boxWidth=16,Chart.defaults.global.tooltips.cornerRadius=0,Chart.defaults.global.tooltips.backgroundColor="#000",Chart.defaults.global.tooltips.borderWidth=5,Chart.defaults.global.tooltips.intersect=!0,Chart.defaults.global.tooltips.mode="label",Chart.defaults.global.tooltips.positoin="nearest",Chart.defaults.global.defaultFontColor="#545454",Chart.defaults.global.maintainAspectRatio=!1,Chart.defaults.global.hover.intersect=!1,Chart.HasSetInitOptions=!0,r=Chart.defaults.pie.legend.labels.generateLabels,Chart.defaults.pie.legend.labels.generateLabels=function(n){for(var i=r(n),u=n.config.data.datasets[0].data,f=o(u),t=0;t0?!0:!1};n.filterByCategoryAndTerminal=function(t){return(a(t.Terminals,n.selectedTerminal)||n.selectedTerminal===""||n.selectedTerminal===null)&&(l(n.selectedCategory,t)||n.selectedCategory===""||n.selectedCategory===null)};n.GetCategoryTranslation=function(n){return sa.translate("pointofinterestcategories/"+n)};n.GetTerminalTranslation=function(t){if(!t)return"";var i=f("filter")(n.Terminals,{Id:t});return i[0]?i[0].Name:""};n.printedCategoriesFilter=function(t){return n.selectedCategory==null?!0:n.selectedCategory.indexOf(t)!==-1?!0:!1};n.showFilterMenus=!1;n.showFilters=function(){var i,t;n.showFilterMenus===!1?(t=$(u).find(".filters"),t.removeClass("hidden-xs hidden-sm"),i=t.height(),t.height(0),t.velocity({height:i+"px"},{duration:250,complete:function(){$(this).css({height:""});n.showFilterMenus=!0}})):(t=$(u).find(".filters"),t.velocity({height:"0px"},{duration:250,complete:function(){$(this).css({height:""});$(this).addClass("hidden-xs hidden-sm");n.showFilterMenus=!1}}))};var o=function(n,t){var i=n.height();t();r(function(){n.height(i);n.css("height","")})},e=null,s=function(n){n.showLoader=!1;n.showOffers=!1;n.showOpeningHours=!1;n.showMap=!1},c=function(n){e&&e.angularElement!==n&&(o(e.htmlArea,function(){s(e.angularElement)}),e=null)};n.viewOpeningHours=function(n,t){t.preventDefault();c(n);var i=$(t.target).parents(".pointOfInterestContainer").find(".pointOfInterestExtraInfoContainer"),r=!n.showOpeningHours;o(i,function(){s(n);n.showOpeningHours=r});r===!0&&(e={htmlArea:i,angularElement:n})};n.viewMap=function(n,t){t.preventDefault();c(n);var i=$(t.target).parents(".pointOfInterestContainer").find(".pointOfInterestExtraInfoContainer"),r=!n.showMap;o(i,function(){s(n);n.showMap=r});r===!0&&(e={htmlArea:i,angularElement:n})};n.viewOffers=function(n,r){r.preventDefault();c(n);var u=$(r.target).parents(".pointOfInterestContainer").find(".pointOfInterestExtraInfoContainer"),f=!n.showOffers;o(u,function(){if(s(n),n.hasLoadedHtml)n.showOffers=f;else{n.showLoader=!0;var r=sa.utils.isMobileWidth()?4:8,e=["itemsShown="+r,"id="+n.OfferContainerBlockId];i.GetBlockAsHtml("OfferContainerBlock","GetBlockById",e).then(function(i){o(u,function(){n.showLoader=!1;n.offerHtml=t.trustAsHtml(i);n.showOffers=f;n.hasLoadedHtml=!0})})}});f===!0&&(e={htmlArea:u,angularElement:n})}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("BookParkingConfirmationPageController",["$scope","BookParkingServices","$timeout","$sce","ManageBookingServices",function(n,t,i,r,u){var f,e,o,s;n.init=function(t){n.vm=t;n.HasTerminals=n.vm.HasTerminals;n.vm.PostParams&&n.vm.PostParams.BookingGuid?(f(),n.showSpinner=!0):n.showSessionIdError=!0};n.redirectToManagePage=function(){var t=n.vm.ManageBookingPageUrl;t&&sa.utils.redirectPost(t,{BookingGuid:n.Response.Booking.BookingGuid})};f=function(){var f=3600,r=function(){n.vm.PostParams.BookingGuid&&f>0?t.CheckPaymentStatus({BookingGuid:n.vm.PostParams.BookingGuid}).then(function(t){if(n.Response=t,t.BookingIsHandeled===!0){if(n.showSpinner=!1,e(t),u.SetSessionState(null),t.BookingIsModified){var f=t.Booking.BookingPrice,o=t.Booking.ParentBookingPrice;o>f&&(n.RefundsWillBeMade=!0,n.RefundAmount=o-f)}}else i(r,1e3)}).catch(function(){i(r,1e3)}):(n.showSessionIdError=!0,n.showSpinner=!1);f--};r()};n.renderPriceString=function(n){return n?t.renderPriceString(n.toString()):""};e=function(n){var u=sa.utils.checkCookieCategory("Statistics"),i,r;u==="1"&&(window.dataLayer=window.dataLayer||[],n.PaymentIsApproved===!0?(i=o(n),console.log("gtmTransaction",i),dataLayer.push(i),dataLayer.push({event:"transactionReady"}),t.TriggerPageView(t.VirtualPageNames.paymentComplete)):(n.PaymentIsCanceled||n.PaymentIsDeclined)&&(r=s(n),console.log("failedPayment",r),dataLayer.push(r),t.TriggerPageView(t.VirtualPageNames.paymentFailed)))};n.ReinitPaymentSession=function(){n.showSpinner=!0;var i=[window.location.protocol,"//",window.location.host,window.location.pathname].join("");t.ReinitPaymentSession({ReturnUrl:i,BookingGuid:n.vm.PostParams.BookingGuid}).then(function(i){n.showSpinner=!1;n.iframeUrl=r.trustAsResourceUrl(i.IframeUrl);n.showIframe=!0;n.hideIframe=function(){this.showIframe=!1};t.InitPaymentIframe(n);t.TriggerPageView(t.VirtualPageNames.payment)})};o=function(n){try{var i=parseFloat(n.Booking.BookingPrice),t=i/1.25,r=i-t;return{event:"purchase",ecommerce:{transaction_id:n.Booking.BookingReference,value:t,tax:r,currency:"SEK",items:[{item_id:n.Booking.ProductCode,item_name:n.Booking.AirportIata+" - "+n.Booking.CarParkName,item_category:"Parking "+n.Booking.AirportName,price:t,quantity:1}]}}}catch(u){return console.log(u),undefined}};s=function(n){try{return{saTempBookingID:n.Booking.BookingReference,saPaymentErrorCode:n.PaymentResponseCode}}catch(t){return console.log(t),undefined}}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("CrowdLevelsController",["$scope","CrowdLevelsService",function(n,t){n.init=function(r){n.vm=r;n.currentTerminal=5;n.heading=n.vm.Heading;t.GetCrowdLevels(n.vm).then(function(t){n.allCrowdLevels=t;n.crowdLevel=$.grep(t,function(t){return t.TerminalCode==n.currentTerminal})[0];n.crowdLevel&&(n.crowdLevel.text=i(n.crowdLevel))})};n.getNumber=function(n){return new Array(n)};var i=function(n){switch(n.CrowdLevel){case 1:return sa.translate("crowdlevels/crowdlevelcount/low");case 2:return sa.translate("crowdlevels/crowdlevelcount/medium");case 3:return sa.translate("crowdlevels/crowdlevelcount/high");default:return"N/A"}}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("NewsLetterSubscriptionBlockController",["$scope","$element","EpiCampaignServices","$timeout",function(n,t,i){n.init=function(t){n.vm=t};n.subscribe=function(){$(t).find(".newsletter-subscription-form").valid()&&(n.disableForm=!0,n.email=n.vm.SubcribeInput.email,i.Subscribe(n.vm.SubcribeInput).then(function(i){n.response=i;var r=$(t).find("form");r.hide(750)}))};$(t).find(".newsletter-subscription-form").validate({errorPlacement:function(n,t){t.hasClass("customError")||t.after(n)},rules:{email:{required:!0,email:!0},termsAndConditions:{required:!0}},messages:{email:{required:sa.translate("formvalidation/email"),email:sa.translate("formvalidation/email")},termsAndConditions:{required:sa.translate("formvalidation/termsandcondition")}}})}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("storytellingHeaderBarController",["$scope",function(n){n.isMenuOpen=!1;$(".corner-background-image").css({width:"200px",height:"200px"});n.openMenu=function(){var t=$(window).width(),i=$(window).height();$(".hamburger-menuicon").css({opacity:"0"});$(".logoWrapper").css({opacity:"0"});$(".logo-hamburgermenu").css({opacity:"1"});n.isMenuOpen=!0;sa.utils.toggleHasScrollableOverlay(n.isMenuOpen);t>=i?$(".corner-background-image").velocity({width:"160vw",height:"160vw"},{duration:800,easing:"easeInSine"}):$(".corner-background-image").velocity({width:"160vh",height:"160vh"},{duration:800,easing:"easeInSine"});$(".menu-wrapper").addClass("contentshow");$(".moving-circles").addClass("contentshow")};window.addEventListener("resize",function(){if(n.isMenuOpen==!0){var t=$(window).width(),i=$(window).height();t>=i?$(".corner-background-image").css({width:"160vw",height:"160vw"}):$(".corner-background-image").css({width:"160vh",height:"160vh"})}else $(".corner-background-image").css({width:"200px",height:"200px"})});n.closeMenu=function(){$(".corner-background-image").velocity("stop").css({width:"200px",height:"200px"});$(".hamburger-menuicon").css({opacity:"1"});$(".logoWrapper").css({opacity:"1"});$(".logo-hamburgermenu").css({opacity:"0"});$(".menu-wrapper").removeClass("contentshow");$(".moving-circles").removeClass("contentshow");n.isMenuOpen=!1;sa.utils.toggleHasScrollableOverlay(n.isMenuOpen)}}]);window.swedaviaApp=window.swedaviaApp||{};pageListViewModel=window.PageListModel||{};swedaviaApp.controller("pageListBlockController",["$scope","$element",function(n,t){n.pagination={currentPage:1,numPerPage:5,totalItems:0};n.nextText=sa.translate("pagelist/paging/next");n.previousText=sa.translate("pagelist/paging/previous");n.pageList={Pages:[]};n.init=function(t){n.pageList=t.Pages;n.pagination.numPerPage=t.MaxItemsPerPage;n.pagination.totalItems=t.Pages.length};n.scrollToTop=function(){if(sa.utils.isMobileWidth())return!1;var i=$(".AnchorLinksFixed").outerHeight()?$(".AnchorLinksFixed").outerHeight()+10:0,n=t.closest(".pageListBlock").find(".pageListHeading");n.length||(n=$("#MainContent"),i=0);n.velocity("scroll",{offset:-i},100)}}]);swedaviaApp.filter("html",["$sce",function(n){return function(t){return n.trustAsHtml(t)}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ParkingOffersSearchController",["$scope","BookParkingServices","$timeout","$sce","$element","$filter",function(n,t,i,r,u,f){var o="rewardno",y="[REWARD_NO]",s="phid",h,e,a,v;n.texts={};h=function(i){t.InitEpiTranslations(i,n.texts)};n.parkingCards=[];n.showSpinner=!1;n.init=function(t,i,r,u){n.campaignCode=t;it();n.affiliateStatus=rt(i);n.ParkingSortOrder=r;p();h(u);a();v();w();b()};var p=function(){t.GetAirportSpecificOrder().then(function(n){n&&(l=n)}).catch(function(){console.log("Could not retrieve airport specific parking sort order.")})},w=function(){var r=sa.utils.getHashParams(),u=r[s],i=null,t;try{i=sessionStorage.getItem(u)}catch(f){alert("Your browser currently does not support sessionstorage. You won't be able to resume state.");console.log(f)}t=JSON.parse(i);t&&t.selectedParking&&(n.selectedParkingToPayFor=t.selectedParking,n.$parent.isStep1BookParking=!1,n.$parent.showResult=!0,n.$parent.searchResultHeading=sa.translate("parkingcardcontainer/paymentview/yourchoice"),n.$parent.bookParkingDateTimeIn=n.selectedParkingToPayFor.DateInput.InboundDateTime,n.$parent.bookParkingDateTimeOut=n.selectedParkingToPayFor.DateInput.OutboundDateTime,n.$parent.bookWithDatesInput.InboundDateTime=n.selectedParkingToPayFor.DateInput.InboundDateTime,n.$parent.bookWithDatesInput.OutboundDateTime=n.selectedParkingToPayFor.DateInput.OutboundDateTime,n.$parent.bookWithDatesInput.Terminal=t.terminalKey,n.parkingCards=t.searchResult,n.hideParkingCards=!0,c())},b=function(){var t=sa.utils.getQueryFromName(o);t&&(n.selectedParkingToPayFor=n.selectedParkingToPayFor||{},n.selectedParkingToPayFor.BookParkingInput=n.selectedParkingToPayFor.BookParkingInput||{},n.selectedParkingToPayFor.BookParkingInput.LoyaltyNumber=t)},k=function(n){return n.IsSoldOut===!1&&n.IsFeatured===!0},d=function(t){return n.promotionStatus===!0&&t.IsPromotionCodeValid===!1},g=function(t){return n.affiliateStatus&&t.AffiliateResult===!0},nt=function(n){return d(n)||g(n)},tt=function(t){var i=n.promotionStatus||n.affiliateStatus;return i?nt(t):k(t)};n.$parent&&n.$parent.registerOfferSearchCallback&&n.$parent.registerOfferSearchCallback(function(t,i){if($.each(t,function(t,i){i.IsFromApi=!0;i.texts=n.texts}),n.parkingCards=t,n.parkingCardsLimit=4,n.ParkingSortOrder==="airportspecific"){var r=window.sa.utils.currentAirportIataCode();n.filteredParkingCards=n.doAirportSpecificSorting(t,i.Terminal,r)}else n.filteredParkingCards=f("filter")(t,tt);n.filteredParkingCards.length===1?(n.ReserveParking(n.filteredParkingCards[0]),n.hideParkingCards=!0):n.hideParkingCards=!1;n.cardsIsMoreThanLimit=n.filteredParkingCards.length>n.parkingCardsLimit});n.showAllParkingsClick=function(t,i){t?n.showAllParkingsInHeroArea():n.selectAllParkingsTab(i)};n.hideParkingCards=!1;n.selectAllParkingsTab=function(n){var t=n-1;$("body").trigger("sa.scrolltotab",{tabIndex:t,alwaysAnimate:!0,scrollCurrentTab:!0})};n.showAllParkingsInHeroArea=function(){n.parkingCardsLimit=""};var it=function(){n.promotionStatus=n.campaignCode.length>0?!0:!1},rt=function(n){return n.length>0?!0:!1},ut=function(n){var t=$(window).scrollTop(),i=n.offset().top;t>i&&n.velocity("scroll",300)},c=function(){var n=u.find(".parking-paymentView-container"),t=n.height(),i=n.offset().top-(window.innerHeight-t)/2;$("html, body").velocity("scroll",{offset:i},0);$(n).find("input[name='CarRegistrationNumber']").focus()};n.ReserveParking=function(r){ut(u.closest(".parkingResultContainer"));n.selectedParkingToPayFor=$.extend(n.selectedParkingToPayFor,r);n.$parent.spinnerText=sa.translate("bookparking/loadreserveparking");n.$parent.showSpinner=!0;t.ReserveParking(r.DateInput).then(function(u){n.$parent.searchResultHeading=sa.translate("parkingcardcontainer/paymentview/yourchoice");n.$parent.showSpinner=!1;n.hideParkingCards=!0;n.$parent.showResult=!0;n.selectedParkingToPayFor.BookParkingInput=n.selectedParkingToPayFor.BookParkingInput?n.selectedParkingToPayFor.BookParkingInput:{};n.selectedParkingToPayFor.BookParkingInput.BookingGuid=u.booking.guid;n.selectedParkingToPayFor.ParkingItemId=u.booking.parkingItemId;n.personalDataValidator.resetForm();i(c);t.TriggerPageView(t.VirtualPageNames.personalInfo);var f=n.GetCheckForUpgradeInput(r.DateInput,u.booking.guid);t.CheckForUpgrade(f).then(function(t){t&&t.Results&&(n.doneUpgradeParking=!1,n.upgradeParkingCards=t.Results)})}).catch(function(){n.$parent.showSpinner=!1;alert(sa.translate("bookparking/generalerror"))})};n.UpgradeParking=function(i){var u=i.ProductId,r;n.$parent.spinnerText=sa.translate("bookparking/loadreserveparking");n.$parent.showSpinner=!0;r=n.GetUpgradeParkingInput(u);t.UpgradeParking(r).then(function(t){n.$parent.showSpinner=!1;n.doneUpgradeParking=!0;n.selectedParkingToPayFor.OriginalPrice=i.OriginalPrice;n.selectedParkingToPayFor.PayOnFootPrice=i.PayOnFootPrice;n.selectedParkingToPayFor.BookParkingInput.BookingGuid=t.BookingGuid;n.selectedParkingToPayFor.TotalPrice=t.BookingPrice;n.selectedParkingToPayFor.CategoryName=t.CategoryName;n.selectedParkingToPayFor.CategoryTag=t.CategoryTag;n.selectedParkingToPayFor.ProductCode=t.ProductCode;n.selectedParkingToPayFor.ProductId=t.ProductId;n.selectedParkingToPayFor.ProductLabel=t.ProductLabel;n.selectedParkingToPayFor.ProductName=t.ProductName;n.selectedParkingToPayFor.Terminal=t.Terminal;n.selectedParkingToPayFor.TransferTime=t.TransferTime;n.selectedParkingToPayFor.TransferType=t.TransferType}).catch(function(){n.$parent.showSpinner=!1;alert(sa.translate("bookparking/generalerror"))})};n.CancelUpgrade=function(){n.doneUpgradeParking=!0};n.GetCheckForUpgradeInput=function(n,t){var i={};return i.InboundDateTime=n.InboundDateTime,i.OutboundDateTime=n.OutboundDateTime,i.Iata=n.Iata,i.ProductId=n.ProductId,i.Terminal=n.Terminal,i.Guid=t,i.Language=n.Language,i};n.GetUpgradeParkingInput=function(t){var i={};return i.Iata=n.selectedParkingToPayFor.Iata,i.Guid=n.selectedParkingToPayFor.BookParkingInput.BookingGuid,i.ParkingItemId=n.selectedParkingToPayFor.ParkingItemId,i.ProductId=t,i.Language=sa.utils.currentLanguage(),i};n.BookParking=function(i){$(i.target).parents(".parking-paymentView-form").valid()&&(n.$parent.spinnerText=sa.translate("bookparking/loadbookparking"),n.$parent.showSpinner=!0,n.selectedParkingToPayFor.BookParkingInput.ReturnUrl=t.GenerateReturnUrl(n.vm.ReturnUrl),n.selectedParkingToPayFor.BookParkingInput.Language=sa.utils.currentLanguage(),n.selectedParkingToPayFor.BookParkingInput.Iata=n.selectedParkingToPayFor.Iata,n.selectedParkingToPayFor.BookParkingInput.Carrier=n.selectedParkingToPayFor.SearchInfoCarrier,n.selectedParkingToPayFor.BookParkingInput.Destination=n.selectedParkingToPayFor.SearchInfoDestination,t.BookParking(n.selectedParkingToPayFor.BookParkingInput).then(function(i){n.$parent.showSpinner=!1;n.iframeUrl=r.trustAsResourceUrl(i.IframeUrl);n.showIframe=!0;n.hideIframe=function(){this.showIframe=!1};t.InitPaymentIframe(n);t.TriggerPageView(t.VirtualPageNames.payment)}).catch(function(){n.$parent.showSpinner=!1;alert(sa.translate("bookparking/generalerror"))}))};n.cancelPayment=function(){n.$parent.searchResultHeading=sa.translate("bookparking/bestparkingsforyou");n.hideParkingCards=!1;t.TriggerPageView(t.VirtualPageNames.searchResults)};n.orderParkingsSeachResult=function(t){var i;return n.ParkingSortOrder==="timetoterminal"&&(i=parseInt(t.TransferTime),!isNaN(i))?i:n.ParkingSortOrder==="pricedec"&&(i=parseInt("-"+t.OriginalPrice),!isNaN(i))?i:n.ParkingSortOrder==="priceasc"&&(i=parseInt(t.OriginalPrice),!isNaN(i))?i:""};var l={ARN:{t2t3:{premium:["P60"],indoor:["P21","P22","P51","P53"],outdoor:["P46","P45"],longterm:["P57","P56","P41","P85","P75","P1"]},t4:{premium:["P60"],indoor:["P41","P21","P22","P51","P53"],outdoor:["P46","P45"],longterm:["P57","P56","P85","P75","P1"]},t5:{premium:["P60"],indoor:["P51","P53","P21","P22"],outdoor:["P46","P45"],longterm:["P57","P56","P41","P85","P75","P1"]}},GOT:{ALL:{indoor:["GP4","GP3"],outdoor:["GP2","GP6"],longterm1:["GP8","GP7"],longterm2:["GP5","GP6"]}}},ft={ARN:{2:"t2t3",3:"t2t3",4:"t4",5:"t5"}},et=function(n){var t={};return $.each(l[n],function(n,i){var r={},u=0;$.each(i,function(n,t){var i={};$.each(t,function(n,t){i[t]=u*10+n});r[n]=i;u++});t[n]=r}),t};n.doAirportSpecificSorting=function(t,i,r){var e=ft[r],a=e==undefined?"ALL":e[i],f,l;n.carparkSortOrderTree||(n.carparkSortOrderTree=et(r));var u=[],o=n.carparkSortOrderTree[a],s={};$.each(o,function(n,t){$.each(t,function(n,t){s[n]=t})});var h=function(n){try{return s[n.CarParkCode]}catch(t){return console.debug("getCarparkSortorder failed for carpark: ",n,t),0}},v=function(n,t){return h(n)-h(t)},c=function(n,t){return t.TotalPrice-n.TotalPrice};return t=t.filter(function(n){return!n.IsSoldOut}),t.sort(v),$.each(o,function(n,i){$.each(i,function(n){var i=!0;return $.each(t,function(r,f){if(f.CarParkCode===n)return u.push(f),t.splice(r,1),i=!1,!1}),i})}),f=4-u.length,f>0&&(l=t.splice(0,f),u=u.concat(l)),u.sort(c),t.sort(c),t=u.concat(t)};e={nonprebookprice:sa.translate("parkingcard/nonprebookprice"),nonprebookpricepromotion:sa.translate("parkingcard/nonprebookpricepromotion")};n.RenderPriceComparision=function(){var t="0",i="",r;return n.selectedParkingToPayFor?(n.parkingPriceComparison==="originalPrice"?(t=n.selectedParkingToPayFor.OriginalPrice?n.selectedParkingToPayFor.OriginalPrice:"0",i=e.nonprebookpricepromotion):(t=n.selectedParkingToPayFor.PayOnFootPrice?n.selectedParkingToPayFor.PayOnFootPrice:"0",i=e.nonprebookprice),r=parseInt(t),parseInt(n.selectedParkingToPayFor.TotalPrice)-1?"&":"?",o,"=",y,u].join("");c=[f,f.indexOf("?")>-1?"&":"?","returnUrl=",encodeURIComponent(h)].join("");i(function(){window.location=c})}};n.updateDeclinedValidation=function(){setTimeout(function(){var n=$(u).find(".parking-paymentView-form").find("[name='DeclineNewsLetter']");n.length&&n.valid()})};a=function(){n.personalDataValidator=$(u).find(".parking-paymentView-form").validate({rules:{NorwegianRewardNumber:{required:!1,isValidRewardNumberNorwegian:!0},CarRegistrationNumber:{required:!0,maxLength:20,onlyAllowAlphabeticalNumbersAndSpace:!0,validateOnceSwedishRegistrationNumber:!0},Email:{email:!0,isCustomEmail:!0,required:!0},TermsAndConditions:{required:!0},PhoneNumber:{validatePhoneNumber:!0},DeclineNewsLetter:{parkingAcceptOrDeclineHasBeenSelected:!0}},messages:{DeclineNewsLetter:{parkingAcceptOrDeclineHasBeenSelected:sa.translate("parkingblock/validationmessagechoosealternative")},NorwegianRewardNumber:{isValidRewardNumberNorwegian:sa.translate("parkingblock/loyaltyprogram/loyaltyvalidationerror")},CarRegistrationNumber:{required:sa.translate("parkingcardcontainer/validationregnr"),maxLength:sa.translate("formvalidation/tomanycharacters"),validateOnceSwedishRegistrationNumber:n.texts.registrationnumbervalidation?n.texts.registrationnumbervalidation:sa.translate("parkingcardcontainer/validationregnr"),onlyAllowAlphabeticalNumbersAndSpace:sa.translate("formvalidation/invalidinput")},Email:{email:sa.translate("parkingcardcontainer/validationemail"),isCustomEmail:sa.translate("parkingcardcontainer/validationemail"),required:sa.translate("parkingcardcontainer/validationemail")},TermsAndConditions:{required:sa.translate("parkingcardcontainer/validationterms")},PhoneNumber:{validatePhoneNumber:sa.translate("parkingcardcontainer/validationphone")}},ignore:".treat-error-as-warning",errorPlacement:function(n,t){var i=t.attr("name");i==="TermsAndConditions"||i==="DeclineNewsLetter"?n.insertAfter(t.find("~ .parking-paymentView-acceptTermsText")):n.insertAfter(t)}})};v=function(){var i=u.find(".parking-paymentView-form [name='PhoneNumber']"),n;t.initPhoneNumberRestrictions(i);n=u.find(".parking-paymentView-form [name='CarRegistrationNumber']");t.initCarRegistrationRestrictions(n)}}]);window.swedaviaApp=window.swedaviaApp||{};googleMapsViewModel=window.googleMapsViewModel||{};googleMapsBlockController=swedaviaApp.controller("googleMapsBlockController",["$scope","uiGmapGoogleMapApi","uiGmapIsReady",function(n,t,i){var e=googleMapsViewModel.GoogleMapsMarkers,u=googleMapsViewModel.ZoomLevel,r,f=[],o=[{featureType:"administrative",elementType:"labels",stylers:[{visibility:"off"}]},{featureType:"poi",elementType:"labels",stylers:[{visibility:"off"}]},{featureType:"water",elementType:"labels",stylers:[{visibility:"off"}]},{featureType:"road",elementType:"labels",stylers:[{visibility:"off"}]}],s={center:{lat:30.397,lng:20.644},zoom:u,streetViewControl:!1,mapTypeControl:!1,minZoom:2,mapTypeId:"noLabelsStyles",scrollwheel:!1,draggable:!1};n.clusterOptions={gridSize:40,averageCenter:!0,styles:[{textColor:"white",url:"/Static/img/MarkerCluster.png",height:36,width:36}]};n.map={center:{latitude:45,longitude:-73},options:s,control:{}};i.promise(1).then(function(n){n.forEach(function(n){r=n.map;r.mapTypes.set("noLabelsStyles",new google.maps.StyledMapType(o,{name:"No Labels Styles"}));google.maps.event.addDomListener(window,"resize",function(){i()});google.maps.event.addDomListenerOnce(r,"idle",function(){r.setZoom(u)});var t=function(){var t=[],i,n,e,o;for(_.each(f,function(n){t.push(new google.maps.LatLng(n.latitude,n.longitude))}),i=new google.maps.LatLngBounds,n=0,e=t.length;nr.hours()?1:i.hours()r.minutes()?1:i.minutes()r.seconds()?1:i.seconds()r.hours()?1:i.hours()r.minutes()?1:i.minutes()r.seconds()?1:i.seconds()0?!0:!1}var i={carrierShortName:n,carrierName:t};l.length===0&&l.push({carrierShortName:"",carrierName:sa.translate("timetable/showallcarriers")});r(i,l)||l.push(i)},rt=function(n,i,r){var u=n.swedaviaAirportIsFromDestination?n.swedaviaAirportInput:angular.element(".js-TimeTableDestinationInput:visible").val(),f=n.swedaviaAirportIsFromDestination?angular.element(".js-TimeTableDestinationInput:visible").val():n.swedaviaAirportInput;o=="form1"?(n.directFlightsHeader=t.trustAsHtml(sa.translate("timetable/directflightsheader").format(i,""+f+"<\/strong>",""+u+"<\/strong>")),n.nonDirectFlightsHeader=t.trustAsHtml(sa.translate("timetable/nondirectflightsheader").format(r,""+f+"<\/strong>",""+u+"<\/strong>"))):o=="form2"&&(n.directFlightsHeader=t.trustAsHtml(sa.translate("timetable/directflightsheader").format(i,""+h.format("YYYY-MM-DD")+"<\/strong>",""+u+"<\/strong>")),n.nonDirectFlightsHeader=t.trustAsHtml(sa.translate("timetable/nondirectflightsheader").format(r,""+h.format("YYYY-MM-DD")+"<\/strong>",""+u+"<\/strong>")))},st=function(t){var f;if(o=="form1"){var r=moment(t),i=moment(t).subtract(1,"days"),u=moment(t).add(1,"days");n.prevDateText=i.format("DD MMM","se");n.nextDateText=u.format("DD MMM","se");n.currentSearchDate=r.format("DD MMM YYYY");n.currentSearchDateTime=r;angular.element(".js-timeTableBlock-searchDays-prevDay").data("date",i);angular.element(".js-timeTableBlock-searchDays-nextDay").data("date",u);f=i0){d();var r={directFlights:[],nonDirectFlights:[]};_.each(t,function(n){_.each(n.flightNumbers,function(n){ot(n.carrier,n.carrierName)});n.numberOfStops===0?r.directFlights.push(n):r.nonDirectFlights.push(n)});n.viewFlightData.directFlights=r.directFlights;n.viewFlightData.nonDirectFlights=r.nonDirectFlights;n.carriers=l;angular.copy(r,s);rt(n,s.directFlights.length,s.nonDirectFlights.length);st(i);n.showFilter=!0;n.showSearchDays=!0;angular.element(".timeTableBlock-searchContainer-filter").velocity("scroll",300)}else $('.DesContainer input[type="range"].rangesliderDes').rangeslider("destroy"),n.showFilter=!1,n.showSearchDays=!1,n.noSearchResults=!0;n.showLoader=!1;n.showSearchResult=!0},ht=function(){u.getAllAirports(sa.utils.currentLanguage()).then(function(t){g=t;n.disabledInputs=!1}).catch(function(n){n&&n.data&&n.data.exceptionMessage&&alert(n.data.exceptionMessage)})},ut=function(n,t){var i=new RegExp("("+$.ui.autocomplete.escapeRegex(t)+")","ig");return n.replace(i,"$1<\/strong>")},ct=function(n,t){var i=n.indexOf(t.flightNumber)>-1;return!!i},lt=function(n){var t=[];return _.each(g,function(i){var r={},e=i.name+i.cityName+i.iata+i.countryName,o=new RegExp($.ui.autocomplete.escapeRegex(n.term),"i"),f,u;r.label=ut(i.name+"/"+i.countryName+" ("+i.iata+")",n.term);r.value=r.label;r.iata=i.iata;r.shortName=i.name;r.isDestination=!1;f=e.match(o);f&&(t.length<1&&_.indexOf(it,i.iata)===-1&&(u={},u.label=ut(i.cityName+"/"+i.countryName+" ("+sa.translate("timetable/allairportstext")+")",n.term),u.iata=i.cityCode,u.shortName=i.cityName,u.value=u.label,u.isDestination=!0,t.unshift(u)),_.indexOf(it,i.iata)!==-1?(r.isSwedaviaIata=!0,r.isSwedaviaIata=!0,t.splice(1,0,r)):t.push(r))}),t},y=null,at=function(){function t(n,t){var i=t.item.value;i=i.replace("","").replace("<\/strong>","");t.item.value=i}function i(t,i){var r=i.item.value;r=r.replace("","").replace("<\/strong>","");i.item.value=r;y=$(".js-TimeTableDestinationInput");angular.forEach(y,function(n){angular.element(n).data({iata:i.item.iata,isdestination:i.item.isDestination,shortname:i.item.shortName}).val(i.item.value)});n.$apply()}$.widget("ui.autocomplete",$.ui.autocomplete,{_renderItem:function(n,t){return angular.element("<\/li>").data("item.autocomplete",t).append(angular.element("<\/a>").html(t.label)).appendTo(n)}});angular.element(".js-TimeTableDestinationInput").autocomplete({maxShowItems:15,select:function(n,t){i(n,t);$(this).valid()},autoFocus:!0,source:function(n,t){n.term.length>2&&t(lt(n))},focus:t,open:function(){$(this).on("blur",function(){$($(this).data("uiAutocomplete").menu.activeMenu).find("a:first").trigger("click");$(this).blur()})},close:function(){$(this).unbind("blur")}}).prop("disabled",!1)};n.TimeTableInit=function(t){n.disabledInputs=!0;n.swedaviaAirportIsFromDestination=!0;n.searchView=!0;n.disableSearchButton=!0;t&&(c=t.toUpperCase());n.swedaviaAirportInput=ft[c];angular.element(".js-TimeTableDestinationInput:visible").focus();nt.datetimepicker({locale:sa.utils.currentFullSupportedLanguageOrDefault(!0),ignoreReadonly:!0,allowInputToggle:!0,format:"YYYY-MM-DD",showClose:!0,tooltips:sa.utils.dateTimePickerGlobalTooltips,widgetPositioning:{vertical:"bottom"}}).on("dp.show",function(){$(".timepicker-hour").removeAttr("data-action");$(".picker-switch").removeAttr("data-action")});tt.datetimepicker({locale:sa.utils.currentFullSupportedLanguageOrDefault(!0),ignoreReadonly:!0,allowInputToggle:!0,format:"YYYY-MM-DD HH:mm",widgetPositioning:{vertical:"bottom"},customTimePicker:!0,toolbarPlacement:"none",useCurrent:!0,tooltips:sa.utils.dateTimePickerGlobalTooltips}).on("dp.show",function(){}).on("dp.change",function(){});n.filter={filterCarrier:"",hideNonDirectFlights:!1};at();ht()};n.GetTotalFlightTime=function(n){var t="",i=n%60,r=Math.floor(n/60);return r>0&&(t+=r+"H "),i>0&&(t+=i+"MIN"),t};n.rangeFn=function(t){var i=Math.floor(t.flightTimeMinutes/60);return i<=n.range||n.range===32?!0:!1};n.GetCodeShares=function(n){var i="";return _.each(n,function(n){ct(i,n)||(i+=""+n.flightNumber+"<\/strong> "+n.carrierName+"<\/div>")}),t.trustAsHtml(i.toString())};n.GetFlightScheduledDays=function(n){var r=[],i;return $.each(n,function(){var i=moment(this.scheduledDateTime).format("d"),n=parseInt(i),t;this.isScheduled?(n===0?n=6:n--,t=et[n].toUpperCase(),r[n]=t+" | "):r[n]=""}),i=r.toString().trim().replace(/,/g,""),i=i.substring(0,i.lastIndexOf("|"))+"",t.trustAsHtml(i)};e=!1;n.TimeTableSearchSwitch=function(){e||(n.swedaviaAirportIsFromDestination=!n.swedaviaAirportIsFromDestination)};n.SearchviewSwitch=function(){n.searchView=!n.searchView};n.manageCollapseExpand=function(n){n.expanded=!n.expanded};n.SearchTimeTable2=function(){var t,i,r;$(".TimeTableInputForm2").valid()&&(n.orderSorter="departuretime",o="form2",n.showLoader=!0,d(),e=!0,t=sa.utils.currentLanguage(),i=$(".DepTimeContainer").find(".rangesliderDepTime").val()*60,h=moment($(".inin1").val()),r=c,u.getTimeTableDirectDepartureFlights(t,r,h,i).then(function(t){v(n,t,h.format("YYYY-MM-DD"));e=!1;n.ChangeSortOrder(n.orderSorter);return}))};n.SearchTimeTable=function(){if($(".TimeTableInputForm").valid()){o="form1";n.showLoader=!0;d();n.orderSorter="arrivaltime";var s=n.swedaviaAirportIsFromDestination,l=$(".inputdate").val(),t=l.split("-").join(""),h=angular.element(".js-TimeTableDestinationInput:visible").data(),i=h.iata,r=h.isdestination,f=location.host;s&&r?(e=!0,u.getTimetableAllFlightsByDestinationCity(c,i,t,f).then(function(i){v(n,i,t);e=!1;n.ChangeSortOrder(n.orderSorter);return})):!s&&r?(e=!0,u.getTimetableAllFlightsByDepartureCity(c,i,t,f).then(function(i){v(n,i,t);e=!1;n.ChangeSortOrder(n.orderSorter);return})):s||r?r||(e=!0,u.getTimetableAllFlights(c,i,t,f).then(function(i){v(n,i,t);e=!1;n.ChangeSortOrder(n.orderSorter);return})):(e=!0,u.getTimetableAllFlights(i,c,t,f).then(function(i){v(n,i,t);e=!1;n.ChangeSortOrder(n.orderSorter);return}))}};n.ChangeSortOrder=function(t){switch(t){case"arrivaltime":n.viewFlightData.directFlights.sort(function(n,t){return f.arrivaltime(n,t)});n.viewFlightData.nonDirectFlights.sort(function(n,t){return f.arrivaltime(n,t)});break;case"departuretime":n.viewFlightData.directFlights.sort(function(n,t){return f.departuretime(n,t)});n.viewFlightData.nonDirectFlights.sort(function(n,t){return f.departuretime(n,t)});break;case"nrofstops":n.viewFlightData.directFlights.sort(function(n,t){return f.nrofstops(n,t)});n.viewFlightData.nonDirectFlights.sort(function(n,t){return f.nrofstops(n,t)});break;case"via":n.viewFlightData.directFlights.sort(function(n,t){return f.via(n,t)});n.viewFlightData.nonDirectFlights.sort(function(n,t){return f.via(n,t)});break;case"traveltime":n.viewFlightData.directFlights.sort(function(n,t){return f.traveltime(n,t)});n.viewFlightData.nonDirectFlights.sort(function(n,t){return f.traveltime(n,t)})}};n.Filter=function(){var i={},t;angular.copy(s,i);t=n.filter.filterCarrier;t?(n.viewFlightData.directFlights=s.directFlights.filter(function(n){var i=!1;return _.each(n.flightNumbers,function(n){n.carrier===t&&(i=!0)}),i}),n.viewFlightData.nonDirectFlights=s.nonDirectFlights.filter(function(i){var r=!1;return n.filter.hideNonDirectFlights||_.each(i.flightNumbers,function(n){n.carrier===t&&(r=!0)}),r})):n.viewFlightData=i;n.filter.hideNonDirectFlights?n.viewFlightData.directFlights.length===0&&(n.noFilterResults=!0,n.showSearchDays=!1):(n.noFilterResults=!1,n.showSearchDays=!0);n.viewFlightData.directFlights.length>0||n.viewFlightData.nonDirectFlights.length>0?(rt(n,n.viewFlightData.directFlights.length,n.viewFlightData.nonDirectFlights.length),n.noFilterResults=!1,n.showSearchDays=!0):(n.noFilterResults=!0,n.showSearchDays=!1)};n.ChangeDate=function(n){var t=angular.element(n.currentTarget).data("date");angular.element(n.currentTarget).hasClass("disabled")||(o=="form1"?nt.val(moment(t).format("YYYY-MM-DD")):o=="form2"&&tt.val(moment(t).format("YYYY-MM-DD")+" "+h.format("HH:mm")),r(function(){angular.element(".js-timeTableBlock-searchButton ").trigger("click")}))};n.bookFlight=function(t){var r="http://resor.swedavia.se/flyg/priser",f=r.indexOf("?")!=-1?"&":"?",u=n.currentSearchDateTime.format("YYYY-MM-DD"),i=[r,f+"dep_airport_code="+t.departureIata,"&dest_airport_code="+t.arrivalIata,"&date_from="+u,"&date_to="+u,"&adults=1","&oneway=1"];window.ga&&window.sa.utils.checkCookieCategory("Statistics")==="1"&&i.push("&"+window.ga.getAll()[0].get("linkerParam"));i=i.join("");window.open(i,"_blank")};$(".timeTableBlock-destinationInput").on("input",function(){y=null});$.validator.addMethod("checkDestinationIsSet",function(){return y===null?!1:!0});$.validator.addMethod("checkFromDestinationIsSet",function(){return y===null?!1:!0});$(".TimeTableInputForm").validate({rules:{inputdate:{required:!0},inputDestination:{required:!0,checkDestinationIsSet:!0},inputFromDestination:{required:!0,checkFromDestinationIsSet:!0}},messages:{inputdate:{required:sa.translate("timetable/validationmessageselectdate")},inputDestination:{required:sa.translate("timetable/validationmessagedestinationrequired"),checkDestinationIsSet:sa.translate("timetable/validationmessagechoosedestinationfromlist")},inputFromDestination:{required:sa.translate("timetable/validationmessagedestinationrequired"),checkFromDestinationIsSet:sa.translate("timetable/validationmessagedestinationrequired")}}});$(".TimeTableInputForm2").validate({rules:{inin1:{required:!0,validateIsDateWithTime:!0}},messages:{inin1:{required:sa.translate("timetable/validationmessageselectdate"),validateIsDateWithTime:sa.translate("parkingblock/validationmessagespecifytime")}}});$.validator.setDefaults({highlight:function(n){$(n).closest(".form-group").addClass("has-error")},unhighlight:function(n){$(n).closest(".form-group").removeClass("has-error")},errorElement:"span",errorClass:"error",errorPlacement:function(n,t){t.parent(".input-group").length?n.insertAfter(t.parent()):n.insertAfter(t)}});p=$('.DepTimeContainer input[type="range"].rangesliderDepTime');w=$('.DesContainer input[type="range"].rangesliderDes');w.rangeslider({polyfill:!1,onInit:function(){b=$(".rangeslider__bubble",this.$range);a(b[0],this.value);var n=$(".DesContainer").find(".rangeslider__handle").css("left");$(".DesContainer").find(".rangeslider__bubble").css({left:n});$(".DesContainer").find(".rangeslider__handle2").css({left:n})},onSlide:function(n){$(".DesContainer").find(".rangeslider__bubble").css({left:n});$(".DesContainer").find(".rangeslider__handle2").css({left:n});a(b[0],this.value)},onSlideEnd:function(){a(b[0],this.value)}});p.rangeslider({polyfill:!1,onInit:function(){k=$(".rangeslider__bubble",this.$range);a(k[0],this.value);var n=$(".DepTimeContainer").find(".rangeslider__handle").css("left");$(".DepTimeContainer").find(".rangeslider__bubble").css({left:n});$(".DepTimeContainer").find(".rangeslider__handle2").css({left:n})},onSlide:function(n){$(".DepTimeContainer").find(".rangeslider__bubble").css({left:n});$(".DepTimeContainer").find(".rangeslider__handle2").css({left:n});a(k[0],this.value)},onSlideEnd:function(){a(k[0],this.value)}});w.on("mouseenter touchstart",function(){$(".rangesliderDes + .rangeslider__bubble").css("display","block");$(".rangesliderDes + .rangeslider__handle2").css("display","block")}).on("mouseleave touchend",function(){$(".rangesliderDes + .rangeslider__bubble").css("display","none");$(".rangesliderDes + .rangeslider__handle2").css("display","none")});p.on("mouseenter touchstart",function(){$(".rangesliderDepTime + .rangeslider__bubble").css("display","block");$(".rangesliderDepTime + .rangeslider__handle2").css("display","block")}).on("mouseleave touchend",function(){$(".rangesliderDepTime + .rangeslider__bubble").css("display","none");$(".rangesliderDepTime + .rangeslider__handle2").css("display","none")});w.rangeslider("update");p.rangeslider("update")}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("TabBlockController",["$scope","$sce","$element","$timeout",function(n,t,i,r){n.init=function(t){if(t.renderNoPadding){var r=$(i).parent(".tabblock.block");r.css({"padding-top":"0px"})}n.selectedTabIndex=t.selectedTabIndex;n.isAppContext=t.isAppContext;$("body").on("sa.scrolltotab",function(t,i){n.setSelectedTabIndex(i.tabIndex,i.alwaysAnimate,!0)});$("body").on("sa.selectTabIndexButDoNotScroll",function(t,i){n.selectedTabIndex=i.tabIndex;n.$apply()})};n.setSelectedTabIndex=function(t,r,f){n.selectedTabIndex===t?sa.utils.isMobileWidth()?(u(t,n.selectedTabIndex,!0),n.selectedTabIndex=f?n.selectedTabIndex:-1):f&&i.velocity("scroll",300):(sa.utils.isMobileWidth()?u(t,n.selectedTabIndex):r&&i.velocity("scroll",300),n.selectedTabIndex=t);$("body").trigger("sa.menutabchange")};var u=function(t,r,u){var e,o;if(sa.utils.isMobileWidth())if(e=n.isAppContext?$(i).find(".tabItem-"+t):$(i).find(".tabBlock-Button.tabindex-"+t),t===r)u===!0?f(e):(o=$(i).find(".tabItem-"+t),o.velocity({height:"0px"},{duration:250,complete:function(){$(this).css({height:""})}}));else{var h=$(i).find(".tabItem-"+t+" .tabBlock-innerContentContainer").height(),o=$(i).find(".tabItem-"+t),s=$(".tabBlock-innerContent",i);s.css("overflow","hidden");o.velocity({height:h+"px"},{duration:250,complete:function(){if($(this).css({height:""}),r!==-1){var n=$(i).find(".tabItem-"+r);n.velocity({height:"0px"},{duration:250,complete:function(){$(this).css({height:""})}})}f(e,function(){s.css("overflow","visible")})}})}},f=function(n,t){r(function(){var r=$("#AnchorLinks").not(i.find("#AnchorLinks")).is(":visible")?-55:0;n.velocity("scroll",{offset:r,complete:t},300)})}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("bookParkingBlockController",["$scope","$element","BookParkingServices","$timeout",function(n,t,i){function l(n,t,i,r){sa.bookparkingservice.searchFlyTo(n,t,i).then(function(n){n=n.filter(n=>!n.IsFlightCanceled);r(n)})}function w(t){var r=n.HasTerminals,i=[];return t.length>0?$.each(t,function(n,t){i.push({time:moment(t.departureTime).format("HH:mm"),destination:t.arrivalAirport,iata:t.flightId,dataitem:t,terminal:r?t.terminal:undefined})}):i.push({time:"",destination:sa.translate("bookflight/noflightfound"),iata:""}),i}function b(n){var t=[];return n.length>0?$.each(n,function(n,i){t.push({time:moment(i.arrivalTime).format("HH:mm"),destination:i.departureAirport,iata:i.flightId,dataitem:i})}):t.push({time:"",destination:sa.translate("bookflight/noflightfound"),iata:""}),t}function a(t,i,r,u){var f=t.height();r.velocity({top:71},function(){n.$apply(u());var t=i.height();i.height(f);i.velocity({height:t},function(){i.css("height","")});r.velocity({top:"100%"})})}var f,e,v,o,p,s;n.bookParkingFlyTo="";n.bookParkingFlyToValidEntryTo=!1;n.bookParkingFlyToValidEntryFrom=!1;n.bookParkingFlyFrom="";n.bookParkingFlyToPlh=sa.translate("bookparking/flytoplh");n.bookParkingFlyFromPlh=sa.translate("bookparking/flyfromplh");n.searchResultHeading=sa.translate("bookparking/bestparkingsforyou");n.isStep1BookParking=!0;n.init=function(t){n.vm=t;t.IsBookWithFlightNumber?(i.SetParkingCookie(i.ParkingCookieValues.PickByFlight),i.TriggerInitialPageView(i.VirtualPageNames.flightSearch)):(i.SetParkingCookie(i.ParkingCookieValues.PickByDate),i.TriggerInitialPageView(i.VirtualPageNames.classicSearch));n.bookWithDatesInput={InboundDateTime:"",OutboundDateTime:"",Terminal:"",Iata:sa.utils.currentAirportIataCode(),Language:sa.utils.currentLanguage(),AffiliateCode:t.AffiliateCode,CampaignCode:t.CampaignCode};n.initDatePickers(t.EpiMinimumBookParkingStartDate);n.leftAlignForm=t.ShowAsPartnerPage||t.ShowAsLandingPage;n.parkingPriceComparison=t.ParkingPriceComaprison;n.DiscountThresholdValue=t.ParkingDiscountThreshold;n.HasTerminals=t.HasTerminals};n.initDatePickers=function(r){var o=i.dateTimePickerBaseMinDate;n.dateTimePickerMinDate=o.isAfter(r)?o:r;n.inboundDateTime;n.outboundDateTime;var f="YYYY-MM-DD",h=i.dateTimePickerDateTimeFormat,u={locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:f,minDate:n.dateTimePickerMinDate,maxDate:i.dateTimePickerBaseMaxDate,useCurrent:!1,showClose:!1,tooltips:sa.utils.dateTimePickerGlobalTooltips},e={locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:"HH:mm",minDate:n.dateTimePickerMinDate,maxDate:i.dateTimePickerBaseMaxDate,useCurrent:!1,showClose:!1,tooltips:sa.utils.dateTimePickerGlobalTooltips},c=$.extend({},u,{format:h,customTimePicker:!0,toolbarPlacement:"none"}),s=$.extend({},u,{toolbarPlacement:"none"}),e=$.extend({},e,{customTimePicker:!0,toolbarPlacement:"none"});angular.element(".input-bookParkingFromDate").datetimepicker($.extend({},u,{maxDate:i.getDateTimePickerInboundMaxDate(i.dateTimePickerBaseMaxDateBookWithFlight)})).on("dp.change",function(t){n.bookParkingFromDate=t.date.format(f);n.backingBookParkingFlyTo=null;angular.element(".input-bookParkingToDate").data("DateTimePicker").minDate(t.date);n.bookParkingFlyTo="";n.$apply();$('[name="bookParkingFlyTo"]').focus()}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")});angular.element(".input-bookParkingToDate").datetimepicker($.extend({},u,{maxDate:i.getDateTimePickerInboundMaxDate(i.dateTimePickerBaseMaxDateBookWithFlight)})).on("dp.change",function(i){n.bookParkingToDate=i.date.format(f);n.backingBookParkingFlyFrom=null;angular.element(".input-bookParkingFromDate").data("DateTimePicker").maxDate(i.date);n.bookParkingFlyFrom="";n.$apply();t.find(".input-bookParkingFlyTo").val()?$('[name="bookParkingFlyFrom"]').focus():t.find(".input-bookParkingFlyTo").focus()}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")});angular.element(".input-bookParkingDateTimeIn").datetimepicker($.extend({widgetPositioning:{vertical:"bottom"}},s,{maxDate:i.getDateTimePickerInboundMaxDate(i.dateTimePickerBaseMaxDate)})).on("dp.change",function(r){var u=t.find(".input-bookParkingTimeIn"),f=t.find(".input-bookParkingTimeIn").data("DateTimePicker");n.inboundDateTime=r;u.prop("disabled",!1);u.focus();i.updateTimeDropDown(r,f);u.val("");$(this).find("input").trigger("input")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action");$(".timepicker").remove()}).on("dp.hide",function(){sa.utils.scrollElementIntoViewOnIos($(this),30)});angular.element(".input-bookParkingTimeIn").datetimepicker($.extend({widgetPositioning:{vertical:"bottom"}},e,{maxDate:i.getDateTimePickerInboundMaxDate(i.dateTimePickerBaseMaxDate)})).on("dp.change",function(r){var u=t.find(".input-bookParkingDateTimeOut").data("DateTimePicker"),f=t.find(".input-bookParkingTimeOut").data("DateTimePicker");n.inboundDateTime=r;t.find(".input-bookParkingDateTimeOut").prop("disabled",!1);i.newDateTimePickerChangeFunction(n.inboundDateTime,u,f,n.bookWithDatesInput,"InboundDateTime",!0,i.getDateTimePickerOutboundMinDate(n.dateTimePickerMinDate),null);$(this).find("input").trigger("input")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action");$(".timepicker").remove()});angular.element(".input-bookParkingDateTimeOut").datetimepicker($.extend({widgetPositioning:{vertical:"bottom"}},s,{minDate:i.getDateTimePickerOutboundMinDate(n.dateTimePickerMinDate)})).on("dp.change",function(r){var u=t.find(".input-bookParkingTimeOut"),f=t.find(".input-bookParkingTimeOut").data("DateTimePicker");n.outboundDateTime=r;u.prop("disabled",!1);u.focus();i.updateTimeDropDown(r,f);u.val("");$(this).find("input").trigger("input")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")}).on("dp.hide",function(){sa.utils.scrollElementIntoViewOnIos($(this),30)});angular.element(".input-bookParkingTimeOut").datetimepicker($.extend({widgetPositioning:{vertical:"bottom"}},e,{minDate:i.getDateTimePickerOutboundMinDate(n.dateTimePickerMinDate)})).on("dp.change",function(r){var u=t.find(".input-bookParkingDateTimeIn").data("DateTimePicker"),f=t.find(".input-bookParkingTimeIn").data("DateTimePicker");n.outboundDateTime=r;i.newDateTimePickerChangeFunction(n.outboundDateTime,u,f,n.bookWithDatesInput,"OutboundDateTime",!1,null,i.getDateTimePickerInboundMaxDate(i.dateTimePickerBaseMaxDate));$(this).find("input").trigger("input")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action");$(".timepicker").remove()})};t.hasClass("isonheroarea")&&t.closest(".carousel-inner").addClass("bookparkingonheroarea");n.inputFlyToOnClick=function(){n.bookParkingFlyToValidEntryTo&&(n.bookParkingFlyToValidEntryTo=!1,n.backingBookParkingFlyTo=null,n.bookParkingFlyTo=n.lastSearchFlyTo)};n.inputFlyFromOnClick=function(){n.bookParkingFlyToValidEntryFrom&&(n.bookParkingFlyToValidEntryFrom=!1,n.backingBookParkingFlyFrom=null,n.bookParkingFlyFrom=n.lastSearchFlyFrom)};n.renderPriceString=function(n){return i.renderPriceString(n)};var r=null,h=function(n){r||(r=$("<\/div>"),$("body").append(r));var t=n.position();t.width=n.width();t.height=n.outerHeight();r.css(t);r.show()},c=function(){r.hide()};angular.element(".input-bookParkingFlyTo").autocomplete({open:function(){var n=$(this).data("ui-autocomplete").menu.element;$(n).css({"min-width":$(this).outerWidth()+"px"});h(n)},close:function(){setTimeout(c,200)},focus:function(n){/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&$(n.toElement).trigger("click")},select:function(i,r){r.item!==undefined&&r.item.destination!==sa.translate("bookflight/noflightfound")?(n.bookParkingFlyToValidEntryTo=!0,n.backingBookParkingFlyTo=r.item,n.$apply(function(){n.bookParkingFlyTo=r.item.time+", "+r.item.destination+", "+r.item.iata}),$(this).valid(),i.preventDefault(),setTimeout(function(){t.find(".input-bookParkingToDate").val()?t.find(".input-bookParkingFlyFrom").focus():$('[name="bookParkingToDate"]').focus()},0)):(n.bookParkingFlyToValidEntryTo=!1,i.preventDefault())},source:function(t,i){t.term.length>2&&(n.lastSearchFlyTo=t.term,n.isSearchingBookParkingFlyTo=!0,l(t.term,n.bookParkingFromDate,!1,function(t){n.isSearchingBookParkingFlyTo=!1;var r=w(t);i(r);n.$apply()}),n.$apply())}}).autocomplete("widget").addClass("ui-autocomplete-white").addClass("bookParking");angular.element(".input-bookParkingFlyFrom").autocomplete({open:function(){var n=$(this).data("ui-autocomplete").menu.element;$(n).css({"min-width":$(this).outerWidth()+"px"});h(n)},close:function(){setTimeout(c,200)},focus:function(n){/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&$(n.toElement).trigger("click")},select:function(t,i){i.item!==undefined&&i.item.destination!==sa.translate("bookflight/noflightfound")?(n.bookParkingFlyToValidEntryFrom=!0,n.backingBookParkingFlyFrom=i.item,n.$apply(function(){n.bookParkingFlyFrom=i.item.time+", "+i.item.destination+", "+i.item.iata}),$(this).valid(),t.preventDefault()):(n.bookParkingFlyToValidEntryFrom=!1,t.preventDefault())},source:function(t,i){t.term.length>2&&(n.lastSearchFlyFrom=t.term,n.isSearchingBookParkingFlyFrom=!0,l(t.term,n.bookParkingToDate,!0,function(t){n.isSearchingBookParkingFlyFrom=!1;var r=b(t);i(r);n.$apply()}),n.$apply())}}).bind("focus",function(){var t=$(this);t.val().length===0&&n.backingBookParkingFlyTo&&n.backingBookParkingFlyTo.destination?(t.autocomplete("search",n.backingBookParkingFlyTo.destination).autocomplete("widget").addClass("bookParking ui-autocomplete-white"),t.autocomplete("widget").show()):t.autocomplete("widget").addClass("bookParking ui-autocomplete-white")});$(".input-bookParkingFlyTo, .input-bookParkingFlyFrom").each(function(){$(this).autocomplete("instance")._renderItem=function(n,t){return $("
").append(""+t.time+"<\/span>").append(""+t.destination+"<\/span>").append(""+t.iata+"<\/span>").appendTo(n)}});n.goClassic=function(t,r){var u;t.preventDefault();n.showNoResultsFound=!1;n.showNoFeaturedParkingsFound=!1;var f=$(".bookWithFlightNumber"),e=$(".bookWithDates"),o=$(".overlay");r===!0?(u=function(){n.vm.IsBookWithFlightNumber=!1;i.SetParkingCookie(i.ParkingCookieValues.PickByDate);i.TriggerPageView(i.VirtualPageNames.classicSearch)},a(f,e,o,u)):n.vm.IsBookWithFlightNumber=!1};n.goBookByFlight=function(r){r.preventDefault();n.showNoResultsFound=!1;n.showNoFeaturedParkingsFound=!1;var u=t.find(".bookWithFlightNumber"),f=t.find(".bookWithDates"),e=t.find(".overlay"),o=function(){n.vm.IsBookWithFlightNumber=!0;i.SetParkingCookie(i.ParkingCookieValues.PickByFlight);i.TriggerPageView(i.VirtualPageNames.flightSearch)};a(f,u,e,o)};n.startEngine=function(){var n=$(".bgFlight"),t=$(window).width();n.velocity({right:parseFloat(n.css("right"))+t,bottom:parseFloat(n.css("bottom"))+t*.2},3e3,function(){n.css({right:"",bottom:""})})};n.showSpinner=!1;n.spinnerText="";f=function(r){$(".is-in-app-context-extra-space").hide();n.isStep1BookParking=!1;n.searchResultHeading=sa.translate("bookparking/bestparkingsforyou");n.spinnerText=sa.translate("bookparking/loadparkings");n.showSpinner=!0;n.bookParkingFieldsDisabled=!0;n.showResult=!0;n.showNoResultsFound=!1;n.showNoFeaturedParkingsFound=!1;var u=moment(r.InboundDateTime),f=moment(r.OutboundDateTime).add(-2,"hours");if(u.isAfter(f))return n.showSpinner=!1,n.showNoResultsFound=!0,n.bookParkingFieldsDisabled=!1,console.log("Inbound date is after outbound date"),!1;i.FindParking(r,!1).then(function(u){if(n.showSpinner=!1,$("body").trigger("sa.priceupdate",u),i.TriggerPageView(i.VirtualPageNames.searchResults),n.offerSearchCallback&&n.offerSearchCallback(u.CarParks,r),u.CarParks&&u.CarParks.length){var f=$.grep(u.CarParks,function(n){return n.IsFeatured==!0&&n.IsSoldOut==!1});f.length==0&&(n.showNoFeaturedParkingsFound=!0)}else n.showNoResultsFound=!0;sa.utils.isMobileWidth()&&t.find(".parkingResultContainer").velocity("scroll",300)}).catch(function(t){n.showSpinner=!1;n.showNoResultsFound=!0;n.bookParkingFieldsDisabled=!1;n.errorText=t.status===503?sa.translate("errormessages/maintenance"):sa.translate("errormessages/managebookingservices");n.searchResultHeading=sa.translate("errormessages/somethingwentwrong")})};n.bookWithDates=function(){$(t).find(".BookParkingBookWithDatesForm").valid()&&(n.bookWithDatesInput.SelectDatesByDefault=!0,f(n.bookWithDatesInput))};e=function(){var r,t;if(n.backingBookParkingFlyTo&&n.backingBookParkingFlyFrom){r=n.vm.ParkingInboundTime?n.vm.ParkingInboundTime:3;t=new Date(n.backingBookParkingFlyTo.dataitem.departureTime);t.setHours(t.getHours()-r);t.setMinutes(0);var i=new Date(n.backingBookParkingFlyFrom.dataitem.arrivalTime),u=i.getMinutes()>0,f=n.vm.ParkingOutboundTime?u?n.vm.ParkingOutboundTime+1:n.vm.ParkingOutboundTime:u?4:3;i.setHours(i.getHours()+f);i.setMinutes(0)}return t=moment(t).format("YYYY-MM-DD HH:mm"),i=moment(i).format("YYYY-MM-DD HH:mm"),{inboundDateTime:t,outboundDateTime:i}};v=function(){var t=e();n.bookWithFlightNumberInput={InboundDateTime:t.inboundDateTime,OutboundDateTime:t.outboundDateTime,Terminal:n.backingBookParkingFlyTo.terminal,Iata:sa.utils.currentAirportIataCode(),Language:sa.utils.currentLanguage(),SelectDatesByDefault:!0,Carrier:n.backingBookParkingFlyTo.iata,Destination:n.backingBookParkingFlyTo.destination,AffiliateCode:n.vm.AffiliateCode,CampaignCode:n.vm.CampaignCode}};n.bookWithFlightNumber=function(i){if($(t).find(".BookParkingBookWithFlightForm").valid()){n.goClassic(i,!1);$(".BookParkingBookWithDatesForm").validate().resetForm();t.find(".form-group").removeClass("has-error");t.find(".form-control").attr("aria-invalid",!1);var r=e(),u=r.inboundDateTime,s=r.outboundDateTime,h=o(u),c=o(s);n.bookParkingDateTimeIn=h.date;n.bookParkingTimeIn=h.time;n.bookParkingDateTimeOut=c.date;n.bookParkingTimeOut=c.time;n.bookWithDatesInput.InboundDateTime=u;n.bookWithDatesInput.OutboundDateTime=s;n.bookWithDatesInput.Terminal=n.backingBookParkingFlyTo.terminal;v();f(n.bookWithFlightNumberInput)}};o=function(n){var t=moment(n);return{date:t.format("YYYY-MM-DD"),time:t.format("HH:mm")}};n.registerOfferSearchCallback=function(t){n.offerSearchCallback=t};$.validator.addMethod("CheckTimeIsSelected",function(n){return n.split(" ").length===2?!0:!1});$.validator.addMethod("CheckValidFlightEntryTo",function(){return n.bookParkingFlyToValidEntryTo?!0:!1});$.validator.addMethod("CheckValidFlightEntryFrom",function(){return n.bookParkingFlyToValidEntryFrom?!0:!1});$.validator.addMethod("CheckMinimumEntryTime",function(t,i){var r=i.form.getAttribute("data-reservationtimelimit");return(r==null||r<60)&&(r=240),moment(n.inboundDateTime.date)>moment().add(r,"minutes")});$.validator.addMethod("CheckInboundTimeBeforeOutbound",function(){if(n.outboundDateTime==undefined)return!0;var t=moment(n.inboundDateTime.date),i=moment(n.outboundDateTime.date).add(-1,"hours");return t.isBefore(i)});$.validator.addMethod("CheckOutboundTimeAfterInbound",function(){var t=moment(n.inboundDateTime.date).add(1,"hours"),i=moment(n.outboundDateTime.date);return i.isAfter(t)});$(t).find(".BookParkingBookWithFlightForm").validate({rules:{bookParkingFromDate:{required:!0},bookParkingFlyTo:{required:!0,CheckValidFlightEntryTo:!0},bookParkingToDate:{required:!0},bookParkingFlyFrom:{required:!0,CheckValidFlightEntryFrom:!0}},messages:{bookParkingFromDate:{required:sa.translate("bookparking/validationfromdate")},bookParkingFlyTo:{required:sa.translate("bookparking/validationflyto"),CheckValidFlightEntryTo:sa.translate("bookparking/validationentryflyto")},bookParkingToDate:{required:sa.translate("bookparking/validationtodate")},bookParkingFlyFrom:{required:sa.translate("bookparking/validationflyfrom"),CheckValidFlightEntryFrom:sa.translate("bookparking/validationentryflyfrom")}}});var k=function(n){return angular.element(angular.element(n).siblings(".bootstrap-datetimepicker-widget")[0]).is(":visible")},y=$(t).find(".BookParkingBookWithDatesForm"),u=y.data("reservationtimelimit");(u==null||u<0)&&(u=240);p=moment.duration(u,"minutes").humanize();y.validate({onfocusout:function(n){k(n)||this.element(n)},onkeyup:!1,onclick:!1,focusCleanup:!0,rules:{bookParkingDateTimeIn:{required:!0},bookParkingTimeIn:{required:!0,CheckMinimumEntryTime:!0,CheckInboundTimeBeforeOutbound:!0},bookParkingDateTimeOut:{required:!0},bookParkingTimeOut:{required:!0,CheckOutboundTimeAfterInbound:!0},bookParkingDateTerminal:{required:!0}},messages:{bookParkingDateTimeIn:{required:sa.translate("bookparking/validationdatetimein")},bookParkingTimeIn:{required:sa.translate("bookparking/validationtimein"),CheckTimeIsSelected:sa.translate("bookparking/validationselecttime"),CheckMinimumEntryTime:sa.translate("bookparking/validationdatetimemin").format(p),CheckInboundTimeBeforeOutbound:sa.translate("bookparking/validationdatetimeinboundbeforeoutbound").format("2")},bookParkingDateTimeOut:{required:sa.translate("bookparking/validationdatetimeout")},bookParkingTimeOut:{required:sa.translate("bookparking/validationtimeout"),CheckTimeIsSelected:sa.translate("bookparking/validationselecttime"),CheckOutboundTimeAfterInbound:sa.translate("bookparking/validationdatetimeoutboundafterinbound").format("2")},bookParkingDateTerminal:{required:sa.translate("bookparking/validationterminal")}}});s=sa.utils.getQueryFromName("showiframe");s!=null&&s=="true"&&(n.iframeUrl="/Static/Templates/TestData/AdvamIframeTest/index.html",n.showIframe=!0,n.hideIframe=function(){n.showIframe=!1},i.InitPaymentIframe(n),n.showIframe=!0)}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("FindParkingResultModuleController",["$scope","BookParkingServices","ManageBookingServices","$timeout","$sce","$element",function(n,t,i,r,u,f){n.isStep1BookParking=!0;n.texts={};var e={};n.init=function(t){n.initTranslations(n.texts);n.vm=t.vm;e=JSON.parse(JSON.stringify(t.vm))};n.ResetSettingsForContainer=function(){n.HideShowMoreButton=!1;n.vm.NumOfCardsShown=e.NumOfCardsShown};sa.eventHandler.addEventHandelers({BeforeFindParking:function(){n.ResetSettingsForContainer()},AfterFindParking:function(t,i){n.parkingCards=[];i.CarParks&&i.CarParks.length?($.each(i.CarParks,function(t,i){i.IsFromApi=!0;i.texts=n.texts}),n.parkingCards=i.CarParks,n.showSpinner=!1,n.showNoResultsFound=!1):n.showNoResultsFound=!0;n.parkingCards=i.CarParks;$(window).trigger("resize");n.showEmptyPriceArea=!0}});n.InitReserveParking=function(t){n.vm.ModifyBooking===!0?sa.eventHandler.triggerEvent("afterreserveparking",{IsModify:!0,ParkingCard:t}):n.ReserveParking(t)};n.BookOrReserveParking=function(t){n.vm.ModifyBooking===!0?n.ModifyBooking(t):alert("Not implemented yet")};n.ReserveParking=function(n){sa.eventHandler.triggerEvent("beforereserveparking",{});t.ReserveParking(n.DateInput).then(function(t){sa.eventHandler.triggerEvent("afterreserveparking",{ParkingCard:n,Response:t})})};n.ModifyBooking=function(r){sa.eventHandler.triggerEvent("beforemodifybooking",{});r.DateInput.BookingGuid=$(f).parents(".manageParkingBookingPageHeroArea").scope().Booking.BookingGuid;r.DateInput.ReturnUrl=n.vm.ReturnUrl;r.DateInput.Terminal=r.DateInput.Terminal;i.ModifyBooking(r.DateInput).then(function(i){n.iframeUrl=u.trustAsResourceUrl(i.WebBankSession.IframeUrl);n.showIframe=!0;n.hideIframe=function(){this.showIframe=!1};sa.eventHandler.triggerEvent("aftermodifybooking",{});t.InitPaymentIframe(n)})};n.orderParkingsSearchResult=function(t){var i;return n.vm.ParkingSortOrder==="timetoterminal"&&(i=parseInt(t.TransferTime),!isNaN(i))?i:n.vm.ParkingSortOrder==="pricedec"&&(i=parseInt("-"+t.OriginalPrice),!isNaN(i))?i:n.vm.ParkingSortOrder==="priceasc"&&(i=parseInt(t.OriginalPrice),!isNaN(i))?i:""};n.initTranslations=function(i){t.InitEpiTranslations(i,n.texts)};n.showMoreResults=function(){if(n.vm.ShowMoreInSameContainer)n.vm.NumOfCardsShown=null,n.HideShowMoreButton=!0;else{var t=inputIndex-1;$("body").trigger("sa.scrolltotab",{tabIndex:t,alwaysAnimate:!0,scrollCurrentTab:!0})}};window.testAfterFindParking=function(t){var i=JSON.parse(JSON.stringify(n.parkingCards));n.parkingCards=[];n.$apply();$(i).each(t);sa.eventHandler.triggerEvent("afterfindparking",{CarParks:i});setTimeout(function(){n.$apply()})}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("BookParkingModuleController",["$scope","BookParkingServices","$timeout","$sce","$element","ManageBookingServices",function(n,t,i,r,u,f){n.init=function(t){n.vm=t.vm;n.initValidation();t.vm.ModifyBooking===!0&&(n.vm.BookingToModify=$(u).parents(".manageParkingBookingPageHeroArea").scope().Booking)};n.cancelPayment=function(){sa.eventHandler.triggerEvent("gobackonestep",{})};sa.eventHandler.addEventHandelers({BeforeReserveParking:function(){},AfterReserveParking:function(t,i){i.IsUpgrade?(n.selectedParkingToPayFor={},n.selectedParkingToPayFor.BookParkingInput={},n.selectedParkingToPayFor.BookParkingInput.BookingGuid=n.vm.BookingToModify.BookingGuid,n.selectedParkingToPayFor.TotalPrice=i.ParkingCard.TotalUpgradePrice,n.selectedParkingToPayFor.CategoryName=i.ParkingCard.CategoryName,n.selectedParkingToPayFor.CategoryTag=i.ParkingCard.CategoryTag,n.selectedParkingToPayFor.ProductCode=i.ParkingCard.ProductCode,n.selectedParkingToPayFor.ProductId=i.ParkingCard.ProductId,n.selectedParkingToPayFor.OriginalProductId=i.ParkingCard.OriginalProductId,n.selectedParkingToPayFor.UpsellId=i.ParkingCard.UpsellId,n.selectedParkingToPayFor.ProductLabel=i.ParkingCard.ProductLabel,n.selectedParkingToPayFor.ProductName=i.ParkingCard.ProductName,n.selectedParkingToPayFor.Terminal=i.ParkingCard.Terminal,n.selectedParkingToPayFor.TransferTime=i.ParkingCard.TransferTime,n.selectedParkingToPayFor.TransferType=i.ParkingCard.TransferType,n.selectedParkingToPayFor.DateInput={},n.selectedParkingToPayFor.DateInput.InboundDateTime=n.vm.BookingToModify.InboundDateTime,n.selectedParkingToPayFor.DateInput.OutboundDateTime=n.vm.BookingToModify.OutboundDateTime,n.selectedParkingToPayFor.DateInput.Iata=n.vm.BookingToModify.AirportIata,n.selectedParkingToPayFor.IsEmailUpsell=!0):n.selectedParkingToPayFor=i.ParkingCard;var u=parseInt(n.vm.BookingToModify.BookingPrice),f=parseInt(n.selectedParkingToPayFor.TotalPrice),r=f-u;r<0&&(n.vm.ToPayText=sa.translate("manageparkingbooking/modify/amounttorefund"),n.vm.ToPayValue=r*-1);r>=0&&(n.vm.ToPayText=sa.translate("manageparkingbooking/modify/amounttopay"),n.vm.ToPayValue=r)}});n.renderPriceString=function(n){return t.renderPriceString(n)};n.initValidation=function(){e();o()};n.BookOrModify=function(){$(u).find(".parking-paymentView-form").valid()&&(n.vm.ModifyBooking===!0?n.ModifyBooking(n.selectedParkingToPayFor):Alert("Book parking is not implemented yet"))};n.ModifyBooking=function(i){sa.eventHandler.triggerEvent("beforemodifybooking",{});i.DateInput.BookingGuid=$(u).parents(".manageParkingBookingPageHeroArea").scope().Booking.BookingGuid;i.DateInput.ReturnUrl=n.vm.ReturnUrl;i.DateInput.Terminal=i.DateInput.Terminal;i.IsEmailUpsell&&(i.DateInput.Language=sa.utils.currentLanguage(),i.DateInput.ProductId=i.ProductId,i.DateInput.OriginalProductId=i.OriginalProductId,i.DateInput.UpsellId=i.UpsellId,i.DateInput.IsEmailUpgrade=!0,i.DateInput.IsUpgrade=!0);f.ModifyBooking(i.DateInput).then(function(i){if(i.WebBankSession)n.iframeUrl=r.trustAsResourceUrl(i.WebBankSession.IframeUrl),n.showIframe=!0,n.hideIframe=function(){this.showIframe=!1},t.InitPaymentIframe(n);else{var u=i.Booking.BookingGuid;sa.utils.redirectPost(n.vm.ReturnUrl,{BookingGuid:u})}sa.eventHandler.triggerEvent("aftermodifybooking",{})})};var e=function(){n.personalDataValidator=$(u).find(".parking-paymentView-form").validate({rules:{NorwegianRewardNumber:{required:!1,isValidRewardNumberNorwegian:!0},CarRegistrationNumber:{required:!0,maxLength:20,onlyAllowAlphabeticalNumbersAndSpace:!0,validateOnceSwedishRegistrationNumber:!0},Email:{email:!0,required:!0,isCustomEmail:!0},TermsAndConditions:{required:!0},PhoneNumber:{validatePhoneNumber:!0}},messages:{NorwegianRewardNumber:{isValidRewardNumberNorwegian:sa.translate("parkingblock/loyaltyprogram/loyaltyvalidationerror")},CarRegistrationNumber:{required:sa.translate("parkingcardcontainer/validationregnr"),maxLength:sa.translate("formvalidation/tomanycharacters"),validateOnceSwedishRegistrationNumber:n.vm.RegNumberValidationMessage?n.vm.RegNumberValidationMessage:sa.translate("parkingcardcontainer/validationregnr"),onlyAllowAlphabeticalNumbersAndSpace:sa.translate("formvalidation/invalidinput")},Email:{email:sa.translate("parkingcardcontainer/validationemail"),isCustomEmail:sa.translate("parkingcardcontainer/validationemail"),required:sa.translate("parkingcardcontainer/validationemail")},TermsAndConditions:{required:sa.translate("parkingcardcontainer/validationterms")},PhoneNumber:{validatePhoneNumber:sa.translate("parkingcardcontainer/validationphone")}},ignore:".treat-error-as-warning",errorPlacement:function(n,t){t.attr("name")==="TermsAndConditions"?n.insertAfter(t.find("~ .parking-paymentView-acceptTermsText")):n.insertAfter(t)}})},o=function(){var i=u.find(".parking-paymentView-form [name='PhoneNumber']"),n;t.initPhoneNumberRestrictions(i);n=u.find(".parking-paymentView-form [name='CarRegistrationNumber']");t.initCarRegistrationRestrictions(n)}}]);swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ManageBookingCancelController",["$scope","ManageBookingServices","BookParkingServices",function(n,t,i){n.$mainScope=n.$parent.$parent;n.booking=n.Booking;n.cancelBooking=function(){if(n.booking.BookingIsCancellable&&!n.booking.BookingIsCanceled){n.loaderModel.show=!0;n.loaderModel.text=sa.translate("bookparking/loadcancelbooking");var i=t.CancelBooking({BookingGuid:n.Booking.BookingGuid});i.then(function(t){n.setBooking(t);window.location.href="#/manage";n.loaderModel.show=!1})}};n.renderPriceString=function(n){return i.renderPriceString(String(n))}}]);swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ModifyParkingBookingController",["$scope","$element","BookParkingServices","ManageBookingServices","$timeout","$controller",function(n,t,i){var u=n.Booking,r;n.init=function(){};n.bookingStep=1;n.GetEmailUpgradeInput=function(n){var t={};return t.Iata=sa.utils.currentAirportIataCode(),t.Guid=n,t.Language=sa.utils.currentLanguage(),t};n.isEmailUpsell=n.$parent.vm.IsEmailUpsell;n.isEmailUpsell&&(r=n.GetEmailUpgradeInput(n.Booking.BookingGuid),i.GetEmailUpgrade(r).then(function(t){t&&t.Results&&(n.doneUpgradeParking=!1,n.upgradeParkingCards=t.Results)}));n.show;sa.eventHandler.addEventHandelers({BeforeFindParking:function(){n.loaderModel.show=!0;n.loaderModel.text=sa.translate("bookparking/loadparkings")},AfterFindParking:function(){n.loaderModel.show=!1;n.bookingStep=2},BeforeReserveParking:function(){n.loaderModel.show=!0;n.loaderModel.text=sa.translate("parkingcard/loadreserveparking")},AfterReserveParking:function(){n.loaderModel.show=!1;n.bookingStep=3;var t=$(".manageParkingBookingPageHeroArea").first(),i=t.offset().top+parseInt(t.css("padding-top"));$("html, body").animate({scrollTop:i},0)},BeforeModifyBooking:function(){n.loaderModel.show=!0;n.loaderModel.text=sa.translate("bookparking/loadbookparking")},AfterModifyBooking:function(){n.loaderModel.show=!1},GoBackOneStep:function(){n.bookingStep--}});n.renderPriceString=function(n){return i.renderPriceString(n)};n.SelectUpgrade=function(t){n.doneUpgradeParking=!0;sa.eventHandler.triggerEvent("afterreserveparking",{IsModify:!0,ParkingCard:t,IsUpgrade:!0})};n.cancelEmailPayment=function(){n.doneUpgradeParking=!1;n.$parent.cancelPayment()}}]);swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ManageParkingBookingController",["$scope","BookParkingServices","$timeout","$sce","$location","ManageBookingServices",function(n,t,i,r,u,f){var e,o,s;n.loaderModel={};n.setBooking=function(t){n.Booking=t;f.SetSessionState(t)};n.logOff=function(){n.setBooking(null);sa.utils.redirectPost(window.location.href,{})};n.cancelPayment=function(){sa.eventHandler.triggerEvent("gobackonestep",{})};n.print=function(){window.print()};n.GetCurrentAffiliateCode=function(){return n.Booking&&n.Booking.AffiliateCode?n.Booking.AffiliateCode:null};e=function(){var n=window.sessionStorage?f.GetSessionState():null;return n&&n.Iata.toLowerCase()===sa.utils.currentAirportIataCode().toLowerCase()?!0:!1};n.$on("$routeChangeStart",function(t,i){var u=i&&i.$$route&&i.$$route.originalPath,r=$.inArray(u.toLowerCase(),["","/","/reminder"])>-1;e()||r?r&&e()&&(window.location.hash="/manage"):window.location.hash="/";n.loaderModel.show=!0;n.loaderModel.text=sa.translate("manageparkingbooking/loading")});n.$on("$routeChangeSuccess",function(){n.loaderModel.show=!1});n.init=function(t){var i,u,r;n.vm=t;i=s(n.vm)||f.GetSessionState();i?(n.loaderModel.show=!0,f.GetBooking(i).then(function(t){n.Booking=t;n.loaderModel.show=!1})):(u=new URL(window.location.href).searchParams.get("emailUpsell"),r=new URL(window.location.href).searchParams.get("bookingId"),u&&(n.vm.IsEmailUpsell=!0),r&&(n.vm.EmailBookingGuid=r),window.location.href="#");o()};o=function(){e()&&(window.location.href="#/manage")};s=function(n){if(n.BookingGuid)return{BookingGuid:n.BookingGuid}}}]);swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ManageBookingReminderController",["$scope","$element","ManageBookingServices",function(n,t,i){n.$mainScope=n.$parent.$parent;n.formdata={};n.viewmode=1;n.init=function(){n.initValidation()};n.submitForm=function(r){r.preventDefault();$(t).find(".reminder-form").valid()&&i.EmailReminder({email:n.formdata.email}).then(function(t){t&&t.Email&&(n.viewmode=2)})};n.initValidation=function(){var n=$(t).find($(".reminder-form"));$(n).validate({rules:{email:{email:!0,required:!0}},messages:{email:{email:sa.translate("formvalidation/email"),required:sa.translate("formvalidation/email")}}})}}]);swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ManageBookingInputController",["$scope","$element","ManageBookingServices",function(n,t,i){n.logMe=function(r){if(r.preventDefault(),$(t).find(".manage-booking-form").valid()){n.loaderModel.show=!0;n.loaderModel.text=sa.translate("bookparking/loadbooking");var u=i.GetBookingByReferenceAndEmail({Email:n.form.email,BookingReference:n.form.bookingId});u.then(function(t){n.loaderModel.show=!1;t&&t.BookingNotFound?(n.showError=!0,n.setBooking(null)):t&&(n.showError=!1,n.setBooking(t),window.location.href=n.isEmailUpsell?"#/modify":"#/manage")})}};n.phoneNumber=function(){var t=sa.utils.currentAirportIataCode(),n="";switch(t){case"ARN":n="010-109 68 00";break;case"GOT":n="010-109 68 07";break;case"BMA":n="010-109 68 06";break;case"MMX":n="010-109 68 10";break;case"LLA":n="010-109 68 02";break;case"UME":n="010-109 68 03"}return n};n.initValidation=function(){var i=$(t).find($(".manage-booking-form"));$(i).validate({rules:{manageBookingBookingId:{validateParkingBookingReference:!0,validateParkingBookingReferenceIsCurrentAirport:!0},manageBookingEmail:{email:!0,required:!0}},messages:{manageBookingBookingId:{validateParkingBookingReference:sa.translate("formvalidation/bookingreference"),validateParkingBookingReferenceIsCurrentAirport:sa.translate("formvalidation/wrongairportforreference")},manageBookingEmail:{email:sa.translate("formvalidation/email"),required:sa.translate("formvalidation/email")}}});n.isEmailUpsell=n.$parent.vm.IsEmailUpsell;n.isEmailUpsell&&(n.form={},n.form.bookingId=n.$parent.vm.EmailBookingGuid)}}]);swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("BookingTemplateController",["$scope","$element","ManageBookingServices",function(n){console.log(n.Booking);n.getColorClassFromParkingCategoryTag=sa.utils.getColorClassFromParkingCategoryTag;n.Booking&&n.Booking.IsCanceled&&(n.currentStateClass="canceled");n.getCurrentBookingState=function(){var t="";return n.Booking&&n.Booking.BookingIsCanceled&&(t+="canceled"),n.Booking&&n.Booking.AboutToGetCanceled&&(t+=" aboutToGetCanceled"),t};n.renderPriceString=function(n){if(n)return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g," ")};n.texts={bookingreference:sa.translate("manageparkingbooking/login/bookingreference"),entry:sa.translate("manageparkingbooking/entry"),exit:sa.translate("manageparkingbooking/exit"),totalamount:sa.translate("manageparkingbooking/totalamount"),amountrepaid:sa.translate("manageparkingbooking/amountrepaid")}}]);swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("ManageBookingManageController",["$scope","ManageBookingServices","$element","BookParkingServices",function(n,t,i,r){var u,f;n.requestInput_UpdateBookingDetails={};n.bookingDetailsFormIsEnabled=!1;n.init=function(){n.initBookingDetailsInput(n.Booking)};n.initInputRestrictions=function(){r.initPhoneNumberRestrictions($("[name='PhoneNumber']"));r.initCarRegistrationRestrictions($("[name='CarRegistrationNumber']"))};n.toggleBookingDetailsForm=function(t){typeof t=="boolean"?(t===!1&&(n.initBookingDetailsInput(n.Booking),u(f)),n.bookingDetailsFormIsEnabled=t):n.bookingDetailsFormIsEnabled=!n.bookingDetailsFormIsEnabled};u=function(n){$(n.currentForm).find("input").each(function(){var n=$(this);n.removeAttr("aria-describedby");n.attr("aria-invalid","false")});n.resetForm()};n.UpdateBookingDetails=function(){$(i).find(".booking-details-form").valid()&&(n.loaderModel.show=!0,n.loaderModel.text=sa.translate("bookparking/loadupdatebookingdetails"),t.UpdateBookingDetails(n.requestInput_UpdateBookingDetails).then(function(t){n.Booking=t;n.setBooking(t);n.bookingDetailsFormIsEnabled=!1;n.loaderModel.show=!1}))};n.initBookingDetailsInput=function(t){t?n.requestInput_UpdateBookingDetails={Email:t.Email,BookingGuid:t.BookingGuid,CarRegistrationNumber:t.CarRegistrationNumber,PhoneNumber:t.PhoneNumber,Language:sa.utils.currentLanguage()}:console.log("No booking loaded... :(")};n.renderPriceString=function(n){return r.renderPriceString(n)};n.initValidation=function(){var n=$(i).find($(".booking-details-form"));f=$(n).validate({rules:{CarRegistrationNumber:{required:!0,maxLength:20,onlyAllowAlphabeticalNumbersAndSpace:!0,validateOnceSwedishRegistrationNumber:!0},Email:{email:!0,required:!0},PhoneNumber:{validatePhoneNumber:!0,required:!0}},messages:{CarRegistrationNumber:{required:sa.translate("parkingcardcontainer/validationregnr"),maxLength:sa.translate("formvalidation/tomanycharacters"),validateOnceSwedishRegistrationNumber:sa.translate("parkingcardcontainer/validationregnronce"),onlyAllowAlphabeticalNumbersAndSpace:sa.translate("formvalidation/invalidinput")},Email:{email:sa.translate("parkingcardcontainer/validationemail"),required:sa.translate("parkingcardcontainer/validationemail")},PhoneNumber:{validatePhoneNumber:sa.translate("parkingcardcontainer/validationphone"),required:sa.translate("parkingcardcontainer/validationphone")}},errorPlacement:function(n,t){n.insertAfter(t)},ignore:".treat-error-as-warning"})}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.service("EpiCampaignServices",["$http","$sce","$compile",function(n){var t=this;this.Subscribe=function(t){var i=["/services/epicampaign/newsletter"];return i.push("/subscribe"),n({url:i.join("/"),method:"POST",data:t}).then(function(n){return n.data})}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.service("ManageBookingServices",["$http","$sce","$compile",function(n){this.GetBooking=function(i){var r=["/services/managebooking"],u,f;return r.push("getbooking"),u=["?bookingGuid="+i.BookingGuid,"&Language="+sa.utils.currentLanguage()],f=n({url:r.join("/")+u.join(""),method:"GET"}).then(function(n){return n.data}).catch(function(n){if(n.status===404)return{BookingNotFound:!0};t(n)}),f};this.GetBookingByReferenceAndEmail=function(i){var r=["/services/managebooking"],u,f;return r.push("getbookingbyreferenceandemail"),u=["?Email="+i.Email,"&BookingReference="+i.BookingReference,"&Language="+sa.utils.currentLanguage()],f=n({url:r.join("/")+u.join(""),method:"GET"}).then(function(n){return n.data}).catch(function(n){if(n.status===404)return{BookingNotFound:!0};t(n)}),f};this.UpdateBookingDetails=function(i){var r=["/services/managebooking"];return r.push("updatebookingdetails"),n({url:r.join("/"),method:"POST",data:i}).then(function(n){return n.data}).catch(function(n){t(n)})};this.ModifyBooking=function(i){var r=["/services/managebooking"];return r.push("ModifyBooking"),n({url:r.join("/"),method:"POST",data:i}).then(function(n){return n.data}).catch(function(n){t(n)})};this.CancelBooking=function(i){var r=["/services/managebooking"];return r.push("cancelbooking"),i.language=sa.utils.currentLanguage(),n({url:r.join("/"),method:"POST",data:i}).then(function(n){return n.data}).catch(function(n){t(n)})};this.EmailReminder=function(i){var r=["/services/managebooking"];return r.push("emailreminder"),i.language=sa.utils.currentLanguage(),n({url:r.join("/")+"?email="+i.email+"&language="+i.language,method:"GET"}).then(function(n){return n.data}).catch(function(n){t(n)})};var t=function(n){alert(sa.translate("errormessages/managebookingservices"));console.log("Request failed");console.log(n)},i="mpbps";this.GetSessionState=function(){var n=window.sessionStorage&&window.sessionStorage.getItem(i);if(n)return JSON.parse(n)};this.SetSessionState=function(n){if(window.sessionStorage)if(n){var t={BookingGuid:n.BookingGuid,Iata:n.AirportIata};window.sessionStorage.setItem(i,JSON.stringify(t))}else window.sessionStorage.removeItem(i)}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.service("BlockServices",["$http","$sce","$compile",function(n){this.GetBlockAsHtml=function(t,i,r){var u=["/mvccontrollers"],f;return u.push(t),f=r.join("&"),u.push(i+"?"+f),n({url:u.join("/"),method:"GET"}).then(function(n){return n.data.replace('class="container"',"")})}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.service("BookParkingServices",["$http","$sce","$compile",function(n,t,i){var l=this,e,r,u,o,f;this.renderDescriptionString=function(n){var i="";return n&&n.length&&(i=n.split("<\/ul>")[0],i=i.replace("",""),i=i.replace(new RegExp("- ","g"),""),i=i.replace(new RegExp("<\/li>","g"),"<\/br>")),t.trustAsHtml(i)};e=function(n){return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g," ")};this.renderPriceString=function(n){if(n===undefined||n===null)return n;if(n=n.toString(),typeof n=="string"){var t=n.split(".");return t.length===2&&t[1].substring(0,2)==="00"?t[0]:t.length===2?t[0]+t[1].substring(0,2):e(n)}};this.LocalFindParkingCache={};this.FindParking=function(t,i){var r,u,f;return!t||t.InboundDateTime===""||t.OutboundDateTime===""?!1:(r=null,i&&(t.CategoryTags=null,r=("K"+t.InboundDateTime+t.OutboundDateTime+"T"+t.Terminal).replace(/-|:| /g,""),this.LocalFindParkingCache[r]!==undefined))?this.LocalFindParkingCache[r]:(u=["/services/bookparking"],u.push("FindParking"),f=n({url:u.join("/"),method:"POST",data:t}).then(function(n){return $(n.data.CarParks).each(function(){this.DateInput=JSON.parse(JSON.stringify(t));this.DateInput.SelectDatesByDefault?this.showPrice=!0:(this.DateInput.InboundDateTime="",this.DateInput.OutboundDateTime="");this.DescriptionTrusted=l.renderDescriptionString(this.Description);this.DateInput.ProductId=this.ProductId;this.DateInput.CarParkId=this.CarParkId;this.DateInput.Terminal=this.Terminal;this.SearchInfoDestination=t.Destination;this.SearchInfoCarrier=t.Carrier;this.DateInput.Carrier="";this.DateInput.Destination="";this.getDiscountPercent=function(n){return n==="originalPrice"?Math.round((1-this.TotalPrice/this.OriginalPrice)*100):Math.round((1-this.TotalPrice/this.PayOnFootPrice)*100)};this.hasDiscount=function(n,t){return this.showPrice?!!t&&!!this.getDiscountPercent&&this.getDiscountPercent(n)>t:!1}}),n.data}),i===!0&&r!==null&&(this.LocalFindParkingCache[r]=f),f)};this.ReserveParking=function(t){var i=["/services/bookparking"];return i.push("ReserveParking"),n({url:i.join("/"),method:"POST",data:t}).then(function(n){return n.data})};this.CheckForUpgrade=function(t){return n({url:"/services/bookparking/CheckForUpgrade/",method:"POST",data:t}).then(function(n){return $(n.data.Results).each(function(){this.getDiscountPercent=function(n){return n==="originalPrice"?Math.round((1-this.TotalUpgradePrice/this.OriginalPrice)*100):Math.round((1-this.TotalUpgradePrice/this.PayOnFootPrice)*100)};this.getPriceWithoutDiscount=function(n){return n==="originalPrice"?this.OriginalPrice:this.PayOnFootPrice};this.hasDiscount=function(n,t){return!!t&&this.getDiscountPercent(n)>t}}),n.data})};this.GetEmailUpgrade=function(t){return n({url:"/services/bookparking/GetEmailUpgrade/",method:"POST",data:t}).then(function(n){return $(n.data.Results).each(function(){this.getDiscountPercent=function(n){return n==="originalPrice"?Math.round((1-this.TotalUpgradePrice/this.OriginalPrice)*100):Math.round((1-this.TotalUpgradePrice/this.PayOnFootPrice)*100)};this.getPriceWithoutDiscount=function(n){return n==="originalPrice"?this.OriginalPrice:this.PayOnFootPrice};this.hasDiscount=function(n,t){return!!t&&this.getDiscountPercent(n)>t}}),n.data})};this.UpgradeParking=function(t){return n({url:"/services/bookparking/UpgradeParking/",method:"POST",data:t}).then(function(n){return n.data})};this.BookParking=function(t){var i=["/services/bookparking"];return i.push("BookParking"),n({url:i.join("/"),method:"POST",data:t}).then(function(n){return n.data})};this.ReinitPaymentSession=function(t){var i=["/services/bookparking"];return i.push("ReinitPaymentSession"),n({url:i.join("/"),method:"POST",data:t}).then(function(n){return n.data})};this.CheckPaymentStatus=function(t){var i=["/services/bookparking"];return i.push("CheckPaymentStatus"),n({url:i.join("/"),method:"POST",data:t}).then(function(n){return n.data})};this.GetAirportSpecificOrder=function(){var t=["/services/bookparking"];return t.push("GetAirportSpecificOrder"),n({url:t.join("/"),method:"GET"}).then(function(n){return n.data})};this.dateTimePickerDateTimeFormat="YYYY-MM-DD HH:mm";this.dateTimePickerBaseMinDate=moment().add(0,"hours");this.dateTimePickerBaseMaxDate=moment().add(6,"M");this.dateTimePickerBaseMaxDateBookWithFlight=moment().add(3,"M").add(-1,"d");r=2;this.getDateTimePickerOutboundMinDate=function(n){return moment(n).add(r,"hours")};this.getDateTimePickerInboundMaxDate=function(n){return moment(n).add(-r,"hours")};this.dateTimePickerChangeFunction=function(n,t,i,u,f,e,o){var c,s,l,h,a;n.date?(c=!n.oldDate||!n.date.isSame(n.oldDate,"hours"),c&&(i[u]=n.date.format(this.dateTimePickerDateTimeFormat),f?(s=moment(n.date).add(r,"hours"),l=s.isBefore(e)||s.isAfter(t.maxDate())?e:s,t.minDate(l)):(h=moment(n.date).add(-r,"hours"),a=h.isAfter(o)||h.isBefore(t.minDate())?o:h,t.maxDate(a)))):(i[u]="",f?t.minDate(e):t.maxDate(o))};this.updateTimeDropDown=function(n,t){t.date(moment(n.date))};this.newDateTimePickerChangeFunction=function(n,t,i,u,f,e,o,s){var v,h,l,c,a;n.date?(v=!n.oldDate||!n.date.isSame(n.oldDate,"minutes"),v&&(u[f]=n.date.format(this.dateTimePickerDateTimeFormat),e?(h=moment(n.date).add(r,"hours"),l=h.isBefore(o)||h.isAfter(i.maxDate())?o:h,t.minDate(l),i.minDate(l)):(c=moment(n.date).add(-r,"hours"),a=c.isAfter(s)||c.isBefore(i.minDate())?s:c,t.maxDate(a),i.maxDate(a)))):(u[f]="",e?(t.minDate(o),i.minDate(o)):(t.maxDate(s),i.maxDate(s)))};this.InitEpiTranslations=function(n,i){n.PricePerWeekOrDayString&&(i.priceperweekordaystring=n.PricePerWeekOrDayString);n.PreBookButtonText&&(i.prebookbuttontext=n.PreBookButtonText);n.BookButtonText&&(i.bookbuttontext=n.BookButtonText);n.ViewPriceBookButtonText&&(i.viewpricebookbuttontext=n.ViewPriceBookButtonText);n.TermsAndConditionsText&&(i.termsandconditionstextTrusted=t.trustAsHtml(n.TermsAndConditionsText),i.termsandconditionstext=n.TermsAndConditionsText);n.NewsLetterText&&(i.newslettertext=n.NewsLetterText,i.newslettertextTrusted=t.trustAsHtml(n.NewsLetterText));n.NewsLetterDeclineText&&(i.newslettertextdecline=n.NewsLetterDeclineText,i.newslettertextdeclineTrusted=t.trustAsHtml(n.NewsLetterDeclineText));n.FullyBookedButtonText&&(i.soldoutmessage=n.FullyBookedButtonText);n.RegistrationNumberValidation&&(i.registrationnumbervalidation=n.RegistrationNumberValidation)};this.initPhoneNumberRestrictions=function(n){n.keypress(function(n){var t=n.keyCode?n.keyCode:n.charCode;return t>=48&&t<=57||t===43||t===8||t===46})};this.initCarRegistrationRestrictions=function(n){n.keypress(function(n){var t=n.keyCode?n.keyCode:n.charCode,i=t===32||t===45||t===46;return!i})};this.GenerateReturnUrl=function(n){var t="";return sa.utils.getQueryFromName("appcontext")&&(t="?appcontext=1",sa.utils.getQueryFromName("darkmode")=="1"&&(t+="&darkmode=1")),window.location.protocol+"//"+window.location.host+n+t};u=null;o='