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,bookFlight,maxNumberOfResults,flightsBoardViewModel,googleMapsViewModel,googleMapsBlockController,newsContainers,pageListViewModel,pointsOfInterestModel;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:"weather,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)},convertImages:function(){$("img.scalable").each(function(){var n=$(this),t="url("+n.attr("src")+")",u=n.attr("alt"),i=n.parent(),r=i.css("background-image");r!=="none"?t=t+","+r:i.attr("title",u).addClass("scalable");i.css({"background-image":t});n.remove()})},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]}};"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")})});sa.utils.convertImages();$(".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(){var r,n,t,i;sa=window.sa||{};sa.utils=sa.utils||{};r=function(n){var t=n.offset().top,i=$(window).scrollTop()+window.innerHeight+window.innerHeight/2;return i>=t};n=function(){setTimeout(function(){$(".hasPlhForLazyLoad").each(function(){var n=$(this),i,u;r(n)&&(i=n.data("lazy-src-route"),i&&(n.data("lazy-src-route","null"),u=n.data("lazy-src-route-model-ref"),t(n.scope(),u,"null"),sa.utils.loadImage(i).then(function(r){if(r!==null){var u=n.data("lazy-src-model-ref"),f=n.data("lazy-alt-model-ref");u&&i!=="null"?(t(n.scope(),u,r.Url),t(n.scope(),f,r.AltText),n.scope().$apply()):(n.is("img")?n.attr("src",r.Url):n.css({"background-image":"url('"+r.Url+"')"}),n.attr("alt",r.AltText),n.attr("title",r.AltText))}})),n.removeClass("hasPlhForLazyLoad"))})},0)};sa.utils.doLazyLoad=n;t=function(n,t,i){if(t&&i){for(var u=t.split("."),f=n,r=0;r<u.length-1;r++)u[r]&&f[u[r]]&&(f=f[u[r]]);u[r]&&f[u[r]]&&(f[u[r]]=i)}};i=null;$(document).on("scroll",function(){clearTimeout(i);i=setTimeout(n,50)});n()}),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.bookflightservice={getAirports:function(n){var t=["/services/bookflight/getairports"];return t.push(n),$.ajax(t.join("/"),{responseType:"json"})},getDestinations:function(n){var t=["/services/bookflight/getdestinations"];return t.push(n),$.ajax(t.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"})}};sa=window.sa||{};sa.flightsboardservice={getFlights:function(n,t,i,r){var u=["/services/publicflightsboard"];return u.push(n,i,t,r),$.ajax(u.join("/"),{responseType:"json"})},getCurrentDepartures:function(n,t){var i=["/services/publicflightsboard/getcurrentdepartures"];return i.push(n,t),$.ajax(i.join("/"),{responseType:"json"})},getAllAirports:function(n){var t=["/services/publicflightsboard/getallairports/"+n];return $.ajax(t.join("/"),{responseType:"json"})},checkIfLatestArrivals:function(n,t,i,r){var u=["/services/publicflightsboard/arrivalshashisok"];return u.push(n,t,i,r),$.ajax(u.join("/"),{responseType:"json"})},checkIfLatestDepartures:function(n,t,i,r){var u=["/services/publicflightsboard/departuresHashIsOk"];return u.push(n,t,i,r),$.ajax(u.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")})});$(".searchBarInput").focus(function(){$(".search-area").addClass("focus")}).focusout(function(){$(this).val()===""&&$(".search-area").removeClass("focus")});$(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(){var n=$(".destinationListBlock .destinationSection");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(){$("#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 n=$(".videoHeroBlock");if(n.length){window.location.hash==="#/video"&&(window.location.hash="");window.onhashchange=function(){window.location.hash==="#/video"?t():i()};var t=function(){n.find(".YouTubeModal.modal").modal("show");$("html").addClass("hasScrollableOverlay");var t=n.find(".youtube-placeholder");r(t)},i=function(){var t=n.find("iframe.youtube-video");t.length&&t[0].contentWindow.postMessage('{"event":"command","func":"stopVideo","args":""}',"*");$("html").removeClass("hasScrollableOverlay");n.find(".YouTubeModal.modal").modal("hide")},r=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=n.find(".background-short-video"),f=n.find(".img-mask");setTimeout(function(){var n=$(".img-mask").height()*100,t=$(".img-mask").width()*100;f.animate({width:t+"px",height:n+"px"},2e3);u.animate({opacity:1},1e3)},1e3)}});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"),arlandaExpress:sa.translate("airlinelistblock/checkin/arlandaexpress"),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|"),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|");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.directive("numbersOnly",function(){return{require:"ngModel",link:function(n,t,i,r){function u(n){if(n){var t=n.replace(/[^0-9]/g,"");return t!==n&&(r.$setViewValue(t),r.$render()),t}return undefined}r.$parsers.push(u)}}});swedaviaApp.controller("bookCurrencyBlockController",["$scope","currencyService",function(n,t){function i(n){return+(Math.round(n+"e+2")+"e-2")}n.currentAmmount="";n.currentCost="";t.getCurrencyRates().then(function(t){n.currencyRates=t;n.selectedOption=t[0].Rate;n.currentRate=t[0].Rate});n.updateCurrencyCost=function(){(n.currentAmmount!==undefined||n.currentAmmount>1)&&$(".error").addClass("hidden");n.currentCost=n.currentAmmount!==undefined?i(n.currentAmmount*n.currentRate)+" SEK":""};n.currencySelected=function(){n.currentRate=n.selectedOption;n.currentCost=n.currentAmmount!==undefined&&n.currentAmmount!==""?i(n.currentAmmount*n.currentRate)+" SEK":""};n.setLink=function(){var i,t,r;if(n.currentAmmount===undefined||n.currentAmmount<1)return $(".error").removeClass("hidden"),!1;for(i="",t=0;t<n.currencyRates.length;t++)$(".CurrencySelector option:selected").text().contains(n.currencyRates[t].Name)&&(i=n.currencyRates[t].Code);return r="https://www.forex.se/Forex/Wrap/Wrap.aspx?section=forexSEShopReserve&Changelang="+(sa.utils.currentLanguage()==="zh"?"en":sa.utils.currentLanguage())+"&affiliate=Swedavia&amount="+n.currentAmmount+"&currency="+i,window.location.href=r,!1}}]);window.swedaviaApp=window.swedaviaApp||{};bookFlight=window.bookFlight||{};bookFlight.selectedFlight={};swedaviaApp.controller("bookFlightBlockController",["$scope",function(n){function f(t,i){if(n.bookFlightTo===undefined)return 0;var f=n.bookFlightTo.toLowerCase(),r=t.value.toLowerCase().indexOf(f),u=i.value.toLowerCase().indexOf(f);return r<u&&r!==-1?-1:r>u&&u!==-1?1:t.popularity<i.popularity?1:t.popularity>i.popularity?-1:t.value.replace(/[^a-z]/ig,"")>i.value.replace(/[^a-z]/ig,"")?1:t.value.replace(/[^a-z]/ig,"")<i.value.replace(/[^a-z]/ig,"")?-1:0}function e(n,t){return t>0?"&child_ages="+o(n,t):""}function o(n,t){var r="",i,u;for(t++,i=1;i<t;i++)u=$("#child"+i).val(),r+=u+",";return r.substring(0,r.length-1)}function s(t,i){i.item!==undefined&&(bookFlight.selectedFlight=i.item,n.bookFlightTo=i.item.label)}function h(){$("[name^=child]").each(function(){$(this).rules("add",{required:!0,messages:{required:sa.translate("bookflight/validationmessagechildrenage")}})})}var i,r,u,t;n.adults=[1,2,3,4,5,6,7,8,9];n.bookFlightAdults=n.adults[0];n.directFlightParam="returnway";n.numberOfChildren=[0,1,2,3,4,5,6,7,8,9];n.bookFlightChildren=n.numberOfChildren[0];n.bookFlightTo="";n.bookFlightChildrenInputs=!1;n.bookFlight=function(t){var i,u,r;t.preventDefault();var f=n.bookFlightAdults,o=n.bookFlightChildren,s=n.bookFlightFromDate,c=n.bookFlightToDate,l=sa.utils.currentAirportIataCode(),i=bookFlight.fixedDestinationIata!==undefined&&bookFlight.fixedDestinationIata!==null&&bookFlight.fixedDestinationIata.length>0?"&dest_city_code="+bookFlight.fixedDestinationIata:bookFlight.selectedFlight.destinationtype==="destination"?"&dest_city_code="+bookFlight.selectedFlight.destinationiata:"&dest_airport_code="+bookFlight.selectedFlight.destinationiata;n.directFlightParam==="oneway"&&(i=i+"&oneway=1");h();u=$(t.target).parents("form.bookFlightForm");u.valid()&&(r="http://resor.swedavia.se/flyg/priser?dep_airport_code="+encodeURIComponent(l)+i+"&adults="+encodeURIComponent(f)+e(n,o)+"&date_from="+s+"&date_to="+c,window.ga&&window.sa.utils.checkCookieCategory("Statistics")==="1"&&(r+="&"+window.ga.getAll()[0].get("linkerParam")),window.open(r))};i=function(){$(".bookFlightTo-spinner-icon").each(function(){$(this).removeClass("hidden")})};r=function(){$(".bookFlightTo-spinner-icon").each(function(){$(this).addClass("hidden")})};n.generateChildrenSelects=function(t){t>0?(n.bookFlightChildrenInputs=!0,n.generatedChildren=new Array(t)):n.bookFlightChildrenInputs=!1};angular.element(".bookFlightFromDate").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.change",function(t){n.bookFlightFromDate=t.date.format("YYYY-MM-DD")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")});angular.element(".bookFlightToDate").datetimepicker({locale:sa.utils.currentFullSupportedLanguageOrDefault(),ignoreReadonly:!0,allowInputToggle:!0,format:"YYYY-MM-DD",minDate:moment().format("YYYY-MM-DD"),showClose:!0,widgetPositioning:{vertical:"bottom"},tooltips:sa.utils.dateTimePickerGlobalTooltips}).on("dp.change",function(t){n.bookFlightToDate=t.date.format("YYYY-MM-DD")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")});u=function(n,t){var i,u,e=$.Deferred(),o=$.Deferred();sa.bookflightservice.getAirports(n.term).then(function(n){u=n;o.resolve()});sa.bookflightservice.getDestinations(n.term).then(function(n){i=n;e.resolve()});$.when(e,o).then(function(){var e=JSON.parse(u),o=JSON.parse(i),n=[];_.each(e,function(t){var i={destinationtype:"airport",destinationiata:t.airport_code,value:t.name,popularity:t.popularity===undefined?0:t.popularity};n.push(i)});_.each(o,function(t){var i={destinationtype:"destination",destinationiata:t.city_code,value:t.name,popularity:t.popularity===undefined?0:t.popularity};n.push(i)});r();n.sort(f);t(n)})};$.widget("ui.autocomplete",$.ui.autocomplete,{_renderItem:function(n,t){var i=angular.element("<li class='bookFlightBlock-searchResult'><\/li>"),r=angular.element("<span class='bookFlightBlock-name'><\/span>"),u=angular.element("<span><\/span>");return r.html(t.label),u.html(t.destinationiata),i.append(r,u),i.appendTo(n)}});t="";$(".bookFlight-to").parents(".theme-lightblue").length>0&&(t="ui-autocomplete-white");angular.element(".bookFlight-to").autocomplete({maxShowItems:10,focus:function(n){/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&$(n.toElement).trigger("click")},select:function(n,t){s(n,t);$(this).valid()},source:function(n,t){n.term.length>2&&(i(),t(u(n,t)))}}).prop("disabled",!1).autocomplete("widget").addClass(t),function(){var n=$("#bookFlightFormDestinationIata");n.length===1&&(bookFlight.fixedDestinationIata=n.val());$(".bookFlight-to").on("input",function(){jQuery.isEmptyObject(bookFlight.selectedFlight)||$(this).val().toLowerCase()===bookFlight.selectedFlight.value.toLowerCase()||(bookFlight.selectedFlight={})})}();$.validator.addMethod("autofillRegistredCheck",function(){return bookFlight.selectedFlight!==undefined&&bookFlight.selectedFlight.destinationiata?!0:!1});$.validator.addMethod("checkDatesNotOverlap",function(){return n.directFlightParam==="oneway"&&n.bookFlightFromDate>n.bookFlightToDate?!0:n.directFlightParam==="returnway"&&n.bookFlightFromDate>n.bookFlightToDate?!1:!0});$.validator.addMethod("bookFlightInputRequired",function(){return n.directFlightParam==="oneway"?!0:n.bookFlightToDate&&n.bookFlightToDate.length>1?!0:!1});$(".bookFlightForm").each(function(){$(this).validate({rules:{bookFlightInputLocation:{autofillRegistredCheck:!0},bookFlightInputToDate:{required:!0},bookFlightInputFromDate:{bookFlightInputRequired:!0,checkDatesNotOverlap:!0}},messages:{bookFlightInputLocation:{required:sa.translate("bookflight/validationmessagedestinationrequired"),autofillRegistredCheck:sa.translate("bookflight/validationmessagechoosedestinationfromlist")},bookFlightInputToDate:{required:sa.translate("bookflight/validationmessagechoosetodate")},bookFlightInputFromDate:{bookFlightInputRequired:sa.translate("bookflight/validationmessagechoosefromdate"),checkDatesNotOverlap:sa.translate("bookflight/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)}})}]);window.swedaviaApp=window.swedaviaApp||{};bookFlight=window.bookFlight||{};bookFlight.selectedFlight={};swedaviaApp.controller("bookFlightSmallBlockController",["$scope",function(n){n.bookFlightAdults=2;n.bookFlightFromIata="";n.bookFlightToIata="";n.init=function(t,i,r){n.bookFlightFromIata=t;n.bookFlightToIata=i;n.bookFlightNumOfAdults=r};n.bookFlight=function(t){var i,u,r;t.preventDefault();const f=$(event.currentTarget);i=f.attr("href");u=i.indexOf("?")===-1?"?":"&";i+=u;var e=n.bookFlightNumOfAdults<1?2:n.bookFlightNumOfAdults,o=n.bookFlightFromDate,s=n.bookFlightToDate,h=n.bookFlightFromIata.toUpperCase(),c="&dest_city_code="+n.bookFlightToIata.toUpperCase(),l=$(t.target).parents("form.bookFlightForm");l.valid()&&(r=i+"dep_airport_code="+h+c+"&adults="+e+"&date_from="+o+"&date_to="+s,console.log(r),window.open(r))};angular.element(".bookFlightFromDate").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}).on("dp.change",function(t){n.bookFlightFromDate=t.date.format("YYYY-MM-DD")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")});angular.element(".bookFlightToDate").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}).on("dp.change",function(t){n.bookFlightToDate=t.date.format("YYYY-MM-DD")}).on("dp.show",function(){$(".picker-switch").removeAttr("data-action")});$.validator.addMethod("checkDatesNotOverlap",function(){return n.bookFlightFromDate>n.bookFlightToDate?!1:!0});$(".bookFlightForm").each(function(){$(this).validate({rules:{bookFlightInputToDate:{required:!0},bookFlightInputFromDate:{required:!0,checkDatesNotOverlap:!0}},messages:{bookFlightInputToDate:{required:sa.translate("bookflight/validationmessagechoosetodate")},bookFlightInputFromDate:{required:sa.translate("bookflight/validationmessagechoosefromdate"),checkDatesNotOverlap:sa.translate("bookflight/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)}})}]);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){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:00",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{transactionId:n.Booking.BookingReference,transactionAffiliation:n.Iata+" - "+n.Booking.CarParkName,transactionTotal:t,transactionTax:r,transactionProducts:[{sku:n.Booking.ProductCode,name:n.Booking.AirportIata+" - "+n.Booking.CarParkName,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("destinationListMobileController",["$scope","$element",function(n,t){var i;n.init=function(t){n.allDestinations=t.Destinations;n.showSelect=u()};i=$(t).find(".destination-sticky-select").innerHeight();n.scrollToDestination=function(n){var r='.destinations-by-letter[data-initial-letter="'+n+'"]',u=t.find(r);$("html, body").animate({scrollTop:u.offset().top-i},300)};var r=function(n){var t=$(n),r=t.offset().top,u=t.offset().top+t.innerHeight(),f=$(window).scrollTop()+$(window).innerHeight(),e=$(window).scrollTop()+i;return f>r&&e<u},u=function(){return r(t)&&$(window).scrollTop()+i+5>=$(t).offset().top},f=function(){var t=$(".anchorLinks.fixed");t.length&&(n.showSelect?t.addClass("hidden-anchorLinks"):t.removeClass("hidden-anchorLinks"))};$(window).scroll(function(){if(sa.utils.isMobileWidth()){if(n.showSelect=u(),n.showSelect){var i=!1;$(t).find(".destinations-by-letter").each(function(){if(n.showSelect&&r(this)&&!i){n.selectedDestination=$(this).data("initial-letter");i=!0;return}})}f();n.$apply()}})}]);window.swedaviaApp=window.swedaviaApp||{};maxNumberOfResults=4;$(".touristAttractionBlock").length>0&&$(function(){$(window).load(function(){$($(".tabBlockItem.selected"),".destinationPage-tabBlock .grid").masonry({itemSelector:".touristAttractionBlock",percentPosition:!0});$(".tabBlockHeaderItem").on("click",function(){var n=$(".tabBlockItem")[$(this).data("tabindex")];$(n,".grid").masonry({itemSelector:".touristAttractionBlock",percentPosition:!0})})})});swedaviaApp.service("getTimeTableDataService",["$http",function(n){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})}}]).controller("destinationTimeTableController",["$sce","$scope","getTimeTableDataService",function(n,t,i){var r,f;if(t.hideTimeTable=!1,r=sa.utils.getQueryFromName("hideflights"),r&&r==="1")t.hideTimeTable=!0;else{var u=angular.element(".desinationPage-timeTableInformation"),e=u.data("airportiatacode"),o=u.data("destinationiatacode"),s=moment().format("YYYYMMDD"),h=location.host;t.showLoader=!0;t.noDirectFlights=!1;i.getTimetableAllFlightsByDestinationCity(e,o,s,h).then(function(n){var i=[];t.showLoader=!1;$.each(n,function(){this.NumberOfStops===0&&i.push(this)});i.length>maxNumberOfResults&&i.splice(maxNumberOfResults,i.length);i.length===0?t.noDirectFlights=!0:t.destinationTimeTableData=i});f=function(n,t){var i=n.indexOf(t.FlightNumber)>-1;return!!i};t.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};t.GetCodeShares=function(t){var i="";return _.each(t,function(n){f(i,n)||(i+="<span><strong>"+n.FlightNumber+"<\/strong> "+n.CarrierName+"<\/span>, ")}),i=i.slice(0,-2),n.trustAsHtml(i.toString())};t.GetFlightScheduledDays=function(t){var r=[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")],i=[7];return $.each(t,function(n){var t=parseInt(moment(this.ScheduledDateTime).format("d")),u;t--;t<0&&(t=6);this.IsScheduled?(u=n===3?$("<span>",{"class":"timeTable-result-scheduledDays__day IsScheduled today"}):$("<span>",{"class":"timeTable-result-scheduledDays__day IsScheduled"}),u.html(r[t]),i[t]=u.prop("outerHTML")):i[t]=$("<span>",{"class":"timeTable-result-scheduledDays__day"}).prop("outerHTML")}),n.trustAsHtml(i.toString().replace(/,/g,""))}}}]);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("FacebookSubscribeModalController",["$scope","$element","$timeout",function(n,t,i){var u=100,f=500,e=0;n.show=!1;n.isChatBotLoaded=!1;n.subbedFlight=null;n.chatBotFacebookPageId;n.init=function(r){n.vm=r;s();i(function(){var n=$(t).find(".subscribe-modal div[link]")},1e3)};n.parseFbElement=function(n){window.FB.XFBML.parse(n)};n.showModal=function(t,i,r,u){u=typeof u!="undefined"?u:!1;n.subbedFlight={flightId:t.flightId,flightType:i?"ARRIVAL":"DEPARTURE",flightDate:[r.substr(8,2),"-",r.substr(5,2),"-",r.substr(0,4)].join(""),referral:u?"FLIGHT_DETAILS_PAGE":i?"ARRIVALS_PAGE":"DEPARTURES_PAGE"};n.show=!0};n.subscribeToFlight=function(){var r=$(t).find(".subscribe-modal div[link]");typeof r!="undefined"&&r!=null&&(r.click(),i(function(){n.hideModal()},500))};n.hideModal=function(){n.show=!1};var o=function(){window.FB.Event.subscribe("send_to_messenger",function(t){var r=sa.utils.checkCookieCategory("Statistics");r==="1"&&(window.dataLayer=window.dataLayer||{},dataLayer.push({event:"messenger-open-flightinfo",fbEventId:t.event}));t.event==="opt_in"&&i(function(){n.hideModal();window.FB&&window.FB.CustomerChat&&window.FB.CustomerChat.show()},500)});o=function(){}},r=function(){var t=typeof AirportAI!="undefined";n.isChatBotLoaded=t;t?window.AirportAI.renderPlugins():f>=++e&&setTimeout(r,u)},s=function(){n.FlightsBoardV2.isChatBotLoaded=!1;r()}}]);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("FlightListController",["$scope",function(n){var t;n.init=function(){};n.filterDateValue=n.FlightsBoardV2.currentDate;t=function(){for(var t,r={key:sa.translate("flightsboard/timefilterplaceholder"),value:"default"},i=[r],n=0;n<24;n++)t=n<10?"0"+n:n,t+=":00",i.push({key:t,value:t});return i};n.hoursArray=t();n.filterByTimeFilter=function(t){var i=n.FlightsBoardV2.filterHour==="default"?"":n.FlightsBoardV2.filterHour,f=i===""&&r(t)&&n.FlightsBoardV2.currentDate===n.FlightsBoardV2.vm.TodaysDate;return f&&!n.FlightsBoardV2.freeTextFilter?!1:n.FlightsBoardV2.filterHour==="default"&&!n.FlightsBoardV2.freeTextFilter&&u(t)?!1:t.arrivalOrDepartureTime.scheduledTimeStr>=i?!0:!1};n.filterByTextFilter=function(t){var f=n.FlightsBoardV2.freeTextFilter,r,u,e;if(!f||f==="")return!0;if(f=i(f),r=[t.flightId,t.arrivalOrDepartureAirport,t.arrivalOrDepartureIata],t.airlineOperator&&t.airlineOperator.Name&&r.push(t.airlineOperator.Name),t.locationAndStatus&&t.locationAndStatus.gate&&r.push(t.locationAndStatus.gate),t.epiAirline&&t.epiAirline.Name&&r.push(t.epiAirline.Name),t.epiTerminal&&(r.push(t.epiTerminal.Name),r.push(t.epiTerminal.ShortName)),t.epiAirport&&(r.push(t.epiAirport.AirportName),r.push(t.epiAirport.CountryName)),t.arrivalOrDepartureTime&&r.push(t.arrivalOrDepartureTime.scheduledTimeStr),Array.isArray(t.codeShareData))for(u=0;u<t.codeShareData.length;u++)r.push(t.codeShareData[u]);if(Array.isArray(t.remarks))for(u=0;u<t.remarks.length;u++)r.push(t.remarks[u].text);return(e=r.join("|"),e=i(e),e.contains(f))?!0:!1};var i=function(n){return(n=n.toLowerCase(),String.prototype.normalize)?n.normalize("NFD").replace(/[\u0300-\u036f]/g,""):n.replace("é","e").replace("ó","o").replace("ü","u").replace("å","a").replace("ä","a").replace("ö","o")},r=function(t){return t.locationAndStatus.flightLegStatus==="LAN"||!n.FlightsBoardV2.vm.IsArrivals&&t.locationAndStatus.flightLegStatus==="ACT"},u=function(n){var t=n.locationAndStatus.flightLegStatus==="CAN",i=!1;if(t){var r=moment.utc(n.arrivalOrDepartureTime.scheduledUtc),u=moment.utc(),f=u.diff(r,"minutes");f>=60&&(i=!0)}return t&&i};n.changeDate=function(){window.location="#/"+n.filterDateValue}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("FlightListItemController",["$scope","BlockServices","$sce","$element","$timeout",function(n,t,i,r,u){n.FlightListItem={};n.init=function(){$("html, body").animate({scrollTop:$(".flightsboardv2block").first().offset().top},0)};n.FlightListItem={};n.travelSteps=[];n.setModalImage=function(t){n.selectedModalImage=t;$(r).find("#flightListImageModal").modal()};n.$watch("FlightsBoardV2.selectedFlight",function(t){t&&t.flightId&&(n.getPersonalizedItems(),n.travelSteps=n.initTravelSteps(),n.updateCheckinLinkVisibility(n.FlightsBoardV2.selectedFlight),u(function(){var i=n.FlightsBoardV2.selectedFlight,u=r.find(".steps-data"),f=r.find(".steps-title"),e=r.find(".title-mobile"),o=[u,f,e],t;for(angular.forEach(o,function(n){var t=0;$(n,this).each(function(){$(this).height()>t&&(t=$(this).height())});$(n,this).height(t)}),n.infoinfo=0,t=0;t<i.remarks.length;t++)i.remarks[t].indicator==n.remarkIndicators.negative&&(n.infoinfo+=1)}))});n.updateCheckinLinkVisibility=function(t){var i=f(t)&&!e(t)&&!n.FlightsBoardV2.vm.isArrival;n.showCheckInLink=i};var f=function(n){var t=n.arrivalOrDepartureTime.estimatedUtc?n.arrivalOrDepartureTime.estimatedUtc:n.arrivalOrDepartureTime.scheduledUtc,i=moment.utc(t),r=moment.utc();return r.add(1,"H").isBefore(i)?!0:!1},e=function(t){return!n.FlightsBoardV2.vm.IsArrivals&&t.locationAndStatus.flightLegStatus==="ACT"||t.locationAndStatus.flightLegStatus==="CAN"};n.initFlightDepedent=function(){n.getPersonalizedItems();n.initTravelSteps();n.initDestinationLinks()};n.filterByTerminal=function(t){var i=n.FlightsBoardV2.selectedFlight.epiTerminal;return i?t.Id===null||t.Id===i.Id:!1};n.initTravelSteps=function(){for(var t,i=n.FlightsBoardV2.selectedFlight,f=JSON.parse(JSON.stringify(n.FlightsBoardV2.vm.TravelSteps)),r=i.epiDestinationPage,e=[],u=0;u<f.length;u++){if(t=f[u],(t.Type==="destdata"||t.Type==="depdata")&&r)t.Links.unshift({Text:"Destination: "+r.Text,Href:r.Href});else if(t.Type==="passportdata"&&i.diIndicator!==n.diIndicators.international)continue;else if(t.Type==="customsdata"&&i.diIndicator===n.diIndicators.domestic)continue;e.push(t)}return e};n.getPersonalizedItems=function(){var r=["isArrival="+n.FlightsBoardV2.vm.IsArrivals,"language="+sa.utils.currentLanguage(),"iata="+sa.utils.currentAirportIataCode(),"date="+n.FlightsBoardV2.currentDate,"flightId="+n.FlightsBoardV2.selectedFlight.flightId];t.GetBlockAsHtml("OfferContainerBlock","GetOffersForFlight",r).then(function(t){t!==""&&(n.FlightListItem.personalizedContent=i.trustAsHtml(t))})};n.getAirlineContact=function(){return!n.FlightsBoardV2.selectedFlight.epiAirline||!n.FlightsBoardV2.selectedFlight.epiAirline.Contact?"":n.FlightsBoardV2.selectedFlight.epiAirline.Contact.PhoneNumber?n.FlightsBoardV2.selectedFlight.epiAirline.Contact.PhoneNumber:n.FlightsBoardV2.selectedFlight.epiAirline.Contact.Email};n.queueTimeTerminalFilter=function(t){if(!t.TerminalId||t.TerminalId&&t.TerminalId.length===0)return!0;var i=n.FlightsBoardV2.selectedFlight;return i&&i.epiTerminal?t.TerminalId.indexOf(i.epiTerminal.Id)!==-1:!1}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("flightBoardBarController",["$scope",function(n){var f=function(){var n=angular.element(".flightBoardBar-column .flightColumn-viewport");angular.forEach(n,function(n,t){setTimeout(function(){angular.element(n).addClass("roll")},100*t)})},i=8,e=sa.utils.currentLanguage(),o=sa.utils.currentAirportIataCode(),r,u,t;sa.flightsboardservice.getCurrentDepartures(e,o).then(function(t){var o=[],s=[],h=[],l=[],e=[],r=[],u=[],c,a;if(angular.copy(t,u),t&&t.Flights&&t.Flights.length>0&&t.Flights.length>=i)r=t.Flights.splice(0,i),c=r.splice(4,8),o.push(r[0],c[0],r[0]),s.push(r[1],c[1],r[1]),h.push(r[2],c[2],r[2]),l.push(r[3],c[3],r[3]),e.push(o,s,h,l),u=u.Flights.splice(0,4),u.push(u[0]),n.fightsBarData=e,n.mobileFlightsBarData=u,n.$apply(),f();else if(t&&t.Flights&&t.Flights.length>0&&t.Flights.length<=i){if(t.Flights.length>=4)r=t.Flights.splice(0,4),o.push(r[0]),s.push(r[1]),h.push(r[2]),l.push(r[3]),e.push(o,s,h,l),u=u.Flights.splice(0,4);else for(a=0;a<t.Flights.length;a++)switch(a){case 0:o.push(t.Flights[0]);u.push(t.Flights[0]);e.push(o);break;case 1:s.push(t.Flights[1]);u.push(t.Flights[1]);e.push(s);break;case 2:h.push(t.Flights[2]);u.push(t.Flights[2]);e.push(h)}u.push(u[0]);n.fightsBarData=e;n.mobileFlightsBarData=u;n.$apply()}});r=function(n){return!!n&&(n.Id==="CNL"||n.Id==="DEP")};u=function(n,t){return t&&t.GateStatusText&&!r(n)};n.expandFlightsBoardBar=function(){var n=angular.element("#FlightsBoardBar"),t=angular.element(".container",n).first();t.toggleClass("expanded")};t=function(n){return n&&n.RemarkText};n.shouldRoll=function(n,i){return t(n)&&u(n,i)?!0:!1};n.onlyRemark=function(n,i){return r(n)||!i&&t(n)?!0:!1};n.onlyGateStatus=function(n,i){return u(n,i)&&!t(n)?!0:!1};n.colorFromStatusCode=function(n){var t="";switch(n){case-1:t="remark-status-negative";break;case 1:t="remark-status-positive";break;case 2:t="remark-status-negative"}return t};n.mobilelinkfunc=function(n){$("#FlightsBoardBar .container.expanded").length===0&&n.preventDefault()}}]);window.swedaviaApp=window.swedaviaApp||{};flightsBoardViewModel=window.flightsBoardViewModel||{};swedaviaApp.controller("arrivalsDeparturesController",["$scope","$sce","$timeout","$interval","$filter","BlockServices","queueTimeService",function(n,t,i,r,u,f,e){function l(n){n=n.replace(/[\[\]]/g,"\\$&");var i=new RegExp("[?&]"+n+"(=([^&#]*)|&|#|$)"),t=i.exec(window.location.href);return t?t[2]?decodeURIComponent(t[2].replace(/\+/g," ")):"":null}var p,g,a,v,c,nt,tt,it,y;n.init=function(t){n.initSettings=t;t.ShowQueueTime&&(n.updateQueueTimes(),r(n.updateQueueTimes,6e4))};var h=flightsBoardViewModel.ArrivalsOrDeparture,w=flightsBoardViewModel.AirportIata,b=flightsBoardViewModel.CurrentLanguage,o=flightsBoardViewModel.CurrentDate;o||(p=l("flightDate"),o=p?p.replace("-","").replace("-",""):moment().format("YYYYMMDD"));var k={},s={},d=$.Deferred();n.availableDates=flightsBoardViewModel.AvailableDates;n.isArrivals=h==="arrivals"?!0:!1;n.hidePastFlights=!(flightsBoardViewModel.CurrentFlightNumber.length>0||flightsBoardViewModel.CurrentFlightSearchTerm.length>0);n.filterHour="";n.lastUpdatedTime="";n.showUpdatedTimeError=!1;g=function(){for(var i,t=[],n=0;n<24;n++)i=n<10?"0"+n:n,t.push(i+":00");return t};n.hoursArray=g();a=function(){return location.href.indexOf("exactMatch=false")===-1?!0:!1};flightsBoardViewModel.CurrentFlightNumber.length!==0?(n.freeTextFilter=flightsBoardViewModel.CurrentFlightNumber,a()&&(n.FilterByExactMatch=!0)):l("flightNumber")!==null&&l("flightNumber").length!==0?(n.freeTextFilter=l("flightNumber"),a()&&(n.FilterByExactMatch=!0)):flightsBoardViewModel.CurrentFlightSearchTerm.length!==0?(n.freeTextFilter=flightsBoardViewModel.CurrentFlightSearchTerm,n.FilterByExactMatch=!1):sa.utils.getQueryFromName("flightSearchTerm")!==null?(n.freeTextFilter=sa.utils.getQueryFromName("flightSearchTerm"),a()&&(n.FilterByExactMatch=!1)):n.FilterByExactMatch=!0;n.disableFilterUntilLoadingComplete=!0;n.hashValue="undefined";n.filterValueChange=function(){n.FilterByExactMatch=!1};n.generateButtonExpandTitle=function(n){var t=$(n.currentTarget);t.attr("aria-expanded")==="true"?t.attr("title",sa.translate("flightsboard/accessabilityexpandtext")):t.attr("title",sa.translate("flightsboard/accessabilitycollapsetext"))};n.updateUrl=function(){var i=n.dateFilter.Key.substring(0,4)+"-"+n.dateFilter.Key.substring(4,6)+"-"+n.dateFilter.Key.substring(6,8),t=["?exactMatch=false","flightDate="+i];n.freeTextFilter&&t.push("flightNumber="+n.freeTextFilter);history.replaceState({},null,t.join("&"))};var rt=function(){_.each(s.Flights,function(n){var i=h==="departures"?n.ArrivalDestination.IataCode:n.DepartureDestination.IataCode,t=_.find(k,function(n){return n.Iata===i?!0:!1});t&&(n.AirportName=t.Name)})},ut=function(){var n=0;_.each(s.Flights,function(t){t.flightIndex=n;n++})},ft=function(){var n=0;_.each(s.Flights,function(t){t.HasLoadedFlightPersonalizationItems=!1;n++})},et=function(){_.each(s.Flights,function(n){n.CodeShares&&n.CodeShares.length>0&&_.each(n.CodeShares,function(n){n.Operator={}})})},ot=function(n){_.each(n.Flights,function(n){_.each(s.Flights,function(t){n.FlightNumber===t.FlightNumber&&t.PersonalizedItems&&(n.PersonalizedItems=t.PersonalizedItems.splice(0));n.FlightNumber===t.FlightNumber&&t.personalizedContent&&(n.personalizedContent=t.personalizedContent)})})},st=function(){n.dateFilter=n.availableDates[1];for(var t=0;t<7;t++)n.availableDates[t].Key===o&&(n.dateFilter=n.availableDates[t])};st();c=function(t,i,r,u){u===n.availableDates[0].Key&&(n.hidePastFlights=!1);n.showLoader=!0;n.disableDateSelect=!0;sa.flightsboardservice.getFlights(t,i,r,u).then(function(u){u&&u.Flights&&u.Flights.length>0?(n.showLoader=!1,n.showError=!1,n.lastUpdatedTime=moment(u.MetaData.FlightServiceLastUpdated).format("HH:mm"),n.showUpdatedTimeError=!u.MetaData.FlightServiceIsUpdated,s.Flights&&s.Flights.length>0&&ot(u),s=u,n.disableDateSelect=!1,ut(),n.hashValue=u.MetaData.HashValue,clearInterval(v),v=setInterval(function(){n.isArrivals?sa.flightsboardservice.checkIfLatestArrivals(n.hashValue,r,i,o).then(function(n){n&&!n.IsLatest&&(clearInterval(v),c(t,i,r,o))}):sa.flightsboardservice.checkIfLatestDepartures(n.hashValue,r,i,o).then(function(n){n&&!n.IsLatest&&(clearInterval(v),c(t,i,r,o))})},3e4),rt(),ft(),et(),n.flights=s,n.disableFilterUntilLoadingComplete=!1,n.$apply()):(n.showLoader=!1,n.$apply())},function(){n.showLoader=!1;n.showError=!0;n.$apply()})};nt=function(){var n=function(n){k=n;d.resolve()};sa.flightsboardservice.getAllAirports(sa.utils.currentLanguage()).then(function(t){n(t)},function(t){t&&t.responseJSON&&t.responseJSON.ExceptionMessage&&console.log("GetAllAirports:",t.responseJSON.ExceptionMessage);n(null)})};n.showOperatorTextOnToggle=function(n,t,i){$(n.currentTarget).parents(".arrivalsDeparture-flight").find(".arrivalsDeparture-flightRow-details.in").length>0&&i===2?$(n.currentTarget).find(".contact-Operator-Text").addClass("hidden"):i===2&&$(n.currentTarget).find(".contact-Operator-Text").removeClass("hidden")};n.pastFlightsFilter=function(t){return n.hidePastFlights&&t.Remark!==undefined?t.Remark.Id!=="LAN"&&t.Remark.Id!=="DEP":!0};n.filterByTimeFilter=function(t){var i=t.ArrivalDateTime!==undefined?t.ArrivalDateTime:t.DepartureDateTime;return moment(i).hours()>=n.filterHour?!0:!1};n.toggleCollapse=function(n){$(n.currentTarget).collapse("toggle");$(n.currentTarget).parents(".arrivalsDeparture-flight").find(".contact-Operator-Text").addClass("hidden")};n.loadFlightPersonalizationItems=function(t){if(!t.hasLoadedFlightPersonalizationItems){var i=$(i)||window.event;setTimeout(function(){$(".offerContainerBlock").length===0&&$(".collapse.in").length===1&&n.getFlightPersonalizationItems(i,t)},0);setTimeout(function(){$(".offerContainerBlock").find(".offerContainerBlockButton-ShowMore").hide()},0)}return"in"};n.queueTimesByTerminal={};n.updateQueueTimes=function(){e.GetQueueTimes().then(function(t){var i={};$(t).each(function(){var n=this;n.TerminalId.length>0?$(n.TerminalId).each(function(){var n=this.toString();i["T"+n]===undefined&&(i["T"+n]=$.grep(t,function(t){return t.TerminalId.indexOf(n)!==-1}))}):i.T===undefined&&(i.T=$.grep(t,function(n){return n.TerminalId.length===0}))});n.queueTimesByTerminal=i})};n.isQueueTimeShownForFlight=function(t){if(!n.queueTimesByTerminal.T)return!1;var i=tt(t);return i/60<=3?!0:!1};n.getFlightPersonalizationItems=function(r,u){var s;if(sa.utils.isMobileWidth()&&$(r.currentTarget).velocity("scroll",300),u.personalizedContent||u.hasLoadedFlightPersonalizationItems)i(function(){var n=$(r.currentTarget).find(".PersonalisedArea"),t;$("body").trigger("sa.resizeofferblocks",{init:!1,container:n});t=n.height();n.height(0);n.velocity({height:t+"px"},{duration:750,complete:function(){$(this).css({height:""})}})});else{var e=h==="arrivals",c=e?u.ArrivalDateTime:u.DepartureDateTime,l=moment(c).format("HH"),a=flightIsCanceled(u.Remark),o=["id="+n.initSettings.BlockId,"flightHour="+l,"terminal="+u.Terminal,"gate="+u.Gate,"destination="+(e?u.DepartureDestination.Name:u.ArrivalDestination.Name),"language="+sa.utils.currentLanguage(),"isCanceled="+a];flightIsDelayed(u.Remark)&&(s="timeToDelayedFlight="+it(u),o.push(s));u.hasLoadedFlightPersonalizationItems=!0;f.GetBlockAsHtml("OfferContainerBlock","GetOfferBlocksFromArrivalsDepatures",o).then(function(n){if(n!==""){u.personalizedContent=t.trustAsHtml(n);var f=$(r.currentTarget).parents(".arrivalsDeparture-flight").find(".PersonalisedArea");f.height(0);i(function(){sa.utils.convertImages();$("body").trigger("sa.resizeofferblocks",{init:!0,container:f});i(function(){f.height("");var n=f.height();f.height(0);f.velocity({height:n+"px"},{duration:750,complete:function(){$(this).css({height:""})}})})})}})}};tt=function(n){var t=!n.DepartureDateTime?n.ArrivalDateTime:n.DepartureDateTime,i=moment.tz("Europe/Stockholm"),r=moment(t).tz("Europe/Stockholm",!0),u=moment.duration(r.diff(i)),f=u.asMinutes();return parseInt(f)};it=function(n){var u=n.Remark.RemarkText,t=u.lastIndexOf(":"),f,i,r;if(t!=-1&&u.length+1>=t)if(i=u.substring(t-2,t),r=u.substring(t+1,t+3),(parseInt(i)||i==="00")&&(parseInt(r)||r==="00")){var p="T"+i+":"+r,o=!n.DepartureDateTime?moment(n.ArrivalDateTime):moment(n.DepartureDateTime),s="T"+o.hour()+":"+o.minute(),h="T"+i+":"+r;f=n.DepartureDateTime.replace(s,h)}else f=!n.DepartureDateTime?n.ArrivalDateTime:n.DepartureDateTime;var c=moment().isDST()?" +0200":" +0100",e=moment(f+c,"YYYY-MM-DDTHH:mm:SS Z"),l=!n.DepartureDateTime?moment(n.ArrivalDateTime):moment(n.DepartureDateTime);e<l&&e.add(24,"hours");var a=moment(),v=moment.duration(e.diff(a)),y=v.asMinutes();return parseInt(y)};n.getPersonalizedItemDisplayOptions=function(n){return"col-xs-12 "+(n.DisplayOptions==="full"?"col-sm-6 col-md-6":n.DisplayOptions==="half"?"col-sm-6 col-md-6":n.DisplayOptions==="quarter"?"col-sm-6 col-md-3":"col-sm-6 col-md-3")};n.getFlights=function(t){n.flights={};o=t;c(h,w,b,t)};n.showLoader=!0;nt();$.when(d).then(function(){c(h,w,b,o)});n.showCheckInButton=function(t,i,r,u){if(u!==sa.utils.currentLanguage())return!1;var f=sa.utils.currentLanguage()==="sv"?r.DesktopCheckinUrlSv:r.DesktopCheckinUrlEn,e=!(r&&!!$.trim(f)),o=t&&_.has(t,"StatusCode")&&t.StatusCode===0,s=flightIsCanceledOrDeparted(i);return e||o||s||n.isArrivals?!1:!0};y=function(n){return n&&n.RemarkText};n.shouldRoll=function(n,t){return y(n)&&showGateStatus(n,t)?!0:!1};n.onlyRemark=function(n,t){return flightIsCanceledOrDeparted(n)||!t&&y(n)?!0:!1};n.onlyGateStatus=function(n,t){return showGateStatus(n,t)&&!y(n)?!0:!1};n.colorFromStatusCode=function(n){var t="";switch(n){case-1:t="remark-status-negative";break;case 1:t="remark-status-positive";break;case 2:t="remark-status-negative"}return t}}]);var flightIsCanceledOrDeparted=function(n){return!!n&&(n.Id==="CNL"||n.Id==="DEP")},flightIsCanceled=function(n){return!!n&&n.Id==="CNL"},flightIsDelayed=function(n){return!!n&&n.StatusCode===2},showGateStatus=function(n,t){return t&&t.GateStatusText&&!flightIsCanceledOrDeparted(n)};$(function(){window.fadeIn=function(){}});window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("FlightsBoardV2BlockController",["$scope","queueTimeService","$interval","PublicFlightsBoardV2Service","$element","$timeout","$sce",function(n,t,i,r,u,f,e){var p,l;n.FlightsBoardV2={};n.FlightsBoardV2.selectedFlight={};n.FlightsBoardV2.flights=[];n.FlightsBoardV2.avaliableDates=[];n.FlightsBoardV2.flightToSubscribe={};n.FlightsBoardV2.doShowTerminals=!1;n.FlightsBoardV2.freeTextFilter="";n.FlightsBoardV2.filterHour="default";n.loaderModel={};n.currentLanguage=sa.utils.currentLanguage();n.currentIata=sa.utils.currentAirportIataCode();n.lastUpdatedTime="";n.FlightsBoardV2.testParams={isDataUpdated:!0,isRequestFailed:!1};n.FlightsBoardV2.isDataUpdated=!0;n.FlightsBoardV2.isRequestFailed=!1;n.FlightsBoardV2.isDateOutOfRange=!1;var a,v,s,c=3e4,k=6e4,o=null,y=null;n.init=function(t){n.FlightsBoardV2.vm=t;p();n.FlightsBoardV2.vm.DisableQueueTimes!==!0&&g();n.FlightsBoardV2.vm.ChatBotIsEnabled===!0&&d();n.FlightsBoardV2.vm.OfferText!==null&&(n.FlightsBoardV2.vm.OfferText=e.trustAsHtml(n.FlightsBoardV2.vm.OfferText));a=n.FlightsBoardV2.vm.IsArrivals?r.GetArrivals:r.GetDepartures;v=n.FlightsBoardV2.vm.IsArrivals?r.ArrivalsIsLatest:r.DeparturesIsLatest;n.FlightsBoardV2.doShowTerminals=t.DoShowTerminals;o=h(o,n.updateFlightData,c)};p=function(){var t,i;try{t=sa.utils.getQueryFromName("testParams");t&&(i=JSON.parse(t),angular.extend(n.FlightsBoardV2.testParams,i))}catch(r){console.log(r)}};l=function(t,i){var r=null;return t&&(r=$.grep(i,function(n){return n.flightId===t})[0]||null),n.FlightsBoardV2.selectedFlight=r||{},!!t};n.updateFlightDataOnRouteChanged=function(t,i,r){var f=i.pathParams.date?i.pathParams.date:n.FlightsBoardV2.vm.TodaysDate,a=r&&r.pathParams.date?r.pathParams.date:n.FlightsBoardV2.vm.TodaysDate,u=!1,e;return i&&i.params&&i.params.flightSearchTerm&&(n.FlightsBoardV2.freeTextFilter=i.params.flightSearchTerm),a!==f?(n.FlightsBoardV2.currentDate=f,u=!0):n.FlightsBoardV2.currentDate||(n.FlightsBoardV2.currentDate=n.FlightsBoardV2.vm.TodaysDate,u=!0),i&&i.pathParams&&i.pathParams.flightId&&s!==i.pathParams.flightId&&(s=i.pathParams.flightId,n.FlightsBoardV2.flights&&n.FlightsBoardV2.flights.length?u||(e=l(s,n.FlightsBoardV2.flights),u=!e):u=!0),u?(o=h(o,n.updateFlightData,c),n.getFlightData(!1)):void 0};n.routeChange=function(t,i,r){n.updateFlightDataOnRouteChanged(t,i,r);n.FlightsBoardV2.showSubscribeOverlay=!1};n.$on("$routeChangeSuccess",n.routeChange);n.diIndicators={domestic:"D",international:"I",schengen:"S"};n.remarkIndicators={negative:"NEGATIVE",positive:"POSITIVE",neutral:"NEUTRAL"};n.colorFromStatusCode=function(t){var i="";switch(t){case n.remarkIndicators.negative:i="remark-status-negative";break;case n.remarkIndicators.positive:i="remark-status-positive";break;case n.remarkIndicators.neutral:i="remark-status-neutral"}return i};n.getFlightData=function(t){var i={date:n.FlightsBoardV2.currentDate,lang:n.currentLanguage,iata:n.currentIata},r=w(i.date);if(b(r),r)return n.loaderModel.show=!t,a(i).then(function(t){if(n.FlightsBoardV2.flights=t.flights,n.FlightsBoardV2.testParams.isRequestFailed)throw new Error("Error provoked by testParams");if(s)var i=l(s,t.flights);n.FlightsBoardV2.currentAirport=t.currentAirport;n.loaderModel.show=!1;n.FlightsBoardV2.timeTicks=t.timeTicks;n.FlightsBoardV2.lastUpdatedTime=t.lastUpdated;n.FlightsBoardV2.isDataUpdated=n.FlightsBoardV2.testParams.isDataUpdated&&n.FlightsBoardV2.lastUpdatedTime.isAfter(moment.utc().add(-15,"m"));n.FlightsBoardV2.isRequestFailed=!1}).catch(function(){n.FlightsBoardV2.isRequestFailed=!0;n.FlightsBoardV2.isDataUpdated=!1;n.FlightsBoardV2.flights=[];n.loaderModel.show=!1})};n.updateFlightData=function(){var t={date:n.FlightsBoardV2.currentDate||n.FlightsBoardV2.vm.TodaysDate,iata:n.currentIata,timeTicks:n.FlightsBoardV2.timeTicks||0},i=w(t.date);if(b(i),i)return v(t).then(function(t){return(o=h(o,n.updateFlightData,c),!t.IsLatest)?n.getFlightData(!0):t}).catch(function(){o=h(o,n.updateFlightData,c)})};var w=function(n){var t=sa.utils.getQueryFromName("debug");if(t&&t.toLowerCase()==="true")return!0;var i=moment.utc(n,"YYYY-MM-DD",!0),r=moment.utc().add(-2,"days"),u=moment.utc().add(7,"days");return i.isAfter(r)&&i.isBefore(u)},b=function(t){t===!1?(n.loaderModel.show=!1,n.FlightsBoardV2.flights=[],n.FlightsBoardV2.isDateOutOfRange=!0,n.FlightsBoardV2.selectedFlight=null):n.FlightsBoardV2.isDateOutOfRange=!1},d=function(){n.FlightsBoardV2.subscribeToFlight=function(t,i){i=typeof i!="undefined"?i:!1;$(u).find(".facebook-subscription-modal").scope().showModal(t,n.FlightsBoardV2.vm.IsArrivals,n.FlightsBoardV2.currentDate,i)}},h=function(n,t,i){return f.cancel(n),f(t,i)},g=function(){n.FlightsBoardV2.queueTimes=[];n.updateQueueTimes=function(){return t.GetQueueTimes().then(function(t){n.FlightsBoardV2.queueTimes=t;y=h(y,n.updateQueueTimes,k)})};n.updateQueueTimes()}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("FlightsBoardWithQueueTimesController",["$scope","queueTimeService",function(n,t){n.terminals=[];n.showMapPointer=!1;t.GetQueueTimes().then(function(t){var i=$.grep(t,function(n){return n.HasTerminalMap===!0});n.showMapPointer=i.length>0&&t.length!==1?!0:!1;n.terminals=t});n.getNumOfTerminals=function(n){if(n){var t=n.length;if(t===0)return"no-terminals";if(t===1)return"one-terminal";if(t===2)return"two-terminals";if(t>2&&t<=4)return"three-to-four-terminals";if(t>=5)return"five-or-more-terminals"}return""}}]);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||{};newsContainers=window.newsContainers||{};swedaviaApp.service("importantAnnouncementsService",["$http",function(n){var t=function(n){return n.data},i=function(n){return console.log(n),""};this.setCrisisModeOn=function(r){return n.post("/services/importantannouncements/setcrisismodeon",{selectedSitesData:r}).then(t,i)};this.setCrisisModeOff=function(){return n.post("/services/importantannouncements/setcrisismodeoff").then(t,i)};this.unPublishNewsContainer=function(r){return n.post("/services/importantannouncements/unpublishnewscontainer",{newsContainerData:r}).then(t,i)};this.deleteNewsContainer=function(r){return n.post("/services/importantannouncements/deletenewscontainer",{newsContainerData:r}).then(t,i)};this.saveTemplate=function(t){return n({url:"/services/importantannouncements/createnewscontainertemplates",data:t,method:"POST",headers:{"Content-Type":"application/json"}})};this.publishNewsContainer=function(t){return n({url:"/services/importantannouncements/publishnewscontainer",data:t,method:"POST",headers:{"Content-Type":"application/json"}})}}]).directive("bindcalendarbutton",["$filter",function(n){return{restict:"AEC",replace:!0,link:function(t,i){var r=$(".input-group",i);angular.forEach(r,function(t){angular.element(t).datetimepicker({locale:"sv",allowInputToggle:!0,focusOnShow:!0,showClose:!0}).on("dp.change",function(i){angular.element("input",t).value=n("date")(i.date.format(),"yyyy-MM-dd HH:mm");angular.element("input",t).trigger("change")})})}}}]).directive("formatinputdate",["$filter",function(n){return{require:"ngModel",restict:"AEC",link:function(t,i){t.$watch(function(){return i[0].value},function(t){return i[0].value=n("date")(t,"yyyy-MM-dd HH:mm")})}}}]).controller("importantAnnouncementsAdminController",["$scope","$compile","$filter","importantAnnouncementsService","$sce","$timeout",function(n,t,i,r,u,f){function s(n,t,i){var u,h,r,f;if(i.indexOf("<"+t+">")>=0){var e="",o="",s="";for(t=="b"?(e=/<b(?:.*?)>(?:.*?)<\/b>/g,o="<strong>",s="<\/strong>"):(e=/<i(?:.*?)>(?:.*?)<\/i>/g,o="<em>",s="<\/em>"),u=i.match(e),h=u.length,r=0;r<h;r++)f=$(u[r]).text(),f=o+f+s,i=i.replace(u[r],f);$(n).summernote("code",i)}}var o,e,h;n.newsContainers=newsContainers.NewsContainers;n.newsContainer=null;n.editNewsContainer=null;n.newsContainerTemplates=newsContainers.NewsContainerTemplates;o=function(n,t){var i={};return $.each(n,function(n,r){i[r[t]]=r}),i};n.newsChannels=o(newsContainers.NewsChannels,"ChannelId");n.isSiteInCrisisMode=newsContainers.IsSiteInCrisisMode;n.crisisConfirm={text:""};n.texts={heading:{sv:"Rubrik",en:"Headline"},body:{sv:"Text",en:"Text"},typeHere:{sv:"Skriv här...",en:"Type here..."},language:{sv:"svenska",en:"engelska"},link:{sv:"Länk-url",en:"Link Url"},linkTitle:{sv:"Länktext",en:"Link text"}};e=!1;n.summernoteOptions={height:300,toolbar:[["style",["bold","italic","clear"]],["insert",["link"]],["view",["codeview"]]],placeholder:n.texts.typeHere.sv,callbacks:{onChange:function(n){s(this,"b",n);s(this,"i",n)},onInit:function(t){var r=$(this),i=r.attr("data-language");i&&t.editingArea.find(".note-placeholder").text(n.texts.typeHere[i])},onPaste:function(n){var t,i;document.queryCommandSupported("insertText")?(t=((n.originalEvent||n).clipboardData||window.clipboardData).getData("Text"),n.preventDefault(),setTimeout(function(){document.execCommand("insertText",!1,t)},10)):(i=window.clipboardData.getData("text"),e?e=!1:(e=!0,setTimeout(function(){document.execCommand("paste",!1,i)},10),n.preventDefault()))}}};n.states={start:{stateName:"start"},createNews:{stateName:"createNews",heading:"Skapa meddelande"},editNews:{stateName:"editNews"},confirmCrisis:{stateName:"confirmCrisis",heading:"Skapa ett krisläge",preamble:u.trustAsHtml("<p>Krisläget skall endast aktiveras under mycket allvarliga omständigheter (såsom olyckor eller attentat).<\/p><p>Krisläget innebär att flygplatsstartsidorna döljer allt innehåll förutom krismeddelandet.<\/p><p>Om du är säker på att krisläget ska aktiveras kan du gå vidare.<\/p>")},editCrisis:{stateName:"editCrisis",heading:"Ändra krisläge"},preview:{stateName:"preview",heading:"Förhandsgranska"}};n.state=null;n.publishNewsContainerFeedback=[];n.setOrderProperty=function(t){n.orderProperty=n.orderProperty===t?"-"+t:n.orderProperty==="-"+t?t:t};n.arrowClass="glyphicon glyphicon-menu-up";n.changeArrowClass=function(){n.arrowClass=n.arrowClass==="glyphicon glyphicon-menu-up"?"glyphicon glyphicon-menu-down":"glyphicon glyphicon-menu-up"};n.init=function(t){n.limit=t.limit;n.states.start.heading=t.heading;n.state=n.states.start;var i=sa.utils.getQueryFromName("templateGuid");i&&$.each(n.newsContainers,function(t,r){r.NewsContainerGuid===i&&n.setNewsContainer(r)})};n.setCrisisContainer=function(t){n.sites=angular.copy(t.ExternalWebsite.Sites)};n.setCrisisEditContainer=function(){n.sites=angular.copy(n.setCrisisSites())};n.setNewsContainer=function(t){n.newsContainer=t;n.editNewsContainer=angular.copy(t);$.each(n.editNewsContainer.News,function(t,i){var r=null;$.each(i.NewsContents,function(t,u){n.newsChannels[i.ChannelId].HasLinkSupport===!1?u.Body=h(u.Body):(u.Link="",u.LinkTitle="");r=r?r:u.Sites;u.Sites=r})});n.state=n.states.editNews;window.scrollTo(0,0)};h=function(n){return n.replace(/<\s*(br).*?>|<\s*\/\s*(p)\s*>/g,"\n").replace(/<\s*(a|b|i|p|em).*?>|<\s*\/\s*(a|b|i|em)\s*>/g,"").replace(/&nbsp;/g," ")};n.unsetNewsContainer=function(){n.newsContainer=null;n.editNewsContainer=null;n.state=n.states.start};n.backToStart=function(){n.unsetNewsContainer();window.scrollTo(0,0)};n.backToEdit=function(){n.state=n.states.editNews};n.getSelectedSiteNames=function(n){var t=[];return angular.forEach(n,function(n){n.IsSelectedForCurrentNewsContent&&t.push(n.Name)}),t};n.getselectedSiteIds=function(t,i){var r,u;return i===!0?($.each(n.sites,function(n,t){t.IsSelectedForCurrentNewsContent=!0}),r=n.sites):r=t,u=[],angular.forEach(r,function(n){n.IsSelectedForCurrentNewsContent&&u.push(n.Id)}),u};n.getCrisisSiteNames=function(){var i=n.isSiteInCrisisMode,r=n.newsChannels.ExternalWebsite.Sites,t=[];return $.each(r,function(n,r){jQuery.inArray(r.Id,i)!==-1&&t.push(r.Name)}),t};n.setCrisisSites=function(){var i=n.isSiteInCrisisMode,t=n.newsChannels.ExternalWebsite.Sites;return $.each(t,function(n,t){jQuery.inArray(t.Id,i)!==-1&&(t.IsSelectedForCurrentNewsContent=!0)}),t};n.openPreviewMode=function(){n.isOpeningPreviewMode=!0;n.states.preview.warnings=[];n.editNewsContainer.StartPublishDate||n.states.preview.warnings.push("Inget Från-datum är valt. Det innebär att meddelandet kommer att publiceras direkt.");var t=function(t,i,r,u){var f="Egenskapen '"+u+"' har inget värde på "+i+" i kanalen '"+t+"'. Detta trots att den är satt att visas på siterna "+r.join(", ")+".";n.states.preview.warnings.push(f)};$.each(n.editNewsContainer.News,function(i,r){var u=n.newsChannels[r.ChannelId].Name;$.each(r.NewsContents,function(i,r){var f=[];$.each(r.Sites,function(n,t){t.IsSelectedForCurrentNewsContent&&f.push(t.Name)});f.length>0&&(r.Body||t(u,n.texts.language[r.Language],f,n.texts.body[r.Language]),r.HeadLine||t(u,n.texts.language[r.Language],f,n.texts.heading[r.Language]))})});f(function(){n.state=n.states.preview;window.scrollTo(0,0);n.isOpeningPreviewMode=!1})};n.createTemplate=function(){n.state=n.states.createNews};n.cancelCreateTemplate=function(){n.state=n.states.start};n.initiateCrisisMode=function(){n.state=n.states.confirmCrisis};n.initiateEditCrisisMode=function(){n.state=n.states.editCrisis};n.activateCrisisMode=function(t,i){var u=n.getselectedSiteIds(t,i);u.length===0?alert("Minst en webbplats måste väljas!"):r.setCrisisModeOn(u).then(function(t){t===""?alert("Ett fel inträffade, det gick inte att starta krisläge"):(n.isSiteInCrisisMode=u,n.state=n.states.createNews)})};n.editCrisisMode=function(t,i){var u=n.getselectedSiteIds(t,i);u.length===0?(n.backToStart(),r.setCrisisModeOff().then(function(t){t===""?alert("Ett fel inträffade, det gick inte att avbryta krisläge"):(n.isSiteInCrisisMode=u,n.backToStart())})):r.setCrisisModeOn(u).then(function(t){t===""?alert("Ett fel inträffade, det gick inte att starta krisläge"):(n.isSiteInCrisisMode=u,n.backToStart())})};n.cancelCrisisMode=function(){r.setCrisisModeOff().then(function(t){t===""?alert("Ett fel inträffade, det gick inte att stoppa krisläge"):n.isSiteInCrisisMode=[]})};n.getChannelName=function(t){return n.newsContainers.each(function(n){if(n.ChannelId===t)return n.Name}),t};n.getAsHtml=function(n){return sa.utils.isHTML(n)||(n=$("<p>").text(n)[0].outerHTML),u.trustAsHtml(n)};n.newsItemOrderFunction=function(t){var i=t.ChannelId,r=n.newsChannels[i];return r.SortOrder};n.isSiteSelected=function(n,t){var i=!1;return t.Sites.forEach(function(t){t.Id===n&&(i=!0)}),i};n.toggleSelectSites=function(n,t){angular.element(t).each(function(t){t.checked=n.checked})};n.checkAll=function(n){var t=n.Sites;angular.forEach(t,function(t){t.IsSelectedForCurrentNewsContent=n.isAllSelected})};n.updateCheckAll=function(n){n.isAllSelected=!0;var t=n.Sites;angular.forEach(t,function(t){t.IsSelectedForCurrentNewsContent||(n.isAllSelected=!1)})};n.unPublishNewsContainer=function(n){confirm("Vill du verkligen avpublicera nyheten?")&&r.unPublishNewsContainer(n).then(function(n){n===""?alert("Ett fel inträffade, det gick inte att avpublicera nyheten"):window.location=window.location.pathname})};n.deleteNewsContainer=function(n){confirm("Vill du verkligen ta bort nyheten?")&&r.deleteNewsContainer(n).then(function(n){n===""?alert("Ett fel inträffade, det gick inte att ta bort nyheten"):window.location=window.location.pathname})};n.saveTemplate=function(){var t=angular.toJson({newsContainers:n.newsContainerTemplates});r.saveTemplate(t).then(function(n){n===""?alert("Ett fel inträffade, det gick inte att spara nyheten"):window.location.href=window.location.pathname+"?"+$.param({templateGuid:n.data})})};n.publishNewsContainer=function(){var u=JSON.stringify({newsContainer:n.editNewsContainer}),i,t;n.isPublishingNewsContainer=!0;n.publishNewsContainerFeedback=[];i=function(i){var r,u;i.data===""?(r={status:i.status,data:{Message:"Ett fel inträffade under publiceringen! Be en utvecklare kolla loggen för följande tidpunkt: "+moment().format()}},t(r)):(u={status:"success",text:"Nyheten publicerades! Du skickas nu vidare till startvyn."},n.publishNewsContainerFeedback.push(u),f(function(){window.location=window.location.pathname},2e3))};t=function(t){var i,r;console.log(t);t.status===401?(i={status:"fail",text:"Det gick inte att publicera nyheten på grund av bristande behörighet. Troligen har du loggats ut. Testa att logga in igen i ett separat fönster, försök sen att publicera igen."},n.publishNewsContainerFeedback.push(i)):(r={status:"fail",text:"Något gick snett :(! Testa en gång till. Felinformation: Status: '"+t.status+"', Statustext: '"+t.statusText+"', Meddelande: '"+(t.data&&t.data.Message?t.data.Message:"")+"'."},n.publishNewsContainerFeedback.push(r))};r.publishNewsContainer(u).then(i).catch(t).finally(function(){n.isPublishingNewsContainer=!1})}}]);$(document).ready(function(){var n,t=function(){clearTimeout(n);n=setTimeout(function(){$(window).width()>=992?$("#newsListItemList").removeClass("collapse"):$("#newsListItemList").addClass("collapse")},200)};$(window).bind("resize",function(){t()});t();$("#ImportantAnnouncementsAdminPage").length&&(window.jQuery.summernote.options.modules.linkDialog=function(n){var t=this,i=$.summernote.ui,f=n.layoutInfo.editor,r=n.options,u=r.langInfo;this.initialize=function(){var n=r.dialogsInBody?$(document.body):f,t='<div class="form-group note-form-group"><label class="note-form-label">'+u.link.textToDisplay+'<\/label><input class="note-link-text form-control  note-form-control  note-input" type="text" /><\/div><div class="form-group note-form-group"><label class="note-form-label">'+u.link.url+'<\/label><input class="note-link-url form-control note-form-control note-input" type="text" value="http://" /><\/div>'+(r.disableLinkTarget?"":$("<div/>").append(i.checkbox({id:"sn-checkbox-open-in-new-window",text:u.link.openInNewWindow,checked:!0}).render()).html()),e='<button href="#" class="btn btn-primary note-btn note-btn-primary note-link-btn disabled" disabled>'+u.link.insert+"<\/button>";this.$dialog=i.dialog({className:"link-dialog",title:u.link.insert,fade:r.dialogsFade,body:t,footer:e}).render().appendTo(n)};this.destroy=function(){i.hideDialog(this.$dialog);this.$dialog.remove()};this.bindEnterKey=function(n,t){n.on("keypress",function(n){n.keyCode===key.code.ENTER&&t.trigger("click")})};this.toggleLinkBtn=function(n,t,r){i.toggleBtn(n,t.val()&&r.val())};this.showLinkDialog=function(r){return $.Deferred(function(u){var f=t.$dialog.find(".note-link-text"),e=t.$dialog.find(".note-link-url"),o=t.$dialog.find(".note-link-btn"),s=t.$dialog.find("input[type=checkbox]");i.onDialogShown(t.$dialog,function(){var h,c,l;n.triggerEvent("dialog.shown");f.val(r.text);h=function(){t.toggleLinkBtn(o,f,e);r.text=f.val()};f.on("input",h).on("paste",function(){setTimeout(h,0)});c=function(){t.toggleLinkBtn(o,f,e);r.text||f.val(e.val())};e.on("input",c).on("paste",function(){setTimeout(c,0)}).val(r.url).trigger("focus");t.toggleLinkBtn(o,f,e);t.bindEnterKey(e,o);t.bindEnterKey(f,o);l=r.isNewWindow!==undefined?r.isNewWindow:n.options.linkTargetBlank;s.prop("checked",l);o.one("click",function(n){n.preventDefault();u.resolve({range:r.range,url:e.val(),text:f.val(),isNewWindow:s.is(":checked")});i.hideDialog(t.$dialog)})});i.onDialogHidden(t.$dialog,function(){f.off("input paste keypress");e.off("input paste keypress");o.off("click");u.state()==="pending"&&u.reject()});i.showDialog(t.$dialog)}).promise()};this.show=function(){var t=n.invoke("editor.getLinkInfo");n.invoke("editor.saveRange");this.showLinkDialog(t).then(function(t){n.invoke("editor.restoreRange");n.invoke("editor.createLink",t)}).fail(function(){n.invoke("editor.restoreRange")})};n.memo("help.linkDialog.show",r.langInfo.help["linkDialog.show"])})});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(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.vm.ShowAllParkingsInHeroAreaBool?n.filteredParkingCards.length>n.parkingCardsLimit:!0});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||{};pointsOfInterestModel=window.pointOfInterests||{};pointsOfInterestModel.setPointOfInterestContainerHeight=function(n){var t=0;n&&($.each(n,function(){var n=$(this),r=$(".pointOfInterestLogo",n).outerHeight(!0),u=$(".pointOfInterestInformation",n).outerHeight(!0),f=$(".pointOfInterestListPreamble",n).outerHeight(!0),i=r+u+f;i>t&&(t=i);sa.utils.isMobileWidth()&&$(this).height(i)}),sa.utils.isMobileWidth()||$.each(n,function(){$(this).height(t)}))};swedaviaApp.controller("pointOfInterestListOldController",["$scope","$element","$filter",function(n,t,i){var u=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},r,f;n.PointOfInterests=pointsOfInterestModel.PointOfInterestGroupItems;n.Terminals=pointsOfInterestModel.Terminals;n.Categories=pointsOfInterestModel.Categories;$("#filterContainerCategory").length===0?n.selectedCategory=n.selectedCategory?n.selectedCategory.split(","):"":(r=u(n.Categories,"category"),r===""&&(r=pointsOfInterestModel.PointOfInterestCategoryFilter),n.selectedCategory=r);n.selectedTerminal=u(n.Terminals,"terminal",{keyName:"Id",valueName:"Name"});n.updateUrl=function(){var t=["?category="+(n.selectedCategory===""?"null":n.selectedCategory),"terminal="+(n.selectedTerminal===""?"null":n.selectedTerminal)];history.replaceState({},null,t.join("&"))};f=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};n.filterByCategoryAndTerminal=function(t){return(t.Terminals.indexOf(n.selectedTerminal)!==-1||n.selectedTerminal===""||n.selectedTerminal===null)&&(f(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 r=i("filter")(n.Terminals,{Id:t});return r[0]?r[0].Name:""};n.printedCategoriesFilter=function(t){return n.selectedCategory==null?!0:n.selectedCategory.indexOf(t)!==-1?!0:!1};$(".pointOfInterestListBlockOld").length>0&&$(window).resize(function(){var n=$(t).find(".pointOfInterestContainerItem");pointsOfInterestModel.setPointOfInterestContainerHeight(n)})}]).directive("equalizeHeight",function(){return{restrict:"AEC",priority:10,link:function(n,t){angular.element("img",t).bind("load",function(){var n=$(t).parents(".pointOfInterestListContainer").find(".pointOfInterestContainerItem");pointsOfInterestModel.setPointOfInterestContainerHeight(n)})}}});window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("queueTimeBlockController",["$scope","$interval","queueTimeService",function(n,t,i){var r=function(t){n.showSpinner=!1;n.terminals=t},u=function(){return i.GetQueueTimes()};u().then(r);t(function(){u().then(r)},6e4);n.showSpinner=!0;n.renderName=i.RenderLocationOrQueueName}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.controller("QueueTimesPageController",["$scope","$sce","$filter","$interval","queueTimeService",function(n,t,i,r,u){function f(t){var r={useVersion:2,lang:"sv",iata:t,onlyWebQueues:!1,showDisabledQueues:!0};u.GetQueueTimes(r).then(function(t){var o,s,f,e;n.terminals=t.QueueTimesList;n.queueTimesDisabled=t.QueueTimesDisabled;n.queueTimesReplacementMessageSwedish=t.QueueTimesReplacementMessage;o=i("filter")(t.QueueTimesList,{Id:n.primaryTerminalId})[0];s=i("filter")(t.QueueTimesList,{Id:n.secondaryTerminalId})[0];n.primaryTerminal=angular.extend(n.primaryTerminal,o);n.secondaryTerminal=angular.extend(n.secondaryTerminal,s);n.primaryTerminal&&n.primaryTerminal.Interval&&(f=n.prepareInterval(n.primaryTerminal.Interval),n.primaryTerminal.intervalPrefixSwedish=f[0],n.primaryTerminal.intervalTextSwedish=f[1]);n.secondaryTerminal&&n.secondaryTerminal.Interval&&(e=n.prepareInterval(n.secondaryTerminal.Interval),n.secondaryTerminal.intervalPrefixSwedish=e[0],n.secondaryTerminal.intervalTextSwedish=e[1]);console.log("Terminals: ",n.primaryTerminalId,n.primaryTerminal,n.secondaryTerminalId,n.secondaryTerminal);r.lang="en";u.GetQueueTimes(r).then(function(t){var r,u,e,f;n.queueTimesReplacementMessageEnglish=t.QueueTimesReplacementMessage;r=i("filter")(t.QueueTimesList,{Id:n.primaryTerminalId})[0];r&&r.Interval&&(u=n.prepareInterval(r.Interval),n.primaryTerminal.intervalPrefixEnglish=u[0],n.primaryTerminal.intervalTextEnglish=u[1]);e=i("filter")(t.QueueTimesList,{Id:n.secondaryTerminalId})[0];r&&r.Interval&&(f=n.prepareInterval(e.Interval),n.secondaryTerminal.intervalPrefixEnglish=f[0],n.secondaryTerminal.intervalTextEnglish=f[1])})})}n.terminals=[];n.primaryTerminalId=PrimaryTerminalId?PrimaryTerminalId:"";n.secondaryTerminalId=SecondaryTerminalId?SecondaryTerminalId:"";n.displayDual=DisplayDual?DisplayDual:!1;n.primaryArrow=PrimaryArrow?PrimaryArrow:"";n.secondaryArrow=SecondaryArrow?SecondaryArrow:"";n.primaryTerminal={};n.secondaryTerminal={};n.headerTextSwedish=t.trustAsHtml("Beräknad väntetid");n.headerTextEnglish=t.trustAsHtml("Estimated waiting time");n.subHeaderSwedish=t.trustAsHtml("säkerhetskontroll");n.subHeaderEnglish=t.trustAsHtml("security control");n.headerDetailsSwedish=t.trustAsHtml("Alla avgångar Terminal 5");n.headerDetailsEnglish=t.trustAsHtml("All departures Terminal 5");n.headerText=n.headerTextSwedish;n.subHeaderText=n.subHeaderSwedish;n.headerDetails=n.headerDetailsSwedish;n.queueTimesDisabled=!1;n.queueTimesReplacementMessageSwedish="";n.queueTimesReplacementMessageEnglish="";n.queueTimesReplacementMessage="";n.address=window.location.protocol+window.location.hostname+window.location.pathname;n.swedishAndEnglishHeaderText=function(){r(n.switchLanguage,4e3)};n.switchLanguage=function(){n.headerText===n.headerTextSwedish?(n.headerText=n.headerTextEnglish,n.subHeaderText=n.subHeaderEnglish,n.headerDetails=n.headerDetailsEnglish,n.queueTimesReplacementMessage=n.queueTimesReplacementMessageEnglish,n.primaryTerminal&&(n.primaryTerminal.IntervalPrefix=n.primaryTerminal.intervalPrefixEnglish,n.primaryTerminal.IntervalText=n.primaryTerminal.intervalTextEnglish,n.primaryTerminal.displayName=n.primaryTerminal.DisplayNameEnglish),n.secondaryTerminal&&(n.secondaryTerminal.IntervalPrefix=n.secondaryTerminal.intervalPrefixEnglish,n.secondaryTerminal.IntervalText=n.secondaryTerminal.intervalTextEnglish,n.secondaryTerminal.displayName=n.secondaryTerminal.DisplayNameEnglish)):(n.headerText=n.headerTextSwedish,n.subHeaderText=n.subHeaderSwedish,n.headerDetails=n.headerDetailsSwedish,n.queueTimesReplacementMessage=n.queueTimesReplacementMessageSwedish,n.primaryTerminal&&(n.primaryTerminal.IntervalPrefix=n.primaryTerminal.intervalPrefixSwedish,n.primaryTerminal.IntervalText=n.primaryTerminal.intervalTextSwedish,n.primaryTerminal.displayName=n.primaryTerminal.DisplayName),n.secondaryTerminal&&(n.secondaryTerminal.IntervalPrefix=n.secondaryTerminal.intervalPrefixSwedish,n.secondaryTerminal.IntervalText=n.secondaryTerminal.intervalTextSwedish,n.secondaryTerminal.displayName=n.secondaryTerminal.DisplayName))};n.prepareInterval=function(n){var t,r,i,u,f;if(!n)return["",""];if(!isNaN(n[0]))return["",n];for(t=0;n[t]<"0"||n[t]>"9";t++);return r=t===n.length?0:t,i=n.slice(0,r),i.length>0&&(i=i[0].toUpperCase()+i.slice(1)),u=n.slice(r),f=[i.trim(),u.trim()],f};n.splitOnFirstNumber=function(n){for(var t=0;n[t]<0||n[t]>9;t++);return t===n.length?-1:t};n.getUrl=function(t,i,r){var u=[];return u.push(`pid=${t==="first"?i:n.primaryTerminalId}`),u.push(`pa=${t==="first"?r:n.primaryArrow}`),n.displayDual&&(u.push(`sid=${t==="first"?n.secondaryTerminalId:i}`),u.push(`sa=${t==="first"?n.secondaryArrow:r}`),u.push(`dual=${n.displayDual}`)),u.join("&")};n.init=function(t){$("html").css("overflow-y","hidden");f(t);r(function(){f(t)},6e4);n.swedishAndEnglishHeaderText()};var e=moment().format("DD");r(function(){var n=moment().format("HH"),t=moment().format("DD");n==="04"&&t!==e&&window.location.reload(!0)},3e5)}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.service("searchService",function(){return{}});swedaviaApp.filter("modifyFirstLetterInDate",function(){return function(n){return sa.utils.currentLanguage()==="sv"?n.toLowerCase():n}});swedaviaApp.directive("bindfindtrackevent",["$http",function(n){return{restict:"AEC",replace:!0,link:function(t,i){var r=angular.element(i);r.on("click",function(){var t=r.data("hitid"),i=r.closest(".searchBar-resultContainer__page").data("query"),u={Query:i,HitId:t};n({method:"POST",url:"/services/find/track",headers:{"Content-Type":"application/json"},data:JSON.stringify(u)});return})}}}]);swedaviaApp.controller("searchBarController",["$scope","$element","searchService","$sce",function(n,t,i,r){var s,u,f,c;n.showIcon=!0;n.wrongInput=!1;n.isOnSwedaviaPage=sa.utils.currentAirportIataCode().toLowerCase()==="swedavia";s=sa.utils.currentLanguage()==="zh"?1:2;n.init=function(t){n.vm=t};n.highlight=function(t){if(n.searchInput.length<2)return r.trustAsHtml(t);if(t===undefined)return r.trustAsHtml("");var i=$.ui.autocomplete.escapeRegex(n.searchInput);return r.trustAsHtml(t.replace(new RegExp(i,"gi"),"<strong>$&<\/strong>"))};n.highlight2=function(t,i){var u=t+" ("+i+")",f;return n.searchInput.length<s?r.trustAsHtml(u):t===undefined||i===undefined?r.trustAsHtml(""):(f=$.ui.autocomplete.escapeRegex(n.searchInput),r.trustAsHtml(u.replace(new RegExp(f,"gi"),"<strong>$&<\/strong>")))};i.searchResult={};var o=function(){n.showSpinner=!n.showSpinner;n.showIcon=!n.showIcon;n.$apply()},e=function(){n.showSpinner=!1;n.showIcon=!0},h=function(){n.arrivalsSearchResult={};n.departuresSearchResult={};n.pagesSearchResult={};n.singleColumnResults={};n.showPagesLoader=!0;n.showFlightsLoader=!0;n.noResultsPages=!1;n.noResultsDepartures=!1;n.noResultsArrivals=!1;n.errorGettingFlights=!1;n.hideDeparturesButton=!0;n.hideArrivalsButton=!0};n.isOnSearchPage=!1;angular.element("#searchPage").length!==0&&(n.isOnSearchPage=!0);n.closeSearchBar=function(){u&&(u.abort(),n.isOnSwedaviaPage||f.abort());e();h();n.searchInput="";n.showClose=!1;n.showResults=!1};n.closeSearchBarbutton=function(){u&&(u.abort(),n.isOnSwedaviaPage||f.abort());e();h();n.searchInput="";n.showClose=!1;n.showResults=!1;$(".search-area").removeClass("focus")};n.hideMenuOnClick=function(){u&&(u.abort(),n.isOnSwedaviaPage||f.abort());e();n.showResults=!1};n.handleSearchInputChange=function(){e();u&&(u.abort(),n.isOnSwedaviaPage||f.abort());n.showClose=n.searchInput.length>0;n.searchInput.length===0&&n.closeSearchBar()};c=function(r){var a,s,h,c,l;r.term=r.term.trim();a=new RegExp("^[^!\"#¤%&/()=?½§`@£$€{}^*,.\\-_:;'<>~+|\\[\\]]+$");a.test(r.term)||(e(),n.wrongInput=!0,n.showResults=!0,n.$apply());n.wrongInput===!1&&(i.searchResult.SearchQuery=r.term,s=sa.utils.currentAirportIataCode(),h=sa.utils.currentLanguage(),s||(s="swedavia"),c=["/services/find"],c.push("performsearch",n.vm.CurrentStartPageId,r.term,h),n.arrivalsLink=t.find(".searchBar-resultContainer").data("arrivalslink"),n.departuresLink=t.find(".searchBar-resultContainer").data("departureslink"),n.arrivalsLinkForV2Query=t.find(".searchBar-resultContainer").data("arrivalslinkforv2query"),n.departuresLinkForV2Query=t.find(".searchBar-resultContainer").data("departureslinkforv2query"),u=$.ajax(c.join("/"),{responseType:"json"}),u.then(function(t){n.searchLink=t.SearchResultPageLink;n.arrivalsLink=t.AllArrivalsLink;n.departuresLink=t.AllDeparturesLink;i.searchResult=_.extend(i.searchResult,t);n.isOnSwedaviaPage||f.status===200||o();n.isOnSwedaviaPage&&o();n.isOnSearchPage||(t.Pages.length>=5&&(t.Pages=t.Pages.splice(0,5),n.showAllResults=!0),t.Pages.length===0&&(n.noResultsPages=!0),n.pagesSearchResult=t.Pages);n.showPagesLoader=!1;n.showResults=!0;n.$apply()}).fail(function(){i.searchResult=_.extend(i.searchResult,{Pages:[]});n.noResultsPages=!0;n.showPagesLoader=!1;n.showResults=!0}),l=["/services/publicflightsboard"],l.push("getflightsfindresults",s,r.term,h),n.generateUrlForButton=function(n,t,i,r){var u="",f,e,o;return i&&i.length>3?(f="?flightSearchTerm="+t,e=i[0].Date,moment().isBefore(e,"day")&&(r?f=e+"/"+f:f+="&flightDate="+e),u=(r||n)+f):u=n,u.indexOf("?")>u.indexOf("#")&&(o=u.split(/\#|\?/),u=o[0]+"?"+o[2]+"#"+o[1]),u},n.isOnSwedaviaPage||(f=$.ajax(l.join("/"),{responseType:"json"}),f.then(function(t){u.status!==200&&o();n.isOnSearchPage||(n.arrivalsSearchResult=t.Arrivals,n.departuresSearchResult=t.Departures);t.Arrivals.length===0?n.noResultsArrivals=!0:n.hideArrivalsButton=!1;t.Departures.length===0?n.noResultsDepartures=!0:n.hideDeparturesButton=!1;i.searchResult=_.extend(i.searchResult,t);n.arrivalsResultButton=n.arrivalsSearchResult.length>3?sa.translate("header/searchbar/viewallarrivalsfor").format(r.term):sa.translate("header/searchbar/viewallarrivals");n.departuresResultButton=n.departuresSearchResult.length>3?sa.translate("header/searchbar/viewalldeparturesfor").format(r.term):sa.translate("header/searchbar/viewalldepartures");n.showFlightsLoader=!1;n.showResults=!0;n.$apply()}).fail(function(){i.searchResult=_.extend(i.searchResult,{Arrivals:[],Departures:[]});n.errorGettingFlights=!0;n.noResultsArrivals=!1;n.noResultsDepartures=!1;n.hideDeparturesButton=!0;n.hideArrivalsButton=!0;n.showFlightsLoader=!1;n.showResults=!0})))};t.find(".searchBarInput").autocomplete({source:function(t,i){n.showResults=!1;h();n.wrongInput=!1;t.term.trim().length>s&&(o(),i(c(t,i)))}}).prop("disabled",!1);t.find(".searchBar-searchField__close").on("click",function(t){$(t.target).closest("#SearchBar").length||(n.showResults=!1,n.$apply())});window.onload=function(){var i=sa.utils.getQueryFromName("searchquery");i&&(n.searchInput=i,n.$apply(),t.find(".searchBarInput").autocomplete("search"))}}]);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("currencyService",["$http",function(n){this.getCurrencyRates=function(){var t=["/services/currency"];return t.push("getrates"),n.get(t.join("/"),{responseType:"json"}).then(function(n){return n.data})}}]);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(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,"hours"),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"><span ng-click="hideIframe()" class="glyphicon glyphicon-remove gtm-closePaymentWindow" aria-hidden="true"><\/span><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("PublicFlightsBoardV2Mapper",[function(){var f=sa.utils.currentLanguage(),t=this,c=moment.utc("2019-03-31 01:00");t.MapArrivals=function(n){return i(n,!0)};t.MapDepartures=function(n){return i(n,!1)};var i=function(n,t){return{timeTicks:n.timeTicks,flights:s({flights:n.flights,isArrival:t}),currentAirport:e(n,t),numberOfFlights:n.numberOfFlights,lastUpdated:sa.dateTimeUtils.convertUtcStringToSwedishTime(n.lastUpdated)}},e=function(t,i){var r={};return i&&t.to&&(r.iata=t.to.arrivalAirportIata,r.icao=t.to.arrivalAirportIcao,r.name=n(t.to,"arrivalAirport")),!i&&t.from&&(r.iata=t.from.departureAirportIata,r.icao=t.from.departureAirportIcao,r.name=n(t.from,"departureAirport")),r},n=function(n,t){return f==="sv"?n[t+"Swedish"]:n[t+"English"]},o=function(n,t){var i="";return n&&(i+=n,t&&(i+="-"+t)),i},r=function(n,t){var i={};if(n&&(i.scheduledUtc=n,i.scheduledTimeStr=sa.dateTimeUtils.convertUtcStringToSwedishTime(n).format("HH:mm")),t&&(i.estimatedUtc=t,i.estimatedTimeStr=sa.dateTimeUtils.convertUtcStringToSwedishTime(t).format("HH:mm")),n&&t){var u=moment.utc(t),f=moment.utc(n),e=moment.duration(u.diff(f)),r=e.asMinutes();i.showEstimatedTime=r>5;i.isLate=r>=15}return i},s=function(n){var i=[],t=n.flights;for(var r in t)try{i.push(u(t[r],n.isArrival))}catch(f){console.log('Failed to map flight "'+t[r].flightId+'"');console.log(f)}return i},h=function(t){var i=[];for(var r in t)i.push({airportIATA:t[r].airportIATA,airportName:n(t[r],"airport")});return i},u=function(t,i){if(typeof t!="object"||typeof i!="boolean")throw"Unable to instantiate flight object; one or more parameters is missing";var u={flightId:t.flightId,airlineOperator:t.airlineOperator,locationAndStatus:{gate:t.locationAndStatus.gate,flightLegStatus:t.locationAndStatus.flightLegStatus},codeShareData:t.codeShareData,flightLegIdentifier:t.flightLegIdentifier,remarks:n(t,"remarks"),viaDestinations:h(t.viaDestinations),diIndicator:t.diIndicator,epiAirline:t.epiAirline,epiDestinationPage:t.epiDestinationPage,epiTerminal:t.epiTerminal,epiAirport:t.epiAirport};return i===!0?(u.arrivalOrDepartureAirport=n(t,"departureAirport"),u.arrivalOrDepartureTime=r(t.arrivalTime.scheduledUtc,t.arrivalTime.estimatedUtc),t.flightLegIdentifier&&(u.arrivalOrDepartureIata=t.flightLegIdentifier.departureAirportIata),u.baggage={estimatedFirstBagUtc:sa.dateTimeUtils.convertUtcStringToSwedishTime(t.baggage.estimatedFirstBagUtc),baggageClaimUnit:t.baggage.baggageClaimUnit,firstBagUtc:t.baggage.firstBagUtc?sa.dateTimeUtils.convertUtcStringToSwedishTime(t.baggage.firstBagUtc):null}):i===!1&&(u.arrivalOrDepartureAirport=n(t,"arrivalAirport"),u.arrivalOrDepartureTime=r(t.departureTime.scheduledUtc,t.departureTime.estimatedUtc),t.flightLegIdentifier&&(u.arrivalOrDepartureIata=t.flightLegIdentifier.arrivalAirportIata),u.checkIn={checkInStatus:t.checkIn.checkInStatus,checkInStatusText:n(t.checkIn,"checkInStatus"),checkInDeskFrom:t.checkIn.checkInDeskFrom,checkInDeskTo:t.checkIn.checkInDeskTo,checkInDeskRange:o(t.checkIn.checkInDeskFrom,t.checkIn.checkInDeskTo)}),u};t.flightObject=u}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.service("PublicFlightsBoardV2Service",["$http","$compile","PublicFlightsBoardV2Mapper",function(n,t,i){var r="/services/publicflightsboard/v2";this.GetArrivals=function(t){var u=[r,"arrivals",t.lang,t.iata,t.date];return n({url:u.join("/"),method:"GET"}).then(function(n){return t.iata==="ARN"&&t.date==="1959-04-01"?i.MapEasterEgg(n.data):i.MapArrivals(n.data)})};this.GetDepartures=function(t){var u=[r,"departures",t.lang,t.iata,t.date];return n({url:u.join("/"),method:"GET"}).then(function(n){return i.MapDepartures(n.data)})};this.ArrivalsIsLatest=function(t){var i=[r,"islatest/arrivals",t.iata,t.date,t.timeTicks];return n({url:i.join("/"),method:"GET"}).then(function(n){return n.data})};this.DeparturesIsLatest=function(t){var i=[r,"islatest/departures",t.iata,t.date,t.timeTicks];return n({url:i.join("/"),method:"GET"}).then(function(n){return n.data})}}]);window.swedaviaApp=window.swedaviaApp||{};swedaviaApp.service("queueTimeService",["$http","$interval","$filter",function(n){var t="/services/queuetimes",i=function(n){return $.grep(n,function(n){return n.IsDisabled===!1})},r=function(r){var f={iata:sa.utils.currentAirportIataCode(),lang:sa.utils.currentLanguage(),onlyWebQueues:!0,includeOverflow:!0},u;return angular.extend(f,r),u=[t],f.useVersion&&u.push("v"+f.useVersion),u.push("airport"),u.push(f.lang),u.push(f.iata),u.push(f.onlyWebQueues),u.push(f.includeOverflow),u=u.join("/"),n({url:u,method:"GET"}).then(function(n){return r&&r.showDisabledQueues===!0?n.data:i(n.data)})};return this.GetQueueTimesForFlightNumber=function(i,r,u){var e,f;if(typeof i!="string")throw"This method must be called with flight number set.";if(typeof r!="string")throw"Departure datetime not specified";return e={lang:sa.utils.currentLanguage(),iata:sa.utils.currentAirportIataCode(),onlyWebQueues:!0,filterByTime:!0},angular.extend(e,u),f=[t+"/flightnumber"],f.push(e.lang),f.push(e.iata),f.push(i),f.push(moment(r).format("YYYYHHDDhhmmss")),f.push(e.onlyWebQueues),f.push(e.filterByTime),f=f.join("/"),n({url:f,method:"GET"}).then(function(n){return angular.extend(n.data,{FlightNumber:i}),n.data})},this.RenderLocationOrQueueName=function(n){return n?n.LocationName?n.LocationName:n.Name:""},{GetQueueTimes:r,GetQueueTimesForFlightNumber:this.GetQueueTimesForFlightNumber,RenderLocationOrQueueName:this.RenderLocationOrQueueName}}]);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})}}])