(function(n){var t=function(n){var i=this,r=[],u=null,f=null;return i.child=function(n){var i=new t(n);return r.push(i),i.dispose=function(){r=_.without(r,i)},i},i.start=function(){return u=moment(),i},i.stop=function(){return f=moment(),i},i.duration=function(){return u?f?f.diff(u)+"ms":"Running":"Not started"},i.getStringLines=function(t){var u=[(t||"")+n+" - "+i.duration()];return _.forEach(r,function(n){_.forEach(n.getStringLines((t||"")+"\t"),function(n){u.push(n)})}),u},i.with=function(n){return function(){i.start();var t=n.apply(this,arguments);return i.stop(),t}},i.withAsync=function(n){var t=function(){return i.start(),n.apply(this,arguments)};return t.stop=function(){i.stop()},t},i},i=new t("<root>");n.timer=function(n){return i.child(n)};n.showTimers=function(){_.forEach(i.getStringLines(),function(n){console.log(n)})}})(App),function(n){var t=ko.observableArray(),i=ko.computed(function(){var n=_(t()).sortBy("priority").map("provider").map(function(n){return ko.utils.unwrapObservable(n.claims)}).find(function(n){return!!n.length});return _.map(n,function(n){return n.type=n.type.toLowerCase(),n.value=n.value.toLowerCase(),n})});n.Permissions={registerProvider:function(n,i){t.push({provider:n,priority:i})},hasClaims:function(t,r){if(r&&n.Permissions.loadingClaims())return!1;var u={};return _.isArray(t)?_.forEach(t,function(n){_.assign(u,n)}):u=t,_.isObject(u)&&(u=_(u).pairs().map(function(n){return _.map(_.isArray(n[1])?n[1]:[n[1]],function(t){return{type:n[0].toLowerCase(),value:t&&t.toLowerCase()||""}})}).flatten().value()),_.every(u,function(n){return _.some(i(),{type:n.type,value:n.value})})},getClaimValue:function(t,r){if(r&&n.Permissions.loadingClaims())return null;var u=_.find(i(),{type:t.toLowerCase()});return u&&u.value},loadingClaims:ko.pureComputed(function(){return _.some(t(),function(n){return ko.unwrap(n.provider.loadingClaims)})})};ko.bindingHandlers.ifClaims.callback=n.Permissions.hasClaims}(App),function(n,t){"use strict";var r=function(i){var r=this,v=i.authToken,l=n.timer("ApiClient - "+i.apiUrl),c;r.apiUrl=i.apiUrl;r.bhrUrl=i.bhrUrl;r.loadingClaims=ko.observable(!1);r.claims=ko.observableArray([]);var d=_.reduce(i.customHeaders,function(n,t){return n[t.name]=t.value,n},{}),a=i.crossDomain,o=function(t,u,f,o,s,c,l,a,v){var y=r.buildAjaxUrl(u,o||(i.forceLanguageParam===!1?null:n.apiLanguage)),p;console.log(t+": "+y+"... ");l=$.isFunction(l)?l:function(){};s=$.isFunction(s)?s:function(){};p=$.isFunction(c)===!0?function(n){c(n)===!1&&i.enableHttpErrorHandling===!0&&e(n)}:i.enableHttpErrorHandling===!0?e:function(){};t=="GET"&&_.isObject(f)&&(f=h(f));f&&typeof f!="string"?b(t,y,f,s,p,l,a,v):w(t,y,f,s,p,l,a,v)},s=function(t,u,f,o,s,h,c,l){var a=r.buildAjaxUrl(u,o||(i.forceLanguageParam===!1?null:n.apiLanguage)),v;return console.log(t+": "+a+"... "),c=$.isFunction(c)?c:function(){},s=$.isFunction(s)?s:function(){},v=$.isFunction(h)===!0?function(n){h(n)===!1&&i.enableHttpErrorHandling===!0&&e(n)}:i.enableHttpErrorHandling===!0?e:function(){},k(t,a,f,s,v,c,l)},u=function(){var n=null;return function(t){if(n){n.done(t);return}var i=$.Deferred();n=i.promise();n.done(t).fail(function(){location.href="/Account/Logout"});$.ajax({url:"/account/refreshToken",type:"POST",headers:r.buildAjaxHeaders(),complete:function(){n=null},success:function(n){v=n;i.resolve()},error:function(n){n.status==401&&i.reject()}})}}(),f=function(n,i){"$claims"in n&&n.$orderId==t.travelOrderId&&r.claims(n.$claims);_.isFunction(i)&&i("$data"in n?n.$data:n)},y=function(n){return _.assign({refreshTokenOnSuccess:!1},n)},p=function(n){var t=r.buildAjaxHeaders();return n&&(n.requestVersion&&(t["request-version"]=n.requestVersion),n.responseVersion&&(t["response-version"]=n.responseVersion),n.sec&&(t.sec=n.sec)),t},w=function(n,t,i,r,e,o,s,h){var d=y(h),g=s?"&timestamp="+(new Date).getTime():"",k=i?i+g:"",c=t,v,b;c=c.indexOf("?")==-1?c+"?"+k:c+"&"+k;v=l.child(c).start();b=function(){u(function(){w(n,t,i,r,e,o,s)})};$.ajax({url:c,type:n,headers:p(h),complete:function(n){o(n)},success:function(n){v.stop();d.refreshTokenOnSuccess?u(function(){f(n,r)}):f(n,r)},contentType:"application/json",crossDomain:a,error:function(n){if(v.stop(),n.status==0){b();return}n.status!=401&&e(n)},xhrFields:{withCredentials:!0},statusCode:{401:b}})},b=function(n,t,i,r,e,o,s,h){var w=y(h),c,v;s&&(i=$.extend({},!0,i,{timestamp:(new Date).getTime()}));c=l.child(t).start();v=function(){u(function(){b(n,t,i,r,e,o,s)})};$.ajax({url:t,data:ko.toJSON(i),type:n,headers:p(h),complete:function(n){o(n)},success:function(n){c.stop();w.refreshTokenOnSuccess?u(function(){f(n,r)}):f(n,r)},contentType:"application/json",crossDomain:a,error:function(n){if(c.stop(),n.status==0){v();return}n.status!=401&&e(n)},xhrFields:{withCredentials:!0},statusCode:{401:v}})},k=function(n,t,i,e,o,s,h){var y=i,c,v;return n!=="GET"&&(y=ko.toJSON(i)),c=l.child(t).start(),v=function(){u(function(){k(n,t,i,e,o,s,h)})},$.ajax({url:t,type:n,data:y,headers:r.buildAjaxHeaders(),contentType:n==="GET"?"application/x-www-form-urlencoded":"application/json",crossDomain:a,async:h||!1,xhrFields:{withCredentials:!0},statusCode:{401:v}}).done(function(n,t,i){c.stop();jQuery.isFunction(e)&&f(n,function(n){e(n,t,i)})}).fail(function(n,t,i){if(c.stop(),n.status==0){v();return}n.status!=401&&t!=="abort"&&jQuery.isFunction(o)&&$.inArray(n.status,r.handleErrors)===-1&&o(n,t,i)}).always(function(n){jQuery.isFunction(s)&&s(n)})},e=function(n){n.status>0&&g(n)},g=function(n){if(n.status==400&&n.responseJSON&&n.responseJSON.exceptionMessage=="NoCurrentOrder"){t.reset();location.href="/";return}var i=moment().add(5,"m").toDate();if(_.isFunction(n.getResponseHeader)&&n.getResponseHeader("Error-Text")&&(document.cookie="Error-Text="+n.getResponseHeader("Error-Text")+";expires="+i+";path=/;"),_.isFunction(n.getResponseHeader)&&n.getResponseHeader("Stack-Trace-Text")&&(document.cookie="Stack-Trace-Text="+n.getResponseHeader("Stack-Trace-Text")+";expires="+i+";path=/;"),_.isFunction(n.getResponseHeader)&&n.getResponseHeader("Bh-Request-Id")&&(document.cookie="Bh-Request-Id="+n.getResponseHeader("Bh-Request-Id")+";expires="+i+";path=/;"),n!==401&&n.status!==401){location.href="/Error/"+n.status;return}},h=function(n,t){return _(n).map(function(i,r){if(i!==null&&i!==undefined&&i!==""&&!_.isFunction(i))return(t&&(r=t+(Array.isArray(n)?"["+r+"]":"."+r)),typeof i=="object")?h(i,r):r+"="+encodeURIComponent(i)}).filter().value().join("&")};return r.buildUrlBHR=function(n,t){var i=c(n,t);return r.bhrUrl+i},r.buildUrl=function(n,t,i){var u=_.assign(_.isObject(i)?_.clone(i):{},r.buildAjaxHeaders()),f=c(n,t,u);return r.apiUrl+f},r.buildAjaxUrl=function(n,t,i){var u=c(n,t,i);return r.apiUrl+u},r.buildAjaxHeaders=function(){return _(_.clone(d)).assign({Authorization:v}).mapValues(function(n){return _.isFunction(n)?n():n}).omit(function(n){return _.isNull(n)||_.isUndefined(n)}).value()},c=function(n,t,i){var r,u="",f;return typeof i=="object"&&(u=h(i)),r=t?t+"/"+n:n,f=/\?/.test(r)?"&":"?",r+(u?f+u:"")},r.iCalendarUrl=function(n,t,i,u){var e=ko.utils.unwrapObservable(n),o=ko.utils.unwrapObservable(t),s=moment(ko.utils.unwrapObservable(i)),h=moment(ko.utils.unwrapObservable(u)),f;if(e&&o&&s.isValid()&&h.isValid())return f="?summary="+encodeURIComponent(n)+"&location="+encodeURIComponent(t)+"&start="+encodeURIComponent(i)+"&end="+encodeURIComponent(u),r.buildUrl("travel/calendarevent")+f},r.ajaxGet=function(n,t,i,r,u,f,e,s){o("GET",n,t,i,r,u,f,e,s)},r.ajaxPost=function(n,t,i,r,u,f,e,s){o("POST",n,t,i,r,u,f,e,s)},r.ajaxDelete=function(n,t,i,r,u,f,e,s){o("DELETE",n,t,i,r,u,f,e,s)},r.ajaxPut=function(n,t,i,r,u,f,e,s){o("PUT",n,t,i,r,u,f,e,s)},r.deferredGet=function(n,t,i,r,u,f,e,o){return s("GET",n,t,i,r,u,f,e,o)},r.deferredPost=function(n,t,i,r,u,f,e,o){return s("POST",n,t,i,r,u,f,e,o)},r.deferredDelete=function(n,t,i,r,u,f,e,o){return s("DELETE",n,t,i,r,u,f,e,o)},r.deferredPut=function(n,t,i,r,u,f,e,o){return s("PUT",n,t,i,r,u,f,e,o)},r.ajaxOnce=function(n){var t={},i=function(i,r,u,f,e,o,s,c){var a=[i,_.isString(r)?r:h(r),u].join("_"),l=t[a],v=function(){l.successArgs?f&&f.apply(this,l.successArgs):e&&e.apply(this,l.errorArgs);o&&o.apply(this,l.alwaysArgs)},y;if(l||(t[a]={executing:ko.observable(!1)},l=t[a]),!c){if(l.executed){v();return}if(ko.unwrap(l.executing)){y=l.executing.subscribe(function(n){n||(v(),y.dispose())});return}}l.executing(!0);n(i,r,u,function(){l.successArgs=arguments},function(){l.errorArgs=arguments},function(){l.alwaysArgs=arguments;l.executed=!0;l.executing(!1);v()},s)};return i.dispose=function(){t={}},i},r.sendDeferred=function(n,t,i,r){var u=$.Deferred();return n(t,i,null,u.resolve,r?u.reject:undefined),u.promise()},r.defaultErrorCallback=e,r},i,u;n.Settings.client.customHeaders.push({name:"language-debug",value:n.Settings.languageDebug});n.Settings.client.customHeaders.push({name:"program-debug",value:n.Settings.programDebug});n.Settings.client.customHeaders.push({name:"claims-wrapper",value:!0});n.Settings.client.customHeaders.push({name:"order-id",value:function(){return t.travelOrderId}});n.Settings.client.customHeaders.push({name:"order-number",value:function(){return t.orderNo}});n.Settings.client.customHeaders.push({name:"traveller-id",value:function(){return t.selectedTravellerId}});n.apiClient=new r(n.Settings.client);n.Permissions.registerProvider(n.apiClient,0);i=location.origin;i||(i=window.location.origin=window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:""));u={enableHttpErrorHandling:n.Settings.client.enableHttpErrorHandling,apiUrl:i+"/",crossDomain:!1,forceLanguageParam:!1};n.sasClient=new r(u)}(App,App.OrderSession);var app={initialize:function(n){n=n||!1;App.Helpers.hasSessionCookie()&&n&&(window.location="dashboard.html");this.bindEvents();app.initFooter()},bindEvents:function(){$(document).ready(this.onDeviceReady);$.support.cors=!0;window.onerror=function(n,t,i,r,u){var f;f=u&&u!==undefined?u.message:n;console&&console.error&&console.error(f)};window.onpageshow=function(n){n.persisted&&window.location.reload()};window.onunload=function(){}},onDeviceReady:function(){app.receivedEvent("deviceready");$&&$.mobile&&($.mobile.allowCrossDomainPages=!0);app.initMenu();app.preventDoubleTouching()},preventDoubleTouching:function(){$(document).on("touchend",".dw-i",function(n){n.preventDefault()});$(document).on("touchend",".dw-cal-day-fg",function(n){n.preventDefault()})},receivedEvent:function(){},initMenu:function(){var r=$(".head"),n=$(".btn-menu"),i=$(".field input"),t=$(".container").find(".overlay");n.on("tap",function(n){var u=$(this),i=u.parents(".header"),r=i.find(".nav");t.toggleClass("show");$(this).toggleClass("opened");r.toggleClass("slideInDown");r.toggleClass("opened");i.toggleClass("opened");n.preventDefault()});$(".nav .icon-arrow-up").on("click",function(i){$(this).parent(".nav").removeClass("opened");n.removeClass("opened");t.removeClass("show");i.preventDefault()});i.on("focusin",function(){this.value==this.title&&(this.value="")}).on("focusout",function(){this.value||(this.value=this.title)})},initFooter:function(){if($("#footer").length!=0){var t="bh-footer-shared",n=!1,r={local:"http://localhost:54321/headerfooter",dev:"https://dev.berg-hansen.no/headerfooter",tua:"https://tua.berg-hansen.no/headerfooter",eua:"https://eua.berg-hansen.no/headerfooter",www:"https://www.berg-hansen.no/headerfooter",m:"https://www.berg-hansen.no/headerfooter"},i=location.host.match(/^([^.]+).*$/),u=i.length>1&&r.hasOwnProperty(i[1])?i[1]:"local",f=r[u];if(localStorage&&(n=localStorage.getItem(t))){try{n=JSON.parse(n)}catch(e){console&&console.error(e)}if(n.timeout>=(new Date).getTime()&&n.html){$("#footer").append(n.html);return}localStorage.removeItem(t)}$.get(f,function(n){var r=$("<div>").append(n).find("#bh-footer-shared").wrap("<div>").parent().html();if($("#footer").append(r),localStorage){var i=new Date,u=new Date(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),i.getMinutes()+15),f={timeout:u.getTime(),html:r};localStorage.setItem(t,JSON.stringify(f))}})}}};(function(n,t){"use strict";n.Repository.ProfileRepository=function(){var i={},r=function(){var i=t.ajaxOnce(t.ajaxGet),r=function(t){i("account/creditcardsettings",null,n.apiLanguage,t)};return r.dispose=i.dispose,r}();return i.loadProfile=function(n,i){t.ajaxGet("account/profile","tacNumber="+n,App.apiLanguage,i)},i.loadProfileOnce=function(){var n=t.ajaxOnce(t.ajaxGet),i=function(t,i,r){n("account/profile","tacNumber="+t,App.apiLanguage,i,undefined,undefined,undefined,r)};return i.dispose=n.dispose,i}(),i.deleteProfile=function(n,i){t.ajaxDelete("account/profile",n,window.apiLanguage(),i)},i.activateProfile=function(n,i){t.ajaxPost("account/profile",n,window.apiLanguage(),i)},i.saveProfile=function(n,i,r){t.ajaxPut("account/profile",n,window.apiLanguage(),i,r)},i.validateCard=function(n,i){t.ajaxGet("account/validatecard/","type="+n.type+"&vendor="+n.vendor+"&code="+n.code,window.apiLanguage(),i)},i.addProfile=function(n,i){t.ajaxPost("account/profileregistration",n,window.apiLanguage(),i)},i.resetPassword=function(n,i,r){t.ajaxPost("account/resetpassword",{tacNumber:n},App.apiLanguage,i,r)},i.loadCreditCardCompanies=function(n,t){r(function(n){t(n.companies)})},i.loadCurrentUserCreditCards=function(n){r(function(t){n(t.currentUserCreditCards)})},function(){var n=null;i.loadCurrencies=function(){return n||(n=t.sendDeferred(t.ajaxGet,"account/currencies")),n}}(),i}()})(App,App.apiClient),function(n,t){n.Loader={show:function(){t("body").addClass("loading")},hide:function(){t("body").removeClass("loading")},observeReady:function(t){t.subscribe(function(t){if(t){n.Loader.hide();return}n.Loader.show();n.Loader.animate()})},animate:function(){Modernizr.cssanimations||t(".loader-spinner:visible, .loader-inline:visible").each(function(){var n=t(this),i=function(){console.log("starting rotation");t({deg:0}).animate({deg:360},{duration:3e3,easing:"linear",step:function(t){n.css({transform:"rotate("+t+"deg)"})},complete:function(){n.is(":visible")&&i()}})};i()})}};n.Loader.animate()}(App,jQuery);$(function(n,t,i){"use strict";window.translationReady=ko.observable(!1);window.languages=["nb-NO","en-GB"];String.prototype.hashCode=function(){for(var n=0,t=0,i=this.length;t<i;t++)n=(n<<5)-n+this.charCodeAt(t),n=n&n;return n},function(){var t=i.t;i.t=function(i){var r=t(i&&i.toLowerCase());return n.Settings.languageDebug&&(r="["+i+"] "+r),r}}(),function(){var n=i.sync.load;i.sync.load=function(t,i,r){window.translationReady(!1);n(t,i,function(){window.translationReady(!0);_.isFunction(r)&&r.apply(this,arguments)})}}();n.languageViewModel=function(r){var u={};return u.languagesVisible=ko.toggle(),u.language=ko.observable(r),window.apiLanguage=function(){return n.apiLanguage},u.reapplyLanguage=_.throttle(function(){u.applyLanguage()},250,{trailing:!0}),u.applyLanguage=function(n,t){n=n||u.language();i.setLng(n,{fixLng:!0},function(){$("body").i18n();moment.locale(n);_.isFunction(t)&&t()})},u.changeLanguage=function(n){console.log("changeLanguage");u.applyLanguage(n);document.cookie="i18next="+n+"; path=/";u.redirectWithoutLanguageParam();console.log("changeLanguage.reload")},u.toggleLanguage=function(){var r=i.lng(),n=ko.utils.arrayIndexOf(window.languages,r),t;n=(n+1)%window.languages.length;t=window.languages[n];u.changeLanguage(t)},u.setEnglishLanguage=function(){u.changeLanguage("en-GB")},u.setNorwayLanguage=function(){u.changeLanguage("nb-NO")},u.redirectWithoutLanguageParam=function(){var n=location.href.replace(/(\?|&)language=[a-zA-Z\-]{2,5}&?/,"$1").replace(/&$/,"");location.replace(n);/#/.test(n)&&location.reload()},u.initTranslations=function(){var n=window.languages[1];i.init({lng:n,fallbackLng:"en-GB",keyseparator:"::",sendType:"GET",useLocalStorage:!!window.localStorage,localStorageExpirationTime:3e6,resGetPath:t.apiUrl+"translations/load/__lng__",getAsync:!0,useCookie:!1,preload:["en-GB","nb-NO"]},function(){u.applyLanguage(u.language())})},u.checkVersion=function(){for(var n in window.languages)t.ajaxPost("translations/version/"+window.languages[n],"timeStamp="+(window.localStorage?localStorage["res_"+window.languages[n]+"_time"]:""),null,function(n){window.localStorage&&delete localStorage["res_"+n.culture+"_time"];n.valid||(window.localStorage&&delete localStorage["res_"+n.culture],u.initTranslations());n.time&&window.localStorage&&(localStorage["res_"+n.culture+"_time"]=moment(n.time).toISOString())})},u.initTranslations(),u.checkVersion(),u.language.subscribe(u.changeLanguage),u}}(App,App.sasClient,i18n));$(function(n){ko.validation.init({messageTemplate:"error-message-template",errorClass:"input-error",decorateInputElement:!0,messagesOnModified:!1,errorsAsTitle:!1,grouping:_.assign(_.clone(ko.validation.configuration.grouping),{deep:!0,live:!0})});ko.validation.makeBindingHandlerValidatable("textInput");ko.validation.rules.date.message=function(){return ko.i18n("ValidationErrors.Date")};ko.validation.rules.dateISO.message=function(){return ko.i18n("ValidationErrors.Date")};ko.validation.rules.digit.message=function(){return ko.i18n("ValidationErrors.Digit")};ko.validation.rules.email.message=function(){return ko.i18n("ValidationErrors.Email")};ko.validation.rules.number.message=function(){return ko.i18n("ValidationErrors.Number")};ko.validation.rules.pattern.message=function(){return ko.i18n("ValidationErrors.Pattern")};ko.validation.rules.required.message=function(){return ko.i18n("ValidationErrors.Required")};ko.validation.rules.equal.message=function(){return ko.i18n("ValidationErrors.MustEqual")},function(){var n=function(n,t){if(t.notEqual){var i=ko.unwrap(n),r=ko.unwrap(t.notEqual);if(ko.unwrap(r.code)==ko.unwrap(i.code))return!1}return!0},t=function(t){return{validator:function(i,r){var u=i&&t(i);return u?n(i,r):!1},message:function(t,i){return n(i,t)?ko.validation.rules.required.message():ko.i18n("ValidationErrors.OriginDestination")}}};ko.validation.rules.validateAirLocation=t(function(n){return n.city.length>0&&n.country.length>0});ko.validation.rules.validateTrainLocation=t(function(n){return n.code.length>0})}();ko.validation.rules.creditCardExpiryDate={validator:function(n,t){var i=t.minExpiryDate?moment(t.minExpiryDate):moment();return moment(n).diff(i)>0},message:function(){return ko.i18n("ValidationErrors.CreditCardExpiryDate")||"Expiry date not valid."}};ko.validation.rules.validateCreditCard={validator:function(n){var i=ko.validation.utils.getValue(n.company),r,t,u;if((n.number(),!i)||(i=i.toLowerCase(),!n.number()||n.number().length===0)||n.number().length<13||(r=i.match(/[a-z]{2}/),!r)||(t=n.number(),r=t.match(/[^0-9]/),r))return!1;u=function(){for(var u=[],r,i,f,n=t.length-2;n>=0;n=n-2)u.push(2*t[n]);for(r=0,n=t.length%2==0?1:0;n<t.length;n=n+2)r+=parseInt(t[n]);for(n=0;n<u.length;n++)for(i=u[n];i!=0;)f=i%10,i=parseInt(i/10),r+=f;return r%10==0?!0:!1};switch(i){case"vi":case"ca":case"ax":case"dc":if(!u(t))return!1}switch(i){case"vi":if(t[0]!="4"||t.length!=13&&t.length!=16)return!1;break;case"ca":if(t[0]!="5"||t.length!=16)return!1;break;case"ax":if(t[0]!="3"||t.length!=15)return!1;break;case"dc":if(t[0]!="3"||t.length!=14)return!1;break;default:return!1}return!0},message:function(){return ko.i18n("ValidationErrors.CreditCard")||"Card number not valid."}},function(){var t="asyncValidateVendorCard",i=!1,r;ko.validation.rules[t]={async:!0,validator:function(t,r,u){if(i){ko.unwrap(t.number);ko.unwrap(t.vendor);u(!0);return}if(t==undefined||t.length==0||t==null||r.optional&&!ko.unwrap(t.number)){u(!0);return}n.Repository.ProfileRepository.validateCard({code:t.number(),type:r.type,vendor:t.vendor()},function(n){n.status==="Failed"?u({isValid:!1,message:n.errorText}):u(!0)})},message:function(){return ko.i18n("ValidationErrors.DefaultErrorMessage")||"Validation failed"}};ko.validation.registerExtenders();r=ko.extenders[t];ko.extenders[t]=function(n,t){n.extend({validatable:!0});i=!0;r(n,t);i=!1}}(),function(){var t="asyncValidateVendorlessCard",i;ko.validation.rules[t]={async:!0,validator:function(t,i,r){if(t==undefined||t.length==0||t==null){r(!0);return}n.Repository.ProfileRepository.validateCard({code:t,type:i.type||null,card:i.card||null},function(n){n.status==="Failed"?r({isValid:!1,message:n.errorText}):r(!0)})},message:function(){return ko.i18n("ValidationErrors.DefaultErrorMessage")||"Validation failed"}};ko.validation.registerExtenders();i=ko.extenders[t];ko.extenders[t]=function(n,t){n.extend({validatable:!0});n.rules.disableNotifications();i(n,t);n.rules.enableNotifications()}}();ko.validation.rules.phone={validator:function(n,t){return t?typeof n!="string"?!1:ko.validation.utils.isEmptyVal(n)?!0:(n=n.replace(/\s+/g,""),n.length>=8&&n.match(/^(((\+|00)[1-9])|[1-9])[0-9]{7,}$/)):!0},message:function(){return ko.i18n("ValidationErrors.Phone")||"Invalid phone number"}};ko.validation.rules.zipCode={validator:function(n,t){return ko.validation.utils.isEmptyVal(n)?!0:!t||/^[0-9]{4}$/.test(n)},message:function(){return ko.i18n("ShoppingCart.ZipCodeFormatValidationError")}};ko.validation.rules.integer={validator:function(n,t){return ko.validation.utils.isEmptyVal(n)?!0:!t||/^\d+$/.test(n)},message:function(){return ko.i18n("ValidationErrors.Integer")}};ko.validation.rules.qualityDemand={async:!0,validator:function(t,i,r){if(!t)return r(!0);var u={value:t,type:i.type,travellerId:i.travellerId};n.apiClient.ajaxPost("travelorder/qualitydemands/validate",u,null,function(n){r(n.message?n:n.isValid)})},message:function(){return ko.i18n("ValidationErrors.InvalidQualityDemandsValue")||"Validation failed"}};ko.subscribable.fn.isValidated=function(n){var t=ko.unwrap(this.rules),i;return!t||!t.length?!1:n?(i=_.find(t,{rule:n}),i&&i.params):!0};ko.validation.registerExtenders()}(App)),function(n){"use strict";n.Models.Traveller.TravellerModel=function(t){var i={};return i.id=ko.observable(),i.isSelected=ko.observable(),i.isAdded=ko.computed(function(){return!!i.id()}),i.isFavouriteTraveller=ko.observable(),i.selectedLacNo=ko.observable().extend({notEqual:{params:0,message:_.constant(ko.i18n("ValidationErrors.Required"))},validation:{validator:function(t){var r=_.find(i.lacInfoItems,{lacNo:t});return!(r&&n.Helpers.forceSelectionMethodOfPayment(r.methodOfPayment))},message:_.constant(ko.i18n("ValidationErrors.Required"))}}),i.isCurrentUser=ko.observable(),i.selectedLacInfo=ko.computed(function(){var n=i.selectedLacNo();return n==0?null:_.find(i.lacInfoItems,function(t){return t.lacNo===n})}),i.init=function(t){i.lacInfoItems=t.lacInfoItems||t.lacs;var r=_.find(i.lacInfoItems,{lacNo:t.selectedLacNo});r&&n.Helpers.forceSelectionMethodOfPayment(r.methodOfPayment)&&(t.selectedLacNo=0);i.id(null);i.isFavouriteTraveller(t.isFavouriteTraveller);i.selectedLacNo(t.selectedLacNo);i.isCurrentUser(t.isCurrentUser);i.id(t.id);delete t.id;delete t.isFavouriteTraveller;delete t.selectedLacNo;delete t.isCurrentUser;n.Helpers.arrayIncludingShallowCopy(t,i);i.lacInfoItemsOptions=_.map(i.lacInfoItems,function(t){return n.Helpers.forceSelectionMethodOfPayment(t.methodOfPayment)?{lacNo:0,name:i18n.t("Travel.Traveller.TypeOfTravelOptionsCaption")}:t});!i.selectedLacNo()&&i.lacInfoItemsOptions.length&&i.selectedLacNo(i.lacInfoItemsOptions[0].lacNo)},i.init(t),i.selectedLacNo.subscribe(function(){_.defer(function(){i.isAdded()&&n.Permissions.hasClaims(n.Permissions.claims.travellers.add)&&App.Repository.TravellersRepository.updateTraveller(i).done(i.init)})}),i}}(App),function(n,t){var i="WG_";n.SessionCache=function(){var n={};return n.set=function(n,r){var u={v:r};t.setItem(i+n,JSON.stringify(u))},n.get=function(n){var r=t.getItem(i+n);return r=r?JSON.parse(r):{},r.v},n.remove=function(n){t.removeItem(i+n)},n}()}(App,sessionStorage),function(n){n.LocalStorageCache=function(){var t={},n,i="WG_";return t.set=function(n,t){if(typeof localStorage!="undefined")try{localStorage.setItem(i+n,JSON.stringify(t))}catch(r){console.error("localStorage is disabled")}else console.error("localStorage is not available")},t.get=function(t){if(typeof localStorage!="undefined")try{n=localStorage.getItem(i+t)}catch(r){console.error("localStorage is disabled")}else console.error("localStorage is not available");return n=n?JSON.parse(n):null},t.remove=function(n){if(typeof localStorage!="undefined")try{localStorage.removeItem(i+n)}catch(t){console.error("localStorage is disabled")}else console.error("localStorage is not available")},t}()}(App),function(n){n(function(){var t=n("#header"),i=function(){var n={};return function(i,r){var u=n[i.prop("id")],f,e;u||(u=n[i.prop("id")]=t.find('.toggle[href="#'+i.prop("id")+'"]'));f=r===undefined?i.slideToggle:r?i.slideDown:i.slideUp;e=r===undefined?u.toggleClass:r?u.addClass:u.removeClass;f.call(i,function(){u.hasClass("active")&&i.find("[data-init-focus]").focus()});e.call(u,"active")}}();t.on("click",".toggle",function(){return i(t.find(n(this).attr("href"))),!1});t.on("click",'[href="#chat"]',function(){window.open("/"+window.currentNeutralCulture+"/chat","newwindow","width=800, height=700")});n(".header-footer-menu").on("click",'[href^="#"]',function(){return i(t.find(n(this).attr("href")),!0),!1})})}(jQuery),function(n,t){"use strict";n.Repository.BasketRepository=function(){var n={},i=function(n,t){if(t&&$.isFunction(t))return t(n)};return n.removeCarReservation=function(n,r){t.ajaxDelete("travelorder/carreservation/"+n,null,null,function(n){i(n,r)})},n.getRemoveTrainReservationInfo=function(n,i){t.ajaxGet("travelorder/traindeleteinfo/"+n,null,null,i)},n.removeTrainReservation=function(n,r){t.ajaxDelete("travelorder/trainreservation/"+n,null,null,function(n){i(n,r)})},n.removeHotelReservation=function(n,r){t.ajaxDelete("travelorder/hotelreservation/"+n,null,null,function(n){i(n,r)})},n.removeAirReservation=function(n,r){t.ajaxDelete("travelorder/airreservation/"+n,null,null,function(n){i(n,r)})},n.removeTaxiReservation=function(n,r,u,f,e){var o={id:r,isTaxiGroupMode:u};t.ajaxDelete("travelorder/airporttaxireservation",o,null,function(n){i(n,f)},function(n){i(n,e)})},n.addTaxiReservation=function(n,r,u){t.ajaxPost("travelorder/airporttaxireservation",r,null,function(n){i(n,u)})},n.getCarriers=function(n,i){t.ajaxGet("travelorder/bonuscards",{bonusCardType:n||0},App.apiLanguage,i)},n}()}(App,App.apiClient);$(function(n){n.Models.Common.ConfirmationDialog=function(n,t,i,r,u,f,e,o){var s={};return s.dialogTitle=ko.observable(i),s.dialogBody=ko.observable(_.isArray(e)?e.join("<br/>"):e),s.isDialogOpen=ko.observable(!1),s.showButtons=_.assign({left:!0,right:!0},f),s.css=_.assign({left:s.showButtons.right?"trash":"",right:""},o),s.translations={leftText:r||ko.i18n("No"),rightText:u||ko.i18n("Yes")},s.leftClick=function(){s.isDialogOpen(!1);t()},s.rightClick=function(){s.isDialogOpen(!1);n()},s.isDialogOpen(!0),s}}(App)),function(n,t,i){var u=function(){return r.itineraryLoading(!0),r.getItinerary().then(function(n){n.id==i.travelOrderId&&(!i.selectedTravellerId||_.contains(n.selectedTravellerIds,i.selectedTravellerId))&&(r.itinerary(n),r.itineraryLoading(!1))}).fail(function(){r.itinerary(null);r.itineraryLoading(!1)})},r={startNew:function(n){var r=$.Deferred();return t.ajaxPost("travelorder/shoppingcart",n,null,function(n){i.travelOrderId=n;t.ajaxGet("account/identity",null,null,_.wrap(n,r.resolve))}),r.promise()},switchTo:function(n){var r=$.Deferred();return t.ajaxGet("travelorder/shoppingcart/"+n,null,null,function(n){i.travelOrderId=n;r.resolve(n);t.ajaxGet("account/identity",null,null,_.wrap(n,r.resolve))}),r.promise()},selectTraveller:function(n){i.selectedTravellerId=n;t.ajaxGet("account/identity")},getItinerary:function(){var n=$.Deferred();return i.travelOrderId?t.ajaxGet("travelorder/itinerary",null,null,n.resolve,function(t){if(t.status!=404)return!1;n.reject()}):n.reject(),n.promise()},save:function(n,i){var u=function(){var i=$.Deferred();return t.ajaxPost("travelorder/itinerary",n,null,i.resolve),i.promise()},r;return i!==!0?(r=$.Deferred(),t.deferredPost("travelorder/itinerary",n,null,r.resolve,function(){u().done(r.resolve)}),r.promise()):u()},book:function(){return t.sendDeferred(t.ajaxPost,"travelorder/booking",null,!0)},cancelBooking:function(n){return t.sendDeferred(t.ajaxDelete,"/travelorder/booking/",{travellerId:n})},revertChanges:function(){return t.sendDeferred(t.ajaxDelete,"travelorder/itinerary")},removeAllReservations:function(){return t.sendDeferred(t.ajaxDelete,"travelorder/reservation")},refresh:function(){return u()},itineraryLoading:ko.observable(!1),itinerary:ko.observable(null)};(function(){var n=null,t=function(){r.itinerary.getSubscriptionsCount()>0&&!n&&(n=ko.computed({read:function(){return u(),i.travelOrderIdObs()+i.selectedTravellerIdObs()},disposeWhen:function(){var t=r.itinerary.getSubscriptionsCount()<=0?!0:!1;return t&&(n=null),t}}))};(function(){var n=r.itinerary.subscribe;r.itinerary.overrideExported("subscribe",function(){var i=n.apply(this,arguments);return t(),i})})()})();n.Repository.ShoppingCartRepository=r}(App,App.apiClient,App.OrderSession),function(n,t){var r=function(n){"use strict";var t=this,i,r;return _.assign(t,n),i=ko.observable(n.taxiGroupReservation),r=ko.observableArray(n.taxiReservations),t.populateTaxis=function(n){r(n.taxiReservations);i(n.taxiGroupReservation)},t.isTaxiEnabled=ko.pureComputed(function(){return i()&&i().reservationsPerFlight.length||r()&&r().length}),t.acceptedTaxiReservationsPerFlight=ko.pureComputed(function(){return _.filter(i()&&i().reservationsPerFlight.concat(_.flatten(_.map(r(),"reservationsPerFlight"))),{isAccepted:!0})}),t.showPriceUrl=ko.pureComputed(function(){return _.every(t.acceptedTaxiReservationsPerFlight(),function(n){return n.airportLocation.location.code=="TRD"})}),t.taxiReservations=t.acceptedTaxiReservationsPerFlight,t},i;n.Models.Cart.CartSummary=function(u){var f=this,o=n.Const.reservationType,e=ko.observable(!1);return f.flightItierary=ko.observable(),f.getCartFlights=function(){return f.flightItierary},n.Models.Common.ModelExtenders.extendWith(f,[n.Extenders.navigation]),f.itinerary=ko.pureComputed(function(){var n=_.cloneDeep(t.itinerary());return window.translationReady()?(n&&(i(n),n=new r(n),f.flightItierary(n.airReservations)),n):null}),f.extrasPrice=ko.pureComputed(function(){var n=_(f.itinerary()&&f.itinerary().airReservations).map("flights").flatten().map("extraServices").flatten().map("price").value(),t=_(f.itinerary()&&f.itinerary().carReservations).map("ancillaries").flatten().map("price").compact().map("value").value();return _([n,t]).flatten().reduce(function(n,t){return n+t},0)}),f.loading=ko.computed(function(){return t.itineraryLoading()||!window.translationReady()||e()}),f.visible=_.mapValues(o,function(){return ko.toggle(!!u)}),f.visible.travellers=ko.toggle(!0),f.visible.section=ko.toggle(!0),f.confirmationDialog=ko.observable(),f.load=_.noop,_.forIn(o,function(t){f["goTo"+t.toPascalCase()+"Search"]=function(){f.itinerary()&&!ko.toJS(f.itinerary()[t+"Reservations"]).length&&n.Permissions.hasClaims(n.Permissions.claims.add[t])?f["redirectTo"+t.toPascalCase()+"Search"](f.itinerary().orderNo,!1):f.visible[t].toggle()}}),f.cancelBooking=function(){var i=function(){e(!0);t.removeAllReservations().done(function(){t.refresh();sessionStorage.removeItem("airReservationId");sessionStorage.removeItem("hotelReservationId");sessionStorage.removeItem("carReservationId");sessionStorage.removeItem("trainReservationId");e(!1)})};f.confirmationDialog(new n.Models.Common.ConfirmationDialog(function(){f.confirmationDialog(null)},i,ko.i18n("Travel.BookingSummary.CancelBookingConfirm"),ko.i18n("Common.YesCancel"),ko.i18n("Common.ContinueBooking")))},f};i=function(t){var u,i,r;if(t.selectedTravellerIds&&t.selectedTravellerIds.length>0)for(n.Permissions.hasClaims(n.Permissions.claims.privateBooking.isPrivate)||(t.travellers=_.filter(t.travellers,{travellerId:t.selectedTravellerIds[0]})),u=["airReservations","hotelReservations","carReservations","trainReservations","taxiReservations"],i=0;i<u.length;i++)(r=u[i],t.hasOwnProperty(r))&&(t[r]=_.filter(t[r],{state:"Unconfirmed"}))}}(App,App.Repository.ShoppingCartRepository)