app.controller("bookingCtrl",["$state","$scope","damageInspectionService",function(n,t,i){"use strict";t.params=n.params;window.params=t.params;t.updateScopeWithState=function(){t.booking.Vehicle.RegistrationNo=t.booking.Vehicle.RegistrationNo||n.params.registrationNo;n.params.resourceContainerId&&t.booking.Workshop&&(t.booking.Workshop.ResourceContainerId=n.params.resourceContainerId)};t.booking=i.booking;t.updateScopeWithState()}]);app.factory("bookingRepo",["$resource",function(n){"use strict";return{get:function(t){return n("/api/DamageInspection/"+t).query()}}}]);app.controller("bookingConfirmationCtrl",["$scope","$state","$rootScope","damageInspectionRepo","dialogService","damageInspectionService","$window","companyInfoRepo",function(n,t,i,r,u,f,e,o){"use strict";var h,c,s;n.damageInspectionCanceled=!1;o.getAllowUpdatesOfBookings(i.companyKey).then(function(t){n.allowUpdatesOfBooking=t.data});h=function(n,i){e.scrollTo(0,0);t.go(n,i)};n.$parent.confirmation="Confirmed!";n.print=function(){window.print()};n.booking.Vehicle.RegistrationNo&&e.localStorage.setItem("regNo",n.booking.Vehicle.RegistrationNo);c=function(n){r.getBooking(n).then(function(n){n.data?f.buildBookingFromDamageInspection(n.data.DamageInspection,!1):u.openRebookDialogAsPromise(Resources.noBookingFound)})};(!n.booking.Workshop||angular.equals(n.booking.Workshop,{}))&&(s=t.params.regNo||e.localStorage.getItem("regNo"),s&&c(s));n.cancelBooking=function(){var t=Resources.warningCancelDamageInspectionBooking+" "+n.booking.Vehicle.RegistrationNo.toUpperCase()+"?",i=function(){r.removeDamageInspectionBooking(n.booking.Vehicle.RegistrationNo).then(function(){n.damageInspectionCanceled=!0;n.damageInspectionRemovedMessage=Resources.cancelDamageInspectionBookingComplete}).catch(function(){n.damageInspectionCanceled=!1})};u.openCommonConfirmDialogAsPromise(i,t)};n.rebooking=function(){i.setCookie("cookieConsent",!0);h("booking.details",{registrationNo:n.booking.Vehicle.RegistrationNo,make:n.booking.Vehicle.Info.Make.MakeId||"",mam:n.booking.Vehicle.Info.ModelText,rebooking:!0})}}]);app.controller("bookingDetailsCtrl",["$state","$scope","vehicleInfoRepo","vehicleInfoService","resourceContainerRepo","mapService","timeslotsService","damageInspectionRepo","dialogService","$rootScope","browserGeoLocationService","$window","$filter","$q","addressFormater","workshopDistanceService","workshopDistanceComparer","workshopPositionService","companyInfoRepo","userPositionService",function(n,t,i,r,u,f,e,o,s,h,c,l,a,v,y,p,w,b,k,d){"use strict";var et=50,vt=50,ot=20,yt=20,pt=5e4,wt=!0,nt;t.visibleWorkshops=null;t.allLoadedWorkshops=null;t.isUserLocationKnown=!1;t.hasGetUserPositionFailed=!1;t.isShowingWorkshopsEvenUserPositionUnkown=!1;t.manualSearchHasNoResults=!1;t.hasSearchedManually=!1;t.userPositionNearestCity=null;t.searchedPosition=null;var tt=null,g=null,rt=null;r.makeSureVehicleInfoIsLoaded(t,i);t.updateScopeWithState();nt=l.document.getElementById("searchLocationTxt");nt.focus();var st=function(t,i){l.scrollTo(0,0);n.go(t,i)},ut=function(t,i){l.scrollTo(0,0);n.transitionTo(t,i)},bt=function(){if(wt)tt=new google.maps.places.Autocomplete(nt,{types:["geocode"]}),tt.addListener("place_changed",function(){t.searchLocation=nt.value;t.searchByTypedLocation()}),k.getCompanyMarketCode(h.companyKey).then(function(n){t.marketCode=n.data;tt.setComponentRestrictions({country:[t.marketCode]})})},ht=function(n){if(tt){var t=new google.maps.Circle({center:n,radius:pt});tt.setBounds(t.getBounds())}},kt=function(){return{center:{lat:59.2752626,lng:15.2134105},zoom:5,maxZoom:16,minZoom:4}},dt=function(n){if(n.position){var u=Resources.choose,e=Resources.firstAvailableTime,o=Resources.kilometersShort,i="infoWindowBook"+n.ResourceContainerId,s="<a id='"+i+"' class='btn btn-info btn-book mts'><i class='icon-calendar-empty'><\/i> "+u+"<\/a>",h=n.FirstAvailableTime?e+" "+a("date")(n.FirstAvailableTime,"d MMMM yyyy HH.mm"):n.NoTimeAvailableMessage,c=y.format(n.Address),l=n.formattedDistance||n.formattedDistance===0?"<div>"+n.formattedDistance+" "+o+"<\/div>":"",v="<h3 style='margin-top:0;'>"+n.Name+"<\/h3><div>"+c+"<\/div>"+l+"<div>"+h+"<\/div><div style='margin-top: 6px'>"+s+"<\/div>",r=f.drawMarker(n.position,n.Name,v,n.ResourceContainerId);r.markerClickCallback=function(){t.selectWorkshop(n);t.$apply()};f.setInfoWindowDomReady(r.infoWindow,function(){var r=document.getElementById(i);r.onclick=function(i){t.chooseWorkshop(n,i)}})}},ct=!0,gt=function(){f.loadMap("map-canvas",kt(),ct);ct=!1;f.clearAllMarkers();g&&f.drawOriginPositionMarker(g);for(var i,n=0;n<t.visibleWorkshops.length;n++)i=t.visibleWorkshops[n],dt(i);f.zoomToFit()},lt=function(){t.vehicleNotFound=!0;i.getMakes().then(function(i){s.openMakeConfirmDialog(i.data).then(function(i){var r=JSON.parse(i);t.booking.Vehicle.Info={ModelText:t.booking.Vehicle.Info.ModelText||r.MakeText,Make:{MakeId:r.MakeId,MakeText:t.booking.Vehicle.Info.ModelText||r.MakeText}};n.params.ap?ut("booking.timeslot",{choosenWorkshop:t.booking.Workshop,registrationNo:t.booking.Vehicle.RegistrationNo,resourceContainerId:t.booking.Workshop.ResourceContainerId,make:r.MakeId,mam:r.MakeText,rebooking:n.params.rebooking}):st("booking.details",{registrationNo:t.booking.Vehicle.RegistrationNo,make:t.booking.Vehicle.Info.Make.MakeId,mam:t.booking.Vehicle.Info.ModelText,rebooking:n.params.rebooking})})})},ni=function(){i.get(t.companyKey,t.booking.Vehicle.RegistrationNo).then(function(i){i.data!==null?(t.booking.Vehicle.Info=i.data,n.params.ap?ut("booking.timeslot",{choosenWorkshop:t.booking.Workshop,registrationNo:t.booking.Vehicle.RegistrationNo,resourceContainerId:t.booking.Workshop.ResourceContainerId,make:0,mam:t.booking.Vehicle.Info.ModelText,rebooking:n.params.rebooking}):st("booking.details",{registrationNo:t.booking.Vehicle.RegistrationNo,make:t.booking.Vehicle.Info.Make.MakeId,mam:t.booking.Vehicle.Info.ModelText,rebooking:n.params.rebooking})):lt()}).catch(function(){lt()})},ti=function(n,t){return n.find(function(n){return n.ResourceContainer.ResourceContainerId===t})},ii=function(n,t){for(var r,u,i=0;i<t.length;i++)r=t[i],u=ti(n,r.ResourceContainerId),u&&u.FirstAvailableTimeslot?r.FirstAvailableTime=u.FirstAvailableTimeslot.Start:r.NoTimeAvailableMessage=Resources.noTimeSlotsWithinSixWeeks},ri=function(n){var i=t.visibleWorkshops.length;return n?t.allLoadedWorkshops.slice(i,i+ot):p.getWorkshopsClosestByDistance(t.allLoadedWorkshops,et,ot)},it=function(n){var i,r;t.visibleWorkshops||(t.visibleWorkshops=[]);i=ri(n);g&&p.setFormattedDistanceOnWorkshops(i,g);t.visibleWorkshops=t.visibleWorkshops.concat(i);r=i.map(function(n){return n.ResourceContainerId});u.getFirstAvaibleTimeForContainers(r).then(function(n){ii(n.data,i)}).finally(function(){t.isLoadingWorkshops=!1;gt()})},ft=function(n){t.isLoadingWorkshops=!0;p.calculateStraightLineDistances(n,t.allLoadedWorkshops);var i=p.getWorkshopsClosestByStraightLineDistance(t.allLoadedWorkshops,et,vt),r=i.map(function(n){return n.position});f.getDrivingDistanceToPositions(n,r).then(function(n){for(var r=0;r<i.length;r++)i[r].Distance=n[r].distance||null;t.allLoadedWorkshops=t.allLoadedWorkshops.sort(w.compareByStraightLineAndDriveDistance);it()}).catch(function(){it()})},ui=function(){var n=t.allLoadedWorkshops.length<=yt;n?(t.isShowingWorkshopsEvenUserPositionUnkown=!0,it(!0)):t.hasGetUserPositionFailed=!0},at=function(n){d.getUserPositionNearestCity(n).then(function(n){t.userPositionNearestCity=n})},fi=function(){t.hasSearchedManually&&(t.visibleWorkshops=null,t.hasSearchedManually=!1,p.resetDistances(t.allLoadedWorkshops),nt.value="",rt=null,t.searchedPosition=null)},ei=function(){nt.value=t.booking.Owner.City;var n=nt.value+(t.booking.Owner.ZipCode?", "+t.booking.Owner.ZipCode:"");f.getCoordinatesFromAddressInCountry(n,t.marketCode).then(function(n){n.results.length>0&&(g=n.results[0].geometry.location,t.isUserLocationKnown=!0,ft(g),ht(g),at(g))}).catch(function(){t.isLoadingWorkshops=!1})},oi=function(){var r=t.booking.Vehicle.Info.Make?t.booking.Vehicle.Info.Make.MakeId:n.params.make,f=t.booking.Vehicle.Info.ModelYear!==null?t.booking.Vehicle.Info.ModelYear:n.params.my;r&&r!=="m"&&r!=="0"?(t.booking.Vehicle.Info.ModelText||i.getMakes().then(function(n){var i=n.data.filter(function(n){return n.MakeId===parseInt(r,10)})[0];t.booking.Vehicle.Info.ModelText=i.MakeText}),u.getResourceContainersWithAddresses(r,f).then(function(n){var i=n.data;b.setPositions(i).then(function(){t.allLoadedWorkshops=i;t.booking.Owner.City?ei():d.getUserPosition().then(function(n){g=n;t.isUserLocationKnown=!0;fi();ft(n);ht(n);at(n)}).catch(function(){ui()})})})):ni()};t.selectWorkshop=function(n){for(var r=n.isSelected,i=0;i<t.allLoadedWorkshops.length;i++)t.allLoadedWorkshops[i].isSelected=!1;n.isSelected=!r;r?f.closeAllMarkers():f.openMarker(n.ResourceContainerId)};t.chooseWorkshop=function(i,r){t.booking.Workshop=i;h.setCookie("cookieConsent",!0);ut("booking.timeslot",{choosenWorkshop:i,registrationNo:n.params.registrationNo,resourceContainerId:t.booking.Workshop.ResourceContainerId,make:n.params.make,mam:t.booking.Vehicle.Info.ModelText,rebooking:n.params.rebooking});r&&(r.preventDefault(),r.stopPropagation())};t.loadMoreWorkshops=function(){t.isLoadingWorkshops=!0;it(!0)};t.searchByTypedLocation=function(){if(nt.value){var n=rt===nt.value;n||(rt=nt.value,t.searchedPosition=nt.value,g=null,t.visibleWorkshops=null,t.isLoadingWorkshops=!0,t.hasSearchedManually=!0,f.clearAllMarkers(),p.resetDistances(t.allLoadedWorkshops),f.getCoordinatesFromAddress(nt.value).then(function(n){n.results.length>0?(g=n.results[0].geometry.location,t.isUserLocationKnown=!0,t.isShowingWorkshopsEvenUserPositionUnkown=!1,t.manualSearchHasNoResults=!1,f.drawOriginPositionMarker(g),ft(g)):(t.isLoadingWorkshops=!1,t.manualSearchHasNoResults=!0,t.$apply())}).catch(function(){t.isLoadingWorkshops=!1}))}};t.isBrandedWorkShop=function(i){var r=t.booking.Vehicle.Info.Make?t.booking.Vehicle.Info.Make.MakeId:n.params.make;return i.BrandedMakeIds.length>0&&i.BrandedMakeIds.length&&i.BrandedMakeIds.indexOf(parseInt(r,10))>=0};bt();oi()}]);app.controller("bookingStartCtrl",["$scope","$rootScope","$state","$filter","vehicleInfoRepo","damageInspectionRepo","damageInspectionService","dialogService","$window","companyInfoRepo","resourceContainerRepo",function(n,t,i,r,u,f,e,o,s,h,c){"use strict";var a,w,v;n.isVehicleInfoSelectionVisible=!1;s.document.getElementById("regTxt").focus();var b=function(){n.booking.Vehicle.RegistrationNo="";n.booking.Vehicle.Info={};n.booking.InsuranceCity="";n.booking.Owner={};n.booking.Timeslot={};n.booking.SendConfirmationSMS=!1;n.booking.SendConfirmationEmail=!1;n.booking.BookingNo="";n.booking.DamageNo="";n.booking.Excess=null;n.booking.Handler="";n.booking.DamagePlacement="";n.booking.Comment="";n.booking.VehicleHasAlreadyBeenScheduled=!1;n.booking.Workshop={};n.booking.AllowUpdatesOfBooking=!1;n.booking.Mileage=null;n.booking.DamageDate=null;n.booking.InsuranceType=null;n.booking.ExternalUserName="";n.booking.InsuranceCompanyInfo="";n.booking.InformationRentalCar="";n.booking.OldExistingDamage=""},l=function(n,t){s.scrollTo(0,0);i.go(n,t)},y=function(n,t){s.scrollTo(0,0);i.transitionTo(n,t)},p=function(){return!n.booking.Vehicle||!n.booking.Vehicle.Info||!n.booking.Vehicle.Info.Make||!n.booking.Vehicle.Info.ModelYear?!1:!0},k=function(){u.getMakes().then(function(t){n.makes=t.data})},d=function(){n.modelYears=[];for(var i=(new Date).getFullYear(),t=i;t>=1950;t--)n.modelYears.push(t)};n.setModelSelected=function(t){n.booking.Vehicle.Info.ModelText=t.MakeText};n.setModelYearSelected=function(t){n.booking.Vehicle.Info.ModelYear=t};a=function(){u.get(n.companyKey,n.booking.Vehicle.RegistrationNo).then(function(t){if(t.data)if(n.booking.Vehicle.Info=t.data,p())i.params.ap&&n.booking.Workshop!==null?c.getCanBookMakeOnResourceContainer(n.booking.Workshop.ResourceContainerId,n.booking.Vehicle.Info.Make.MakeId,n.booking.Vehicle.Info.ModelYear).then(function(t){t.data?y("booking.timeslot",{choosenWorkshop:n.booking.Workshop,registrationNo:n.booking.Vehicle.RegistrationNo,resourceContainerId:n.booking.Workshop.ResourceContainerId,make:n.booking.Vehicle.Info.Make.MakeId,mam:n.booking.Vehicle.Info.ModelText,my:n.booking.Vehicle.Info.ModelYear,rebooking:i.params.rebooking}):o.openGenericErrorDialogAsPromise(Resources.cantBookVehicleOnSelectedWorkshop.format(n.booking.Vehicle.RegistrationNo,n.booking.Vehicle.Info.Make.MakeText))}):l("booking.details",{registrationNo:n.booking.Vehicle.RegistrationNo,make:n.booking.Vehicle.Info.Make.MakeId,mam:n.booking.Vehicle.Info.ModelText,my:n.booking.Vehicle.Info.ModelYear});else{if(n.booking.Vehicle.Info.Make!==null){var u=r("filter")(n.makes,function(t){return t.MakeId===n.booking.Vehicle.Info.Make.MakeId});u.length===1?n.booking.Vehicle.Info.Make=u[0]:(n.booking.Vehicle.Info.Make=null,n.booking.Vehicle.Info.ModelText=null)}(n.booking.Vehicle.Info.ModelYear===null||n.booking.Vehicle.Info.ModelYear==="")&&(n.booking.Vehicle.Info.ModelYear=null);n.isVehicleInfoSelectionVisible=!0}else n.isVehicleInfoSelectionVisible=!0})};n.sendRegistrationNo=function(){if(n.booking.Vehicle.RegistrationNo){if(t.setCookie("cookieConsent",!0),i.params.ap&&n.booking.Workshop&&n.booking.Workshop.ResourceContainerId){n.booking.Vehicle.Info.ModelText?c.getCanBookMakeOnResourceContainer(n.booking.Workshop.ResourceContainerId,n.booking.Vehicle.Info.Make.MakeId,n.booking.Vehicle.Info.ModelYear).then(function(t){t.data?y("booking.timeslot",{choosenWorkshop:n.booking.Workshop,registrationNo:n.booking.Vehicle.RegistrationNo,resourceContainerId:n.booking.Workshop.ResourceContainerId,make:n.booking.Vehicle.Info.Make.MakeId,mam:n.booking.Vehicle.Info.ModelText,my:n.booking.Vehicle.Info.ModelYear,rebooking:i.params.rebooking}):o.openGenericErrorDialogAsPromise(Resources.cantBookVehicleOnSelectedWorkshop.format(n.booking.Vehicle.RegistrationNo,n.booking.Vehicle.Info.Make.MakeText))}):a();return}if(p()){l("booking.details",{registrationNo:n.booking.Vehicle.RegistrationNo,make:n.booking.Vehicle.Info.Make.MakeId,mam:n.booking.Vehicle.Info.ModelText,my:n.booking.Vehicle.Info.ModelYear});return}f.getBooking(n.booking.Vehicle.RegistrationNo).then(function(n){n.data&&!n.data.Success?o.openGenericErrorDialogAsPromise(n.data.ErrorMessage):n.data?(e.buildBookingFromDamageInspection(n.data.DamageInspection,!0),l("booking.confirmation")):a()})}};w=function(){h.getIsVtrActivated(t.companyKey).then(function(t){var i=t.data;n.isVehicleInfoSelectionVisible=!i}).catch(function(){n.isVehicleInfoSelectionVisible=!0})};v=function(){n.makes||(k(),w());n.modelYears||d()};n.response=null;n.widgetId=null;i.params.ap||b();n.model={key:"6LcTXAcTAAAAALTOufQMm5kNz6d-h6uOoIFORk7A"};n.$on("initBookingStart",function(){v()});t.companyExists&&v();window.booking=n.booking}]);app.controller("bookingTimeslotCtrl",["$scope","$rootScope","$timeout","urlParamsMapperService","$state","timeslotRepo","vehicleInfoRepo","vehicleInfoService","damageInspectionRepo","damageInspectionService","resourceContainerRepo","timeslotsService","dialogService","companyInfoRepo","insuranceTypeRepo","$window",function(n,t,i,r,u,f,e,o,s,h,c,l,a,v,y,p){"use strict";var w,d,et,ot,lt,nt;n.rebookingOnNewWorkshop=!1;n.isTimeSlotsColumnActive=!1;n.booking.photoFront=null;n.booking.photoBack=null;n.booking.photoLeft=null;n.booking.photoRight=null;n.booking.photoAdditional=null;n.changeTime=function(){n.isTimeSlotsColumnActive=!0};w=function(n,t){p.scrollTo(0,0);u.go(n,t)};d=function(t){var i=s.getBooking(t);i===null||i===undefined?n.bookingInProgress=!0:i.then(function(t){var i=t.data.DamageInspection;i.WorkshopContact.Name!==n.booking.Workshop.Name&&(n.rebookingOnNewWorkshop=!0);n.booking.ExternalUserName=i.ExternalUserName;n.booking.Mileage=i.Mileage;n.booking.DamageNo=i.DamageNumber;n.booking.DamagePlacement=i.DamagePlacement;n.booking.InsuranceType=i.InsuranceType;n.booking.DamageDate=i.DamageDate?new Date(i.DamageDate):null;n.booking.Comment=i.Comment;n.booking.Excess=i.Excess;n.booking.InsuranceCompanyInfo=i.InsuranceCompanyInfo;n.booking.InformationRentalCar=i.InformationRentalCar;n.booking.Owner.Name=i.Customer.Name;n.booking.Owner.Address=i.Customer.Address.Street;n.booking.Owner.ZipCode=i.Customer.Address.PostalCode;n.booking.Owner.City=i.Customer.Address.City;n.booking.Owner.Mobile=i.Customer.Mobile;n.booking.Owner.Phone=i.Customer.Phone;n.booking.Owner.Email=i.Customer.Email;n.booking.SendConfirmationSMS=i.SendSmsConfirmation;n.booking.SendConfirmationEmail=i.SendEmailConfirmation;n.booking.photoFront=i.PhotoFront;n.booking.photoBack=i.PhotoBack;n.booking.photoLeft=i.PhotoLeft;n.booking.photoRight=i.PhotoRight;n.booking.photoAdditional=i.PhotoAdditional})};n.simpleZeroPad=function(n,t){var r,i=n.toString();if(i.length<t)for(r=i.length;r<t;r++)i="0"+i;return i};var g=function(n){var t=new Date(n||new Date);return t.addDays(1-t.getDay())},tt=function(n){for(var i=n.length,t=0;t<i;t++)n[t].guiStart=l.createDateFromDateStringAndForceCurrentTimeZone(n[t].Start),n[t].guiEnd=l.createDateFromDateStringAndForceCurrentTimeZone(n[t].End),n[t].SlotNo=n[t].guiStart.getHours()+"-"+n[t].guiStart.getMinutes();return n},it=function(t){var r,i=0;for(i;i<n.timeslots.length;i++)if(r=new Date(n.timeslots[i].Start).setHours(0,0,0,0),r===t.setHours(0,0,0,0))return n.timeslots[i];return null},at=function(i){n.booking.Workshop&&!angular.equals(n.booking.Workshop,{})&&f.getTimeSlotsForWeek(n.booking.Workshop.ResourceContainerId,n.booking.Workshop.OrganizationId,i.getFullYear(),i.getMonth()+1,i.getDate()).$promise.then(function(i){n.timeslots=tt(i);var u;r.getInitialDate()?u=it(new Date(r.getInitialDate())):n.datepicker.date.getDay()!==1&&(u=it(n.datepicker.date));n.booking.Timeslot=u||n.timeslots[0];t.$broadcast("showBookingInfoAlert");setTimeout(function(){l.highlightElementByClassName("time-inspection-box");l.highlightElementByClassName("calendarBody > div .selected")},10)},function(){n.timeslots=[]})},k=function(){n.booking.Workshop&&!angular.equals(n.booking.Workshop,{})&&f.getFirstAvailableTime(n.booking.Workshop.ResourceContainerId,n.booking.Workshop.OrganizationId).$promise.then(function(t){if(t.length<1){a.openGenericInformationDialogAsPromise(Resources.noAvailibleTimeSlotsFound);return}n.timeslots=tt(t);var i=g(new Date(n.timeslots[0].guiStart.getTime()));n.firstDayOfSelectedDatesWeek=i;n.datepicker.date=i;setTimeout(function(){l.highlightElementByClassName("time-inspection-box");l.highlightElementByClassName("calendarBody > div .selected")},10)},function(){n.timeslots=[]})},rt=function(){var i=n.booking.Workshop.FirstAvailableTime,u=r.getInitialDate(),t;if(!i&&u){if(t=new Date(u),isNaN(Date.parse(t))){a.openGenericErrorDialogAsPromise(Resources.invalidInitialDate);return}n.datepicker.date=new Date(t)}else i?n.datepicker.date=new Date(n.booking.Workshop.FirstAvailableTime):k()};n.openDatepicker=function(){n.datepicker.isOpen=!n.datepicker.isOpen};n.openDamageDatepicker=function(){n.damageDatepicker.isOpen=!n.damageDatepicker.isOpen};n.nextWeek=function(){n.datepicker.date=n.firstDayOfSelectedDatesWeek.addDays(7);n.refreshTimeSlots()};n.previousWeek=function(){n.datepicker.date=n.firstDayOfSelectedDatesWeek.addDays(-7);n.refreshTimeSlots()};n.getDateXDaysFromY=function(n,t){return new Date(t).addDays(n)};var b=function(t,i){return t&&t.guiStart?t.guiStart.toDateString()===new Date(g(n.datepicker.date)).addDays(i).toDateString():null},vt=function(n){return b(n,0)},yt=function(n){return b(n,1)},pt=function(n){return b(n,2)},wt=function(n){return b(n,3)},bt=function(n){return b(n,4)},kt=function(n){return b(n,5)},dt=function(n){return b(n,6)};n.setSelectedTimeslot=function(i,r){n.booking.Timeslot=i;n.isTimeSlotsColumnActive=!1;l.highlightElementByClassName("time-inspection-box");l.highlightElementByElement(r.target);t.$broadcast("showBookingInfoAlert")};n.datepickerFormat="yyyy-MM-dd";n.datepicker={date:new Date,isOpen:!1};n.damageDatepicker={isOpen:!1};var gt=function(t){t.WorkshopContact=n.booking.Workshop;h.buildBookingFromDamageInspection(t,!0);w("booking.confirmation")},ut=function(n){n.ErrorCode===999?(a.openGenericInformationDialogAsPromise(n.ErrorMessage),k()):(a.openServerErrorDialogAsPromise(n.ErrorMessage),w("booking.start"))},ft=function(t){s.post(t).then(function(t){n.bookingInProgress=!1;t.data.Success?w("booking.confirmation"):ut(t.data)}).catch(function(){n.bookingInProgress=!1;k()})},ni=function(t){s.updateBooking(t).then(function(t){n.bookingInProgress=!1;t.data.Success?w("booking.confirmation"):ut(t.data)}).catch(function(){k();n.bookingInProgress=!1})};n.sendBooking=function(i){var o,f,v,c,l,e,y;if(i.$valid){if(n.bookingInProgress=!0,o=u.params.make&&u.params.make!=="m"?u.params.make:r.getMakeId()||"",f=h.getDamageInspectionFromBooking(),f.MakeId=o,f.CompanyKey=t.companyKey,f.PhotoBack=n.booking.photoBack||null,f.PhotoFront=n.booking.photoFront||null,f.PhotoLeft=n.booking.photoLeft||null,f.PhotoRight=n.booking.photoRight||null,f.PhotoAdditional=n.booking.photoAdditional||null,!f.ResourceContainerId){a.openGenericErrorDialogAsPromise(Resources.noAvailibleTimeSlotsFound);n.bookingInProgress=!1;return}v=!n.booking.Vehicle.Info.Make||!n.booking.Vehicle.Info.Make.MakeId;v&&h.setMakeIdToBooking(o);s.getBooking(n.booking.Vehicle.RegistrationNo).then(function(i){if(n.thisIsRebooking)f.id=i.data.DamageInspection.Id,n.rebookingOnNewWorkshop?s.removeDamageInspectionBooking(f.VehicleIdentification).then(function(){ft(f)}):ni(f);else{var r=i.data,u=i.data&&!i.data.Success;t.setCookie("cookieConsent",!0);u?a.openGenericErrorDialogAsPromise(i.data.ErrorMessage):r?gt(i.data.DamageInspection):ft(f)}})}else n:for(c in i.$error)if(i.$error.hasOwnProperty(c)){e=i.$error[c];for(l in e)if(e.hasOwnProperty(l)){y=e[l];y.$$element[0].focus();break n}}};et=function(){var t;return t=n.booking.Owner.Email&&n.booking.Owner.Mobile?Resources.email+" "+Resources.and+" "+Resources.sms:n.booking.Owner.Email?Resources.email:Resources.sms,Resources.bookingInviteSentInfoText+" "+t+"."};ot=function(){return n.booking.Owner.Mobile&&n.booking.Owner.Mobile.length>5||n.booking.Owner.Email?!0:!1};n.bookingInvite=function(){if(ot()){var n=h.getDamageInspectionFromBooking();n.CompanyKey=t.companyKey;s.bookingInvite(n).then(function(){a.openGenericInformationDialogAsPromise(et())})}else a.openGenericInformationDialogAsPromise(Resources.bookingInviteValidationMessage)};var st=function(t){if(!t.Success){a.openGenericErrorDialogAsPromise(t.ErrorMessage);w("booking.start");return}if(n.booking.Workshop=t.ResourceContainer,n.booking.Workshop.FirstAvailableTime=t.FirstAvailableTimeslot.Start,n.booking.Vehicle.RegistrationNo.length<3){n.booking.Vehicle.RegistrationNo="";n.booking.Vehicle.Info.ModelText=r.getMakeAndModel();n.booking.Vehicle.Info.ModelYear=r.getModelYear();w("booking.start",{ap:!0});return}rt();u.params.rebooking==="true"&&d(n.booking.Vehicle.RegistrationNo)},ti=function(t){var i=function(t){return c.getFirstAvaibleTimeForContainers([t]).then(function(t){t.status===200&&(t.data[0].Success=!0);st(t.data[0]);n.refreshTimeSlots();k()})};t.data.length>1?a.openResourceContainerConfirmDialogAsPromise(t.data).then(function(n){i(n.ResourceContainer.ResourceContainerId)}):i(t.data[0].ResourceContainer.ResourceContainerId)},ht=function(t){c.getFirstAvaibleTimeForContainers([t]).then(function(t){t.status===200?(t.data[0].Success=!0,st(t.data[0]),n.refreshTimeSlots(),k()):a.openGenericErrorDialogAsPromise(Resources.noAvailibleTimeSlotsFound)})},ct=function(t){var i=t.getDate(),r=t.getMonth()+1,u=t.getFullYear();return i=n.simpleZeroPad(i,2),r=n.simpleZeroPad(r,2),i+"-"+r+"-"+u};if(n.isTodaysDate=function(t,i){var r=ct(n.getDateXDaysFromY(t,i)),u=ct(new Date);return r===u},n.$watch("booking.SendConfirmationSMS",function(){!n.damageInspectionBookingFieldsSettings||n.booking.SendConfirmationSMS||n.damageInspectionBookingFieldsSettings.IsMobilePhoneMandatory||l.removeClassFromElement("unvalid-textbox","ownerMobile")}),n.$watch("booking.SendConfirmationEmail",function(){!n.damageInspectionBookingFieldsSettings||n.booking.SendConfirmationEmail||n.damageInspectionBookingFieldsSettings.IsEmailMandatory||l.removeClassFromElement("unvalid-textbox","ownerEmail")}),lt=function(){y.getInsuranceTypes().then(function(t){n.InsuranceTypes=t.data})},n.thisIsRebooking=u.params.rebooking,v.getDamageInspectionBookingFieldsSettings(t.companyKey).then(function(t){n.damageInspectionBookingFieldsSettings=t.data;t.data.IsInsuranceTypeDisplayed&&lt()}).catch(function(n){console.log(n.status)}),v.getAllowBookingInvite(t.companyKey).then(function(t){n.allowBookingInvite=t.data}).catch(function(n){console.log(n.status)}),nt=new Date,n.dateOptions={startingDay:1,minDate:new Date,maxDate:new Date(nt.setMonth(nt.getMonth()+6))},n.damageDateOptions={startingDay:1,maxDate:new Date},n.refreshTimeSlots=function(){n.timeslotTimer!==null&&(i.cancel(n.timeslotTimer),n.timeslotTimer=null);n.timeslotTimer=i(function(){var t=new Date(n.datepicker.date);n.firstDayOfSelectedDatesWeek=g(t);at(t)},500)},n.dayColumns=[0,1,2,3,4,5,6],n.columnFilters=[vt,yt,pt,wt,bt,kt,dt],n.booking.Workshop&&n.booking.Workshop.ResourceContainerId&&(rt(),n.refreshTimeSlots()),!n.booking.Workshop||angular.equals(n.booking.Workshop,{}))if(r.currentUrlHasMappedUrlParams()&&r.getResourceContainerId())ht(r.getResourceContainerId(),r.getMakeId());else if(r.currentUrlHasMappedUrlParams()&&r.getCid())c.getByCid(r.getCid()).then(ti);else if(u.params.resourceContainerId!=="r"&&u.params.make!=="m")ht(u.params.resourceContainerId,u.params.make);else if(n.booking.Vehicle.RegistrationNo&&n.booking.Vehicle.RegistrationNo!=="r")w("booking.details",{registrationNo:n.booking.Vehicle.RegistrationNo,make:r.getMakeId(),mam:n.booking.Vehicle.Info.ModelText,ap:!0});else{n.booking.Vehicle.RegistrationNo="";w("booking.start",{ap:!0});return}else u.params.rebooking==="true"&&d(n.booking.Vehicle.RegistrationNo);o.makeSureVehicleInfoIsLoaded(n,e);$("[autofocus]:eq(0)").focus()}]);app.factory("timeslotRepo",["$resource",function(n){"use strict";return{getFirstAvailableTime:function(t,i){return n("/api/organizations/"+i+"/resourceContainers/"+t+"/timeslots").query()},getTimeSlotsForWeek:function(t,i,r,u,f){return n("/api/organizations/"+i+"/resourceContainers/"+t+"/timeslots/"+r+"/"+u+"/"+f).query()}}}]);app.controller("rebookingCtrl",["$scope","damageInspectionService",function(n,t){"use strict";n.booking=t.booking}]);app.controller("rebookingStartCtrl",["$scope","$state","damageInspectionRepo","damageInspectionService","dialogService","$window",function(n,t,i,r,u,f){"use strict";n.registrationNumber="";f.document.getElementById("regTxt").focus();n.model={key:"6LcTXAcTAAAAALTOufQMm5kNz6d-h6uOoIFORk7A"};var e=function(n){f.scrollTo(0,0);t.go(n)};n.fetchBooking=function(n){i.getBooking(n).then(function(n){n.data?n.data.Success?(r.buildBookingFromDamageInspection(n.data.DamageInspection,!1),e("rebooking.confirmation")):(u.openGenericErrorDialogAsPromise(n.data.ErrorMessage),e("booking.start")):u.openRebookDialogAsPromise(Resources.noBookingFound)})}}]);app.service("dialogService",["$uibModal","$state","$rootScope",function(n,t,i){"use strict";var f=["$scope","$uibModalInstance",function(n,i){n.ok=function(){i.close();t.go("booking.start",{},{reload:!0})}}],r=["$scope","$uibModalInstance",function(n,t){n.ok=function(){t.close()}}],e=["$scope","$uibModalInstance",function(n,t){n.ok=function(){t.close();localStorage.setItem("requestLimitDialogShown",!1)};n.showTimer=!0;n.countDown=n.retryAfter;setInterval(function(){n.countDown>0?(n.countDown--,n.$apply()):(n.showTimer=!1,n.$apply())},1e3)}],o=["$scope","$uibModalInstance",function(n,t){n.close=function(){t.close()}}],u=["$scope","$uibModalInstance",function(n,t){n.close=function(n){t.close(n)}}];this.openAuthenticationErrorDialogAsPromise=function(t){var r=i.$new();return r.message=t,n.open({templateUrl:"angularDialogs/authenticationErrorDialog",controller:f,scope:r}).result};this.openServerErrorDialogAsPromise=function(t){var u=i.$new();return u.message=t,n.open({templateUrl:"angularDialogs/serverErrorDialog",controller:r,scope:u}).result};this.openGenericErrorDialogAsPromise=function(t,u){var f=i.$new();return f.message=t,f.title=u,n.open({templateUrl:"angularDialogs/genericErrorDialog",controller:r,scope:f}).result};this.openGenericInformationDialogAsPromise=function(t){var u=i.$new();return u.message=t,n.open({templateUrl:"angularDialogs/genericInformationDialog",controller:r,scope:u,backdrop:"static"}).result};this.openRequestLimitDialogAsPromise=function(t){var r=i.$new();return r.retryAfter=t,n.open({templateUrl:"angularDialogs/requestLimitDialog",controller:e,scope:r,backdrop:"static"}).result};this.openRebookDialogAsPromise=function(t){var u=i.$new();return u.message=t,n.open({templateUrl:"angularDialogs/rebookingDialog",controller:r,scope:u}).result};this.openCommonConfirmDialogAsPromise=function(t,r){var u=i.$new();return u.yes=t,u.confimDialogMessage=r,n.open({templateUrl:"angularDialogs/commonConfirmDialog",controller:o,scope:u,backdrop:"static",keyboard:!1}).result};this.openResourceContainerConfirmDialogAsPromise=function(t){var r=i.$new();return r.resourceContainers=t,n.open({templateUrl:"angularDialogs/resourceContainerConfirmDialog",controller:u,scope:r,backdrop:"static",keyboard:!1}).result};this.openMakeConfirmDialog=function(t){var r=i.$new();return r.makes=t,n.open({templateUrl:"angularDialogs/makeConfirmDialog",controller:u,scope:r,backdrop:"static",keyboard:!1}).result}}]);app.directive("cookieCompliance",["$rootScope",function(n){"use strict";return{scope:{},template:'<div ng-cloak class="cookie-complience-btn" title="Close" ng-click="consent(true)" ng-hide="consent()"><img src="../../Content/Images/i.png" alt="" class="cookie-consent-message-image" />'+Resources.cookieConsentMessage+'<span class="glyphicon glyphicon-remove-circle mls font-15"><\/span><\/button>',controller:["$scope",function(t){t.consent=function(t){var i=n.getCookie("cookieConsent");return i?!0:t?(n.setCookie("cookieConsent",!0),!0):!1}}]}}]);app.directive("validDate",["dateService",function(n){"use strict";return{restrict:"A",require:"ngModel",link:function(t,i,r,u){i.bind("blur input",function(t){if(t.key!=="Tab"){var f=i[0].value,e=n.validateDate(f);e||r.required===!1&&!f?(u.$setValidity("validDate",!0),i.removeClass("unvalid-textbox"),i.addClass("valid-textbox")):(u.$setValidity("validDate",!1),i.removeClass("valid-textbox"),i.addClass("unvalid-textbox"))}})}}}]);app.directive("datepickerLocaldate",[function(){"use strict";function n(n,t,i,r){var u=r[0];u.$formatters.push(function(n){if(!n)return undefined;return new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate()))})}return{restrict:"A",require:["ngModel"],link:n}}]);app.directive("imageUpload",["$q",function(n){"use strict";function i(n,t){var i=new FileReader;i.onload=function(n){var r=new DataView(n.target.result);if(r.getUint16(0,!1)!==65496)return t(-2);for(var s=r.byteLength,i=2,e,u,o,f=0;i<s;){if(r.getUint16(i+2,!1)<=8)return t(-1);if(e=r.getUint16(i,!1),i+=2,e===65505){if(i+=2,r.getUint32(i,!1)!==1165519206)return t(-1);for(i+=6,u=r.getUint16(i,!1)===18761,i+=r.getUint32(i+4,u),o=r.getUint16(i,u),i+=2,f;f<o;f++)if(r.getUint16(i+f*12,u)===274)return t(r.getUint16(i+f*12+8,u))}else{if((e&&65280)!==65280)break;i+=r.getUint16(i,!1)}}return t(-1)};i.readAsArrayBuffer(n)}var t=function(t,i){var e=n.defer(),h="image/jpeg",r=new Image,f=document.createElement("canvas"),u,o=1920,s=1080;return r.onload=function(){r.width<o&&r.height<s&&e.resolve(t);var n=Math.min(o/r.width,s/r.height);r.width=r.width*n;r.height=r.height*n;4<i&&i<9?(f.width=r.height,f.height=r.width):(f.width=r.width,f.height=r.height);u=f.getContext("2d");switch(i){case 2:u.transform(-1,0,0,1,r.width,0);break;case 3:u.transform(-1,0,0,-1,r.width,r.height);break;case 4:u.transform(1,0,0,-1,0,r.height);break;case 5:u.transform(0,1,1,0,0,0);break;case 6:u.transform(0,1,-1,0,r.height,0);break;case 7:u.transform(0,-1,-1,0,r.height,r.width);break;case 8:u.transform(0,-1,1,0,0,r.width)}u.drawImage(r,0,0,r.width,r.height);t=f.toDataURL(h);e.resolve(t)},r.src=t,e.promise};return{restrict:"A",link:function(n,r){var u=n;return r.bind("change",function(n){var e="",h="image/",o=r[0].files,f=r.next("label"),l=f.html(),c,s;o&&o.length>1?e=(r.getAttribute("data-multiple-caption")||"").replace("{count}",o.length):n.target.value&&(e=n.target.value.split("\\").pop());e?(c=[".jpg",".jpeg",".png",".bmp"],s=!1,$(c).each(function(n,t){return e.toLowerCase().lastIndexOf(t)>0?(s=!0,h+=t.replace(".",""),!1):!0}),s?(f.addClass("selected").removeClass("incorrect"),f.find("span").html(e),i(o[0],function(n){var i=new FileReader;i.onload=function(i){var o=i.target.result;t(o,n).then(function(n){var t={FileName:e,FileType:h,FileData:n};switch(r[0].id){case"photo_damage_front":u.booking.photoFront=t;break;case"photo_back":u.booking.photoBack=t;break;case"photo_damage_left":u.booking.photoLeft=t;break;case"photo_damage_right":u.booking.photoRight=t;break;default:u.booking.photoAdditional=t}f.css("background-image","url('"+n+"')")})};i.readAsDataURL(o[0])})):(f.addClass("incorrect").removeClass("selected"),f.find("span").html(Resources.notAnImage+": "+e))):(f.removeClass("selected incorrect"),f.html(l))})}}}]);app.directive("isValid",[function(){"use strict";return{restrict:"A",link:function(n,t,i){t.bind("blur input",function(n){n.key!=="Tab"&&(t[0].value?(t.removeClass("unvalid-textbox"),t.addClass("valid-textbox")):i.required===!0?(t.removeClass("valid-textbox"),t.addClass("unvalid-textbox")):(t.removeClass("valid-textbox"),t.addClass("valid-textbox")))})}}}]);app.directive("validPositiveNumber",[function(){"use strict";return{restrict:"A",require:"ngModel",link:function(n,t,i,r){t.bind("blur input",function(n){if(n.key!=="Tab"){var u=!isNaN(t[0].value)&&parseInt(t[0].value,10)>=0&&parseInt(t[0].value,10)<2147483647||!t[0].value,f=!t[0].value&&i.required===!0;u?f?(r.$setValidity("isNotValidPositiveNumber",!1),t.removeClass("valid-textbox"),t.addClass("unvalid-textbox")):(r.$setValidity("isNotValidPositiveNumber",!0),t.removeClass("unvalid-textbox"),t.addClass("valid-textbox")):(r.$setValidity("isNotValidPositiveNumber",!1),t.removeClass("valid-textbox"),t.addClass("unvalid-textbox"))}})}}}]);app.factory("companyInfoRepo",["$http",function(n){"use strict";return{getLogoByCompanyKey:function(t){return n.get("/api/CompanyInfo/"+t+"/Logo",{cache:!0})},getBackgroundByCompanyKey:function(t){return n.get("/api/CompanyInfo/"+t+"/Background",{cache:!0})},getAllowUpdatesOfBookings:function(t){return n.get("/api/CompanyInfo/GetAllowUpdatesOfBookings/"+t,{cache:!0})},getAllowBookingInvite:function(t){return n.get("/api/CompanyInfo/GetAllowBookingInvite/"+t,{cache:!0})},getDamageInspectionBookingFieldsSettings:function(t){return n.get("/api/CompanyInfo/GetDamageInspectionBookingFieldsSettings/"+t,{cache:!0})},getIsVtrActivated:function(t){return n.get("/api/CompanyInfo/"+t+"/GetIsVtrActivated/",{cache:!0})},getCompanyMarketCode:function(t){return n.get("/api/CompanyInfo/"+t+"/GetCompanyMarketCode/",{cache:!0})},getCompanyExists:function(t){return n.get("/api/CompanyInfo/"+t+"/Exists/",{cache:!0})},getIntegrityPolicySettings:function(t){return n.get("/api/CompanyInfo/GetIntegrityPolicySettings/"+t,{cache:!0})}}}]);app.factory("damageInspectionRepo",["$http",function(n){"use strict";return{post:function(t){return n.post("/api/damageInspection/",t)},getBooking:function(t){return n.get("/api/DamageInspection/"+t+"/Summary")},removeDamageInspectionBooking:function(t){return n.get("/api/RemoveDamageInspectionBooking/"+t)},updateBooking:function(t){return n.post("/api/damageInspection/updateBooking/",t)},bookingInvite:function(t){return n.post("/api/damageInspection/bookingInvite/",t)}}}]);app.factory("insuranceTypeRepo",["$http",function(n){"use strict";return{getInsuranceTypes:function(){return n.get("/api/insuranceType/insuranceTypes",{cache:!0})}}}]);app.factory("resourceContainerRepo",["$http",function(n){"use strict";return{getByCid:function(t){return n.get("/api/Organization/"+t+"/ResourceContainer/",{cache:!0})},getResourceContainersWithAddresses:function(t,i){var r="/api/ResourceContainersWithAddresses/Makes?makeId="+t;return i&&(r+="&modelYear="+i),n.get(r)},getCachedResourceContainerCoordinates:function(t){return n.post("/api/GetCachedResourceContainerCoordinates/",t)},cacheResourceContainerCoordinates:function(t){return n.post("/api/CacheResourceContainerCoordinates/",t)},getFirstAvaibleTimeForContainers:function(t){return n.post("/api/ResourceContainers/FirstAvaibleTimes/",t)},getCanBookMakeOnResourceContainer:function(t,i,r){var u="/api/CanBookMakeOnResourceContainer?resourceContainerId="+t+"&makeId="+i;return r&&(u+="&modelYear="+r),n.get(u)}}}]);app.factory("vehicleInfoRepo",["$http",function(n){"use strict";return{get:function(t,i){return n.get("/api/Organizations/"+t+"/Vehicles/"+i)},getMakes:function(){return n.get("/api/makes",{cache:!0})}}}]);app.service("addressFormater",function(){"use strict";var n=function(n,t){var i=(n.Street||"")+", "+(n.PostalCode||"")+" "+(n.City||"");return t&&(i+=", "+(n.Country||"")),i};return{format:n}});app.service("browserGeoLocationService",["$q",function(n){"use strict";var t=function(){var t=n.defer();return navigator.geolocation?navigator.geolocation.getCurrentPosition(function(n){t.resolve(n)},function(n){t.reject("Could not get geolocation. Code: "+n.code+" Message: "+n.message)}):t.reject("Current browser is not supporting geolocation"),t.promise};return{getGeoLocationAsPromise:t}}]);app.service("companyInfoService",function(){"use strict";var n=function(){return window.location.pathname.replace(/\//g,"")};return{getCompanyKey:n}});app.service("damageInspectionService",["urlParamsMapperService","timeslotsService",function(n,t){"use strict";var i={VehicleHasAlreadyBeenScheduled:!1,BookingNo:"",DamageNo:n.getDamageNumber()||"",Excess:n.getExcess()||null,DamagePlacement:n.getDamagePlacement()||"",Comment:n.getComment()||"",SendConfirmationSMS:n.getSendConfirmationSms(),SendConfirmationEmail:n.getSendConfirmationEmail,ExternalUserName:n.getExternalUserName(),ConfirmationEmail:n.getConfirmationEmail(),InsuranceType:n.getInsuranceType(),DamageDate:n.getDamageDate(),Mileage:n.getMileage(),InsuranceCompanyInfo:n.getInsuranceCompanyInfo(),InformationRentalCar:n.getInformationRentalCar(),OldExistingDamage:n.getOldExistingDamage(),Owner:{Name:n.getCustomerName()||"",Address:n.getCustomerStreet()||"",ZipCode:n.getCustomerZip()||"",City:n.getCustomerCity()||"",Mobile:n.getCustomerMobile()||"",Phone:n.getCustomerPhone()||"",Email:n.getCustomerEmail()||""},Vehicle:{RegistrationNo:n.getRegistrationNo()||"",InsuranceCity:"",Info:{ModelText:n.getMakeAndModel()||"",ModelYear:n.getModelYear()}},Workshop:null,Timeslot:{},AllowUpdatesOfBooking:!1};this.booking=i;var f=function(n,t,i,r,u,f,e,o,s,h,c,l,a,v,y,p,w,b,k,d,g,nt,tt,it,rt,ut,ft,et){this.DamageNumber=n;this.Excess=t;this.DamagePlacement=i;this.WorkshopOrganizationId=r;this.id=u;this.Comment=f;this.Customer=e;this.ExternalUserName=o;this.ConfirmationEmail=s;this.InsuranceCompany=h;this.ModelText=c;this.ModelYear=l;this.MakeId=a;this.EndTime=v;this.StartTime=y;this.WorkshopContact=p;this.OrganizationCid=w;this.ResourceContainerId=b;this.VehicleIdentification=k;this.SendSmsConfirmation=d;this.SendEmailConfirmation=g;this.AllowUpdatesOfBooking=nt;this.InsuranceType=tt;this.DamageDate=it;this.Mileage=rt;this.InsuranceCompanyInfo=ut;this.InformationRentalCar=ft;this.OldExistingDamage=et},r=function(n,t,i,r,u){this.Address=n;this.Email=t;this.Name=i;this.Mobile=r;this.Phone=u},u=function(n,t,i,r){this.City=n;this.Country=t;this.Street=i;this.PostalCode=r};this.getDamageInspectionFromBooking=function(){return new f(i.DamageNo,i.Excess,i.DamagePlacement,i.Workshop.OrganizationId,null,i.Comment,new r(new u(i.Owner.City,i.Owner.Country,i.Owner.Address,i.Owner.ZipCode),i.Owner.Email,i.Owner.Name,i.Owner.Mobile,i.Owner.Phone),i.ExternalUserName,i.ConfirmationEmail,"",i.Vehicle.Info.ModelText,i.Vehicle.Info.ModelYear,i.Vehicle.Info.Make?i.Vehicle.Info.Make.MakeId:"",i.Timeslot.End,i.Timeslot.Start,new r(new u(i.Workshop.Address.City,"",i.Workshop.Address.Street,i.Workshop.Address.PostalCode),i.Workshop.Email,i.Workshop.Name,"",i.Workshop.Phone),"",i.Timeslot.ResourceContainerId,i.Vehicle.RegistrationNo,i.SendConfirmationSMS,i.SendConfirmationEmail,i.AllowUpdatesOfBooking,i.InsuranceType,i.DamageDate,i.Mileage,i.InsuranceCompanyInfo,i.InformationRentalCar,i.OldExistingDamage)};this.buildBookingFromDamageInspection=function(n,r){i.VehicleHasAlreadyBeenScheduled=r;i.Owner.Name=n.Customer.Name;i.Owner.Address=n.Customer.Address.Street;i.Owner.ZipCode=n.Customer.Address.PostalCode;i.Owner.City=n.Customer.Address.City;i.Owner.Mobile=n.Customer.Mobile;i.Owner.Phone=n.Customer.Phone;i.Owner.Email=n.Customer.Email;i.Vehicle.RegistrationNo=n.VehicleIdentification;i.Vehicle.Info={};i.Vehicle.Info.ModelText=n.ModelText;i.Vehicle.Info.ModelYear=n.ModelYear;i.Vehicle.Info.Make={};i.Vehicle.Info.Make.MakeId=n.MakeId;i.Workshop=n.WorkshopContact;i.Timeslot.End=new Date(n.EndTime);i.Timeslot.guiEnd=t.createDateFromDateStringAndForceCurrentTimeZone(n.EndTime);i.Timeslot.Start=new Date(n.StartTime);i.Timeslot.guiStart=t.createDateFromDateStringAndForceCurrentTimeZone(n.StartTime);i.AllowUpdatesOfBooking=n.AllowUpdatesOfBooking;i.InsuranceType=n.InsuranceType;i.DamageDate=n.DamageDate||null;i.Mileage=n.Mileage;i.InsuranceCompanyInfo=n.InsuranceCompanyInfo;i.InformationRentalCar=n.InformationRentalCar;i.OldExistingDamage=n.OldExistingDamage;i.ExternalUserName=n.ExternalUserName};this.setMakeIdToBooking=function(n){i.Vehicle.Info.Make={};i.Vehicle.Info.Make.MakeId=n}}]);app.service("dateService",function(){"use strict";var n=function(n){return new Date(n)!="Invalid Date"};return{validateDate:n}});app.service("mapService",["$q",function(n){"use strict";var r="AIzaSyD7hca90rD5nHKkjAOBFhf_pf1R4H_cbZY",i=null,t=[],o=25,s=function(){for(var r=new google.maps.LatLngBounds(null),n=0;n<t.length;n++)r.extend(t[n].getPosition());i.fitBounds(r);google.maps.event.addListenerOnce(i,"idle",function(){google.maps.event.trigger(i,"resize");i.fitBounds(r)})},h=function(n,t,r){(!i||r)&&(i=new google.maps.Map(document.getElementById(n),t))},u=function(){for(var n=0;n<t.length;n++)t[n].infoWindow.close()},c=function(n){u();var i=t.find(function(t){return t.markerId===n});i&&i.infoWindow&&i.infoWindow.open(i.map)},l=function(n){google.maps.event.addListener(n,"click",function(){u();n.infoWindow.open(n.map);n.markerClickCallback&&n.markerClickCallback()})},f=function(n,r){n.setMap(i);var u=new google.maps.InfoWindow({content:r,position:n.position,pixelOffset:new google.maps.Size(0,-40)});return n.infoWindow=u,t.push(n),l(n),n},a=function(n){var t=Resources.currentPosition,r="<h3 style='margin-top:0;'>"+t+"<\/h3>",u=new google.maps.Marker({position:new google.maps.LatLng(n.lat,n.lng),map:i,title:t,icon:"../../Content/Images/blueMarker.png"});f(u,r)},v=function(n,t,r,u){var e=new google.maps.Marker({position:new google.maps.LatLng(n.lat,n.lng),map:i,title:t,markerId:u});return f(e,r)},y=function(){for(var n=t.length;n--;)t[n].setMap(null),t[n].infoWindow.close(),t.splice(n,1)},p=function(n){var t="https://maps.googleapis.com/maps/api/geocode/json?latlng="+encodeURI(n.lat)+","+encodeURI(n.lng)+"&result_type=postal_town&key="+r;return $.get(t)},w=function(n){var t="https://maps.googleapis.com/maps/api/geocode/json?address="+encodeURI(n)+"&key="+r;return $.get(t)},b=function(n,t){var i="https://maps.googleapis.com/maps/api/geocode/json?components=locality:"+encodeURI(n)+"|country:"+encodeURI(t)+"&key="+r;return $.get(i)},k=function(n,t){for(var r=[],i=0;i<n.length;i+=t)r.push(n.slice(i,i+t));return r},e=function(n,t,i,r,u){if(u>600){r.reject("Number of retries getting distance exceeded for (origin, destinations): ",n,t);return}var f=u<=0?0:50;setTimeout(function(){i.getDistanceMatrix({origins:[n],destinations:t,travelMode:"DRIVING"},function(f,o){o==="OK"?r.resolve(f.rows[0].elements):o==="OVER_QUERY_LIMIT"?e(n,t,i,r,u+1):r.reject("error getting distance: "+o)})},f)},d=function(t,i){var r=n.defer(),u=new google.maps.DistanceMatrixService;return e(t,i,u,r,0),r.promise},g=function(n,t){for(var r=[],u,f=k(t,o),i=0;i<f.length;i++)u=d(n,f[i]),r.push(u);return r},nt=function(t,i){var r,u=g(t,i);return n.all(u).then(function(n){return r=[].concat.apply([],n)})},tt=function(n,t){var i=new google.maps.LatLng(n.lat,n.lng),r=new google.maps.LatLng(t.lat,t.lng);return google.maps.geometry.spherical.computeDistanceBetween(i,r)},it=function(n,t){return google.maps.event.addListener(n,"domready",t)};return{loadMap:h,markers:t,setInfoWindowDomReady:it,calculateDistance:tt,getCoordinatesFromAddress:w,getCoordinatesFromAddressInCountry:b,getAddressFromCoordinates:p,clearAllMarkers:y,drawMarker:v,drawOriginPositionMarker:a,zoomToFit:s,getDrivingDistanceToPositions:nt,openMarker:c,closeAllMarkers:u}}]);app.directive("validNumeric",[function(){"use strict";return{restrict:"A",require:"ngModel",link:function(n,t,i,r){function u(n){if(n){var t=!isNaN(parseFloat(n))&&isFinite(n);t?r.$setValidity("validNumeric",!0):r.$setValidity("validNumeric",!1)}else r.$setValidity("validNumeric",!0);return n}r.$parsers.push(u)}}}]);app.directive("validPhonenumber",["phoneNumberService",function(n){"use strict";return{restrict:"A",require:"ngModel",link:function(t,i,r,u){function f(t){if(t){var i=n.checkPhoneNumber(t);i?u.$setValidity("validPhonenumber",!0):u.$setValidity("validPhonenumber",!1)}else u.$setValidity("validPhonenumber",!0);return t}u.$parsers.push(f)}}}]);app.service("phoneNumberService",function(){"use strict";function i(n){return/^\d+$/.test(n)}var n=function(n,t){this[n]=n;this.countries=t;this.isLeaf=function(){return!this.countries||this.countries.length===0}},r=new n("+3",[new n("+35",[new n("+354",[]),new n("+358",[])]),new n("+37",[new n("+371"),new n("+372")])]),u=new n("+4",[new n("+44",[]),new n("+45",[]),new n("+46",[]),new n("+47",[]),new n("+49",[])]),f=new n("+7",[]),e=new n("+",[r,u,f]),o=function(n,t){for(var i=0;i<t.length;i++)if(t[i].hasOwnProperty(n))return t[i];return null},t=function(n){var t=null;return n.indexOf("+")===0?t=n:n.indexOf("00",0)===0&&(t=n.replace("00","+")),t},s=function(n){var f="",s=[e],r,i,u=t(n);if(!u)return null;for(r=0;r<u.length;r++)if(f+=u.charAt(r),i=o(f,s),i){if(i.isLeaf())return i;s=i.countries}return null},h=function(n){var t=!1,r=n.replace(/\D/g,""),u=n.replace("+","").replace("-",""),f=new RegExp("^[0]+$");return n.indexOf(" ")!==-1||f.test(r)||n.indexOf("+")>0||n.indexOf("-")===0?t=!1:(i(n)||i(u)&&(n.indexOf("+")===0||r.indexOf("0")===0))&&(t=!0),t};return{ensurePlusSign:t,ensureCountryCode:s,checkPhoneNumber:h}});app.service("timeslotsService",function(){"use strict";function t(n){var t=new Date(n.getFullYear(),0,1),i=new Date(n.getFullYear(),6,1);return Math.min(t.getTimezoneOffset(),i.getTimezoneOffset())===n.getTimezoneOffset()}var n=function(n){var t,i,r;return t=n.lastIndexOf("+"),t===-1&&(t=n.lastIndexOf("-")),i=n.substring(0,t),r=n.substring(t,n.length),{dateWithoutTimezone:i,timezone:r}},r=function(i){var s=new Date,h=new Date(i),f=t(s),e=t(h),o=n(i),r=o.timezone?n((new Date).toTimeString()).timezone:"",u;return r.indexOf(":")===-1&&(r=r.substring(0,3)+":"+r.substring(3,5)),f===!1&&e===!0&&(u=r.substring(2,3),u=+u,u=u+1,r=r.substring(0,2)+u+r.substring(3,6)),f===!0&&e===!1&&(u=r.substring(2,3),u=+u,u=u-1,r=r.substring(0,2)+u+r.substring(3,6)),new Date(o.dateWithoutTimezone+r)},u=function(n,t){$("#"+t).removeClass(n)},i=function(n){Modernizr.mq("(min-width: 768px)")&&(n.css("opacity",.4),window.setTimeout(function(){n.css("opacity",1)},600))},f=function(n){i($("."+n))},e=function(n){i($(n))};return{createDateFromDateStringAndForceCurrentTimeZone:r,removeClassFromElement:u,highlightElementByElement:e,highlightElementByClassName:f}});app.service("urlParamsMapperService",["$location",function(n){"use strict";var t={token:"token",registrationNo:"rno",cid:"cid",customerName:"cn",customerPhone:"ct",customerMobile:"custm",customerEmail:"ce",customerStreet:"cs",customerZip:"cz",customerCity:"cc",damageNumber:"dno",damagePlacement:"dp",makeAndModel:"mam",externalUserName:"eun",confirmationEmail:"cm",sendConfirmationSms:"scs",sendConfirmationEmail:"sce",comment:"c",initialDate:"id",makeId:"mi",damageDate:"dd",insuranceType:"it",mileage:"mil",modelYear:"my",resourceContainerId:"rid",Excess:"ex",InsuranceCompanyInfo:"ici",InformationRentalCar:"irc",OldExistingDamage:"oed"},i=function(t){return n.search()[t]},u=function(){var n=!1;for(var r in t)if(t.hasOwnProperty(r)&&i(t[r])){n=!0;break}return n},r=function(n){return n&&n.toLowerCase()==="true"?!0:!1};return{currentUrlHasMappedUrlParams:u,getToken:function(){return i(t.token)},getRegistrationNo:function(){return i(t.registrationNo)},getCid:function(){return i(t.cid)},getCustomerName:function(){return i(t.customerName)},getCustomerPhone:function(){return i(t.customerPhone)},getCustomerMobile:function(){return i(t.customerMobile)},getCustomerEmail:function(){return i(t.customerEmail)},getDamageNumber:function(){return i(t.damageNumber)},getExcess:function(){return i(t.Excess)},getDamagePlacement:function(){return i(t.damagePlacement)},getMakeAndModel:function(){return i(t.makeAndModel)},getExternalUserName:function(){return i(t.externalUserName)},getConfirmationEmail:function(){return i(t.confirmationEmail)},getSendConfirmationEmail:function(){return r(i(t.sendConfirmationEmail))},getSendConfirmationSms:function(){return r(i(t.sendConfirmationSms))},getComment:function(){return i(t.comment)},getCustomerStreet:function(){return i(t.customerStreet)},getCustomerZip:function(){return i(t.customerZip)},getCustomerCity:function(){return i(t.customerCity)},getInitialDate:function(){return i(t.initialDate)},getInsuranceType:function(){var n=i(t.insuranceType);return n&&!isNaN(n)&&n!=="0"?parseInt(n,10):null},getDamageDate:function(){var n=i(t.damageDate);return n?new Date(n):null},getMileage:function(){var n=i(t.mileage);return n&&!isNaN(n)?parseInt(n,10):null},getModelYear:function(){var n=i(t.modelYear);return n&&!isNaN(n)?parseInt(n,10):null},getMakeId:function(){return i(t.makeId)},getResourceContainerId:function(){return i(t.resourceContainerId)},getInsuranceCompanyInfo:function(){return i(t.InsuranceCompanyInfo)},getInformationRentalCar:function(){return i(t.InformationRentalCar)},getOldExistingDamage:function(){return i(t.OldExistingDamage)}}}]);app.service("userPositionService",["browserGeoLocationService","mapService",function(n,t){"use strict";var i=function(n){return t.getAddressFromCoordinates(n).then(function(n){var t=n.results[0],i,r;return t?(i=t.address_components.find(function(n){return n.types.some(function(n){return n==="postal_town"})}),r=i?i.long_name:t.formatted_address,r):null})},r=function(){return n.getGeoLocationAsPromise().then(function(n){return{lat:n.coords.latitude,lng:n.coords.longitude}})};return{getUserPositionNearestCity:i,getUserPosition:r}}]);app.service("vehicleInfoService",function(){"use strict";var n=function(n,t){n.booking.Vehicle.Info||t.get(n.companyKey,n.booking.Vehicle.RegistrationNo).then(function(t){n.booking.Vehicle.Info=t.data}).catch(function(){n.booking.Vehicle.Info=null})},t=function(n,t){var i=$.grep(n,function(n){return n.MakeId.toString()===t?n:null});return i[0]};return{makeSureVehicleInfoIsLoaded:n,getMakeByMakeId:t}});app.service("workshopDistanceComparer",function(){"use strict";function n(n,t){return n.straightLineDistance?t.straightLineDistance?n.straightLineDistance<t.straightLineDistance?-1:n.straightLineDistance>t.straightLineDistance?1:0:-1:1}function t(n,t){return n.Distance&&!t.Distance?-1:!n.Distance&&t.Distance?1:n.Distance&&t.Distance?n.Distance.value<t.Distance.value?-1:n.Distance.value>t.Distance.value?1:0:n.straightLineDistance?t.straightLineDistance?n.straightLineDistance<t.straightLineDistance?-1:n.straightLineDistance>t.straightLineDistance?1:0:-1:1}return{compareByStraightLineDistance:n,compareByStraightLineAndDriveDistance:t}});app.service("workshopDistanceService",["workshopDistanceComparer","mapService",function(n,t){"use strict";var i=function(n,t){var i=n.length>t?t:n.length;return n.slice(0,i)},r=function(t,r,u){var f=t.sort(n.compareByStraightLineDistance),e=f.filter(function(n){return n.straightLineDistance!==null&&n.straightLineDistance<=r*1e3});return i(e,u)},u=function(n,t,r){var u=n.filter(function(n){return n.Distance&&n.Distance.value<=t*1e3});return i(u,r)},f=function(n,i){for(var u,f,r=0;r<i.length;r++)u=i[r],u.position&&(f=t.calculateDistance(n,u.position),u.straightLineDistance=f)},e=function(n,i){var u=1e3,r=n.filter(function(n){return!n.Distance}),f=r.map(function(n){return n.position});t.getDrivingDistanceToPositions(i,f).then(function(t){for(var i,f=0;f<r.length;f++)r[f].Distance=t[f].distance||null;for(i=0;i<n.length;i++)n[i].Distance&&(n[i].formattedDistance=Math.round(n[i].Distance.value/u))})},o=function(n){for(var t=0;t<n.length;t++)n[t].straightLineDistance=null,n[t].Distance=null,n[t].formattedDistance=null};return{getWorkshopsClosestByStraightLineDistance:r,calculateStraightLineDistances:f,getWorkshopsClosestByDistance:u,setFormattedDistanceOnWorkshops:e,resetDistances:o}}]);app.service("workshopPositionService",["addressFormater","mapService","resourceContainerRepo","$q",function(n,t,i,r){"use strict";var u=function(n,t){n.results.length>0&&n.results[0].geometry&&(t.position=n.results[0].geometry.location)},f=function(i){var r=n.format(i.Address,!0);return t.getCoordinatesFromAddress(r).then(function(n){u(n,i)})},e=function(n,t){return n.find(function(n){return n.ResourceContainerId===t.ResourceContainerId&&n.Street===t.Address.Street&&n.PostalCode===t.Address.PostalCode&&n.City===t.Address.City})},o=function(n){var t=n.filter(function(n){return!!n.position}),r;t.length<=0||(r=t.map(function(n){return{ResourceContainerId:n.ResourceContainerId,Street:n.Address.Street,PostalCode:n.Address.PostalCode,City:n.Address.City,Latitude:n.position.lat,Longitude:n.position.lng}}),i.cacheResourceContainerCoordinates(r))},s=function(n,t){for(var h=[],c=[],i,l,s,u=0;u<n.length;u++)i=n[u],s=e(t,i),s?i.position={lat:s.Latitude,lng:s.Longitude}:(l=f(i),h.push(l),c.push(i));return r.all(h).then(function(){o(c)})},h=function(n){var t=n.map(function(n){return n.ResourceContainerId});return i.getCachedResourceContainerCoordinates(t).then(function(t){return s(n,t.data)})};return{setPositions:h}}])