function MatchHeight(){$(".uspblock").matchHeight({byRow:!1})}function MatchHeightdestination(){$(".equalHight").matchHeight({byRow:!1});$(".equalHight-info").matchHeight({byRow:!1})}var angularModules=["ui.bootstrap"],hasMaps=!1,hasRoutes,airportTrafficFeesViewModel,googleMapsViewModel,googleMapsBlockController,pageListViewModel;try{angular.module("uiGmapgoogle-maps");angularModules.push("uiGmapgoogle-maps");hasMaps=!0}catch(e){}try{angular.module("summernote");angularModules.push("summernote")}catch(e){}hasRoutes=!1;try{angular.module("ngRoute");angularModules.push("ngRoute");hasRoutes=!0}catch(e){}window.swedaviaApp=angular.module("swedaviaApp",angularModules);hasMaps&&window.swedaviaApp.config(["uiGmapGoogleMapApiProvider",function(n){n.configure({key:"AIzaSyAMRdep8bnX7VOgqVBj3mhdIV4oSlEM8fg",v:"3",libraries:"geometry,visualization"})}]);hasRoutes&&window.swedaviaApp.config(["$routeProvider",function(n){if($(".flightsBoardBlockV2").length>0){var t=function(n){var t=n.date,i=moment(t,"YYYY-MM-DD",!0);if(!i.isValid())return console.warn("Url component '"+t+"' is not a valid date."),n.date="","/"};n.when("/",{templateUrl:"/mvccontrollers/ArrivalDeparturesTemplates/flightlist?language="+sa.utils.currentLanguage()}).when("/:date",{templateUrl:"/mvccontrollers/ArrivalDeparturesTemplates/flightlist?language="+sa.utils.currentLanguage(),redirectTo:t}).when("/:date/:flightId",{templateUrl:"/mvccontrollers/ArrivalDeparturesTemplates/flightlistitem?language="+sa.utils.currentLanguage(),redirectTo:t})}else n.when("/",{templateUrl:"/mvccontrollers/ManageBookingTemplates/Input"}).when("/input",{templateUrl:"/mvccontrollers/ManageBookingTemplates/Input"}).when("/reminder",{templateUrl:"/mvccontrollers/ManageBookingTemplates/Reminder"}).when("/manage",{templateUrl:"/mvccontrollers/ManageBookingTemplates/Manage"}).when("/cancel",{templateUrl:"/mvccontrollers/ManageBookingTemplates/Cancel"}).when("/modify",{templateUrl:"/mvccontrollers/ManageBookingTemplates/ModifyBooking?iata="+sa.utils.currentAirportIataCode()}).otherwise({redirectTo:"/manage"})}]);window.swedaviaApp.filter("unique",function(){return function(n,t){for(var f=[],e,s=n.length,o=[],r,u,i=0;i<n.length;i++){for(r=n[i],e=!0,u=0;u<f.length;u++)r[t]===f[u]&&(e=!1);e&&(f.push(r[t]),o.push(r))}return o}});angular.element(function(){angular.bootstrap(document,["swedaviaApp"])});window.sa=window.sa||{};window.sa.dateTimeUtils=window.sa.dateTimeUtils||{};var utcOffset=60,convertUtcStringToSwedishTime=function(n){var t=moment.utc(n),r=t.year(),i=getDateIntervalForYear(r);return i&&t.isSameOrAfter(i.summerTimeStart)&&t.isBefore(i.summerTimeEnd)?t.utcOffset(utcOffset+60):t.utcOffset(utcOffset)},cachedValues={},getDateIntervalForYear=function(n){var t,i;return cachedValues[n]?cachedValues[n]:(t=sa.serverProperties.dayLightSavingsRule,!t)?null:(i={summerTimeStart:transitionTimeToDateTime(t.DaylightTransitionStart,n),summerTimeEnd:transitionTimeToDateTime(t.DaylightTransitionEnd,n)},cachedValues[n]=i,i)},transitionTimeToDateTime=function(n,t){var i,f=n.Month<10?"0"+n.Month:n.Month,e,r,o,s,u;return n.IsFixedDateRule?console.warn("Transition time conversion not implemented for fixed date rules."):n.Week<=4?(i=moment.utc([t,f,1].join("-")+moment(n.TimeOfDay).format("THH:mm")),e=i.day(),r=n.DayOfWeek-e,r<0&&(r+=7),r+=7*(n.Week-1),r>0&&(i=i.add(r,"days"))):(o=moment(t+"-"+f,"YYYY-MM").daysInMonth(),i=moment.utc([t,f,o].join("-")+moment(n.TimeOfDay).add(-1,"hours").format("THH:mm")),s=i.day(),u=s-n.DayOfWeek,u<0&&(u+=7),u>0&&(i=i.add(-u,"days"))),i};sa.dateTimeUtils.convertUtcStringToSwedishTime=convertUtcStringToSwedishTime;sa=window.sa||{};sa.utils=sa.utils||{};sa.utils={loadImage:function(n){return $.get({url:"/services/imagevault/GetByReferenceId/"+n})},getQueryFromName:function(n){if(!n)return"";n=n.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var i=new RegExp("[\\?&]"+n+"=([^&#]*)","i"),t=i.exec(location.search);return t||(t=i.exec(location.hash)),t===null?"":decodeURIComponent(t[1].replace(/\+/g," "))},redirectPost:function(n,t){var i="";$.each(t,function(n,t){t=t.split('"').join('"');i+='<input type="hidden" name="'+n+'" value="'+t+'">'});$('<form action="'+n+'" method="POST">'+i+"<\/form>").appendTo($(document.body)).submit()},addQueryParameters:function(n,t){var u=n,i,r;if(t!==null&&typeof t=="object")try{for(r in t)t.hasOwnProperty(r)&&t[r]===""&&delete t[r];i=jQuery.param(t)}catch(f){throw"Failed to create parameters: "+f;}else throw t+" is not and valid object";return i&&(u+=u.indexOf("?")>-1?"&"+i:"?"+i),u},getHashParams:function(){var n=window.location.hash.substr(1);return n.split("&").reduce(function(n,t){var i=t.split("=").map(function(n){return decodeURIComponent(n.replace("/",""))});return n[i[0]]=i[1],n},{})},currentLanguage:function(){return $("html").attr("lang")},currentFullSupportedLanguageOrDefault:function(){var n=$("html").attr("lang");return n!=="en"&&n!=="sv"&&(n="en"),n},currentAirportIataCode:function(){return $("body").data("airportiatacode")},currentAirportIcaoCode:function(){return $("body").data("airporticaocode")},isHTML:function(n){try{var t=(new DOMParser).parseFromString(n,"text/html");return[].slice.call(t.body.childNodes).some(function(n){return n.nodeType===1})}catch(i){return console.log(i),!1}},isTouchDevice:function(){return"ontouchstart"in document.documentElement},isMobileWidth:function(){return window.innerWidth<=767?!0:!1},isLandscapeTabletWidth:function(){return window.innerWidth>=992&&window.innerWidth<=1199?!0:!1},isLandscapeTabletWidthOrWider:function(){return window.innerWidth>=992?!0:!1},isTabletWidth:function(){return window.innerWidth>=768&&window.innerWidth<=991?!0:!1},getCurrentWidthMode:function(){return sa.utils.isMobileWidth()?"mobile":sa.utils.isTabletWidth()?"tablet":sa.utils.isLandscapeTabletWidth()?"landscapeTablet":"desktop"},isIos:function(){return/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream},isElementInViewport:function(n){typeof jQuery=="function"&&n instanceof jQuery&&(n=n[0]);var t=n.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)},scrollElementIntoViewOnIos:function(n,t){sa.utils.isIos&&!sa.utils.isElementInViewport(n)&&n.velocity("scroll",{offset:-t},300)},getColorClassFromParkingCategoryTag:function(n){switch(n){case"indoor":return"orange";case"outdoor":return"clearblue";case"premium":return"standardblack";case"longterm":return"standardgreen";default:return"orange"}},toggleHasScrollableOverlay:function(n){$("html").toggleClass("hasScrollableOverlay",n)},localTimeToUtcTimeString:function(n){var t=moment().isDST()?"+02:00":"+01:00";return n+t},checkCookieCategory:function(n){var f=document.cookie.match(new RegExp("(^| )cookieSettings=([^;]+)")),i,r,t,u;if(f===null)return null;if(i=f[2],i!=null)for(r=i.split(","),t=0;t<r.length;t++)if(u=r[t].split("="),u[0].trim()===n)return u[1]},checkCookieSettingsConfirmed:function(){var n=document.cookie.match(new RegExp("(^| )cookieSettings=([^;]+)"));return n===null?!1:!0}};"contains"in String.prototype||(String.prototype.contains=function(n,t){return"".indexOf.call(this,n,t)!==-1});String.prototype.format||(String.prototype.format=function(){var n=arguments;return this.replace(/{(\d+)}/g,function(t,i){return typeof n[i]!="undefined"?n[i]:t})});String.prototype.endsWith||(String.prototype.endsWith=function(n){return this.indexOf(n,this.length-n.length)!==-1});sa.utils.dateTimePickerGlobalTooltips={close:sa.translate("datetimepickertooltips/close"),selectMonth:"",prevMonth:sa.translate("datetimepickertooltips/prevMonth"),nextMonth:sa.translate("datetimepickertooltips/nextMonth"),incrementHour:sa.translate("datetimepickertooltips/incrementHour"),decrementHour:sa.translate("datetimepickertooltips/decrementHour"),pickHour:"",selectTime:sa.translate("datetimepickertooltips/selecttime"),fromTime:sa.translate("datetimepickertooltips/fromtime")};$(function(){document.documentElement.className+=sa.utils.isTouchDevice()?" has-touch":" no-touch";$("table.scrolling").wrap("<div class='table-responsive'><\/div>");$(window).load(function(){$("#MainContent img").each(function(){$(this).hasClass("img-responsive")||$(this).addClass("img-responsive")})});$(".carousel").swiperight(function(){$(this).carousel("prev")});$(".carousel").swipeleft(function(){$(this).carousel("next")});$(".clickableimage").click(function(){sa.utils.isMobileWidth()||$.fancybox({href:$(this).attr("src"),fitToView:!0,helpers:{overlay:{css:{filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A2A2D40,endColorstr=#3A2A2D40)",zoom:"1",background:"rgba(58, 42, 45, 0.4)"}}}})})});jQuery.loadScript=function(n,t){jQuery.ajax({url:n,dataType:"script",success:t,async:!0})},function(n,t){typeof exports=="object"&&typeof module!="undefined"&&typeof require=="function"?t(require("../moment")):typeof define=="function"&&define.amd?define(["../moment"],t):t(n.moment)}(this,function(n){"use strict";return n.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(n){var t=n%10,i=~~(n%100/10)==1?"e":t===1?"a":t===2?"a":t===3?"e":"e";return n+i},week:{dow:1,doy:4}})});sa=window.sa||{};sa.airporttrafficfeesservice={getAircrafts:function(){return $.ajax(["/services/trafficfeecalculator/getaircrafts"],{responseType:"json"})},getAircraftEngines:function(n){var t=["/services/trafficfeecalculator/getaircraftengines"];return t.push(n),$.ajax(t.join("/"),{responseType:"json"})},getInitialValues:function(n,t){var i=["/services/trafficfeecalculator/getinitialvalues"];return i.push(n,encodeURIComponent(t)),$.ajax(i.join("/"),{responseType:"json"})},calculatefee:function(n,t,i,r,u,f,e,o,s,h,c,l,a){var v=["/services/trafficfeecalculator/calculatefee"];return console.log(encodeURIComponent(t)),console.log(encodeURIComponent(t).replace(">","%3E")),v.push(n,encodeURIComponent(t).replace(">","%3E"),i,r,u,f,e,o,s,h,c,l,a),$.ajax(v.join("/"),{responseType:"json"})}};sa=window.sa||{};sa.bookparkingservice={searchFlyTo:function(n,t,i){var u=sa.utils.currentAirportIataCode(),f=sa.utils.currentLanguage(),r=["/services/publicflightsboard/v2/searchflyto"];return r.push(n,t,f,u,i),$.ajax(r.join("/"),{responseType:"json"})}};sa=window.sa||{};sa.destinationservice={getAllDestinationsForAirport:function(n,t){var i=["/services/destinations/list"];return i.push(n),i.push(t),$.ajax(i.join("/"),{responseType:"json"})}};$(function(){var n,t,i,r;if($("#AnchorLinks").length>0){n=60;t=function(){var n=$(".AnchorLinksFixed .anchorLinksContainer");n.each(function(){var n=0,t=$(this).find(".anchorItem");$(this).hasClass("expanded")?($(this).removeClass("expanded"),$(this).height(55),$(window).scroll()):(_.each(t,function(t){($(t).is(":visible")||$(t).hasClass("top"))&&(n+=$(t).outerHeight())}),$(this).height(n),$(this).addClass("expanded"))})};$(".anchorItem.top").click(function(){$("html,body").velocity("scroll",300);sa.utils.isMobileWidth()&&t()});$(".anchorItem").on("click",function(){var r,i;if(!$(this).hasClass("top")&&!$(this).hasClass("showMap")){i=$(".AnchorId-"+$(this).data("anchorid"));r=sa.utils.isMobileWidth()?i.length===1?i:$(".mobile .AnchorId-"+$(this).data("anchorid")):i.length===1?i:$(".desktop .AnchorId-"+$(this).data("anchorid"));var u=$(this).parents(".AnchorLinksFixed").is(":visible")?$(this).parents(".AnchorLinksFixed"):$(this).parents(".AnchorLinks"),f=n-10,e=r.offset().top-f;$("html, body").velocity("scroll",{offset:e},300);$(".ExpanderToggle",u).is(":visible")&&$(".anchorLinksContainer",u).hasClass("expanded")&&t()}});$(".AnchorLinksFixed .ExpanderToggle").on("click",function(){t()});$(window).scroll(function(){var t=$(".AnchorLinks:visible"),i,r,n,u;t.length&&(i=t.offset().top,r=$(window).scrollTop(),r>i?(n=t.siblings(".AnchorLinksFixed"),u=!!n.find(".anchorItem:not(.top)").length,u?n.show():n.hide()):$(".AnchorLinksFixed").hide())});i=function(n){for(var i=n.attr("class").split(" "),t=0;t<i.length;t++)if(i[t].indexOf("AnchorId")!==-1)return i[t].split("-")[1];return""};r=$("#StandardPage #StandardPageContent").find('[class*=" AnchorId-"]');$(window).on("scroll",function(){var e,o,u,t,h,c;for($(".AnchorLinksFixed").each(function(){$(this).is(":visible")&&(e=$(this))}),o=$(this).scrollTop(),u=r.filter(":visible"),t=0;t<u.length;t++){var f=$(u[t]),s=$(u[t+1]),l=f.parents('[class*=" AnchorId-"]').length===0;if(l&&(h=f.offset().top-n,c=s.length?s.offset().top-n:$(document).height(),o>=h&&o<=c&&f.is(":visible"))){$(e).find("a").removeClass("active");$(e).find("a[data-anchorid="+i(f)+"]").addClass("active");break}}});location.hash&&$("#AnchorLinks").find('a[href="'+location.hash+'"]').click()}});$(function(){$(".blocksliderblock.carousel").carousel({interval:7e3});var n=$(".blocksliderblock.carousel .carousel-indicators li");n.length===1&&n.parent().hide()});$(function(){var n=document.cookie;n.contains("cookieDisclaimer")||$("#CookieDisclaimer").show();$(".cookieDisclaimer-close-button").on("click",function(){$("#CookieDisclaimer").remove();document.cookie="cookieDisclaimer=1;expires=Wed, 31 Oct 2040 08:50:17 GMT;path=/"})});$(function(){$(".formcontainerblock, .extendedformcontainerblock").each(function(){$(this).children().first().hasClass("container")||$(this).children().first().addClass("container");$(this).hasClass("episerverformscontainer")||$(this).addClass("episerverformscontainer")});$(".formcontainerblock form").attr("ng-non-bindable","");$(".Form__MainBody input[type=checkbox]").each(function(){var n=$(this),t=n.parents("label"),i=n.parents(".Form__Element");i.addClass("checkbox");i.removeClass("Form__Element");t.append('<span class="checkmark whitebackground darkblue"><\/span>');t.addClass("check-container")})});$(function(){var n=function(){$(".footerfrontPage-airports").toggleClass("expanded");$("a, button").each(function(){var n=$(this).attr("tabindex")==="-1"?0:-1;$(this).attr("tabindex",n)})};$(".footerfrontPage-container-airportButton").on("click",function(){n()});$(".footerfrontPage-airports-close").on("click",function(){n()});$(".js-footerMobileMenuItem").on("click",function(){var t=$(".footerMobileMenuItemIcon i"),n;t.removeClass("glyphicon-menu-up").addClass("glyphicon-menu-down");$(this).hasClass("expanded")||$(".footerMobileMenuItemIcon i",$(this)).removeClass("glyphicon-menu-down").addClass("glyphicon-menu-up");n=$("#FooterMobileMenuAccordion");n.find(".collapse.in").collapse("hide");n.find(".expanded").not($(this)).removeClass("expanded");$(this).toggleClass("expanded")})});$(function(){function i(n,t){n=n.replace(/[\[\]]/g,"\\$&");var r=new RegExp("[?&]"+n+"(=([^&#]*)|&|#|$)"),i=r.exec(t);return i?i[2]?decodeURIComponent(i[2].replace(/\+/g," ")):"":null}var r=function(t){var u=t.parents(".tabBlock-innerContent").data("tab-index"),i=null,r;i=sa.utils.isMobileWidth()?t.parents(".tabBlock ").find(".tabBlock-Button.mobile-btn.tabindex-"+u):t.parents(".tabBlock ").find(".tabBlock-Button.desktop-btn.tabindex-"+u);i!==undefined&&i!==null&&(r=!1,i.hasClass("selected")?r=!0:setTimeout(function(){angular.element(i).triggerHandler("click")},0),!sa.utils.isMobileWidth()||r?n(t,!0):t.parents(".tabBlockContainerBlock").length&&setTimeout(function(){n(t,!0)},1e3))};$(".tabblock a").click(function(n){var i=$(this).attr("href"),r,t;i!=null&&i.indexOf("#tabid")!==-1&&(n.preventDefault(),r=i.split("=").length===2?i.split("=")[1]-1:"",t=null,t=sa.utils.isMobileWidth()?$(this).parents(".tabBlock").find(".tabBlock-Button.mobile-btn.tabindex-"+r)[0]:$(this).parents(".tabBlock").find(".tabBlock-Button.desktop-btn.tabindex-"+r)[0],t!==undefined&&t!==null&&setTimeout(function(){angular.element(t).triggerHandler("click")},0))});var n=function(n,t){setTimeout(function(){var i=0;$("#AnchorLinks").is(":visible")&&(i=55);t&&(i+=50);$("html,body").velocity("scroll",{offset:n.offset().top-i},300)},0)},t=function(n){n.find(".collapseBtn:not(.expanded)").trigger("click")},u=function(){var f=i("blockid",window.location.href),u;f!==null&&f!==undefined&&("scrollRestoration"in history&&(history.scrollRestoration="manual"),u=$(".AnchorId-"+f).length?$(".AnchorId-"+f):$(".AnchorIdDisabled-"+f),u.length>0&&(u.parents(".tabBlock-innerContent").length?(r(u),t(u)):(n(u,!1),t(u))))};setTimeout(function(){u()},0)});$(function(){var n=function(){$("#MainMenu .subMenuItems").collapse("hide");$("#MainMenu .menuItem").removeClass("menuopen")},t=function(){$(document).on("click",function(t){$(t.target).closest("#MainMenu").length||n()})};$("#MainMenu .menuItem").on("click",function(){$(this).hasClass("menuopen")?n():(n(),t(),$(this).addClass("menuopen"))})});$(function(){$(".js-mobileMenuItem").click(function(){n();$(this).toggleClass("expanded")});$("#close-mask").click(function(){n();$("#MobileMenu").removeClass("expanded")});var n=function(){var n=$("#MobileMenuAccordion");n.find(".collapse.in").collapse("hide")};$(".mainMenuClose, .mobileMenuTogglerContainer").click(function(){$("#MobileMenu").toggleClass("expanded");$(".js-mobileMenuItem.active").addClass("expanded").attr("aria-expanded",!0);$(".js-mobileMenuItem.active").find(".collapse").collapse("show")});$("#FooterAirportButtonTrigger").click(function(n){return $(".footerfrontPage-container-airportButton").click(),n.preventDefault(),!1})});sa=window.sa||{};sa.eventHandler=sa.eventHandler||{};sa.eventHandler.addEventHandelers=function(n){var t=$("body");if(typeof n.BeforeFindParking=="function")t.on("sa.beforefindparking",n.BeforeFindParking);if(typeof n.AfterFindParking=="function")t.on("sa.afterfindparking",n.AfterFindParking);if(typeof n.BeforeReserveParking=="function")t.on("sa.beforereserveparking",n.BeforeReserveParking);if(typeof n.AfterReserveParking=="function")t.on("sa.afterreserveparking",n.AfterReserveParking);if(typeof n.BeforeBookParking=="function")t.on("sa.beforebookparking",n.BeforeBookParking);if(typeof n.AfterBookParking=="function")t.on("sa.afterbookparking",n.AfterBookParking);if(typeof n.BeforeModifyBooking=="function")t.on("sa.beforemodifybooking",n.BeforeModifyBooking);if(typeof n.AfterModifyBooking=="function")t.on("sa.aftermodifybooking",n.AfterModifyBooking);if(typeof n.GoBackOneStep=="function")t.on("sa.gobackonestep",n.GoBackOneStep)};sa.eventHandler.triggerEvent=function(n,t){var i=$("body");i.trigger("sa."+n,t)};sa.eventHandler.eventObject=function(n,t){return{Id:t,Object:n}};$(function(){$.validator.addMethod("validateIsDate",function(n){var t=moment(n);return t.isValid()});$.validator.addMethod("validateIsDateWithTime",function(n,t){var u=$(t),i=u.data("DateTimePicker"),r,f;if(!i&&(i=u.parent().data("DateTimePicker"),!i))throw new Error("couldn't find a datepicker element");return r=i.format(),f=moment(n,r).format(r)===n,f});$.validator.addMethod("validateOnceSwedishRegistrationNumber",function(n,t){if(!n)return $(t).removeClass("treat-error-as-warning"),!1;var i=/^((?![ivqIVQ])[a-zA-Z]){3} ?\d{2}(?![ivqoIVQO])[a-zA-Z\d]$/.test(n);if(i)return $(t).removeClass("treat-error-as-warning"),!0;$(t).addClass("treat-error-as-warning");$(t).one("focusout",function(){$(this).removeClass("treat-error-as-warning")});return!1});$.validator.addMethod("onlyAllowAlphabeticalNumbersAndSpace",function(n){return/^(?=[a-zA-Z0-9 ÅÄÖåäö]*\S)[a-zA-Z0-9 ÅÄÖåäö]+$/.test(n)});$.validator.addMethod("validatePhoneNumber",function(n){return/^\+?\d+$/.test(n)&&n.length>6?!0:!1});$.validator.addMethod("isValidRewardNumberNorwegian",function(t){var r;if(t==="")return!0;if(r=new RegExp("^\\d{8}(\\d{2})?$"),r.test(t)){var i=t.length,u=t.substring(0,i-1),f=t.substring(i-1,i),e=n(u);return f===e}return!1});$.validator.addMethod("isCustomEmail",function(n,t){return this.optional(t)||/.*@.*\.[a-z]+/.test(n)});var n=function(n){for(var i=[],f=!1,c=0,e,l,o,r,s,u,a,v,t=0;t<n.length;t++)if(e=n.substring(t,t+1),f)for(f=!1,l=parseInt(e),o=(l*2).toString(),r=0;r<o.length;r++)i[c++]=o.substring(r,r+1);else f=!0,i[c++]=e;for(s=0,u=0,t=0;t<n.length;t++)a=n.substring(t,t+1),v=parseInt(a),s=s+v;for(t=0;t<i.length;t++)parseInt(i[t])&&(u=u+parseInt(i[t]));var y=u+10,p=Math.floor(y/10),w=p*10,h=w-u;return h==10&&(h=0),h.toString()};$.validator.addMethod("validateParkingBookingReference",function(n){return/^[a-zA-Z]{3}-[a-zA-Z0-9]+?-[a-zA-Z0-9]+?\s*$/.test(n)?!0:!1});$.validator.addMethod("validateParkingBookingReferenceIsCurrentAirport",function(n){var t=sa.utils.currentAirportIataCode().toLowerCase(),i=n.substring(0,3).toLowerCase();return t===i?!0:!1});$.validator.addMethod("ParkingMinDate",function(n,t){var i=t.form.getAttribute("data-reservationtimelimit");return(i==null||i<60)&&(i=240),moment(n)>moment().add(i,"minutes")});$.validator.addMethod("maxLength",function(n,t,i){return n?n.length<=i:!0});$.validator.addMethod("parkingAcceptOrDeclineHasBeenSelected",function(n,t){var i=$(t).parents("form").find('[name="AcceptNewsLetter"]');return i.length===1?i[0].checked||t.checked:!0})});$(function(){if($("#FrontPage").length){var t=function(){$(".frontPage-airports").toggleClass("expanded");$("a, button").each(function(){var n=$(this).attr("tabindex")==="-1"?0:-1;$(this).attr("tabindex",n)})},n=$(".frontPage-video-player video");window.location.href.indexOf("menuopen")>-1&&t();sa.utils.isLandscapeTabletWidthOrWider()?n.attr("src",n.attr("data-src")):$(window).resize(function(){sa.utils.isLandscapeTabletWidthOrWider()&&!n.attr("src")&&n.attr("src",n.attr("data-src"))});$(".frontPage-container-airportButton").on("click",function(){t()});$(".frontPage-airports-close").on("click",function(){t()});n.on("loadeddata",function(){$(this).show()});$(".frontPage-video-player .vector-pause").on("click",function(){$(".frontPage-video-player video").trigger("pause");$(this).hide();$(".frontPage-video-player .vector-play").show()});$(".frontPage-video-player .vector-play").on("click",function(){$(".frontPage-video-player video").trigger("play");$(this).hide();$(".frontPage-video-player .vector-pause").show()})}});$(function(){var n=$(".pointOfInterestGroupPage .pointOfInterest-information");if(n.length>0){t(n);$(window).resize(function(){$(this).width()>767?t(n):n.removeAttr("style")});function t(t){var i=0;$.each(t,function(){var t=$(this),n=t.height();n>i&&(i=n)});$(n).height(i)}}});-$(function(){if($(".bookHotelBlock").length>0){$(".bookHotelFromDate").each(function(){$(this).datetimepicker({locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:"YYYY-MM-DD",minDate:moment().format("YYYY-MM-DD"),showClose:!0,tooltips:sa.utils.dateTimePickerGlobalTooltips,widgetPositioning:{vertical:"bottom"}}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")})});$(".bookHotelToDate").each(function(){$(this).datetimepicker({locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:"YYYY-MM-DD",minDate:moment().format("YYYY-MM-DD"),showClose:!0,tooltips:sa.utils.dateTimePickerGlobalTooltips,widgetPositioning:{vertical:"bottom"}}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")})});$(".bookHotelBlock-search-button").on("click",function(n){var i;if(n.preventDefault(),i=$(n.target).parents("form.bookHotelForm"),i.valid()){var f=i.find(".bookHotel-to").val(),r=i.find(".bookHotelFromDate").data("DateTimePicker").date(),u=i.find(".bookHotelToDate").data("DateTimePicker").date(),t=$(this).attr("href");t=t+"&ss="+$.trim(f);t=t+"&checkin_year_month="+r.format("YYYY-MM");t=t+"&checkin_monthday="+r.format("DD");t=t+"&checkout_year_month="+u.format("YYYY-MM");t=t+"&checkout_monthday="+u.format("DD");window.open(t,"_blank")}});$.validator.addMethod("checkHotelDatesNotOverlap",function(){var n=this.currentForm,t=$(n).find(".bookHotelFromDate").data("DateTimePicker").date(),i=$(n).find(".bookHotelToDate").data("DateTimePicker").date();return t!=null&&i!=null&&t.format("YYYY-MM-DD")>=i.format("YYYY-MM-DD")?!1:!0});$(".bookHotelForm").each(function(){$(this).validate({rules:{bookHotelInputLocation:{required:!0},bookHotelInputToDate:{required:!0},bookHotelInputFromDate:{required:!0,checkHotelDatesNotOverlap:!0}},messages:{bookHotelInputLocation:{required:sa.translate("bookhotel/validationmessagedestinationrequired")},bookHotelInputToDate:{required:sa.translate("bookhotel/validationmessagechoosetodate")},bookHotelInputFromDate:{required:sa.translate("bookhotel/validationmessagechoosefromdate"),checkHotelDatesNotOverlap:sa.translate("bookhotel/validationmessagedateoverlap")}}})});$.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)}})}});$(function(){if($(".contactblock").length){var n=function(){$(".contactblock.block.half .contactBlock").each(function(){var n=$(this).find(".contactBlock-Image").height();$(this).find(".contactBlock-TextContainer").height(n)})},t=function(){$(".contactblock.block.col-sm-3 .contactBlock").each(function(){if(sa.utils.isMobileWidth()){var n=$(this).find(".contactBlock-Image").height();$(this).find(".contactBlock-TextContainer").height(n)}else $(this).find(".contactBlock-TextContainer").height(220)})};$(window).on("resize",function(){})}});$(function(){var n=$(".contentAreaBlockSlider");$.each(n,function(){var n=$(".contentAreaBlock-button",$(this)),t=$(this);$(n).on("click",function(){t.find(".contentAreaBlock-item").removeClass("hidden");$(this).addClass("hidden")})})});$(function(){$("#MainContent").find(".extendedfooterblock").length&&($("#MainContent").css("padding-bottom","0"),$(".extendedfooterblock").prev(".tabblock").css("padding-bottom","0"))});$(function(){var n,t,i;$(".faqBlock .collapseBtn").on("click",function(n){var u,i,f;n.preventDefault();var e=$(n.target),t=e.closest(".collapseBtn"),r=t.closest(".faqBlock").find(".panel-collapse");t.hasClass("expanded")?r.collapse("hide"):($(window).width()<768&&(u=r.closest(".faqBlocksContainer"),i=u.find(".panel-collapse.in"),i.removeClass("in"),f=t.offset().top-20,$("html,body").velocity("scroll",{offset:f},300),i.addClass("in"),i.collapse("hide"),u.find(".collapseBtn").removeClass("expanded")),r.collapse("show"));t.toggleClass("expanded")});n=$(location).attr("hash");n&&n.indexOf("/")===-1&&(t=".faqBlock"+n+" .collapseBtn",i=document.querySelector(t),!i||$(t).trigger("click"))});$(function(){if($(".HallOfFameContainerBlock").length){var n=function(){var n=$(".HallOfFameContainerBlock");n.each(function(){var t=$(this).find(".halloffameblock.half .hallOfFameBlock"),n=0;t.each(function(){var t=$(this).find(".imageAndTitleContainer").height()+$(this).find(".preambleHalf").height();t>n&&(n=t)});t.each(function(){sa.utils.isMobileWidth()||sa.utils.isTabletWidth()?$(this).height("auto"):$(this).height(n+15)})})},t=function(){var n=$(".halloffameblock.full .hallOfFameBlock");n.each(function(){var n=$(this).find(".titleContainer");n.height()+100>$(this).height()&&n.css("position")==="absolute"&&!sa.utils.isTabletWidth()||sa.utils.isMobileWidth()?(n.css("position","relative"),n.css("padding-bottom","0px")):(n.height()+100<$(this).height()&&!sa.utils.isTabletWidth()||sa.utils.isTabletWidth())&&(n.css("position","absolute"),n.css("padding-bottom","45px"))})};setTimeout(function(){n();t()},0);setTimeout(function(){n();t()},1e3);$(window).on("resize",function(){setTimeout(function(){n();t()},0)})}});!function(n){"use strict";"function"==typeof define&&define.amd?define(["jquery"],n):"undefined"!=typeof module&&module.exports?module.exports=n(require("jquery")):n(jQuery)}(function(n){var o=-1,r=-1,i=function(n){return parseFloat(n)||0},s=function(t){var f=1,e=n(t),u=null,r=[];return e.each(function(){var t=n(this),e=t.offset().top-i(t.css("margin-top")),o=r.length>0?r[r.length-1]:null;null===o?r.push(t):Math.floor(Math.abs(u-e))<=f?r[r.length-1]=o.add(t):r.push(t);u=e}),r},u=function(t){var i={byRow:!0,property:"height",target:null,remove:!1};return"object"==typeof t?n.extend(i,t):("boolean"==typeof t?i.byRow=t:"remove"===t&&(i.remove=!0),i)},t=n.fn.matchHeight=function(i){var r=u(i),f;return r.remove?(f=this,this.css(r.property,""),n.each(t._groups,function(n,t){t.elements=t.elements.not(f)}),this):this.length<=1&&!r.target?this:(t._groups.push({elements:this,options:r}),t._apply(this,r),this)},f,e;t.version="0.7.2";t._groups=[];t._throttle=80;t._maintainScroll=!1;t._beforeUpdate=null;t._afterUpdate=null;t._rows=s;t._parse=i;t._parseOptions=u;t._apply=function(r,f){var e=u(f),o=n(r),c=[o],l=n(window).scrollTop(),a=n("html").outerHeight(!0),h=o.parents().filter(":hidden");return h.each(function(){var t=n(this);t.data("style-cache",t.attr("style"))}),h.css("display","block"),e.byRow&&!e.target&&(o.each(function(){var i=n(this),t=i.css("display");"inline-block"!==t&&"flex"!==t&&"inline-flex"!==t&&(t="block");i.data("style-cache",i.attr("style"));i.css({display:t,"padding-top":"0","padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px",overflow:"hidden"})}),c=s(o),o.each(function(){var t=n(this);t.attr("style",t.data("style-cache")||"")})),n.each(c,function(t,r){var u=n(r),f=0;if(e.target)f=e.target.outerHeight(!1);else{if(e.byRow&&u.length<=1)return void u.css(e.property,"");u.each(function(){var t=n(this),u=t.attr("style"),i=t.css("display"),r;"inline-block"!==i&&"flex"!==i&&"inline-flex"!==i&&(i="block");r={display:i};r[e.property]="";t.css(r);t.outerHeight(!1)>f&&(f=t.outerHeight(!1));u?t.attr("style",u):t.css("display","")})}u.each(function(){var t=n(this),r=0;e.target&&t.is(e.target)||("border-box"!==t.css("box-sizing")&&(r+=i(t.css("border-top-width"))+i(t.css("border-bottom-width")),r+=i(t.css("padding-top"))+i(t.css("padding-bottom"))),t.css(e.property,f-r+"px"))})}),h.each(function(){var t=n(this);t.attr("style",t.data("style-cache")||null)}),t._maintainScroll&&n(window).scrollTop(l/a*n("html").outerHeight(!0)),this};t._applyDataApi=function(){var t={};n("[data-match-height], [data-mh]").each(function(){var i=n(this),r=i.attr("data-mh")||i.attr("data-match-height");t[r]=r in t?t[r].add(i):i});n.each(t,function(){this.matchHeight(!0)})};f=function(i){t._beforeUpdate&&t._beforeUpdate(i,t._groups);n.each(t._groups,function(){t._apply(this.elements,this.options)});t._afterUpdate&&t._afterUpdate(i,t._groups)};t._update=function(i,u){if(u&&"resize"===u.type){var e=n(window).width();if(e===o)return;o=e}i?r===-1&&(r=setTimeout(function(){f(u);r=-1},t._throttle)):f(u)};n(t._applyDataApi);e=n.fn.on?"on":"bind";n(window)[e]("load",function(n){t._update(!1,n)});n(window)[e]("resize orientationchange",function(n){t._update(!0,n)})});$(document).ready(function(){MatchHeight();MatchHeightdestination()});$(window).on("resize",MatchHeightdestination);$(function(){function n(n){var t=0;$.each(n,function(n,i){var u=$(i),r=u.closest(".carousel-inner > .item"),e=r&&r.length,f;e&&$(r).css("display","block");$(".newsBlockItem-title",u).css("min-height","");f=$(".newsBlockItem-title",u).height();e&&r.css("display","");f>t&&(t=f)});$(".newsBlockItem-title",n).css("min-height",t)}function t(n){var t=[],i,r=$(".item",n);r.each(function(){jQuery(this).css("min-height","0");t.push(jQuery(this).outerHeight())});i=Math.max.apply(null,t);r.each(function(){jQuery(this).css("min-height",i+"px")})}var i=$(".newsBlockItems");$.each(i,function(i,r){var f=$(r),u=$(".newsBlockItem",r);u.length>0&&($(window).load(function(){n(u);t(f)}),setTimeout(function(){n(u);t(f)},"2000"),$(window).resize(function(){n(u);t(f)}))})});$(function(){var n,t;$(".offerContainerBlock, .pointOfInterestListBlock").on("click",".offerContainerBlockButton-ShowMore",function(){var n=$(this);n.parents(".offerContainerBlock").find(".offerBlockContainer").removeClass("hide-offers");n.hide()});n=$(".offerContainerBlock.horizontal-scroll .offerBlockContainer .scrollable-area");n.length&&(t=function(n){var t=n,i=t.find(".block"),r=$(window).width()*.5;$(i).each(function(){var n=$(this),t=Math.abs(n.offset().left);r<=t?n.addClass("unfocused"):n.removeClass("unfocused")})},$(window).resize(function(){t($(this))}),n.scroll(function(){t($(this))}),t(n))});$(function(){if($(".parkingBlockContainer").length){$(".parkingTerminal").prop("title",sa.translate("parkingblock/placeholderaccessabilityterminal"));function n(){var n=$(".parkingFromDate"),t=$(".parkingToDate");if(n.length!==0&&t.length!==0){var u=n.data("min-date"),f=t.data("min-date"),i=sa.utils.isMobileWidth()?"right":"left",r=sa.utils.isMobileWidth()||sa.utils.isTabletWidth()?"right":"left";$(window).resize(function(){i=sa.utils.isMobileWidth()?"right":"left";r=sa.utils.isMobileWidth()||sa.utils.isTabletWidth()?"right":"left";n.datetimepicker("options",{widgetPositioning:{horizontal:i,vertical:"bottom"}});t.datetimepicker("options",{widgetPositioning:{horizontal:r,vertical:"bottom"}})});n.datetimepicker({locale:sa.utils.currentFullSupportedLanguageOrDefault(),minDate:u,ignoreReadonly:!0,allowInputToggle:!0,format:"YYYY-MM-DD HH:mm",widgetPositioning:{horizontal:i,vertical:"bottom"},customTimePicker:!0,toolbarPlacement:"none",useCurrent:!1,tooltips:sa.utils.dateTimePickerGlobalTooltips}).on("dp.show",function(){}).on("dp.change",function(){});t.datetimepicker({locale:sa.utils.currentLanguage(),minDate:f,ignoreReadonly:!0,allowInputToggle:!0,format:"YYYY-MM-DD HH:mm",widgetPositioning:{horizontal:r,vertical:"bottom"},customTimePicker:!0,toolbarPlacement:"none",useCurrent:!1,tooltips:sa.utils.dateTimePickerGlobalTooltips}).on("dp.show",function(){}).on("dp.change",function(){});if($("input[name=inputParkingFromDate]").val(""),$("input[name=inputParkingToDate]").val(""),sa.utils.isMobileWidth()){n.datetimepicker().on("dp.show",function(){$("html,body").velocity("scroll",{offset:$(n).offset().top-25},300)});t.datetimepicker().on("dp.show",function(){$("html,body").velocity("scroll",{offset:$(t).offset().top-25},300)})}}}n();$(".sa-book-parking-button").on("click",function(n){var t;n.preventDefault();n.stopPropagation();var o=$(this).data("airport-iata-code"),s=$(this).data("parking-base-url"),h=$(this).parents("form.parkingInputForm").find(".parkingFromDate input").val(),c=$(this).parents("form.parkingInputForm").find(".parkingToDate input").val(),r=moment(h),u=moment(c),i="",f=$(this).attr("href").split("?");f.length>1&&(i=f[1]);var e=$(this).parents("form.parkingInputForm").find(".parkingTerminal"),l=e.length>0?e.val():"",a=sa.utils.currentLanguage()==="sv"?"sv":"en",v=$(this).data("parking-additional-querystring"),y=$(this).parents(".parkingInputForm");y.valid()&&(t=s+a+"/search-results/?ac="+o+"&t="+l+"&ad="+r.format("YYYY-MM-DD")+"&at="+r.format("HH:mm")+"&dd="+u.format("YYYY-MM-DD")+"&dt="+u.format("HH:mm"),i.length>0&&(t+="&"+i),t+=v,window.open(t,"_blank"))});$.validator.addMethod("checkParkingDatesNotOverlap",function(){var t=$($(this)[0].currentForm).find(".parkingFromDate input").val(),i=$($(this)[0].currentForm).find(".parkingToDate input").val(),n=moment(t),r=moment(i);return!n.isValid()||n<r?!0:!1});$.validator.addMethod("checkParkingDatesNotToSoon",function(){var n=$($(this)[0].currentForm),t=n.find(".parkingFromDate input").val(),i=moment(t),r=n.find(".sa-book-parking-button").data("min-hours-to-arrival"),u=moment().add(r,"hours");return i<u?!1:!0});$(".parkingInputForm").each(function(){$(this).validate({rules:{inputParkingFromDate:{required:!0,checkParkingDatesNotToSoon:!0,validateIsDateWithTime:!0},inputParkingToDate:{required:!0,checkParkingDatesNotOverlap:!0,validateIsDateWithTime:!0}},messages:{inputParkingFromDate:{required:sa.translate("parkingblock/validationmessageselectfromdate"),checkParkingDatesNotToSoon:$(".sa-book-parking-button").data("validation-message-too-soon"),validateIsDateWithTime:sa.translate("parkingblock/validationmessagespecifytime")},inputParkingToDate:{required:sa.translate("parkingblock/validationmessageselecttodate"),checkParkingDatesNotOverlap:$(".sa-book-parking-button").data("validation-message-invalid-period"),validateIsDateWithTime:sa.translate("parkingblock/validationmessagespecifytime")}}})});$(".parkingBlock").hasClass("isonheroarea")&&$(".parkingBlock").parents(".carousel-inner").addClass("parkingonheroarea")}});$.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)}});$(function(){var n=$(".popularDestinationSlider");$.each(n,function(){var n=$(".popularDestination-button",$(this)),t=$(this);$(n).on("click",function(){t.find(".popularDestination-item").removeClass("hidden");$(this).parent(".popularDestination-buttonContainer").remove()})})});$(function(){$(".PuffBlockContainerBlock-button").click(function(){$(this).parents(".puffContainer-Content").find(".block").each(function(){$(this).css({display:"block"})});$(this).addClass("hidden")})});$(function(){$(".quoteBlock").length>0&&$(".quoteBlock-ImgContainer").each(function(){var i=$(this).data("image-text"),t=i.split(";"),n=0;$(this).find("img").each(function(){t[n]!==undefined&&t[n]!==""?$(this).after('<div class="quoteBlock-imageText">'+t[n]+"<\/div>"):$(this).css("margin-bottom","30px");n++})})});$(function(){var n=$(".topListBlock-container");if(n.length>0){t(n);$(window).resize(function(){t(n)});function t(n){sa.utils.isMobileWidth()?$(".topListBlock-topListItem.column").removeAttr("style"):$(n).each(function(){var n=0,t=$(this).find(".topListBlock-topListItem.column");t.each(function(){$(this).removeAttr("style");var t=$(this).height();t>n&&(n=t)});t.height(n)})}}});$(function(){$(".twocolumnpagelistblock").length>0&&(setTimeout(function(){$(".twocolumnpagelistblock .twoColumnListItem-preamble").each(function(){$(this).dotdotdot({ellipsis:"... ",wrap:"word",after:null,height:null})})},0),$(window).resize(function(){$(".twocolumnpagelistblock .twoColumnListItem-preamble").each(function(){$(this).trigger("update")})}))});$(function(){$(".videoBlock-player").each(function(){var n=$(this),t=$(this).data("videoid");n.width()>1e3?$(this).css("background-image","url(https://i.ytimg.com/vi/"+t+"/maxresdefault.jpg)"):$(this).css("background-image","url(https://i.ytimg.com/vi/"+t+"/sddefault.jpg)");$(this).append($("<div/>",{"class":"play"}));$(this).click(function(){$.loadScript("https://www.youtube.com/iframe_api",function(){setTimeout(function(){var i="https://www.youtube.com/embed/"+t+"?autoplay=1&autohide=1&rel=0&enablejsapi=1",r;$(this).data("params")&&(i+="&"+$(this).data("params"));console.log("that "+n.closest(".play").width()+"höjd "+n.closest(".play").height());r=$("<iframe/>",{frameborder:"0",src:i,width:n.find(".play:first").width(),height:n.find(".play:first").height(),allowfullscreen:!0});n.replaceWith(r)},0)})})})});$(function(){var t=$(".videoHeroBlock"),n,i,r;if(t.length){window.location.hash==="#/video"&&(window.location.hash="");window.onhashchange=function(){window.location.hash==="#/video"?f():e()};var f=function(){t.find(".YouTubeModal.modal").modal("show");$("html").addClass("hasScrollableOverlay");var n=t.find(".youtube-placeholder");o(n)},e=function(){var n=t.find("iframe.youtube-video");n.length&&n[0].contentWindow.postMessage('{"event":"command","func":"stopVideo","args":""}',"*");$("html").removeClass("hasScrollableOverlay");t.find(".YouTubeModal.modal").modal("hide")},o=function(n){var t=n.data("videoid"),i="https://www.youtube.com/embed/"+t+"?autoplay=0&autohide=1&rel=0&enablejsapi=1",r=$("<iframe/>",{frameborder:"0",src:i,"class":"youtube-video",allowfullscreen:"allowfullscreen",mozallowfullscreen:"mozallowfullscreen",msallowfullscreen:"msallowfullscreen",oallowfullscreen:"oallowfullscreen",webkitallowfullscreen:"webkitallowfullscreen"});$.loadScript("https://www.youtube.com/iframe_api",function(){n.replaceWith(r)})},u=t.find(".background-short-video"),s=t.find(".img-mask");setTimeout(function(){var n=$(".img-mask").height()*100,t=$(".img-mask").width()*100;s.animate({width:t+"px",height:n+"px"},2e3);u.animate({opacity:1},1e3)},1e3);n=document.getElementById("hero_video");n&&(console.log(u),i=document.getElementById("playpause"),document.addEventListener&&(r=function(t){t==="playpause"&&(n.paused||n.ended?($(i).addClass("vector-play"),$(i).removeClass("vector-pause")):($(i).removeClass("vector-play"),$(i).addClass("vector-pause")))},n.addEventListener("play",function(){r("playpause")},!1),n.addEventListener("pause",function(){r("playpause")},!1),i.addEventListener("click",function(){n.paused||n.ended?n.play():n.pause()})))}});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)}});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()}}}]);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||{};airportTrafficFeesViewModel=window.AirportTrafficFeesModel||{};swedaviaApp.controller("airportTrafficFeesController",["$scope",function(n){n.formData={};n.formData.domestic="domestic";n.showLoadingIcon=!1;airportTrafficFeesViewModel.Aircrafts.unshift(sa.translate("airporttrafficfees/chooseaircraft"));airportTrafficFeesViewModel.Airports[0]=sa.translate("airporttrafficfees/chooseairport");n.airportTrafficFeesData=airportTrafficFeesViewModel;n.formData.selectedAircraft=airportTrafficFeesViewModel.Aircrafts[0];n.formData.selectedAirport="0";n.getEngines=function(t){n.weight="";n.takeoff="";n.sideline="";n.approach="";n.numberOfEngines="";sa.airporttrafficfeesservice.getAircraftEngines(t).then(function(t){n.enginesData={};t.length>0?(n.disabledEnginesSelect=!1,n.enginesData.Engines=t,n.$apply()):n.disabledEnginesSelect=!0})};n.populateDefaultValues=function(t,i){i&&t&&(t=t.replace("/","|slash|"),t=t.replace(">","|gt|"),sa.airporttrafficfeesservice.getInitialValues(i,t).then(function(t){t&&(n.weight=t.Weight,n.takeoff=t.Takeoff,n.sideline=t.Sideline,n.approach=t.Approach,n.numberOfEngines=t.NumberOfEngines,n.$apply())}))};n.calulateFee=function(t){var r=$(t.target).parents("form.calculateFeesForm");if(r.valid()){n.showResult=!1;var u=n.formData.selectedAirport,i=n.formData.selectedEngine,f=n.takeoff,e=n.sideline,o=n.approach,s=n.weight,h=n.numberOfEngines,c=n.SAFPercentage===undefined||n.SAFPercentage===""?"0":n.SAFPercentage,l=n.numberOfSeats===undefined||n.numberOfSeats===""?"0":n.numberOfSeats,a=n.passengers===undefined||n.passengers===""?0:n.passengers,v=n.transferpassengers===undefined||n.transferpassengers===""?0:n.transferpassengers,y=sa.utils.currentLanguage();i=i===""||i===null?"|empty|":i;i=i.replace("/","|slash|");i=i.replace(">","|gt|");n.showLoadingIcon=!0;sa.airporttrafficfeesservice.calculatefee(u,i,s,f,e,o,h,!0,c,l,a,v,y).then(function(t){t&&(t.SwedaviaFees&&t.SwedaviaFees.length>0&&(n.showSwedaviaFees=!0),t.OtherFees&&t.OtherFees.length>0&&(n.showOtherFees=!0),n.showResult=!0,n.calculatedFeesResult=t,n.TotalSwedaviaFee=t.TotalSwedaviaFees,n.TotalOtherFee=t.TotalOtherFees,n.$apply());n.showLoadingIcon=!1})}};$.validator.addMethod("selectedIndexNotDefault",function(n,t){return t.selectedIndex===0?!1:!0},sa.translate("airporttrafficfees/validationmessageselect"));$.validator.addMethod("regex",function(n,t,i){return i.test(n)},sa.translate("airporttrafficfees/validationmessagedecimal"));$.validator.addMethod("checkTransferPassengers",function(n,t){var i=parseInt($(t).val()),r=parseInt($(t).parents("form").find("[name=formInputPassengers]").val());return i<=r?!0:!1},sa.translate("airporttrafficfees/validationmessagepassengers"));$("[name=formInputPassengers]").bind("input",function(){var n=$(this).parents("form").find("[name=formInputTransferPassengers]");n.val()!==""&&n.valid()});$(".calculateFeesForm").each(function(){$(this).validate({rules:{formSelectAirport:{required:!0,selectedIndexNotDefault:!0},formSelectPlane:{required:!0,selectedIndexNotDefault:!0},formSelectEngine:{},formInputWeight:{required:!0,regex:/^\d+[.,]?\d*$/},formInputTakeOff:{required:!0,regex:/^\d+[.,]?\d*$/},formInputSideline:{required:!0,regex:/^\d+[.,]?\d*$/},formInputApproach:{required:!0,regex:/^\d+[.,]?\d*$/},formNumOfEngines:{required:!0,digits:!0},formInputPassengers:{required:!0,digits:!0},formInputTransferPassengers:{required:!0,digits:!0,checkTransferPassengers:!0},formInputNumberOfSeats:{digits:!0},formInputSAF:{digits:!0}},messages:{formInputWeight:{required:sa.translate("airporttrafficfees/validationmessagerequired")},formInputTakeOff:{required:sa.translate("airporttrafficfees/validationmessagerequired")},formInputSideline:{required:sa.translate("airporttrafficfees/validationmessagerequired")},formInputApproach:{required:sa.translate("airporttrafficfees/validationmessagerequired")},formNumOfEngines:{required:sa.translate("airporttrafficfees/validationmessagerequired"),digits:sa.translate("airporttrafficfees/validationmessageinteger")},formInputPassengers:{required:sa.translate("airporttrafficfees/validationmessagerequired"),digits:sa.translate("airporttrafficfees/validationmessageinteger")},formInputTransferPassengers:{required:sa.translate("airporttrafficfees/validationmessagerequired"),digits:sa.translate("airporttrafficfees/validationmessageinteger")},formInputNumberOfSeats:{digits:sa.translate("airporttrafficfees/validationmessageinteger")},formInputSAF:{digits:sa.translate("airporttrafficfees/validationmessageinteger")}}})})}]);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(n){var t=[];return n.length>0?$.each(n,function(n,i){t.push({time:moment(i.DepartureTime).format("HH:mm"),destination:i.ArrivalAirport,iata:i.FlightId,dataitem:i,terminal:i.Terminal})}):t.push({time:"",destination:sa.translate("bookflight/noflightfound"),iata:""}),t}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.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 class='clickBait' style='position:absolute; display:none; z-index:99'><\/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 $("<li>").append("<span class='time'>"+t.time+"<\/span>").append("<span class='destination'>"+t.destination+"<\/span>").append("<span class='iata'>"+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("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.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("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)}}]);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;t<i.length;t++)i[t].text=i[t].text+e(u[t],f);return i},console.log(Chart.defaults.global.tooltips.callbacks),u=function(n,t){var i=t.datasets[n.datasetIndex].label,r,u;return i!==null&&i!==""&&(i+=": "),r=t.unit?t.unit:"",u=t.datasets[n.datasetIndex].data[n.index],i+u+" "+r},f=function(n,t){var i=t.labels[n.index],r=t.unit?t.unit:"",u=t.datasets[n.datasetIndex].data[n.index];return i+": "+u+" "+r},Chart.defaults.pie.tooltips.callbacks.label=f,Chart.defaults.global.tooltips.callbacks.label=u);e=function(n,t){var i=Math.round(n/t*100);return" "+i+"%"};o=function(n){var t=0;return $(n).each(function(){t+=this}),t}}]);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("extendedFooterController",["$scope",function(n){n.showOrHideFooter=function(){n.displayExtendedFooter=$("body").data("is-mobile-context")==="True"?!1:!0}}]);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.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(n){var t=[];return n.length>0?$.each(n,function(n,i){t.push({time:moment(i.DepartureTime).format("HH:mm"),destination:i.ArrivalAirport,iata:i.FlightId,dataitem:i,terminal:i.Terminal})}):t.push({time:"",destination:sa.translate("bookflight/noflightfound"),iata:""}),t}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 class='clickBait' style='position:absolute; display:none; z-index:99'><\/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 $("<li>").append("<span class='time'>"+t.time+"<\/span>").append("<span class='destination'>"+t.destination+"<\/span>").append("<span class='iata'>"+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("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("GeneralExpandableListController",["$scope",function(n){n.init=function(t){n.expandedTemplateSource=t.expandedTemplateSource};n.doExpandCompress=function(t,i){i.isExpanded=!i.isExpanded;i.isExpandedSource=!0;setTimeout(function(){var u=$(t.currentTarget).parent().find(".source"),n=$(t.currentTarget).parent().find(".expandableBody-content"),r=u.height();i.isExpanded===!0?(n.css("min-height",r+30),n.css("max-height",r+30)):(n.css("min-height",0),n.css("max-height",0))},0);n.getNumOfTerminals=function(n){if(n){var t=n.length;if(t===0)return"hideTerminals"}return""}};n.isExpanded=function(n){return n.isExpanded};n.isExpandedSource=function(n){return n.isExpanded||n.isExpandedSource}}]);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;n<e;n++)i.extend(t[n]);r.fitBounds(i);o=google.maps.event.addListenerOnce(r,"bounds_changed",function(){this.getZoom()&&this.setZoom(u)});setTimeout(function(){google.maps.event.removeListener(o)},2e3)},i=function(){t();var n=r.getCenter();google.maps.event.trigger(r,"resize");r.setCenter(n)}})});t.then(function(){n.mapMarkers=[];e&&(angular.forEach(e,function(n,t){var i={latitude:n.Latitude,longitude:n.Longitude,id:"marker"+t,options:{icon:n.IsCurrentAirport?"/Static/img/GoogleMapsBaseMarker.png":"/Static/img/GoogleMapsMarker.png",title:n.Label},infolabel:n.Label,thumbnail:n.Thumbnail,link:n.Link,iscurrentairport:n.IsCurrentAirport};f.push(i)}),n.mapMarkers=f)})}]);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 src="'+n.properties.imageURL+'" style="width: 150px; height: 75px;"><\/img><br/>':"",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+="<br/>Våning: "+n.properties.floorName,'<div class="indoormap-infowindow">{0}{1}<\/div>'.format(r,i)}}]);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("loaderController",["$scope",function(n){n.loaderModel=n.loaderModel||{show:!1,text:"Loading..."};n.init=function(t){angular.extend(n.loaderModel,t)}}]);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||{};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("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)<r||!n.vm.showPrice)&&r!==0)?i+": "+n.renderPriceString(t)+" kr":(n.hidePricePerDayOrWeek=!0," ")};c=function(){var i=n.vm,t=Date.now();try{sessionStorage.setItem(t,JSON.stringify(i))}catch(r){alert("Your browser currently does not support sessionstorage. You won't be able to resume state.");console.log(r)}return t};n.loadNewPriceData=function(){if(u.find(".parkingCard-form.pick-dates-step").valid()){n.spinnerText=n.vm.texts.loadpriceplace;n.showSpinner=!0;n.vm.DateInput.SelectDatesByDefault=!0;var i=n.vm.DateInput;t.FindParking(i,!1).then(function(t){t.CarParks&&t.CarParks.length===1?($.extend(n.vm,t.CarParks[0]),n.vm.showPrice=!0,n.hidePricePerDayOrWeek=!0):t.CarParks.length===0?(n.vm.IsSoldOut=!0,n.vm.showPrice=!0):console.log("Unexpected FindParking response in loadNewPriceData: ",t);n.showSpinner=!1})}};n.proceedFromStepOne=function(i){i.preventDefault();var f=$(".parkingCardContainerBlock").scope(),r=$(u).parents(".tmpl-findParkingResultModule");r.length&&r.scope().vm.BookInsideParkingCard===!1?r.scope().InitReserveParking(n.vm):n.$parent&&n.$parent.ReserveParking?n.$parent.ReserveParking(n.vm):n.vm.showPrice?f&&f.ReserveParking(n.vm):(n.flipCard(i),t.TriggerCardPageView(t.CardVirtualPageNames.cardDateSearch,n.vm))};n.flipCard=function(t){if(t&&t.preventDefault(),!n.flipped){var i=u.find(".parkingCard-page1").height();u.find(".parkingCard-page2 .parkingCard-topArea-Container").css("min-height",i)}n.flipped=!n.flipped};n.cancel=function(t){n.vm.showPrice=!1;n.showSpinner=!1;n.pp=!0;n.spinnerText="";n.cardInboundDateTime="";n.cardOutboundDateTime="";u.find("[name=parkingCardOutboundDateTime]").data("DateTimePicker").clear();u.find("[name=parkingCardInboundDateTime]").data("DateTimePicker").clear();u.find("[name=parkingCardOutboundTime]").data("DateTimePicker").clear();u.find("[name=parkingCardInboundTime]").data("DateTimePicker").clear();n.dateValidator.resetForm();n.personalDataValidator.resetForm();n.flipCard(t);n.vm.finalStep=!1};n.reserveParking=function(){if(u.find(".parkingCard-form.pick-dates-step").valid()){var t=$(".parkingNewBlock").scope(),i=$(".parkingCardContainerBlock").scope();t&&i&&(t.isStep1BookParking=!1,i.ReserveParking(n.vm))}};n.backToDateSelect=function(i){return i.preventDefault(),n.vm.BookParkingInput.BookingGuid="",n.vm.BookParkingInput={},n.personalDataValidator.resetForm(),n.vm.finalStep=!1,t.TriggerCardPageView(t.CardVirtualPageNames.cardSearchResult,n.vm),!1};n.bookParking=function(){u.find(".personal-data-step").valid()&&(n.spinnerText=n.vm.texts.loadbookparking,n.showSpinner=!0,n.vm.BookParkingInput.ReturnUrl=t.GenerateReturnUrl(n.ReturnUrl),n.vm.BookParkingInput.Language=sa.utils.currentLanguage(),n.vm.BookParkingInput.Iata=n.vm.Iata,t.BookParking(n.vm.BookParkingInput).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.TriggerCardPageView(t.CardVirtualPageNames.cardPayment,n.vm);t.SetParkingCookie(t.ParkingCookieValues.PickByCard)}))};$("body").on("sa.priceupdate",function(t){n.flipped&&n.cancel(t)});n.hasReducedPrice=function(n){return(n.AffiliateResult||n.IsPromotionCodeValid)&&parseInt(n.TotalPrice)<parseInt(n.OriginalPrice)};n.renderPriceString=function(n){return t.renderPriceString(n)};n.showOnMap=function(){n.$parent&&n.$parent.$parent&&n.$parent.$parent.showOnMap&&n.$parent.$parent.showOnMap(n.vm)};n.showinfo="hideinfo";n.arrowicon="glyphicon glyphicon-menu-down";n.infoheight="heightauto";n.MerInfoClass=function(){n.showinfo==="hideinfo"?(n.showinfo="nohideinfo",n.arrowicon="glyphicon glyphicon-menu-up",n.infoheight=""):(n.showinfo="hideinfo",n.arrowicon="glyphicon glyphicon-menu-down",n.infoheight="heightauto");$(window).trigger("resize")};n.showMap=function(){return $("body").data("is-mobile-context")!=="True"?!0:!1};var v={locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:t.dateTimePickerDateTimeFormat,minDate:t.dateTimePickerBaseMinDate,maxDate:t.dateTimePickerBaseMaxDate,useCurrent:!1,showClose:!1,tooltips:sa.utils.dateTimePickerGlobalTooltips,customTimePicker:!0,toolbarPlacement:"none",widgetPositioning:{vertical:n.parameter?"bottom":"auto"}},s={locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:"YYYY-MM-DD",minDate:t.dateTimePickerBaseMinDate,maxDate:t.dateTimePickerBaseMaxDate,useCurrent:!1,showClose:!1,tooltips:sa.utils.dateTimePickerGlobalTooltips,toolbarPlacement:"none",widgetPositioning:{vertical:n.parameter?"bottom":"auto"}},h={locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:"HH:00",minDate:t.dateTimePickerBaseMinDate,maxDate:t.dateTimePickerBaseMaxDate,useCurrent:!1,showClose:!1,tooltips:sa.utils.dateTimePickerGlobalTooltips,customTimePicker:!0,toolbarPlacement:"none",widgetPositioning:{vertical:n.parameter?"bottom":"auto"}};n.cardInboundDateTime="";n.cardOutboundDateTime="";f=function(){n.vm.showPrice=!1;n.vm.finalStep=!1};u.find("[name=parkingCardInboundDateTime]").datetimepicker($.extend({},s,{maxDate:t.getDateTimePickerInboundMaxDate(t.dateTimePickerBaseMaxDate)})).on("dp.change",function(r){r!==undefined&&u.find("[name=parkingCardInboundDateTime]").parent().find(".vector-calendar").css("display","none");r.date===!1&&u.find("[name=parkingCardInboundDateTime]").parent().find(".vector-calendar").css("display","block");var o=u.find("[name=parkingCardOutboundDateTime]").data("DateTimePicker"),s=u.find("[name=parkingCardOutboundTime]").data("DateTimePicker"),e=u.find("[name=parkingCardInboundTime]"),h=u.find("[name=parkingCardInboundTime]").data("DateTimePicker");n.cardInboundDateTime!==""&&n.cardInboundDateTime.date?(n.cardInboundDateTime.date._d.setFullYear(r.date._d.getFullYear()),n.cardInboundDateTime.date._d.setMonth(r.date._d.getMonth()),n.cardInboundDateTime.date._d.setDate(r.date._d.getDate())):n.cardInboundDateTime=r;e.prop("disabled",!1);e.focus();t.updateTimeDropDown(r,h);e.val("");t.newDateTimePickerChangeFunction(n.cardInboundDateTime,o,s,n.vm.DateInput,"InboundDateTime",!0,t.getDateTimePickerOutboundMinDate(t.dateTimePickerBaseMinDate),null);i(f)}).on("dp.show",function(){u.find(".picker-switch").removeAttr("data-action");$(".timepicker").remove()}).on("dp.hide",function(){sa.utils.scrollElementIntoViewOnIos($(this),30)});u.find("[name=parkingCardInboundTime]").datetimepicker($.extend({},h,{maxDate:t.getDateTimePickerInboundMaxDate(t.dateTimePickerBaseMaxDate)})).on("dp.change",function(r){r!==undefined&&u.find("[name=parkingCardInboundTime]").parent().find(".clock-icon").css("display","none");r.date===!1&&u.find("[name=parkingCardInboundTime]").parent().find(".clock-icon").css("display","block");n.cardInboundDateTime=r;var e=u.find("[name=parkingCardOutboundDateTime]").data("DateTimePicker"),o=u.find("[name=parkingCardOutboundTime]").data("DateTimePicker");u.find("[name=parkingCardOutboundDateTime]").prop("disabled",!1);t.newDateTimePickerChangeFunction(n.cardInboundDateTime,e,o,n.vm.DateInput,"InboundDateTime",!0,t.getDateTimePickerOutboundMinDate(t.dateTimePickerBaseMinDate),null);i(f)}).on("dp.show",function(){u.find(".picker-switch").removeAttr("data-action");$(".timepicker").remove()}).on("dp.hide",function(){sa.utils.scrollElementIntoViewOnIos($(this),30)});u.find("[name=parkingCardOutboundDateTime]").datetimepicker($.extend({},s,{minDate:t.getDateTimePickerOutboundMinDate(t.dateTimePickerBaseMinDate)})).on("dp.change",function(r){r!==undefined&&u.find("[name=parkingCardOutboundDateTime]").parent().find(".vector-calendar").css("display","none");r.date===!1&&u.find("[name=parkingCardOutboundDateTime]").parent().find(".vector-calendar").css("display","block");var o=u.find("[name=parkingCardInboundDateTime]").data("DateTimePicker"),s=u.find("[name=parkingCardInboundTime]").data("DateTimePicker"),e=u.find("[name=parkingCardOutboundTime]"),h=u.find("[name=parkingCardOutboundTime]").data("DateTimePicker");n.cardOutboundDateTime!==""&&n.cardOutboundDateTime.date?(n.cardOutboundDateTime.date._d.setFullYear(r.date._d.getFullYear()),n.cardOutboundDateTime.date._d.setMonth(r.date._d.getMonth()),n.cardOutboundDateTime.date._d.setDate(r.date._d.getDate())):n.cardOutboundDateTime=r;e.prop("disabled",!1);e.focus();t.updateTimeDropDown(r,h);e.val("");t.newDateTimePickerChangeFunction(n.cardOutboundDateTime,o,s,n.vm.DateInput,"OutboundDateTime",!1,null,t.getDateTimePickerInboundMaxDate(t.dateTimePickerBaseMaxDate));i(f)}).on("dp.show",function(){u.find(".picker-switch").removeAttr("data-action");$(".timepicker").remove();setTimeout(function(){$(u).css({"z-index":"1"})},0)}).on("dp.hide",function(){$(u).css({"z-index":"0"})}).on("dp.hide",function(){sa.utils.scrollElementIntoViewOnIos($(this),30)});u.find("[name=parkingCardOutboundTime]").datetimepicker($.extend({},h,{minDate:t.getDateTimePickerOutboundMinDate(t.dateTimePickerBaseMinDate)})).on("dp.change",function(r){r!==undefined&&u.find("[name=parkingCardOutboundTime]").parent().find(".clock-icon").css("display","none");r.date===!1&&u.find("[name=parkingCardOutboundTime]").parent().find(".clock-icon").css("display","block");n.cardOutboundDateTime=r;var e=u.find("[name=parkingCardInboundDateTime]").data("DateTimePicker"),o=u.find("[name=parkingCardInboundTime]").data("DateTimePicker");t.newDateTimePickerChangeFunction(n.cardOutboundDateTime,e,o,n.vm.DateInput,"OutboundDateTime",!1,null,t.getDateTimePickerInboundMaxDate(t.dateTimePickerBaseMaxDate));i(f)}).on("dp.show",function(){u.find(".picker-switch").removeAttr("data-action");$(".timepicker").remove();setTimeout(function(){$(u).css({"z-index":"1"})},0)}).on("dp.hide",function(){$(u).css({"z-index":"0"})}).on("dp.hide",function(){sa.utils.scrollElementIntoViewOnIos($(this),30)});var l=function(){var i=u.find(".parkingCard-form.pick-dates-step"),t=i.data("reservationtimelimit"),r;(t==null||t<60)&&(t=240);r=moment.duration(t,"minutes").humanize();$.validator.addMethod("CardCheckMinimumEntryTime",function(n,t){var r=i.data("reservationtimelimit"),u;return(r==null||r<60)&&(r=240),u=$(t).data("DateTimePicker").date(),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("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;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.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("parkingOffersMapController",["$scope","$element","uiGmapGoogleMapApi","uiGmapIsReady",function(n,t,i,r){function l(t,i){this.key=t;this.text=sa.translate("parkingmap/filters/"+t);this.value=t==="indoorpremium"?["premium","indoor"]:[t];this.isApplied=n.OffersMap.vm.PreSelectedParkingFilters.length===0||n.OffersMap.vm.PreSelectedParkingFilters.indexOf(t)!==-1;this.filterFunction=function(n){return this.isApplied&&this.value.indexOf(n.carPark.CategoryTag)!==-1};this.order=i;this.hide=!1;this.localFilterTag=t}var u,f,e,c;n.OffersMap={};u=function(){};n.init=function(t){n.OffersMap.vm=t;t.FilterType==="categorytag"&&$.each(["indoorpremium","outdoor","longterm","red"],function(t,i){n.OffersMap.registerFilter(new l(i,t))});n.parkingPriceComparision=$(".parkingNewBlock").scope().parkingPriceComparison;n.DiscountThresholdValue=$(".parkingNewBlock").scope().DiscountThresholdValue};n.generateReturnUrl=function(t){n.ReturnUrl=t};n.map={center:{latitude:59.6493929,longitude:17.9342967},options:{streetViewControl:!1,mapTypeControl:!1,minZoom:2,maxZoom:18,scrollwheel:!1},events:{idle:u},zoom:16,control:{},bounds:{},markersEvents:{click:function(t,i,r){n.map.window.model&&t.model.options.icon.indexOf("CloseButton")===-1&&(n.map.window.show=!1,n.map.window.model.options.icon=n.map.window.model.options.icon2,n.map.window.model.options.zIndex=1);n.map.window.show?(n.map.window.show=!1,n.map.window.model.options.icon=n.map.window.model.options.icon2,n.map.window.model.options.zIndex=1):o(r)}},window:{marker:{},show:!1,closeClick:function(){this.show=!1},options:{boxClass:"parkingCardGoogleMapsWindow",closeBoxURL:"",pixelOffset:{height:-1,width:-18}}}};var o=function(t){if(n.OffersMap.vm.FilterType==="categorytag"){var i=c(t.carPark.CategoryTag);i.isApplied=!0;n.OffersMap.applyFilters()}t!==n.map.window.model||n.map.zoom!==16?(s(t),n.map.events.idle=function(){h(t);n.map.events.idle=u}):(s(t),h(t))},s=function(t){n.map.center.longitude=t.carPark.Longitude;n.map.center.latitude=t.carPark.Latitude;n.map.zoom=16},h=function(t){n.map.window.model=t;t.options.icon2=t.options.icon;t.options.icon="/Static/img/Parking/ParkingIcons/CloseButton.png";t.options.zIndex=99;n.map.window.show=!0};n.map.options.styles=[{featureType:"poi",elementType:"labels",stylers:[{visibility:"off"}]},{featureType:"water",elementType:"labels",stylers:[{visibility:"off"}]}];n.clusterOptions={gridSize:40,averageCenter:!0,styles:[{textColor:"white",url:"/Static/img/MarkerCluster.png",height:36,width:36}]};n.filteredMapMarkers=[];n.allMapMarkers=[];n.isMapApiInited=!1;n.getOffersCallbacks=[];i.then(function(){n.isMapApiInited=!0;var t=n.getOffersCallbacks;t&&t.length&&$.each(t,function(n,t){e(t)})});angular.element(document).ready(function(){r.promise().then(function(){})});n.registerGetOffersCallback=function(t){n.isMapApiInited&&n.shouldShowParkingMap?e(t):n.getOffersCallbacks.push(t)};f=[];e=function(t){var i=t();i&&i.length&&$.each(i,function(t,i){if(f.indexOf(i.CarParkId)===-1){if(f.push(i.CarParkId),!i.Longitude||i.Longitude==="0"||!i.Latitude||i.Latitude==="0"||!i.CarParkId||!1)return!0;var r={latitude:i.Latitude,longitude:i.Longitude,id:i.CarParkId,options:{icon:i.CategoryId===1?"/Static/img/Parking/ParkingIcons/P207_Parkeringshus-36x36.png":"/Static/img/Parking/ParkingIcons/P206_Parkering-36x36.png",title:i.CarParkName,zIndex:1},carPark:i};n.allMapMarkers.push(r)}});n.OffersMap.applyFilters()};n.fitBounds=function(){var t,i,r,e,u,f;if(n.filteredMapMarkers.length){for(t=[],_.each(n.filteredMapMarkers,function(n){t.push(new google.maps.LatLng(n.carPark.Latitude,n.carPark.Longitude))}),i=new google.maps.LatLngBounds,r=0,e=t.length;r<e;r++)i.extend(t[r]);u=i.getNorthEast();f=i.getSouthWest();n.$apply(function(){n.map.bounds={northeast:{latitude:u.lat(),longitude:u.lng()},southwest:{latitude:f.lat(),longitude:f.lng()}}})}};n.showMap=function(i,r){n.OffersMap.vm.GroupingType==="container"&&(n.OffersMap.IdForContainerToShow=r,n.OffersMap.applyFilters());var u=t.find(".parkingMap"),f=t.find(".parkingMapContainer"),e=u.closest(".tabBlock");if(n.isMapVisible)e.velocity("scroll",{duration:300},function(){i&&i()});else{n.isMapVisible=!0;n.mapIsOrHasBeenVisible=!0;var o=u.height(),s=Math.max(o,691);f.height(0);e.velocity("scroll",300,function(){f.velocity({height:s},function(){i&&i()})})}};n.hideMap=function(){var i=t.find(".parkingMapContainer");i.velocity({height:0},function(){n.$apply(function(){n.isMapVisible=!1});$("body").trigger("sa.hideparkingmap")});n.map.window.show=!1;n.map.window.model&&(n.map.window.model.options.icon=n.map.window.model.options.icon2,n.map.window.model.options.zIndex=1);n.OffersMap.vm.GroupingType==="container"?$.each(n.OffersMap.userFilters,function(n,t){t.isApplied=!0}):$.each(n.OffersMap.userFilters,function(t,i){i.isApplied=n.OffersMap.vm.PreSelectedParkingFilters.length===0||n.OffersMap.vm.PreSelectedParkingFilters.indexOf(i.localFilterTag)!==-1});n.OffersMap.applyFilters()};n.showOnMap=function(t){var r=$.grep(n.allMapMarkers,function(n){return n.id==t.CarParkId}),i;r.length&&(i=r[0],n.showMap(function(){n.$apply(o(i))},i.carPark.ContainerBlockId))};n.OffersMap.userFilters=[];n.OffersMap.registerFilter=function(t){var i=n.OffersMap.userFilters.some(function(n){return t.key===n.key});i||n.OffersMap.userFilters.push(t)};n.OffersMap.applyFilters=function(t){if(n.filteredMapMarkers=$.grep(n.allMapMarkers,function(t){return!n.OffersMap.IdForContainerToShow||n.OffersMap.IdForContainerToShow===t.carPark.ContainerBlockId}),$.each(n.OffersMap.userFilters,function(t,i){var r=n.filteredMapMarkers.some(function(n){return i.value.indexOf(n.carPark.CategoryTag)!==-1});i.hide=!r}),n.OffersMap.vm.FilterType==="categorytag"&&(n.filteredMapMarkers=$.grep(n.filteredMapMarkers,function(t){return n.OffersMap.userFilters.length===0||n.OffersMap.userFilters.some(function(n){return n.filterFunction(t)})})),t&&setTimeout(function(){n.fitBounds()}),n.map.window.show===!0){var i=n.filteredMapMarkers.some(function(t){return t.carPark.CarParkId===n.map.window.model.carPark.CarParkId});i||(n.map.window.show=!1,n.map.window.model.options.icon=n.map.window.model.options.icon2,n.map.window.model.options.zIndex=1)}};c=function(t){var i=$.grep(n.OffersMap.userFilters,function(n){return n.value.indexOf(t)!==-1});return i.length?i[0]:null}}]);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){n.$parent.spinnerText=sa.translate("bookparking/loadreserveparking");n.$parent.showSpinner=!0;var r=n.GetUpgradeParkingInput(i);t.UpgradeParking(r).then(function(t){n.$parent.showSpinner=!1;n.doneUpgradeParking=!0;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)<r&&r!==0)?i+": "+n.renderPriceString(t)+" kr":(n.hidePricePerDayOrWeek=!0," "):" "};n.showLoyaltyInformation=function(){var t=$(u).find(".loyalty-terms-and-conditions");sa.utils.isMobileWidth()&&(t.toggleClass("hidden-xs"),n.loyaltyInfoExpanded=!n.loyaltyInfoExpanded)};n.setStateAndPrepareLinkForRedirect=function(t){var u,r,h,c;if(t&&t.target&&$(t.currentTarget).data("partner-url")){var f=$(t.currentTarget).data("partner-url"),l={selectedParking:n.selectedParkingToPayFor,terminalKey:n.$parent.bookWithDatesInput.Terminal,searchResult:n.parkingCards},e=Date.now();sessionStorage.setItem(e,JSON.stringify(l));u="#"+s+"="+e;r=[window.location.protocol,"//",window.location.host,window.location.pathname,window.search].join("");window.location=r+u;h=[r,r.indexOf("?")>-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||{};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("pointOfInterestListController",["$scope","$sce","BlockServices","$timeout","$element","$filter",function(n,t,i,r,u,f){var v=function(n){n.findButtonText=sa.translate("pointofinterestlist/"+n.TypeOfService+"/find");n.ListPreamble=t.trustAsHtml(n.ListPreamble);angular.forEach(n.SpotsInfo,function(n){n.OpeningHours=t.trustAsHtml(n.OpeningHours)})},y=function(){n.texts={};n.texts.openingHours=sa.translate("pointofinterestlist/general/openinghours");n.texts.telephone=sa.translate("pointofinterestlist/general/telephone");n.texts.landside=sa.translate("pointofinterestlist/general/landside");n.texts.airside=sa.translate("pointofinterestlist/general/airside")},h,l,a;n.triggerLazyLoad=function(){sa.utils.doLazyLoad()};n.init=function(t){if(y(),n.showTerminals=t.showTerminals,n.PointOfInterests=t.pointOfInterests.PointOfInterestGroupItems,$(n.PointOfInterests).each(function(){v(this)}),n.Terminals=t.pointOfInterests.Terminals,n.Categories=t.pointOfInterests.Categories,t.pointOfInterests.PointOfInterestCategoryFilter)n.selectedCategory=t.pointOfInterests.PointOfInterestCategoryFilter.split(",");else{var i=h(n.Categories,"category");i===""&&(i=t.pointOfInterests.PointOfInterestCategoryFilter);n.selectedCategory=i}n.selectedTerminal=h(n.Terminals,"terminal",{keyName:"Id",valueName:"Name"})};h=function(n,t,i){var e,o,r,u,s,f;if(i=i||{},e="Value",o="Key",i.valueName&&(e=i.valueName),i.keyName&&(o=i.keyName),r="",u=sa.utils.getQueryFromName(t),u!==null&&u!==undefined){for(s=!1,f=0;f<n.length;f++)n[f][e].toLowerCase()===u.toLowerCase()&&(r=n[f][o],s=!0);s===!1&&(r=u)}else r="";return r==="null"?"":r};n.updateUrl=function(){var t=["?category="+(n.selectedCategory===""?"null":n.selectedCategory),"terminal="+(n.selectedTerminal===""?"null":n.selectedTerminal)];history.replaceState({},null,t.join("&"))};l=function(n,t){var r=t.Categories.toString(),i;if(Object.prototype.toString.call(n)==="[object Array]"){for(i=0;i<n.length;i++)if(r.indexOf(n[i])!==-1)return!0}else if(t.Categories.indexOf(n)!==-1)return!0;return!1};a=function(n,t){var i=f("filter")(n,{Id:t});return i.length>0?!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("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||{};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("timeTableController",["$scope","$sce","$filter","$timeout","getTimeTableDataService",function(n,t,i,r,u){function a(n,t){n.textContent=t+"H"}var l=[],s={directFlights:[],nonDirectFlights:[]},o,h,g,c,nt=angular.element(".inputdate"),tt=angular.element(".inin1"),e,p,w,b,k;n.RangeDepTime=8;var ft={ARN:"Stockholm Arlanda Airport",BMA:"Bromma Stockholm Airport",GOT:"Göteborg Landvetter Airport",OSD:"Åre Östersund Airport",KRN:"Kiruna Airport",LLA:"Luleå Airport",MMX:"Malmö Airport",RNB:"Ronneby Airport",UME:"Umeå Airport",VBY:"Visby Airport"},it=["ARN","GOT","BMA","MMX","LLA","UME","OSD","VBY","RNB","KRN"],et=[sa.translate("timetable/daymon"),sa.translate("timetable/daythu"),sa.translate("timetable/daywed"),sa.translate("timetable/daythur"),sa.translate("timetable/dayfri"),sa.translate("timetable/daysat"),sa.translate("timetable/daysun")],f={arrivaltime:function(n,t){var i=moment(n.ArrivalTime),r=moment(t.ArrivalTime),u;return u=i.hours()>r.hours()?1:i.hours()<r.hours()?-1:0,u===0&&(u=i.minutes()>r.minutes()?1:i.minutes()<r.minutes()?-1:0),u===0&&(u=i.seconds()>r.seconds()?1:i.seconds()<r.seconds()?-1:0),u},departuretime:function(n,t){var i=moment(n.DepartureTime),r=moment(t.DepartureTime),u;return u=i.hours()>r.hours()?1:i.hours()<r.hours()?-1:0,u===0&&(u=i.minutes()>r.minutes()?1:i.minutes()<r.minutes()?-1:0),u===0&&(u=i.seconds()>r.seconds()?1:i.seconds()<r.seconds()?-1:0),u},nrofstops:function(n,t){return n.NumberOfStops===t.NumberOfStops?f.departuretime(n,t):n.NumberOfStops-t.NumberOfStops},via:function(n,t){var i="",r="";return n.viaForMarkup&&n.viaForMarkup[0]&&(i=n.viaForMarkup[0].ArrivalIata),t.viaForMarkup&&t.viaForMarkup[0]&&(r=t.viaForMarkup[0].ArrivalIata),i===r?f.departuretime(n,t):i.localeCompare(r)},traveltime:function(n,t){return n.FlightTimeMinutes-t.FlightTimeMinutes}},d=function(){n.noSearchResults=!1;n.showSearchDays=!1;n.filter.filterCarrier="";n.filter.hideNonDirectFlights=!1;l=[];n.viewFlightData={directFlights:[],nonDirectFlights:[]};s={directFlights:[],nonDirectFlights:[]};n.range=32;setTimeout(function(){$('.DesContainer input[type="range"].rangesliderDes').rangeslider();$('.DesContainer input[type="range"].rangesliderDes').rangeslider("update",!0)},300)},ot=function(n,t){function r(n,t){var i=$.grep(t,function(t){return n.carrierName===t.carrierName});return i.length>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,"<strong>"+f+"<\/strong>","<strong>"+u+"<\/strong>")),n.nonDirectFlightsHeader=t.trustAsHtml(sa.translate("timetable/nondirectflightsheader").format(r,"<strong>"+f+"<\/strong>","<strong>"+u+"<\/strong>"))):o=="form2"&&(n.directFlightsHeader=t.trustAsHtml(sa.translate("timetable/directflightsheader").format(i,"<strong>"+h.format("YYYY-MM-DD")+"<\/strong>","<strong>"+u+"<\/strong>")),n.nonDirectFlightsHeader=t.trustAsHtml(sa.translate("timetable/nondirectflightsheader").format(r,"<strong>"+h.format("YYYY-MM-DD")+"<\/strong>","<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=i<moment().startOf("day");angular.element(".js-timeTableBlock-searchDays-prevDay").toggleClass("disabled",f)}else if(o=="form2"){var r=h,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=i<moment().startOf("day");angular.element(".js-timeTableBlock-searchDays-prevDay").toggleClass("disabled",f)}},v=function(n,t,i){if(t&&t.length>0){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,"<strong>$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,console.log(i),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("<strong>","").replace("<\/strong>","");t.item.value=i}function i(t,i){var r=i.item.value;r=r.replace("<strong>","").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><\/li>").data("item.autocomplete",t).append(angular.element("<a><\/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+="<div><strong>"+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")}]);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("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("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("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"})}}]);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("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("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}}}]);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("<ul>",""),i=i.replace(new RegExp("<li>","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(12,"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='<div class="paymentIframeContainer" ng-show="showIframe"><div class="iframeContainer"><div class="iframeInnerContainer"><div class="iframeWrapper"><iframe ng-src="{{iframeUrl}}"><\/iframe><\/div><\/div><\/div><\/div>';this.InitPaymentIframe=function(n){if(!n)throw new TypeError("You must provide a $scope-object");if(typeof n.showIframe!="boolean")throw new TypeError("You must provide a boolean value for $scope.showIframe");if(!n.iframeUrl)throw new TypeError("You must provide an $scope.iframeUrl address");if(!n.hideIframe)throw new TypeError("Well you should also provide a $scope.hideIframe function");sa.utils.isIos()&&($("body").css("position","fixed"),n.hideIframe=function(){var t=n.hideIframe;return function(){$("body").css("position","");var i=t.apply(this,arguments);return n.hideIframe=t,i}}());u||(u=i(o),$("body").append($("<div id='paymentIframe'>")));$("#paymentIframe").empty();u(n,function(n){$("#paymentIframe").append(n)})};this.VirtualPageNames={classicSearch:{suffix:"date-search"},flightSearch:{suffix:"flight-search"},searchResults:{suffix:"search-results"},personalInfo:{suffix:"personal-information"},payment:{suffix:"payment"},paymentComplete:{suffix:"payment-complete"},paymentFailed:{suffix:"payment-failed"}};this.CardVirtualPageNames={cardDateSearch:{suffix:"card-date-search"},cardSearchResult:{suffix:"card-search-result"},cardPersonalInfo:{suffix:"card-personal-info"},cardPayment:{suffix:"card-payment"}};f=function(n){var t=window.location.pathname,i;return t=t.replace(/^\//,""),i=t.substr(-1),i!=="/"&&(t=t+"/"),t+n};this.TriggerInitialPageView=function(n){var i=sa.utils.checkCookieCategory("Statistics"),t;i==="1"&&(window.dataLayer=window.dataLayer||{},t=f(n.suffix),dataLayer.push({event:"initial page view",saURL:t,saStartVersion:t}))};this.TriggerPageView=function(n){var t=sa.utils.checkCookieCategory("Statistics");t==="1"&&(window.dataLayer=window.dataLayer||{},dataLayer.push({event:"virtual page view",saURL:f(n.suffix)}))};this.TriggerCardPageView=function(n){var t=sa.utils.checkCookieCategory("Statistics");t==="1"&&(window.dataLayer=window.dataLayer||{},dataLayer.push({event:"virtual page view",saURL:f(n.suffix)}))};this.ParkingCookieValues={PickByFlight:"PickByFlight",PickByDate:"PickByDate",PickByCard:"PickByCard"};this.SetParkingCookie=function(n){var t=sa.utils.checkCookieCategory("Functional");t==="1"&&(document.cookie="ParkingStartpageType="+n+";path=/")};var s=[],h,c=!1,a=function(){var n,t,i,e,u;if(!c){var o="step",r=sa.utils.getHashParams(),h=r["cid"],f=null;try{f=sessionStorage.getItem(h)}catch(l){alert("Your browser currently does not support sessionstorage. You won't be able to resume state.");console.log(l)}n=JSON.parse(f);t=n&&n.CarParkName?n.CarParkName:r["cpn"];t&&(i=$("[data-card-name='"+t+"']"),i.length&&(e=i.parents(".tabBlock-innerContent").data("tab-index"),$("body").trigger("sa.selectTabIndexButDoNotScroll",{tabIndex:e}),c=!0,u=-70,i.velocity("scroll",{duration:300,offset:u,complete:function(i){var h=$(i[0]),e,f;h.velocity("scroll",{duration:300,offset:u});e=r[o];f=s.find(function(n){return n.vm.CarParkName===t});f&&e?f.flipCard():f&&n&&(f.vm=n,f.setHtmlPropertiesAsTrusted(),f.flipCard())}})))}};this.registerCardAsRendered=function(n){s.push(n);clearTimeout(h);h=setTimeout(a,50)}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.service("CrowdLevelsService",["$http","$sce","$compile",function(n){this.GetCrowdLevels=function(t){var i=["/services/crowdlevels"];return i.push("get"),i.push(t.Iata),i.push(t.ApiFormatRequestDateTime),n.get(i.join("/"),{responseType:"json"}).then(function(n){return n.data})}}]);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("getTimeTableDataService",["$http",function(n){this.getAllAirports=function(t){var i=["/services/publictimetableboard"];return i.push("getallairports"),i.push(t),n.get(i.join("/"),{responseType:"json"}).then(function(n){return n.data})};this.getTimetableAllFlightsByDestinationCity=function(t,i,r,u){var f=["/services/publictimetableboard"];return f.push("gettimetableallflightsbydestinationcity",t,i,r,u),n.get(f.join("/"),{responseType:"json"}).then(function(n){return n.data})};this.getTimeTableDirectDepartureFlights=function(t,i,r,u){var f=["/services/publictimetableboard"];return f.push("GetTimeTableDirectDepartureFlights",t,i,r.format("YYYY-MM-DDTHHmm"),u),n.get(f.join("/"),{responseType:"json"}).then(function(n){return n.data})};this.getTimetableAllFlightsByDepartureCity=function(t,i,r,u){var f=["/services/publictimetableboard"];return f.push("gettimetableallflightsbydeparturecity",t,i,r,u),n.get(f.join("/"),{responseType:"json"}).then(function(n){return n.data})};this.getTimetableAllFlights=function(t,i,r,u){var f=["/services/publictimetableboard"];return f.push("gettimetableallflights",t,i,r,u),n.get(f.join("/"),{responseType:"json"}).then(function(n){return n.data})}}])