{"version":3,"sources":["index.js","templateCacheHtml.js","wishlist/wishlist.service.js","wishlist/wishlist.component.js","vehicle/vehicle-preview.component.js","vehicle/vehicle-details.component.js","search-form/search-form.component.js","results/results.component.js","root/root.component.js","premium-details/premium-details.component.js","modal/info-modal.component.js","loader/loader.component.js","lead-form/stopccp.directive.js","lead-form/restrictToMobile.directive.js","lead-form/restrictTo.directive.js","lead-form/lead-form.component.js","home/home.component.js","gallery/gallery.component.js","accordion/accordion.component.js","accordion/accordion-panel.component.js","uvl.service.js","tagging.service.js","scroll.service.js","routes.js","result-helper.service.js","merge-sort.js","l10n.js","installments-calculator.service.js","http-interceptor.js","fragment.directive.js","energy-label.config.js","device.config.js","async-tasks.service.js"],"names":["angular","module","constant","window","FCAUsedConfig","moment","run","$window","$location","CONFIG","FCAUsedVersion","search","mileage","min","steps","max","length","queryStringParams","qs","defaultDistance","parseInt","NaN","isNaN","distance","default","defaultModel","fromJson","decodeURIComponent","model","error","console","defaultLocation","location","goToResults","volume","step","unit","$templateCache","put","wishlistService","$localStorage","uvl","Wishlist","wishlist","this","show","list","getList","instance","prototype","Object","keys","map","vehicleCode","sort","a","b","Date","added","getTime","item","vehicle","get","add","splice","remove","setNotAvailable","notAvailable","clear","lockPageScroll","element","document","find","css","unlockPageScroll","open","self","forEach","codes","getVehicleDetails","then","vehicles","validCodes","code","indexOf","catch","close","factory","$inject","wishlistController","component","bindings","data","templateUrl","controller","vehiclePreviewController","$translate","$state","$timeout","$element","config","toggleWishlist","inWishlist","removingFromWishlist","openDetails","lastSelectedVehicleCode","go","sincom","dealer","SINCOM","brand","BRAND","siteCode","SITECODE","$onInit","Boolean","kw","Math","round","horsePower","warranty","premium","warrantyCode","price","priceCurrent","registration","date","registrationYear","registrationMonth","registrationDay","format","instant","scrollIntoView","behavior","controllerAs","vehicleDetailsController","$sce","$http","tagging","InstallmentsCalculator","handleInstallmentsModalEvent","event","origin","installmentsCalculator","iframe","domain","method","closeInstallmentsModal","getMonthlyRate","response","installments","getMVS","optionals","vin","loadImpressum","getImpressum","LEGAL_ENTITY","impressumHTML","showImpressum","getShareLink","href","share","target","shareLink","text","encodeURIComponent","link","flagMobile","getConsumer","mirafioriStripe","selector","querySelector","style","display","standardOptionals","concat","mynumber","enabled","enableDealerLocatorFallback","phone","TEL_1","number","parsed","match","join","scrollToContactForm","payedOptionals","standardOptional","vehicleDetailFields","dealerNotes","parse","separator","parsedOptionals","split","optionalForFee","parsedOptionalsForFee","String","enableDealerWebsite","showDealerWEBSITE","YCOORD","XCOORD","mapLink","COMPANYNAM","isDefined","digitalData","page","pageInfo","sysEnv","toLowerCase","track","usedVehicle","contactFormUrl","trustAsResourceUrl","contactForm","url","openInstallmentsModal","installmentsModal","getIframeUrl","addEventListener","searchFormController","$rootScope","scroll","ResultHelper","$q","$filter","$log","setDefaultQuery","searchForm","resultHelper","lastQuery","extendedArea","filters","copy","km","year","power","getUvlVolumeMax","fixArea","setSlidersEnabled","disabled","getSuggestions","query","defer","hereMapsAutocompleteUrl","maps","country","language","id","hereMapsApiKey","status","resolve","reject","promise","getLocationDetail","locationId","showUpdateButton","doShow","submit","isQueryChanged","lastSentQuery","getLastQuery","order","pagination","elem","key","equals","renderSliders","$broadcast","loadScript","src","deferred","script","createElement","onload","onreadystatechange","e","onerror","body","appendChild","getHereMapsLocationLabelFromLocationDetail","place","log","addressInfos","address","additionalData","value","CountryName","geometry","lat","displayPosition","latitude","lng","longitude","locality","label","province","county","getHereMapsLocationLabel","countryName","position","countyCode","geolocationRunning","geolocationAvailable","navigator","geolocation","resultIndex","locate","getCurrentPosition","hereMapsService","reverseGeocode","at","coords","result","items","onFilterChange","timeout","enableHighAccuracy","autoCompletePlaces","api","endpoint","restrictions","market","types","reset","vehiclesCount","closeModal","modalFilters","getVehiclesCount","ordered","saveLastFilters","trackLoad","reload","locationSuggestionChanged","setLocation","when","suggestions","index","$event","view","stopPropagation","locationChanged","models","fuels","gears","colors","transmissions","brands","vehicleType","bodyType","typeOfUse","wheelBase","getCount","count","doGetValues","firstSearch","fuel","gear","color","transmission","getValues","groups","brandCode","modelCode","brandModelCode","fuelCode","gearCode","bodyColorCode","transmissionTypeCode","bodyTypeCode","typeOfUseCode","wheelBaseCode","stats","ceil","floor","setUvlVolumeMax","brandChanged","removeFilter","type","hereMapsEndpoint","hereMapsServiceEndpoint","platform","H","service","Platform","apikey","getSearchService","showSelectionBar","stepsArray","onEnd","translate","slider","thousandsSeparator","resultsController","$stateParams","renderPages","selectedPage","pages","total","size","i","push","resultTracking","pageLoad","filterList","name","taggingName","modelDescription","taggingId","doors","vatCode","damagedVehicle","taggingOptions","inventorySearch","filter","numberOfVehicles","overrideVehicleLocation","locationOverriden","mandate","mandateBrand","dealers","orderOptions","fields","updatePage","begin","end","pagedData","slice","setPage","nextPage","prevPage","changedListOptions","updateLocally","pageSize","update","changedSortingOptions","saveLastQuery","getVehicles","updateResults","newSearch","isUndefined","gridView","getLastFilters","sizes","numFound","openFiltersModal","setGridView","rootController","asyncTasks","class","protocol","replace","premiumDetailsController","premiumDetails","notes","topCta","descriptionItems","title","description","descriptionNotes","openExtendedWarrantyModal","showExtendedWarrantyModal","closeExtendedWarrantyModal","closeAnywhere","hideContent","transclude","StopCcpDirective","scope","on","preventDefault","directive","RestrictToMobileDirective","restrict","ele","regex","RegExp","test","RestrictToDirective","LeadFormController","leadForm","sent","errors","submitted","privacyTextAccordion","privacyProfilationAccordion","privacyMarketingAccordion","privacyThirdPartyAccordion","mobileRegex","mobileMaxLenght","mobileMask","mobileMaskValue","firstName","lastName","secondLastName","email","confirmEmail","mobileNumber","privacyMarketing","privacyProfilation","privacyThirdParty","isValid","m","device","toUpperCase","normalizedFields","TITLE_PERSON","nome","cognome","Email","cellulare","comment","toString","SpecifyPrivacy","EXTENDEDPRIVACYALL","MARKETING_MAIL1","MARKETING_POST1","MARKETING_SMS1","MARKETING_PHONE1","PRIVACYPROFILATION","PRIVACYTHIRDPARTY","DISCLAIMER","leadform","disclaimerId","BUSAREA","Country","Brand","OFFER","offer","Market","MODELDESCRIPTION","MODELCOMMERCIALCODE","MODELVIN","MODELPRICE","NAME","dealerName","DEALERSINCOM","DEALERSITECODE","TYPE","LEVEL1","LEVEL2","LEVEL3","LEVEL4","CAMPAIGN","campaign","Language","USEDDEVICE","ID_TIMESTAMP","PREVIOUS_URL","referrer","elqFormName","formAddress","postParams","leadUrl","postUrl","headers","Content-Type","thankYou","homeController","debounce","BREAKPOINTS","home","galleryController","cacheImages","l","gallery","assets","next","current","prev","fullscreen","basePath","selectDefaultPicture","isDefault","images","require","accordionController","accordion","panels","addPanel","panel","togglePanel","accordionPanelController","toggle","scrollOnToggle","to","isFunction","afterPanelOpened","header","content","uvlService","$httpParamSerializer","mergeSort","lastFilters","innerWidth","DESKTOP","MIN","buildQuery","city","q","consumer","options","culture","prepareFilter","filterName","vehicleTypeCode","prepareFilters","extend","additionalFilters","isObject","fuelDescription","gearDescription","bodyColorDescription","transmissionTypeDescription","brandDescription","prepareRequest","explicitMandate","request","setCount","getMandate","start","rows","orderKey","orderDirection","direction","isArray","hasWLTPdata","wltp","j","wltpMap","iswltp","wltpLevel","getShareUrl","social","baseUrl","siteName","undefined","getDealer","sitecode","dealerLocatorUrl","dealerLocator","params","func","mkt","sin","st","jsonp","jsonpCallbackParam","results","overrideData","legalEntity","impressum","innerHTML","getElementsByTagName","getDealerList","mandateMap","rad","x","y","lastDealerList","lastDealerListParams","taggingService","pathname","pageName","prefix","category","primaryCategory","subCategory1","subCategory2","pageType","usedvehicleBrand","usedvehicleModel","brandModelDescription","dealerID","form","stepName","leadType","nameType","vehicleBrand","mkParams","_satellite","warn","countryCode","scrollService","top","isString","offSet","getBoundingClientRect","pageYOffset","headerSelector","headerRect","height","routesConfig","$stateProvider","$urlRouterProvider","$locationProvider","translationsReady","onReady","fetchResults","$transition$","err","fetchDetails","fetchDealer","fetchMynumber","post","masterKey","KcomNumber","removePrefix","fetchVehicleInstallments","init","fetchDealers","dealerObject","html5Mode","hashPrefix","otherwise","state","redirectTo","clearEloquaVehicleData","clearLastQuery","setEloquaVehicleData","scrollTopOnRouteChangeService","$transitions","onFinish","left","vehicleData","setLastQuery","uvlMax","array","compare","middle","right","l10nConfiguration","$translateProvider","useSanitizeValueStrategy","useLoaderCache","useLoader","preferredLanguage","labelsLoader","translations","firstLabelPremium","setLocaleFormats","$locale","NUMBER_FORMATS","GROUP_SEP","numberGroupSeparator","DECIMAL_SEP","numberDecimalSeparator","installmentsCalculatorService","Guid","uuid","newGuid","simType","token","guid","mvs","priceService","pricePromotion","age","diff","toJson","path","lang","opncl_performance","opncl_advertising","pricePromotionNoVAT","priceNoVAT","originUrl","dealerCode","prescoringActive","vinCode","doShowLoader","substr","valueOf","pop","responseError","$httpProvider","interceptors","FragmentDirective","$compile","attr","eloqua","scripts","getAttribute","s","async","setAttribute","head","parentNode","removeChild","mockForm","insertBefore","childNodes","html","outerHTML","contents","energyLabelConfigProvider","setEnergyClassList","PHONE_PORTRAIT","MAX","TABLET_PORTRAIT","Number","MAX_VALUE"],"mappings":"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","file":"fca-used.js","sourcesContent":["angular\n .module('fca-used', [\n 'ngSanitize',\n 'ngTouch',\n 'ngGuid',\n 'ui.router',\n 'pascalprecht.translate',\n 'debounce',\n 'rzModule',\n 'ngStorage',\n 'ngclipboard',\n 'hl.sticky',\n 'EnergyLabel',\n 'angular-bind-html-compile',\n 'ngMask'\n ])\n /* eslint-disable angular/window-service */\n .constant('CONFIG', window.FCAUsedConfig)\n .constant('moment', window.moment)\n /* eslint-enable angular/window-service */\n .run([\"$window\", \"$location\", \"CONFIG\", function ($window, $location, CONFIG) {\n $window.FCAUsedVersion = 'v1.18.5';\n CONFIG.search.mileage.min = CONFIG.search.mileage.steps[0];\n CONFIG.search.mileage.max = CONFIG.search.mileage.steps[CONFIG.search.mileage.steps.length - 1];\n if (!CONFIG.queryStringParams) {\n return CONFIG;\n }\n var qs = $location.search();\n if (qs[CONFIG.queryStringParams.defaultDistance]) {\n var defaultDistance = $window.parseInt(qs[CONFIG.queryStringParams.defaultDistance]) || NaN;\n if (!$window.isNaN(defaultDistance)) {\n $window.FCAUsedConfig.search.distance.default = defaultDistance;\n }\n }\n\n if (qs[CONFIG.queryStringParams.defaultModel]) {\n try {\n var defaultModel = angular.fromJson(qs[decodeURIComponent(CONFIG.queryStringParams.defaultModel)]);\n $window.FCAUsedConfig.search.model = {\n defaultModel: defaultModel\n };\n } catch (error) {\n $window.console.error('Unable to parse defaultModel');\n }\n }\n\n if (qs[CONFIG.queryStringParams.defaultLocation]) {\n try {\n $window.FCAUsedConfig.search.location = angular.fromJson(qs[CONFIG.queryStringParams.defaultLocation]);\n } catch (error) {\n $window.console.error('Unable to parse defaultLocation');\n }\n }\n\n if (qs[CONFIG.queryStringParams.goToResults]) {\n $window.FCAUsedConfig.search.goToResults = qs[CONFIG.queryStringParams.goToResults] === 'true';\n }\n\n CONFIG.search.volume = CONFIG.search.volume || {\n min: 0,\n max: 20,\n step: 1,\n unit: 'mc'\n };\n\n return CONFIG;\n }]);\n","angular.module('fca-used').run(['$templateCache', function($templateCache) {$templateCache.put('app/accordion/accordion-panel.html','
\\n
\\n
\\n
\\n
\\n
');\n$templateCache.put('app/home/home.html','\\n\\n\\n\\n
0\">\\n

wishlist_description

\\n \\n wishlist_open\\n \\n
\\n\\n
\\n \\n home_scroll_premium\\n \\n
\\n\\n\\n\\n
\\n \\n back_to_top\\n \\n
\\n');\n$templateCache.put('app/gallery/gallery.html','
\\n
\\n \"\"\\n
\\n
1\">\\n {{gallery.current + 1}}/{{gallery.data.assets.length}}\\n
\\n
1\">\\n
\\n
\\n
\\n \\n wishlist_add\\n wishlist_remove\\n \\n \\n \\n\\n
\\n
\\n
\\n {{::gallery.data.brandDescription}} \\n {{::gallery.data.brandModelDescription}} \\n {{::gallery.data.versionDescription}} \\n \\n
\\n
\\n \"\"\\n
1\">\\n {{gallery.current + 1}}/{{gallery.data.assets.length}}\\n
\\n
1\">\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n');\n$templateCache.put('app/lead-form/lead-form.html','
\\n
\\n

lead_form_title

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n

lead_form_message_invalid_name

\\n

lead_form_message_mandatory_field

\\n
\\n
\\n
\\n \\n \\n
\\n

lead_form_message_invalid_last_name

\\n

lead_form_message_mandatory_field

\\n
\\n
\\n
\\n \\n \\n
\\n

lead_form_message_invalid_second_last_name

\\n

lead_form_message_mandatory_field

\\n
\\n
\\n
\\n \\n \\n
\\n

lead_form_message_mandatory_field

\\n

lead_form_message_not_valid_email

\\n
\\n
\\n
\\n \\n \\n
\\n

lead_form_message_mandatory_field

\\n

lead_form_message_not_valid_email

\\n

lead_form_message_email_not_match

\\n
\\n
\\n
\\n \\n \\n \\n
\\n

lead_form_message_mandatory_field

\\n

lead_form_message_not_valid_mobile_number

\\n
\\n
\\n
\\n \\n \\n
\\n

* lead_form_legend_mandatory_field

\\n
\\n

lead_form_privacy_consent_title

\\n
\\n \\n
\\n

lead_form_accordion_content_info_privacy

\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n

lead_form_message_mandatory_field

\\n
\\n
\\n
\\n \\n
\\n

lead_form_accordion_content_marketing

\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n

lead_form_message_mandatory_field

\\n
\\n
\\n
\\n \\n
\\n

lead_form_accordion_content_profilation

\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n

lead_form_message_mandatory_field

\\n
\\n
\\n
\\n \\n
\\n

lead_form_accordion_content_third_party

\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n lead_form_message_thanks_pre_text\\n {{leadForm.fields.firstName}} \\n lead_form_message_thanks_post_text\\n
\\n
\\n

\\n lead_form_message_thanks_dealer_pre_text {{leadForm.vehicle.data.dealerName}} - {{leadForm.vehicle.data.dealerAddress}} -\\n {{leadForm.vehicle.data.dealerZipCode}} - {{leadForm.vehicle.data.dealerCity}}\\n

\\n lead_form_message_thanks_dealer_post_text\\n

\\n
\\n
\\n
\\n
\\n
lead_form_message_error_title
\\n
lead_form_message_error_pre_text {{leadForm.fields.firstName}} lead_form_message_error_post_text
\\n
\\n
\\n
\\n\\n
\\n
\\n');\n$templateCache.put('app/loader/loader.html','
\\n
\\n \\n \\n \\n
\\n \\n Loading...\\n \\n
\\n');\n$templateCache.put('app/modal/info-modal.html','
\\n
\\n
\\n \\n
\\n
{{$ctrl.title}}
\\n
\\n
\\n
\\n');\n$templateCache.put('app/premium-details/premium-details.html','
\\n
\\n
\\n \\n

premium_title

\\n

premium_subtitle

\\n
\\n

premium_description

\\n \\n premium_dealer_find_text\\n \\n
\\n
\\n \\n \\n {{item.title|translate}}\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n warranty_extended_title\\n \\n
\\n
\\n
warranty_extended_subtitle
\\n
\\n
\\n
\\n
\\n \\n premium_dealer_find_text\\n \\n
\\n');\n$templateCache.put('app/results/results.html','\\n
\\n
\\n

result_list_title

\\n
\\n\\n
\\n
\\n \\n result_list_back\\n \\n \\n wishlist_title\\n \\n
\\n \\n \\n \\n results_search_query\\n \\n \\n \\n \\n \\n \\n \\n \\n results_search_advanced\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n
\\n
\\n
\\n');\n$templateCache.put('app/root/root.html','
\\n \\n \\n 0\">\\n \\n {{\\'backend_error_description\\'|translate}}\\n \\n
\\n');\n$templateCache.put('app/search-form/advanced-search-form.html','
\\n
\\n search_filters\\n \\n
\\n

home_search_title

\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n search_no_results\\n
\\n
\\n');\n$templateCache.put('app/search-form/search-form.html','
\\n

home_search_title

\\n \\n
\\n \\n \\n
    0\">\\n
  • \\n \\n
  • \\n
\\n \\n

search_mandatory

\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n search_no_results\\n
\\n \\n
\\n
\\n');\n$templateCache.put('app/search-form/search-tags.html','
\\n
\\n tag_location\\n
\\n
tag_premium\\n \\n
\\n
\\n tag_model\\n \\n
\\n
tag_price\\n \\n
\\n
tag_year\\n \\n
\\n
tag_mileage\\n \\n
\\n
tag_fuel\\n \\n
\\n
tag_power\\n \\n
\\n
tag_gear\\n \\n
\\n
tag_doors\\n \\n
\\n
tag_color\\n \\n
\\n
tag_transmission\\n \\n
\\n
tag_vehicle_type\\n \\n
\\n
tag_body_type\\n \\n
\\n
tag_use_type\\n \\n
\\n
tag_wheel_base\\n \\n
\\n
tag_volume\\n \\n
\\n
\\n tag_vat_yes\\n tag_vat_no\\n \\n
\\n
\\n tag_damaged_vehicle_yes\\n tag_damaged_vehicle_no\\n \\n
\\n \\n {{}}\\n
\\n');\n$templateCache.put('app/vehicle/vehicle-details.html','
\\n
\\n \\n vehicle_back\\n \\n \\n
\\n
\\n

\\n {{::vehicle.data.brandDescription}}\\n {{::vehicle.data.brandModelDescription}}\\n

\\n

\\n {{::vehicle.data.versionDescription}}\\n

\\n
\\n
\\n vehicle_price\\n
\\n
\\n {{::vehicle.data.vatDescription}}\\n
\\n
\\n
\\n
\\n {{vehicle.installments.rata.description}}\\n {{vehicle.installments.rata.value}}\\n
\\n
\\n {{vehicle.installments.apr.description}}\\n {{vehicle.installments.apr.value}}\\n
\\n
\\n {{vehicle.installments.legal.description}}\\n
\\n
\\n
\\n
\\n
\\n \\n {{::vehicle.data.brandDescription}}\\n {{::vehicle.data.brandModelDescription}}\\n -\\n {{::vehicle.price.unit}} {{::vehicle.price.price | number:2}}\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
    \\n
  • \\n {{::vehicle.data.fuelDescription}}\\n
  • \\n
  • \\n {{::vehicle.kw}} kW ({{::vehicle.data.horsePower}} {{::vehicle.config.search.power.unit}})\\n
  • \\n
  • \\n {{::vehicle.data.gearDescription}}\\n
  • \\n
  • \\n vehicle_doors\\n
  • \\n
  • \\n {{::(vehicle.registration.date|date:vehicle.registration.format)}}\\n
  • \\n
  • \\n {{::vehicle.config.search.mileage.unit}} {{::vehicle.data.km|number}}\\n
  • \\n
\\n \\n vehicle_compare_add\\n \\n \\n \\n \\n vehicle_consumption_emissions\\n \\n \\n
    \\n
  • \\n vehicle_consumption\\n
  • \\n
  • \\n vehicle_co2\\n
  • \\n
\\n
\\n
\\n \\n \\n vehicle_consumption_emissions_a\\n \\n \\n
    \\n
  • \\n vehicle_consumption_combined\\n {{vehicle.data.wltpMap.cons_comb_pcat}}\\n
  • \\n
  • \\n vehicle_consumption_extra\\n {{vehicle.data.wltpMap.cons_extra_pcat}}\\n
  • \\n
  • \\n vehicle_consumption_urban\\n {{vehicle.data.wltpMap.cons_urb_pcat}}\\n
  • \\n
  • \\n vehicle_co2_emissions\\n {{vehicle.data.wltpMap.co2_pcat}}\\n
  • \\n
\\n
\\n
\\n \\n \\n vehicle_consumption_emissions_b\\n \\n \\n
    \\n
  • \\n vehicle_consumption_combined\\n \\n {{vehicle.data.wltpMap.nedc2_cons_comb_fuel1}}\\n \\n / {{vehicle.data.wltpMap.nedc2_cons_comb_fuel2}}\\n \\n \\n
  • \\n
  • \\n vehicle_consumption_extra\\n \\n {{vehicle.data.wltpMap.nedc2_cons_extra_fuel1}}\\n \\n / {{vehicle.data.wltpMap.nedc2_cons_extra_fuel2}}\\n \\n \\n
  • \\n
  • \\n vehicle_consumption_urban\\n \\n {{vehicle.data.wltpMap.nedc2_cons_urb_fuel1}}\\n \\n / {{vehicle.data.wltpMap.nedc2_cons_urb_fuel2}}\\n \\n \\n
  • \\n
  • \\n vehicle_co2_emissions\\n \\n {{vehicle.data.wltpMap.co2_nedc2_fuel1}}\\n \\n / {{vehicle.data.wltpMap.co2_nedc2_fuel2}}\\n \\n \\n
  • \\n
\\n
\\n
\\n \\n \\n vehicle_consumption_emissions_c\\n \\n \\n
    \\n
  • \\n vehicle_consumption_wltp_combined\\n \\n {{vehicle.data.wltpMap.wltp_cons_comb_fuel1}}\\n \\n / {{vehicle.data.wltpMap.wltp_cons_comb_fuel2}}\\n \\n \\n
  • \\n
  • \\n vehicle_consumption_wltp_low\\n \\n {{vehicle.data.wltpMap.wltp_cons_low_fuel1}}\\n \\n / {{vehicle.data.wltpMap.wltp_cons_low_fuel2}}\\n \\n \\n
  • \\n
  • \\n vehicle_consumption_wltp_medium\\n \\n {{vehicle.data.wltpMap.wltp_cons_medium_fuel1}}\\n \\n / {{vehicle.data.wltpMap.wltp_cons_medium_fuel2}}\\n \\n \\n
  • \\n
  • \\n vehicle_consumption_wltp_high\\n \\n {{vehicle.data.wltpMap.wltp_cons_high_fuel1}}\\n \\n / {{vehicle.data.wltpMap.wltp_cons_high_fuel2}}\\n \\n \\n
  • \\n
  • \\n vehicle_consumption_wltp_extrahigh\\n \\n {{vehicle.data.wltpMap.wltp_cons_extrahigh_fuel1}}\\n \\n / {{vehicle.data.wltpMap.wltp_cons_extrahigh_fuel2}}\\n \\n \\n
  • \\n
  • \\n vehicle_wltp_co2_emissions\\n \\n {{vehicle.data.wltpMap.co2_wltp_fuel1}}\\n \\n / {{vehicle.data.wltpMap.co2_wltp_fuel2}}\\n \\n \\n
  • \\n
\\n
\\n
\\n \\n \\n vehicle_other_features\\n \\n \\n
    \\n
  • \\n vehicle_transmission\\n
  • \\n
  • \\n vehicle_color\\n
  • \\n
  • \\n vehicle_body_type\\n
  • \\n
  • \\n vehicle_use_type\\n
  • \\n
  • \\n vehicle_wheel_base\\n
  • \\n
  • \\n vehicle_volume\\n
  • \\n
  • 2005\" translate>\\n emission_sticker\\n
  • \\n
  • \\n
    vehicle_damaged
    \\n search_damaged_vehicle_yes\\n search_damaged_vehicle_no\\n -\\n
  • \\n
  • \\n vehicle_categorization\\n
  • \\n
  • \\n vehicle_internal_color\\n
  • \\n
  • \\n vehicle_internal_material\\n
  • \\n
\\n
\\n
\\n \\n \\n vehicle_optionals\\n \\n \\n
    \\n
  • \\n {{optional}}\\n
  • \\n
\\n
\\n
\\n \\n \\n vehicle_parsed_optionals\\n \\n \\n
    \\n
  • \\n {{optional}}\\n
  • \\n
\\n
\\n
\\n \\n \\n vehicle_parsed_optionals_for_fee\\n \\n \\n
    \\n
  • \\n {{optional}}\\n
  • \\n
\\n
\\n
\\n \\n \\n vehicle_dealer_notes\\n \\n \\n \\n \\n \\n \\n \\n vehicle_energy_efficiency\\n \\n \\n
    \\n
  • \\n vehicle_consumption\\n
  • \\n
  • \\n vehicle_urban_consumption\\n
  • \\n
  • \\n vehicle_highway_consumption\\n
  • \\n
  • \\n vehicle_co2\\n
  • \\n
  • \\n {{\\'wltp_\\' + value.key}}\\n
  • \\n
  • \\n vehicle_fuel\\n
  • \\n
  • \\n vehicle_eco_class\\n
  • \\n
  • \\n
    \\n vehicle_co2_efficiency\\n
    \\n
    \\n
    \\n \\n vehicle_co2_sticker_text\\n \\n
    \\n
    \\n \\n
    \\n
    \\n
  • \\n
\\n
\\n
\\n
\\n\\n
\\n

vehicle_dealer_info

\\n
\\n {{vehicle.dealer.COMPANYNAM}}\\n {{vehicle.dealer.ADDRESS}}\\n {{vehicle.dealer.TOWN}}\\n ({{vehicle.dealer.PROVINCE}})\\n \\n
\\n
\\n \\n impressum_show\\n \\n \\n
\\n
\\n
\\n
3 && vehicle.showDealerWEBSITE\">\\n \\n {{vehicle.dealer.WEBSITE}}\\n \\n
\\n \\n \\n
\\n\\n
\\n

vehicle_share

\\n
\\n \\n \\n \\n \\n \\n \\n \\n
\\n

copy_error_body

\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n

legal_disclaimer

\\n
\\n
\\n
\\n
\\n \\n vehicle_dealer_contact\\n \\n \\n
\\n\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n\\n
\\n vehicle_back\\n
\\n
\\n

se_vehicles_error

\\n
\\n
\\n
\\n');\n$templateCache.put('app/vehicle/vehicle-preview.html','
\\n
\\n
\\n
{{\\'wishlist_not_available_title\\'|translate}}
\\n
{{\\'wishlist_not_available_description\\'|translate}}
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n

\\n {{::vehicle.data.brandDescription}}\\n {{::vehicle.data.brandModelDescription}}\\n

\\n

\\n {{::vehicle.data.versionDescription}}\\n

\\n\\n \\n \\n
\\n
\\n');\n$templateCache.put('app/wishlist/wishlist.html','
\\n
\\n \\n wishlist_title\\n \\n \\n
\\n
0\">\\n \\n \\n
\\n
wishlist_empty
\\n
\\n');}]);","angular\n .module('fca-used')\n .factory('wishlist', wishlistService);\n\nwishlistService.$inject = ['$localStorage', 'uvl'];\n\nfunction wishlistService($localStorage, uvl) {\n var instance = null;\n\n function Wishlist() {\n $localStorage.wishlist = $localStorage.wishlist || {};\n this.show = false;\n this.list = this.getList();\n }\n\n Wishlist.prototype.getList = function () {\n return Object.keys($localStorage.wishlist)\n .map(function (vehicleCode) {\n return $localStorage.wishlist[vehicleCode];\n })\n .sort(function (a, b) {\n return (new Date(b.added)).getTime() - (new Date(a.added)).getTime();\n })\n .map(function (item) {\n return item.vehicle;\n });\n };\n\n Wishlist.prototype.get = function (vehicleCode) {\n if ($localStorage.wishlist[vehicleCode]) {\n return $localStorage.wishlist[vehicleCode].vehicle;\n }\n };\n\n Wishlist.prototype.add = function (vehicle) {\n $localStorage.wishlist[vehicle.vehicleCode] = {\n added: new Date(),\n vehicle: vehicle\n };\n this.list.splice(0, 0, vehicle);\n };\n\n Wishlist.prototype.remove = function (vehicleCode) {\n delete $localStorage.wishlist[vehicleCode];\n this.list = this.getList();\n };\n\n Wishlist.prototype.setNotAvailable = function (vehicleCode) {\n if (!$localStorage.wishlist[vehicleCode]) {\n return;\n }\n $localStorage.wishlist[vehicleCode].vehicle.notAvailable = true;\n this.list = this.getList();\n };\n\n Wishlist.prototype.clear = function () {\n delete $localStorage.wishlist;\n this.list = [];\n };\n\n Wishlist.prototype.lockPageScroll = function () {\n angular.element(document).find('html').css('position', 'fixed');\n angular.element(document).find('body').css('position', 'fixed');\n };\n\n Wishlist.prototype.unlockPageScroll = function () {\n angular.element(document).find('html').css('position', 'static');\n angular.element(document).find('body').css('position', 'static');\n };\n\n Wishlist.prototype.open = function () {\n var self = this;\n angular.forEach(this.list, function (vehicle) {\n if (vehicle.notAvailable) {\n delete $localStorage.wishlist[vehicle.vehicleCode];\n }\n });\n this.list = this.getList();\n\n var codes = this.list.map(function (vehicle) {\n return vehicle.vehicleCode;\n });\n\n if (codes) {\n uvl.getVehicleDetails(codes)\n .then(function (vehicles) {\n self.show = true;\n self.lockPageScroll();\n var validCodes = vehicles.map(function (vehicle) {\n return vehicle.vehicleCode;\n });\n angular.forEach(codes, function (code) {\n if (validCodes.indexOf(code) === -1) {\n self.setNotAvailable(code);\n }\n });\n })\n .catch(function () {\n self.show = true;\n self.lockPageScroll();\n });\n } else {\n self.show = true;\n self.lockPageScroll();\n }\n };\n\n Wishlist.prototype.close = function () {\n this.show = false;\n this.unlockPageScroll();\n };\n\n if (!instance) {\n instance = new Wishlist();\n }\n return instance;\n}\n","angular\n .module('fca-used')\n .component('wishlist', {\n bindings: {\n data: '<'\n },\n templateUrl: 'app/wishlist/wishlist.html',\n controller: wishlistController\n });\n\nwishlistController.$inject = ['wishlist'];\nfunction wishlistController(wishlist) {\n var self = this;\n self.wishlist = wishlist;\n}\n","angular\n .module('fca-used')\n .component('vehiclePreview', {\n bindings: {\n data: '<'\n },\n templateUrl: 'app/vehicle/vehicle-preview.html',\n controller: vehiclePreviewController,\n controllerAs: 'vehicle'\n });\n\nvehiclePreviewController.$inject = ['$translate', '$state', '$timeout', '$element', '$localStorage', 'wishlist', 'CONFIG'];\n\nfunction vehiclePreviewController($translate, $state, $timeout, $element, $localStorage, wishlist, CONFIG) {\n var self = this;\n self.config = CONFIG;\n\n self.toggleWishlist = function () {\n if (self.data.inWishlist) {\n self.removingFromWishlist = true;\n $timeout(function () {\n wishlist.remove(self.data.vehicleCode);\n self.data.inWishlist = false;\n self.removingFromWishlist = false;\n }, 400);\n } else {\n wishlist.add(self.data);\n self.data.inWishlist = true;\n }\n };\n\n self.openDetails = function () {\n $localStorage.lastSelectedVehicleCode = self.data.vehicleCode;\n $state.go('root.details', {\n vehicleCode: self.data.vehicleCode,\n sincom: self.data.dealer.SINCOM,\n brand: self.data.dealer.BRAND,\n siteCode: self.data.dealer.SITECODE\n });\n };\n self.$onInit = function () {\n self.data.inWishlist = Boolean(wishlist.get(self.data.vehicleCode));\n self.kw = Math.round(self.data.horsePower * 0.73549875);\n self.warranty = self.config.search.premium.warrantyCode;\n self.price = {\n price: self.data.priceCurrent,\n unit: CONFIG.search.price.unit\n };\n\n self.registration = {\n date: new Date(self.data.registrationYear, self.data.registrationMonth - 1, self.data.registrationDay),\n format: $translate.instant('vehicle_date_format')\n };\n\n $timeout(function () {\n if ($localStorage.lastSelectedVehicleCode === self.data.vehicleCode) {\n delete $localStorage.lastSelectedVehicleCode;\n $element[0].scrollIntoView({\n behavior: 'smooth'\n });\n }\n }, 100);\n };\n}\n","angular\n .module('fca-used')\n .component('vehicleDetails', {\n bindings: {\n data: '<',\n dealer: '<',\n phone: '<',\n installments: '<'\n },\n templateUrl: 'app/vehicle/vehicle-details.html',\n controller: vehicleDetailsController,\n controllerAs: 'vehicle'\n });\n\nvehicleDetailsController.$inject = ['$sce', '$http', '$window', '$translate', 'wishlist', 'tagging', 'uvl', 'InstallmentsCalculator', 'CONFIG'];\nfunction vehicleDetailsController($sce, $http, $window, $translate, wishlist, tagging, uvl, InstallmentsCalculator, CONFIG) {\n var self = this;\n\n self.config = CONFIG;\n self.optionals = [];\n\n self.toggleWishlist = function () {\n if (self.data.inWishlist) {\n wishlist.remove(self.data.vin);\n self.data.inWishlist = false;\n } else {\n wishlist.add(self.data);\n self.data.inWishlist = true;\n }\n };\n\n self.loadImpressum = function () {\n uvl.getImpressum(self.dealer.LEGAL_ENTITY)\n .then(function (impressumHTML) {\n if (impressumHTML) {\n self.impressumHTML = impressumHTML;\n self.showImpressum = true;\n }\n });\n };\n\n self.getShareLink = function () {\n return $window.location.href;\n };\n\n self.share = function (target) {\n self.shareLink = $window.location.href;\n var text;\n switch (target) {\n case 'facebook':\n // $window.location.href = uvl.getShareUrl('FB', self.data);\n // text = $translate.instant('vehicle_share_template_facebook', {link: self.shareLink});\n $window.open('https://www.facebook.com/sharer/sharer.php?u=' + $window.encodeURIComponent(self.shareLink), '_blank');\n break;\n case 'twitter':\n text = $translate.instant('vehicle_share_template_twitter', {link: self.shareLink});\n $window.open('https://twitter.com/intent/tweet?text=' + $window.encodeURIComponent(text), '_blank');\n break;\n case 'whatsapp':\n text = $translate.instant('vehicle_share_template_whatsapp', {link: self.shareLink});\n $window.location.href = 'whatsapp://send?text=' + $window.encodeURIComponent(text);\n break;\n case 'email':\n var flagMobile = (uvl.getConsumer() === 'MOBILE');\n text = $translate.instant('vehicle_share_template_email', {link: self.shareLink});\n if (flagMobile) {\n $window.location.href = 'mailto:' + text;\n } else {\n $window.open('mailto:' + text, '_blank');\n }\n break;\n default: break;\n }\n };\n\n self.$onInit = function () {\n wishlist.close();\n self.kw = Math.round(self.data.horsePower * 0.73549875);\n if (CONFIG.mirafioriStripe && CONFIG.mirafioriStripe.selector) {\n var target = $window.document.querySelector(CONFIG.mirafioriStripe.selector);\n if (target) {\n target.style.display = 'none';\n }\n }\n\n self.data.dealer = Object.keys(self.dealer).length === 0 ? false : self.dealer;\n\n self.warranty = self.config.search.premium.warrantyCode;\n self.data.inWishlist = Boolean(wishlist.get(self.data.vin));\n\n if (self.data.standardOptionals) {\n self.optionals = self.optionals.concat(self.data.standardOptionals);\n }\n\n if (!(CONFIG.mynumber && CONFIG.mynumber.enabled && !CONFIG.mynumber.enableDealerLocatorFallback) &&\n !self.phone && self.dealer.TEL_1 && self.dealer.TEL_1 !== ' ') {\n self.phone = {\n number: self.dealer.TEL_1,\n parsed: self.dealer.TEL_1.match(/\\d/g).join('')\n };\n }\n\n self.scrollToContactForm = function () {\n $window.document.querySelector('.contact-form-wrapper')\n .scrollIntoView({\n behavior: 'smooth'\n });\n };\n\n if (self.data.payedOptionals) {\n self.optionals = self.optionals.concat(self.data.payedOptionals);\n }\n\n if (self.data.standardOptional &&\n CONFIG.vehicleDetailFields &&\n CONFIG.vehicleDetailFields.dealerNotes &&\n CONFIG.vehicleDetailFields.dealerNotes.parse &&\n CONFIG.vehicleDetailFields.dealerNotes.separator) {\n self.parsedOptionals = self.data.standardOptional.split(CONFIG.vehicleDetailFields.dealerNotes.separator);\n }\n\n if (self.data.optionalForFee &&\n CONFIG.vehicleDetailFields &&\n CONFIG.vehicleDetailFields.dealerNotes &&\n CONFIG.vehicleDetailFields.dealerNotes.parse &&\n CONFIG.vehicleDetailFields.dealerNotes.separator) {\n self.parsedOptionalsForFee = self.data.optionalForFee.split(CONFIG.vehicleDetailFields.dealerNotes.separator);\n }\n\n self.price = {\n price: self.data.priceCurrent,\n unit: CONFIG.search.price.unit\n };\n\n self.registration = {\n date: new Date(self.data.registrationYear, self.data.registrationMonth - 1, self.data.registrationDay),\n format: $translate.instant('vehicle_date_format')\n };\n\n if (CONFIG.vehicleDetailFields && String(CONFIG.vehicleDetailFields.enableDealerWebsite)) {\n self.showDealerWEBSITE = CONFIG.vehicleDetailFields.enableDealerWebsite;\n } else {\n self.showDealerWEBSITE = true;\n }\n /*\n $http.get(CONFIG.contactForm.url)\n .then(function (response) {\n $window.document.querySelector('.contact-form-wrapper').innerHTML = response.data;\n });\n */\n if (self.data.dealer.YCOORD && self.data.dealer.XCOORD) {\n self.mapLink = 'http://share.here.com/l/' + self.data.dealer.YCOORD + ',' + self.data.dealer.XCOORD + ',' + self.data.dealer.COMPANYNAM + '?p=yes&z=10&t=traffic';\n if (angular.isDefined($window.digitalData) && $window.digitalData.page.pageInfo.sysEnv.toLowerCase() !== 'desktop') {\n self.mapLink = 'http://maps.apple.com/?q=' + self.data.dealer.COMPANYNAM + '&ll=' + self.data.dealer.YCOORD + ',' + self.data.dealer.XCOORD + '&sll=' + self.data.dealer.YCOORD + ',' + self.data.dealer.XCOORD;\n }\n } else {\n self.mapLink = null;\n }\n tagging.track({\n page: 'used:offer',\n // vehicleBrand: 'used',\n // businessArea: 'used',\n usedVehicle: self.data\n });\n };\n\n self.contactFormUrl = $sce.trustAsResourceUrl(CONFIG.contactForm.url);\n\n self.openInstallmentsModal = function () {\n angular.element(document).find('html').css('position', 'fixed');\n angular.element(document).find('body').css('position', 'fixed');\n self.installmentsModal = {\n show: true,\n url: InstallmentsCalculator.getIframeUrl(self.data)\n };\n\n $window.addEventListener('message', handleInstallmentsModalEvent);\n };\n\n self.closeInstallmentsModal = function () {\n angular.element(document).find('html').css('position', 'static');\n angular.element(document).find('body').css('position', 'static');\n delete self.installmentsModal;\n };\n\n function handleInstallmentsModalEvent(event) {\n if (event.origin === CONFIG.installmentsCalculator.iframe.domain) {\n try {\n if (angular.fromJson(event.data).method === 'refresh') {\n self.closeInstallmentsModal();\n InstallmentsCalculator.getMonthlyRate(self.data)\n .then(function (response) {\n self.installments = response[InstallmentsCalculator.getMVS(self.data)];\n });\n }\n } catch (error) {}\n }\n }\n}\n","angular\n .module('fca-used')\n .component('searchForm', {\n templateUrl: 'app/search-form/search-form.html',\n controller: searchFormController,\n controllerAs: 'searchForm',\n bindings: {\n trackLoad: '<'\n }\n })\n .component('searchAdvancedForm', {\n templateUrl: 'app/search-form/advanced-search-form.html',\n controller: searchFormController,\n controllerAs: 'searchForm',\n bindings: {\n trackLoad: '<'\n }\n })\n .component('searchTags', {\n templateUrl: 'app/search-form/search-tags.html',\n controller: searchFormController,\n controllerAs: 'searchForm',\n bindings: {\n trackLoad: '<'\n }\n });\n\nsearchFormController.$inject = ['$rootScope', '$window', '$state', '$translate', '$timeout', 'uvl', 'scroll', 'ResultHelper', 'CONFIG', '$q', '$filter', '$log', '$http'];\n\nfunction searchFormController($rootScope, $window, $state, $translate, $timeout, uvl, scroll, ResultHelper, CONFIG, $q, $filter, $log, $http) {\n var searchForm = this;\n searchForm.resultHelper = ResultHelper;\n searchForm.config = CONFIG;\n searchForm.geolocationRunning = false;\n searchForm.geolocationAvailable = Boolean(navigator.geolocation);\n searchForm.resultIndex = -1;\n searchForm.locate = function () {\n $log.log('geo');\n if (searchForm.geolocationRunning) {\n return;\n }\n searchForm.geolocationRunning = true;\n navigator.geolocation.getCurrentPosition(function (position) {\n $log.log(position);\n searchForm.hereMapsService.reverseGeocode({\n at: position.coords.latitude + ',' + position.coords.longitude\n }, function (result) {\n $log.log(result);\n searchForm.geolocationRunning = false;\n if (result.items.length > 0) {\n var location = getHereMapsLocationLabel(result.items[0]);\n searchForm.resultHelper.lastQuery.location = location;\n searchForm.onFilterChange(true);\n }\n }, $log.log);\n }, function (e) {\n $log.log('navigator.geolocation.getCurrentPosition not working');\n $log.log(e);\n }, {timeout: 30000, enableHighAccuracy: true});\n };\n\n searchForm.autoCompletePlaces = {\n api: CONFIG.maps.endpoint,\n restrictions: {\n country: CONFIG.market.id\n },\n types: '[\"geocode\"]'\n };\n\n function setDefaultQuery() {\n searchForm.resultHelper.lastQuery = {\n location: searchForm.resultHelper.lastQuery ? searchForm.resultHelper.lastQuery.location : null,\n extendedArea: Math.min(CONFIG.search.distance.max, Math.max(CONFIG.search.distance.min, CONFIG.search.distance.default)),\n filters: {\n brand: angular.copy(CONFIG.search.brand.default),\n premium: angular.copy(CONFIG.search.premium.default),\n priceCurrent: angular.copy(CONFIG.search.price.default),\n km: angular.copy(CONFIG.search.mileage.default),\n registrationYear: angular.copy(CONFIG.search.year.default),\n power: searchForm.config.search.power.max,\n volume: {\n min: searchForm.config.search.volume.min,\n max: ResultHelper.getUvlVolumeMax()\n }\n },\n fixArea: false\n };\n return searchForm.resultHelper.lastQuery;\n }\n\n function setSlidersEnabled() {\n var enabled = Boolean(searchForm.resultHelper.lastQuery.location);\n searchForm.filters.distance.disabled = !enabled;\n searchForm.filters.price.disabled = !enabled;\n searchForm.filters.mileage.disabled = !enabled;\n searchForm.filters.year.disabled = !enabled;\n searchForm.filters.power.disabled = !enabled;\n searchForm.filters.volume.disabled = !enabled;\n }\n\n searchForm.reset = function () {\n setDefaultQuery();\n delete searchForm.resultHelper.vehiclesCount;\n searchForm.onFilterChange(true);\n };\n\n searchForm.closeModal = function () {\n if (searchForm.resultHelper.modalFilters) {\n angular.element(document).find('html').css('position', 'static');\n angular.element(document).find('body').css('position', 'static');\n searchForm.resultHelper.lastQuery = uvl.getLastQuery();\n delete searchForm.resultHelper.modalFilters;\n searchForm.getVehiclesCount();\n }\n };\n\n searchForm.submit = function () {\n searchForm.goToResults = false;\n ResultHelper.ordered = false;\n if (searchForm.resultHelper.lastQuery.pagination) {\n searchForm.resultHelper.lastQuery.pagination.page = 0;\n }\n uvl.saveLastFilters(searchForm.filters);\n\n $state.go('root.results', {\n query: searchForm.resultHelper.lastQuery,\n trackLoad: searchForm.trackLoad\n }, {\n reload: true\n });\n\n searchForm.closeModal();\n };\n\n searchForm.locationSuggestionChanged = function (event) {\n // $log.log(searchForm.suggestions);\n switch (event.key) {\n case 'Down':\n case 'ArrowDown':\n searchForm.resultIndex += 1;\n break;\n case 'Up':\n case 'ArrowUp':\n searchForm.resultIndex -= 1;\n break;\n case 'Enter':\n searchForm.setLocation(searchForm.resultIndex, event);\n break;\n default:\n $log.log(event.key);\n }\n\n if (searchForm.resultHelper.lastQuery.location && searchForm.resultHelper.lastQuery.location.locality) {\n $q.when(getSuggestions(searchForm.resultHelper.lastQuery.location.locality))\n .then(function (suggestions) {\n/*\n $log.log(suggestions);\n*/\n searchForm.suggestions = suggestions.suggestions;\n });\n } else {\n searchForm.suggestions = [];\n }\n };\n\n searchForm.setLocation = function (index, $event) {\n var locationId = searchForm.suggestions[index].locationId;\n $q.when(getLocationDetail(locationId)).then(function (place) {\n if (place.response.view.length > 0 && place.response.view[0].result.length > 0) {\n var location = getHereMapsLocationLabelFromLocationDetail(place.response.view[0].result[0].location);\n searchForm.resultHelper.lastQuery.location = location;\n searchForm.onFilterChange(true);\n searchForm.suggestions = [];\n searchForm.resultIndex = -1;\n }\n }\n );\n $event.stopPropagation();\n };\n\n searchForm.locationChanged = function () {\n delete searchForm.filters.models;\n delete searchForm.filters.fuels;\n delete searchForm.filters.gears;\n delete searchForm.filters.colors;\n delete searchForm.filters.transmissions;\n delete searchForm.filters.brands;\n delete searchForm.filters.vehicleType;\n delete searchForm.filters.bodyType;\n delete searchForm.filters.typeOfUse;\n delete searchForm.filters.wheelBase;\n delete searchForm.resultHelper.lastQuery.filters.model;\n if (searchForm.resultHelper.lastQuery.filters.brand && !CONFIG.search.brand.default) {\n delete searchForm.resultHelper.lastQuery.filters.brand;\n } else {\n searchForm.resultHelper.lastQuery.filters.brand = CONFIG.search.brand.default;\n }\n };\n\n searchForm.getCount = function () {\n return {\n count: searchForm.resultHelper.getCount() || 0\n };\n };\n\n function getSuggestions(query) {\n/* https://developer.here.com/documentation/geocoder-autocomplete/dev_guide/topics/resource-suggest.html */\n var defer = $q.defer();\n var hereMapsAutocompleteUrl = 'https://autocomplete.geocoder.ls.hereapi.com/6.2/suggest.json?' +\n 'query=' + encodeURIComponent(query) +\n '&beginHighlight=' + encodeURIComponent('') +\n '&endHighlight=' + encodeURIComponent('') +\n '&country=' + CONFIG.maps.country +\n '&language=' + CONFIG.language.id +\n/* '&resultType=city' + not working as expected */\n '&maxresults=5' +\n '&apiKey=' + CONFIG.maps.hereMapsApiKey;\n $http.get(hereMapsAutocompleteUrl)\n .then(function (response) {\n if (response.status === 200) {\n return defer.resolve(response.data);\n }\n defer.reject();\n });\n return defer.promise;\n }\n\n function getLocationDetail(locationId) {\n/*\n https://developer.here.com/documentation/geocoder-autocomplete/dev_guide/topics/example-location-id.html\n*/\n var defer = $q.defer();\n var hereMapsAutocompleteUrl = 'https://geocoder.ls.hereapi.com/6.2/geocode.json?locationId=' + locationId + '&gen=9&jsonattributes=1&apiKey=' + CONFIG.maps.hereMapsApiKey;\n $http.get(hereMapsAutocompleteUrl)\n .then(function (response) {\n if (response.status === 200) {\n return defer.resolve(response.data);\n }\n defer.reject();\n });\n return defer.promise;\n }\n\n searchForm.getVehiclesCount = function () {\n uvl.getVehiclesCount(searchForm.resultHelper.lastQuery)\n .then(function (count) {\n if (count && searchForm.goToResults) {\n searchForm.submit();\n }\n });\n };\n\n function showUpdateButton(doShow) {\n if (doShow) {\n searchForm.resultHelper.lastQuery.submit = searchForm.submit;\n } else {\n delete searchForm.resultHelper.lastQuery.submit;\n }\n }\n\n function isQueryChanged() {\n var lastSentQuery = uvl.getLastQuery();\n var lastQuery = angular.copy(searchForm.resultHelper.lastQuery);\n if (lastQuery && lastSentQuery) {\n delete lastQuery.order;\n delete lastQuery.pagination;\n delete lastSentQuery.order;\n delete lastSentQuery.pagination;\n }\n angular.forEach(lastQuery.filters, function (elem, key) {\n if (elem === null) {\n delete lastQuery.filters[key];\n }\n });\n return !angular.equals(lastQuery, lastSentQuery);\n }\n\n function renderSliders() {\n $timeout(function () {\n $rootScope.$broadcast('rzSliderForceRender');\n }, 0);\n }\n\n searchForm.onFilterChange = function (doGetValues) {\n var queryChanged = isQueryChanged();\n // trackLoad is always true when it's passed from home\n showUpdateButton(queryChanged || searchForm.trackLoad);\n\n if (!searchForm.resultHelper.lastQuery.filters.brand) {\n delete searchForm.resultHelper.lastQuery.filters.brand;\n }\n\n // Delete model if set by defaultModel\n if (!searchForm.resultHelper.lastQuery.filters.model ||\n (angular.equals(searchForm.resultHelper.lastQuery.filters.model, searchForm.defaultModel) && ResultHelper.firstSearch)) {\n delete searchForm.resultHelper.lastQuery.filters.model;\n }\n if (!searchForm.resultHelper.lastQuery.filters.power) {\n searchForm.resultHelper.lastQuery.filters.power = searchForm.config.search.power.max;\n }\n if (!searchForm.resultHelper.lastQuery.filters.fuel) {\n delete searchForm.resultHelper.lastQuery.filters.fuel;\n }\n if (!searchForm.resultHelper.lastQuery.filters.gear) {\n delete searchForm.resultHelper.lastQuery.filters.gear;\n }\n if (!searchForm.resultHelper.lastQuery.filters.color) {\n delete searchForm.resultHelper.lastQuery.filters.color;\n }\n if (!searchForm.resultHelper.lastQuery.filters.transmission) {\n delete searchForm.resultHelper.lastQuery.filters.transmission;\n }\n if (!searchForm.resultHelper.lastQuery.filters.vehicleType) {\n delete searchForm.resultHelper.lastQuery.filters.vehicleType;\n }\n if (!searchForm.resultHelper.lastQuery.filters.bodyType) {\n delete searchForm.resultHelper.lastQuery.filters.bodyType;\n }\n if (!searchForm.resultHelper.lastQuery.filters.typeOfUse) {\n delete searchForm.resultHelper.lastQuery.filters.typeOfUse;\n }\n if (!searchForm.resultHelper.lastQuery.filters.wheelBase) {\n delete searchForm.resultHelper.lastQuery.filters.wheelBase;\n }\n if (!searchForm.resultHelper.lastQuery.filters.volume) {\n searchForm.resultHelper.lastQuery.filters.volume = {\n min: searchForm.config.search.volume.min,\n max: ResultHelper.getUvlVolumeMax()\n };\n }\n\n setSlidersEnabled();\n\n if (!doGetValues) {\n renderSliders();\n // if (!queryChanged && !searchForm.trackLoad) {\n // return;\n // }\n searchForm.getVehiclesCount();\n return;\n }\n var query = angular.copy(ResultHelper.lastQuery);\n query.filters.priceCurrent.max = CONFIG.search.price.max;\n // query.filters.km = CONFIG.search.mileage.max;\n\n uvl.getValues(query, ['priceCurrent', 'km', 'registrationYear', 'volume'])\n .then(function (filters) {\n // No mandate\n if (angular.equals(filters, {})) {\n delete searchForm.filters.models;\n delete searchForm.filters.fuels;\n delete searchForm.filters.gears;\n delete searchForm.filters.colors;\n delete searchForm.filters.transmissions;\n delete searchForm.filters.brands;\n delete searchForm.filters.vehicleType;\n delete searchForm.filters.bodyType;\n delete searchForm.filters.typeOfUse;\n delete searchForm.filters.wheelBase;\n }\n if (!filters.groups) {\n renderSliders();\n searchForm.getVehiclesCount();\n return;\n }\n if (filters.groups.brandCode) {\n searchForm.filters.brands = filters.groups.brandCode;\n }\n\n if (filters.groups.modelCode) {\n searchForm.filters.models = filters.groups.modelCode;\n\n // Re-select the default model, if you should\n if (searchForm.defaultModel) {\n var index = searchForm.filters.models\n .map(function (model) {\n return model.brandModelCode;\n })\n .indexOf(searchForm.defaultModel.brandModelCode);\n if (index > -1) {\n searchForm.resultHelper.lastQuery.filters.model = searchForm.filters.models[index];\n }\n }\n }\n if (filters.groups.fuelCode) {\n searchForm.filters.fuels = filters.groups.fuelCode;\n }\n if (filters.groups.gearCode) {\n searchForm.filters.gears = filters.groups.gearCode;\n }\n if (filters.groups.bodyColorCode) {\n searchForm.filters.colors = filters.groups.bodyColorCode;\n }\n if (filters.groups.transmissionTypeCode) {\n searchForm.filters.transmissions = filters.groups.transmissionTypeCode;\n }\n if (filters.groups.vehicleType) {\n searchForm.filters.vehicleType = filters.groups.vehicleType;\n }\n if (filters.groups.bodyTypeCode) {\n searchForm.filters.bodyType = filters.groups.bodyTypeCode;\n }\n if (filters.groups.typeOfUseCode) {\n searchForm.filters.typeOfUse = filters.groups.typeOfUseCode;\n }\n if (filters.groups.wheelBaseCode) {\n searchForm.filters.wheelBase = filters.groups.wheelBaseCode;\n }\n\n if (filters.stats.priceCurrent) {\n searchForm.filters.price.ceil = CONFIG.search.price.step * Math.ceil(filters.stats.priceCurrent.max / CONFIG.search.price.step);\n query.filters.priceCurrent.max = ResultHelper.lastQuery.filters.priceCurrent.max = searchForm.filters.price.ceil;\n query.filters.priceCurrent.min = ResultHelper.lastQuery.filters.priceCurrent.min = CONFIG.search.price.min;\n }\n\n if (filters.stats.volume) {\n searchForm.filters.volume.floor = CONFIG.search.volume.min;\n searchForm.filters.volume.ceil = filters.stats.volume.max;\n query.filters.volume.min = ResultHelper.lastQuery.filters.volume.min = searchForm.filters.volume.floor;\n query.filters.volume.max = ResultHelper.lastQuery.filters.volume.max = searchForm.filters.volume.ceil;\n ResultHelper.setUvlVolumeMax(filters.stats.volume.max);\n } else {\n ResultHelper.lastQuery.filters.volume = {\n min: CONFIG.search.volume.min,\n max: ResultHelper.getUvlVolumeMax()\n };\n }\n\n // if (filters.stats.km) {\n // searchForm.filters.mileage.ceil = CONFIG.search.mileage.step * Math.ceil(filters.stats.km.max / CONFIG.search.mileage.step);\n // query.filters.km = Math.min(searchForm.resultHelper.lastQuery.filters.km, searchForm.filters.mileage.ceil);\n // ResultHelper.lastQuery.filters.km = query.filters.km;\n // }\n // uvl.saveLastQuery(query);\n renderSliders();\n searchForm.getVehiclesCount();\n });\n };\n\n searchForm.brandChanged = function () {\n delete searchForm.filters.models;\n delete searchForm.resultHelper.lastQuery.filters.model;\n searchForm.onFilterChange();\n };\n\n searchForm.removeFilter = function (type) {\n switch (type) {\n case 'premium':\n searchForm.resultHelper.lastQuery.filters.premium = false;\n break;\n case 'price':\n searchForm.resultHelper.lastQuery.filters.priceCurrent.min = searchForm.filters.price.floor;\n searchForm.resultHelper.lastQuery.filters.priceCurrent.max = searchForm.filters.price.ceil;\n break;\n case 'year':\n searchForm.resultHelper.lastQuery.filters.registrationYear.min = searchForm.filters.year.floor;\n searchForm.resultHelper.lastQuery.filters.registrationYear.max = searchForm.filters.year.ceil;\n break;\n case 'km':\n searchForm.resultHelper.lastQuery.filters.km = searchForm.filters.mileage.ceil;\n break;\n case 'power':\n searchForm.resultHelper.lastQuery.filters.power = searchForm.filters.power.ceil;\n break;\n case 'volume':\n searchForm.resultHelper.lastQuery.filters.volume.min = searchForm.filters.volume.floor;\n searchForm.resultHelper.lastQuery.filters.volume.max = searchForm.filters.volume.ceil;\n break;\n default:\n delete searchForm.resultHelper.lastQuery.filters[type];\n break;\n }\n\n searchForm.onFilterChange();\n searchForm.submit();\n };\n\n function loadScript(src) {\n var deferred = $q.defer();\n var script = $window.document.createElement('script');\n script.onload = script.onreadystatechange = function (e) {\n $timeout(function () {\n deferred.resolve(e);\n });\n };\n script.onerror = function (e) {\n $timeout(function () {\n deferred.reject(e);\n });\n };\n script.src = src;\n $window.document.body.appendChild(script);\n return deferred.promise;\n }\n\n searchForm.$onInit = function () {\n searchForm.resultHelper.lastQuery = searchForm.resultHelper.lastQuery || setDefaultQuery();\n searchForm.scroll = scroll;\n loadScript(CONFIG.maps.hereMapsEndpoint).then(function () {\n loadScript(CONFIG.maps.hereMapsServiceEndpoint).then(function () {\n var platform = new $window.H.service.Platform({\n apikey: CONFIG.maps.hereMapsApiKey\n });\n searchForm.hereMapsService = platform.getSearchService();\n searchForm.suggestions = [];\n }).catch(function (e) {\n $log.log(e);\n });\n }).catch(function (e) {\n $log.log(e);\n });\n\n ResultHelper.filters = ResultHelper.filters || {\n distance: {\n floor: CONFIG.search.distance.min,\n ceil: CONFIG.search.distance.max,\n step: CONFIG.search.distance.step,\n showSelectionBar: true,\n disabled: true\n },\n price: {\n floor: CONFIG.search.price.min,\n ceil: CONFIG.search.price.max,\n step: CONFIG.search.price.step,\n disabled: true\n },\n mileage: {\n floor: CONFIG.search.mileage.min,\n ceil: CONFIG.search.mileage.max,\n stepsArray: CONFIG.search.mileage.steps,\n showSelectionBar: true,\n disabled: true\n },\n year: {\n floor: CONFIG.search.year.min,\n ceil: CONFIG.search.year.max,\n step: CONFIG.search.year.step,\n disabled: true\n },\n power: {\n floor: CONFIG.search.power.min,\n ceil: CONFIG.search.power.max,\n step: CONFIG.search.power.step,\n showSelectionBar: true,\n disabled: true\n },\n volume: {\n floor: CONFIG.search.volume.min,\n ceil: CONFIG.search.volume.max,\n step: CONFIG.search.volume.step,\n disabled: true\n }\n };\n searchForm.filters = ResultHelper.filters;\n\n searchForm.filters.distance.onEnd = function () {\n searchForm.onFilterChange(true);\n };\n searchForm.filters.distance.translate = function (value, slider, label) {\n if (label === 'model') {\n var text = '' + $translate.instant('search_distance_to');\n text += ' ' + CONFIG.search.distance.unit;\n text += ' ' + value;\n return text;\n }\n return value;\n };\n searchForm.filters.price.onEnd = searchForm.onFilterChange;\n searchForm.filters.price.translate = function (value, slider, label) {\n if (CONFIG.search.price.thousandsSeparator) {\n value = $filter('number')(value, 0);\n }\n var text;\n switch (label) {\n case 'model':\n text = '' + $translate.instant('search_filter_from') + '';\n text += ' ' + CONFIG.search.price.unit;\n text += ' ' + value;\n break;\n case 'high':\n text = '' + $translate.instant('search_filter_to') + '';\n text += ' ' + CONFIG.search.price.unit;\n text += ' ' + value;\n break;\n default:\n text = value;\n break;\n }\n return text;\n };\n searchForm.filters.mileage.onEnd = searchForm.onFilterChange;\n searchForm.filters.mileage.translate = function (value, slider, label) {\n if (CONFIG.search.mileage.thousandsSeparator) {\n value = $filter('number')(value, 0);\n }\n if (label === 'model') {\n var text = '' + $translate.instant('search_mileage_to');\n text += ' ' + CONFIG.search.mileage.unit;\n text += ' ' + value;\n return text;\n }\n return value;\n };\n searchForm.filters.year.onEnd = searchForm.onFilterChange;\n searchForm.filters.year.translate = function (value, slider, label) {\n var text;\n switch (label) {\n case 'model':\n text = '' + $translate.instant('search_filter_from') + '';\n text += ' ' + value;\n break;\n case 'high':\n text = '' + $translate.instant('search_filter_to') + '';\n text += ' ' + value;\n break;\n default:\n text = value;\n break;\n }\n return text;\n };\n searchForm.filters.volume.onEnd = searchForm.onFilterChange;\n searchForm.filters.volume.translate = function (value, slider, label) {\n var text;\n switch (label) {\n case 'model':\n text = '' + $translate.instant('search_filter_from') + '';\n text += ' ' + value;\n text += ' ' + CONFIG.search.volume.unit;\n break;\n case 'high':\n text = '' + $translate.instant('search_filter_to') + '';\n text += ' ' + value;\n text += ' ' + CONFIG.search.volume.unit;\n break;\n default:\n text = value;\n break;\n }\n return text;\n };\n searchForm.filters.power.onEnd = searchForm.onFilterChange;\n searchForm.filters.power.translate = function (value, slider, label) {\n if (label === 'model') {\n var text = '' + $translate.instant('search_power_to');\n text += ' ' + CONFIG.search.power.unit;\n text += ' ' + value;\n return text;\n }\n return value;\n };\n if (Boolean(searchForm.resultHelper.lastQuery.location) && Boolean(searchForm.resultHelper.lastQuery.location.geometry)) {\n searchForm.onFilterChange(false);\n }\n\n // Init default model\n if (CONFIG.search.model && CONFIG.search.model.defaultModel && ResultHelper.firstSearch) {\n searchForm.defaultModel = CONFIG.search.model.defaultModel;\n searchForm.filters.models = [searchForm.defaultModel];\n searchForm.resultHelper.lastQuery.filters.model = searchForm.defaultModel;\n }\n\n if (ResultHelper.firstSearch && CONFIG.search.goToResults) {\n searchForm.goToResults = CONFIG.search.goToResults;\n delete CONFIG.search.goToResults;\n }\n\n if (ResultHelper.firstSearch && CONFIG.search.location) {\n searchForm.locationChanged();\n }\n\n setSlidersEnabled();\n renderSliders();\n };\n\n function getHereMapsLocationLabelFromLocationDetail(place) {\n if (!place) {\n return null;\n }\n $log.log(place);\n var addressInfos = {};\n place.address.additionalData.forEach(function (item) {\n addressInfos[item.key] = item.value;\n });\n\n return ({\n country: addressInfos.CountryName,\n geometry: {lat: place.displayPosition.latitude, lng: place.displayPosition.longitude},\n locality: place.address.label,\n/*\n locality: addressInfos.CountyName + ' ' + place.address.county,\n*/\n province: place.address.county\n });\n }\n\n function getHereMapsLocationLabel(place) {\n if (!place) {\n return null;\n }\n\n return ({\n country: place.address.countryName,\n geometry: {lat: place.position.lat, lng: place.position.lng},\n locality: place.address.label,\n province: place.address.countyCode\n });\n }\n\n /* eslint-enable camelcase */\n}\n","angular\n .module('fca-used')\n .component('results', {\n bindings: {\n data: '<',\n dealers: '<'\n },\n templateUrl: 'app/results/results.html',\n controller: resultsController,\n controllerAs: 'results'\n });\n\nresultsController.$inject = ['$window', '$state', '$stateParams', '$rootScope', '$timeout', '$localStorage', 'uvl', 'wishlist', 'tagging', 'ResultHelper', 'CONFIG'];\n\nfunction resultsController($window, $state, $stateParams, $rootScope, $timeout, $localStorage, uvl, wishlist, tagging, ResultHelper, CONFIG) {\n var self = this;\n self.wishlist = wishlist;\n self.resultHelper = ResultHelper;\n\n self.orderOptions = CONFIG.order.fields;\n\n self.updatePage = function () {\n var begin = self.query.pagination.page * self.query.pagination.size;\n var end = begin + self.query.pagination.size;\n self.pagedData = self.data.vehicles.slice(begin, end);\n angular.forEach(self.pagedData, function (vehicle) {\n overrideVehicleLocation(vehicle);\n });\n };\n\n self.setPage = function (page) {\n self.query.pagination.page = Math.min(Math.max(0, page), self.query.pagination.pages.length - 1);\n self.filters.selectedPage = self.query.pagination.page;\n self.updatePage();\n var scrollTarget = $window.document.querySelector('.navigation-fca-used');\n scrollTarget.scrollIntoView({\n behavior: 'smooth'\n });\n };\n\n self.nextPage = function () {\n self.setPage(self.query.pagination.page + 1);\n };\n\n self.prevPage = function () {\n self.setPage(self.query.pagination.page - 1);\n };\n\n function renderPages() {\n self.query.pagination.page = self.filters.selectedPage || 0;\n self.query.pagination.pages = [];\n var pages = Math.ceil(self.total / self.query.pagination.size);\n if (pages > 1) {\n for (var i = 0; i < pages; i++) {\n self.query.pagination.pages.push(i + 1);\n }\n }\n }\n\n self.changedListOptions = function (updateLocally) {\n $localStorage.pageSize = self.query.pagination.size;\n renderPages();\n if (updateLocally) {\n self.updatePage();\n } else {\n self.update();\n }\n };\n\n self.changedSortingOptions = function () {\n ResultHelper.ordered = true;\n self.changedListOptions();\n };\n\n self.update = function () {\n if (self.query.location.geometry) {\n uvl.saveLastQuery(self.query);\n uvl.getVehicles(self.query)\n .then(function (vehicles) {\n self.data = vehicles;\n self.updatePage();\n });\n }\n };\n\n self.updateResults = function () {\n if (ResultHelper.lastQuery.submit) {\n ResultHelper.lastQuery.submit();\n }\n };\n\n self.newSearch = function () {\n ResultHelper.reset();\n $state.go('root.search');\n };\n\n /* eslint-disable complexity */\n self.$onInit = function () {\n /* eslint-enable complexity */\n if (CONFIG.mirafioriStripe && CONFIG.mirafioriStripe.selector) {\n var target = $window.document.querySelector(CONFIG.mirafioriStripe.selector);\n if (target) {\n target.style.display = 'none';\n }\n }\n\n if (angular.isUndefined($localStorage.gridView)) {\n $localStorage.gridView = true;\n }\n self.gridView = $localStorage.gridView;\n\n ResultHelper.lastQuery = uvl.getLastQuery();\n self.query = ResultHelper.getLastQuery();\n ResultHelper.filters = uvl.getLastFilters();\n self.filters = ResultHelper.filters;\n self.query.order = self.query.order || CONFIG.order.default;\n self.query.pagination = self.query.pagination || {\n page: 0,\n size: $localStorage.pageSize || CONFIG.pagination.default,\n sizes: CONFIG.pagination.sizes\n };\n self.total = self.data.numFound;\n renderPages();\n self.updatePage();\n resultTracking($stateParams.trackLoad);\n if ($stateParams.trackLoad) {\n resultTracking(false);\n }\n };\n\n function resultTracking(pageLoad) {\n var filterList = [];\n filterList.push({\n name: 'city',\n value: self.query.location.locality\n });\n filterList.push({\n name: 'distance',\n value: self.query.extendedArea\n });\n filterList.push({\n name: 'brand',\n value: self.query.filters.brand && CONFIG.brand && CONFIG.brand.taggingName ? CONFIG.brand.taggingName : 'NA'\n });\n filterList.push({\n name: 'model',\n value: self.query.filters.model && self.query.filters.model.modelDescription ? self.query.filters.model.modelDescription : 'NA'\n });\n filterList.push({\n name: 'price',\n value: self.query.filters.priceCurrent ? self.query.filters.priceCurrent.min + '-' + self.query.filters.priceCurrent.max : 'NA'\n });\n filterList.push({\n name: 'year',\n value: self.query.filters.registrationYear ? self.query.filters.registrationYear.min + '-' + self.query.filters.registrationYear.max : 'NA'\n });\n filterList.push({\n name: 'mileage',\n value: self.query.filters.km && CONFIG.search.mileage.min ? CONFIG.search.mileage.min + '-' + self.query.filters.km : 'NA'\n });\n\n filterList.push({\n name: CONFIG.search.premium.taggingId,\n value: self.query.filters.premium ? 'yes' : 'NA'\n });\n\n if (self.query.filters.fuel) {\n filterList.push({\n name: 'fuel',\n value: self.query.filters.fuel || 'NA'\n });\n }\n if (self.query.filters.power) {\n filterList.push({\n name: 'power',\n value: self.query.filters.power || 'NA'\n });\n }\n if (self.query.filters.gear) {\n filterList.push({\n name: 'gear',\n value: self.query.filters.gear || 'NA'\n });\n }\n if (self.query.filters.doors) {\n filterList.push({\n name: 'doors',\n value: self.query.filters.doors || 'NA'\n });\n }\n if (self.query.filters.color) {\n filterList.push({\n name: 'color',\n value: self.query.filters.color || 'NA'\n });\n }\n if (self.query.filters.transmission) {\n filterList.push({\n name: 'transmission',\n value: self.query.filters.transmission || 'NA'\n });\n }\n if (self.query.filters.vehicleType) {\n filterList.push({\n name: 'vehicle-type',\n value: self.query.filters.vehicleType || 'NA'\n });\n }\n if (self.query.filters.bodyType) {\n filterList.push({\n name: 'body-type',\n value: self.query.filters.bodyType || 'NA'\n });\n }\n if (self.query.filters.typeOfUse) {\n filterList.push({\n name: 'use-type',\n value: self.query.filters.typeOfUse || 'NA'\n });\n }\n if (self.query.filters.wheelBase) {\n filterList.push({\n name: 'wheel-base',\n value: self.query.filters.wheelBase || 'NA'\n });\n }\n if (self.query.filters.volume) {\n filterList.push({\n name: 'volume',\n value: self.query.filters.volume ? self.query.filters.volume.min + '-' + self.query.filters.volume.max : 'NA'\n });\n }\n if (self.query.filters.vatCode) {\n filterList.push({\n name: 'deductible-vat',\n value: self.query.filters.vatCode || 'NA'\n });\n }\n if (self.query.filters.damagedVehicle) {\n filterList.push({\n name: 'damaged-vehicle',\n value: self.query.filters.damagedVehicle || 'NA'\n });\n }\n var taggingOptions = {\n page: 'used:search',\n event: pageLoad ? 'pageload' : 'search',\n inventorySearch: {\n filterList: filterList.map(function (filter) {\n return filter.name + ':' + filter.value;\n }).join('|'),\n numberOfVehicles: self.total\n }\n };\n tagging.track(taggingOptions);\n }\n\n function overrideVehicleLocation(vehicle) {\n if (vehicle.locationOverriden) {\n return;\n }\n var dealer;\n for (var i = 0; i < vehicle.mandate.length && !dealer; i++) {\n var mandate = vehicle.mandate[i];\n var mandateBrand = $window.parseInt(mandate.brand);\n if (self.dealers[mandate.dealer]) {\n if (self.dealers[mandate.dealer][mandateBrand]) {\n var dealerBrandLocations = self.dealers[mandate.dealer][mandateBrand];\n dealer = dealerBrandLocations[0];\n // dealer = dealer || dealerBrandLocations[Object.keys(dealerBrandLocations)[0]];\n }\n }\n }\n\n vehicle.dealer = dealer || {};\n }\n\n self.openFiltersModal = function () {\n angular.element(document).find('html').css('position', 'fixed');\n angular.element(document).find('body').css('position', 'fixed');\n self.resultHelper.modalFilters = true;\n $timeout(function () {\n $rootScope.$broadcast('rzSliderForceRender');\n }, 50);\n };\n\n self.setGridView = function (gridView) {\n self.gridView = gridView;\n $localStorage.gridView = self.gridView;\n };\n}\n","angular\n .module('fca-used')\n .component('root', {\n templateUrl: 'app/root/root.html',\n controller: rootController,\n controllerAs: 'root'\n });\n\nrootController.$inject = ['$window', 'asyncTasks', 'CONFIG'];\nfunction rootController($window, asyncTasks, CONFIG) {\n var self = this;\n self.asyncTasks = asyncTasks;\n self.$onInit = function () {\n self.class = [\n 'market-' + CONFIG.market.id,\n 'language-' + CONFIG.language.id,\n 'brand-' + CONFIG.brand.id,\n 'protocol-' + $window.location.protocol.replace(/:/g, '').toLowerCase()\n ];\n };\n}\n","angular\n .module('fca-used')\n .component('premiumDetails', {\n bindings: {\n open: '='\n },\n templateUrl: 'app/premium-details/premium-details.html',\n controller: premiumDetailsController,\n controllerAs: 'premiumDetails'\n });\n\npremiumDetailsController.$inject = ['CONFIG'];\n\nfunction premiumDetailsController(CONFIG) {\n var premiumDetails = this;\n var i;\n premiumDetails.items = [];\n premiumDetails.notes = [];\n premiumDetails.topCta = 1;\n\n var market = CONFIG.market.id;\n var language = CONFIG.language.id;\n var brand = CONFIG.brand.name;\n\n if (market === 'be' && (language === 'fr' || language === 'nl') && (brand === 'Fiat' || brand === 'Jeep' || brand === 'Abarth' || brand === 'FiatProfessional' || brand === 'Alfa Romeo')) {\n premiumDetails.topCta = 0;\n }\n\n for (i = 0; i < CONFIG.premium.descriptionItems; i++) {\n premiumDetails.items.push({\n class: 'premium_section_class_' + i,\n title: 'premium_section_title_' + i,\n description: 'premium_section_description_' + i,\n open: false\n });\n }\n\n for (i = 0; i < CONFIG.premium.descriptionNotes; i++) {\n premiumDetails.notes.push('premium_note_' + i);\n }\n\n premiumDetails.openExtendedWarrantyModal = function () {\n angular.element(document).find('html').css('position', 'fixed');\n angular.element(document).find('body').css('position', 'fixed');\n premiumDetails.showExtendedWarrantyModal = true;\n };\n\n premiumDetails.closeExtendedWarrantyModal = function () {\n angular.element(document).find('html').css('position', 'static');\n angular.element(document).find('body').css('position', 'static');\n premiumDetails.showExtendedWarrantyModal = false;\n };\n}\n"," angular\n .module('fca-used')\n .component('infoModal', {\n bindings: {\n closeAnywhere: '@',\n doShow: '=',\n hideContent: '= 0; i--) {\n accordion.panels[i].open = accordion.panels[i] === panel;\n }\n }\n };\n}\n","angular\n .module('fca-used')\n .component('accordionPanel', {\n templateUrl: 'app/accordion/accordion-panel.html',\n controller: accordionPanelController,\n controllerAs: 'accordionPanel',\n transclude: {\n header: 'panelHeader',\n content: 'panelContent'\n },\n bindings: {\n open: ' 0;\n if (vehicle.hasWLTPdata) {\n var map = {};\n for (var j = 0; j < vehicle.wltp.length; j++) {\n var data = vehicle.wltp[j];\n map[data.code.toLowerCase()] = data.description;\n }\n vehicle.wltpMap = map;\n switch (map.iswltp) {\n case '0':\n vehicle.wltpLevel = '[A]';\n break;\n case '1':\n vehicle.wltpLevel = '[B]';\n break;\n case '2':\n vehicle.wltpLevel = '[C]';\n break;\n case '3':\n vehicle.wltpLevel = '[B][C]';\n break;\n default: break;\n }\n }\n }\n return angular.isArray(vehicleCode) ? response.vehicles : response.vehicles[0];\n });\n }\n\n function getShareUrl(social, vehicle) {\n return baseUrl + '/share?' + $httpParamSerializer({\n scope: 'NET',\n consumer: getConsumer(),\n vehicleCode: vehicle.vehicleCode,\n market: CONFIG.market.id.toUpperCase(),\n language: CONFIG.language.id,\n social: social,\n title: $translate.instant('site_name'),\n siteName: $translate.instant('site_url'),\n brand: CONFIG.brand.id\n });\n }\n\n function request(method, body) {\n return $http({\n method: 'POST',\n url: baseUrl + method,\n data: body,\n headers: {\n 'Content-Type': undefined\n }\n }).then(function (response) {\n if (response.data.errors) {\n return $q.reject(response.data.errors);\n }\n return $q.when(response.data.response);\n });\n }\n\n function getDealer(brand, sincom, sitecode) {\n var dealerLocatorUrl = CONFIG.dealerLocator.endpoint;\n var params = {\n func: 'finddealerxml',\n brand: brand,\n mkt: CONFIG.market.code,\n sin: sincom,\n st: sitecode\n };\n if (CONFIG.dealerLocator.params && angular.isObject(CONFIG.dealerLocator.params)) {\n angular.extend(params, CONFIG.dealerLocator.params);\n }\n return $http.jsonp($sce.trustAsResourceUrl(dealerLocatorUrl), {\n jsonpCallbackParam: 'jsonp',\n params: params\n }).then(function (response) {\n if (!response.data.results || !angular.isArray(response.data.results)) {\n asyncTasks.error = true;\n return {};\n }\n if (CONFIG.dealerLocator.overrideData) {\n var overrideData = CONFIG.dealerLocator.overrideData[response.data.results[0].SINCOM];\n if (overrideData) {\n response.data.results[0] = angular.extend({}, response.data.results[0], overrideData);\n }\n }\n return response.data.results[0];\n });\n }\n\n function getImpressum(legalEntity) {\n var url = CONFIG.impressum.endpoint\n .replace(':legalentity', legalEntity)\n .replace(':market', CONFIG.market.id)\n .replace(':language', CONFIG.language.id);\n\n return $http.get(url)\n .then(function (response) {\n var content = $window.document.createElement('html');\n content.innerHTML = response.data;\n var impressum = content.getElementsByTagName('impressum');\n return impressum.length ? impressum[0].innerHTML : response.data;\n })\n .catch(function () {\n asyncTasks.error = true;\n return null;\n });\n }\n\n function getMandate(query) {\n return getDealerList(query)\n .then(function (dealers) {\n var mandate = [];\n var mandateMap = {};\n angular.forEach(dealers, function (dealer) {\n var key = dealer.BRAND + '.' + dealer.SINCOM;\n if (!mandateMap[key]) {\n mandateMap[key] = true;\n mandate.push({\n brand: dealer.BRAND,\n dealer: dealer.SINCOM,\n location: '*'\n });\n }\n });\n return mandate;\n });\n }\n\n function getDealerList(query) {\n var params = {\n func: 'finddealerxml',\n mkt: CONFIG.market.code,\n rad: query.extendedArea,\n x: query.location.geometry.lng,\n y: query.location.geometry.lat\n };\n if (CONFIG.dealerLocator.params && angular.isObject(CONFIG.dealerLocator.params)) {\n angular.extend(params, CONFIG.dealerLocator.params);\n }\n\n if (query.filters.brandCode) {\n params.brand = String($window.parseInt(query.filters.brandCode[0]));\n } else if (query.filters.brand) {\n params.brand = String($window.parseInt(query.filters.brand.brandCode));\n }\n\n // Workaround for Fiat\n params.brand = params.brand === '0' ? '00' : params.brand;\n\n if (lastDealerList && lastDealerList.length && angular.equals(params, lastDealerListParams)) {\n return $q.when(lastDealerList);\n }\n lastDealerListParams = params;\n\n var dealerLocatorUrl = 'https://dealerlocator.fiat.com/geocall/RestServlet';\n if (CONFIG.dealerLocator && CONFIG.dealerLocator.endpoint) {\n dealerLocatorUrl = CONFIG.dealerLocator.endpoint;\n }\n return $http.jsonp($sce.trustAsResourceUrl(dealerLocatorUrl), {\n jsonpCallbackParam: 'jsonp',\n params: params\n })\n .then(function (response) {\n if (CONFIG.dealerLocator.overrideData) {\n for (var i = 0; i < response.data.results.length; i++) {\n var overrideData = CONFIG.dealerLocator.overrideData[response.data.results[i].SINCOM];\n if (overrideData) {\n response.data.results[i] = angular.extend({}, response.data.results[i], overrideData);\n }\n }\n }\n lastDealerList = response.data.results;\n return lastDealerList;\n });\n }\n}\n","angular\n .module('fca-used')\n .factory('tagging', taggingService);\n\ntaggingService.$inject = ['$window', '$state', 'CONFIG', '$log'];\n\nfunction taggingService($window, $state, CONFIG, $log) {\n try {\n if ($window.digitalData) {\n $window.digitalData.page.pageInfo.vehicleBrand = CONFIG.brand.taggingName;\n $window.digitalData.page.pageInfo.language = CONFIG.language.id;\n $window.digitalData.page.pageInfo.countryCode = CONFIG.market.id;\n }\n } catch (error) {\n $log.warn('DTM script not loaded, are you using adblock? ' + error);\n }\n var prefix = CONFIG.brand.taggingName + ':' + CONFIG.market.id + ':shopping-tools';\n return {\n track: track\n };\n\n function track(options) {\n try {\n if ($window.digitalData) {\n $window.digitalData.page.pageInfo.url = $window.document.location.origin + $window.document.location.pathname + $state.href($state.current.name, $state.params);\n\n if (options.page) {\n $window.digitalData.page.pageInfo.pageName = prefix + ':' + options.page;\n $window.digitalData.page.category.primaryCategory = prefix + ':' + options.page;\n $window.digitalData.page.category.subCategory1 = prefix;\n $window.digitalData.page.category.subCategory2 = prefix + ':used';\n $window.digitalData.page.category.pageType = prefix;\n } else {\n delete $window.digitalData.page.pageInfo.pageName;\n delete $window.digitalData.page.category.primaryCategory;\n delete $window.digitalData.page.category.subCategory1;\n delete $window.digitalData.page.category.subCategory2;\n delete $window.digitalData.page.category.pageType;\n }\n\n if (options.usedVehicle) {\n $window.digitalData.page.pageInfo.usedvehicleBrand = options.usedVehicle.brandDescription;\n $window.digitalData.page.pageInfo.usedvehicleModel = options.usedVehicle.brandModelDescription;\n $window.digitalData.page.pageInfo.dealerID = options.usedVehicle.dealer.SINCOM + '.' + options.usedVehicle.dealer.SITECODE;\n $window.digitalData.page.pageInfo.dealerName = options.usedVehicle.dealer.COMPANYNAM;\n\n $window.digitalData.page.component.form.stepName = 'form';\n $window.digitalData.page.component.form.leadType = 'information-request';\n $window.digitalData.page.component.form.nameType = 'lead:information-request';\n } else {\n delete $window.digitalData.page.pageInfo.usedvehicleBrand;\n delete $window.digitalData.page.pageInfo.usedvehicleModel;\n delete $window.digitalData.page.pageInfo.dealerID;\n delete $window.digitalData.page.pageInfo.dealerName;\n\n delete $window.digitalData.page.component.form.stepName;\n delete $window.digitalData.page.component.form.leadType;\n delete $window.digitalData.page.component.form.nameType;\n }\n\n if (options.thankYou) {\n $window.digitalData.page.component.form.stepName = 'thankyou';\n }\n\n if (options.inventorySearch) {\n $window.digitalData.page.component.inventorySearch = options.inventorySearch;\n } else {\n delete $window.digitalData.page.component.inventorySearch;\n }\n if (options.vehicleBrand) {\n $window.digitalData.page.pageInfo.vehicleBrand = options.vehicleBrand;\n } else {\n $window.digitalData.page.pageInfo.vehicleBrand = CONFIG.brand.taggingName;\n }\n\n if (CONFIG.mkParams) {\n $window.digitalData.page.pageInfo = angular.extend($window.digitalData.page.pageInfo, CONFIG.mkParams);\n }\n\n try {\n _satellite.track(options.event || 'pageload');\n } catch (error) {\n $log.warn('Error in DTM script ' + error);\n }\n }\n } catch (error) {\n $log.warn('DTM script not loaded, are you using adblock? ' + error);\n }\n }\n}\n","angular\n .module('fca-used')\n .factory('scroll', scrollService);\n\nscrollService.$inject = ['$window', 'CONFIG'];\n\nfunction scrollService($window, CONFIG) {\n return {\n to: to,\n top: top\n };\n\n function top() {\n $window.scroll({\n top: 0,\n behavior: 'smooth'\n });\n }\n\n function to(selector) {\n var target;\n if (angular.isString(selector)) {\n target = $window.document.querySelector(selector);\n } else {\n target = selector;\n }\n if (target) {\n var offSet = target.getBoundingClientRect().top + $window.pageYOffset;\n var header = $window.document.querySelector(CONFIG.brand.headerSelector);\n if (header) {\n var headerRect = $window.document.querySelector(CONFIG.brand.headerSelector).getBoundingClientRect();\n var headerOffSet = headerRect.height + headerRect.top;\n offSet -= headerOffSet;\n }\n $window.scroll({\n top: offSet,\n behavior: 'smooth'\n });\n }\n }\n}\n","\nroutesConfig.$inject = [\"$stateProvider\", \"$urlRouterProvider\", \"$locationProvider\"];angular\n .module('fca-used')\n .config(routesConfig)\n .run(scrollTopOnRouteChangeService);\n\n/** @ngInject */\nfunction routesConfig($stateProvider, $urlRouterProvider, $locationProvider) {\n $locationProvider.html5Mode(false).hashPrefix('!');\n $urlRouterProvider.otherwise('/');\n\n $stateProvider\n .state('root', {\n url: '/',\n component: 'root',\n redirectTo: 'root.search',\n resolve: {\n translationsReady: translationsReady,\n clearEloquaVehicleData: clearEloquaVehicleData\n }\n })\n .state('root.search', {\n url: 'search',\n component: 'home',\n resolve: {\n clearEloquaVehicleData: clearEloquaVehicleData,\n clearLastQuery: clearLastQuery\n }\n })\n .state('root.results', {\n url: 'results',\n component: 'results',\n params: {\n query: null,\n trackLoad: true\n },\n resolve: {\n data: fetchResults,\n dealers: fetchDealers,\n clearEloquaVehicleData: clearEloquaVehicleData\n }\n })\n .state('root.details', {\n url: ':brand/:sincom/:siteCode/:vehicleCode',\n component: 'vehicleDetails',\n resolve: {\n data: fetchDetails,\n dealer: fetchDealer,\n phone: fetchMynumber,\n installments: fetchVehicleInstallments,\n setEloquaVehicleData: setEloquaVehicleData\n }\n });\n\n translationsReady.$inject = ['$translate'];\n\n function translationsReady($translate) {\n return $translate.onReady();\n }\n\n fetchResults.$inject = ['$q', '$state', '$transition$', 'uvl'];\n\n function fetchResults($q, $state, $transition$, uvl) {\n var query;\n try {\n query = $transition$.params().query || uvl.getLastQuery();\n if (query.location.geometry) {\n uvl.saveLastQuery(query);\n }\n } catch (err) {\n $state.go('root.search');\n return $q.reject('Missing search query');\n }\n return uvl.getVehiclesCount(query)\n .then(function () {\n return uvl.getVehicles(query);\n })\n .catch(function (error) {\n $state.go('root.search');\n return $q.reject('Error performing search query', {\n query: query,\n error: error\n });\n });\n }\n\n fetchDetails.$inject = ['$q', '$state', '$transition$', 'uvl'];\n\n function fetchDetails($q, $state, $transition$, uvl) {\n var vehicleCode = $transition$.params().vehicleCode;\n return uvl.getVehicleDetails(vehicleCode)\n .catch(function (error) {\n $state.go('root.results');\n return $q.reject('Error getting vehicle details', {\n vehicleCode: vehicleCode,\n error: error\n });\n });\n }\n\n fetchDealer.$inject = ['uvl', '$transition$'];\n\n function fetchDealer(uvl, $transition$) {\n var params = $transition$.params();\n return uvl.getDealer(params.brand, params.sincom, params.siteCode);\n }\n\n fetchMynumber.$inject = ['CONFIG', '$http', '$q', '$transition$'];\n function fetchMynumber(CONFIG, $http, $q, $transition$) {\n if (CONFIG.mynumber && CONFIG.mynumber.enabled) {\n var params = $transition$.params();\n return $http.post(CONFIG.mynumber.endpoint, {\n masterKey: CONFIG.mynumber.masterKey,\n sincom: params.sincom,\n siteCode: params.siteCode\n }).then(function (response) {\n var phone = {};\n phone.number = response.data.KcomNumber;\n if (CONFIG.mynumber.removePrefix) {\n phone.parsed = response.data.KcomNumber.replace(CONFIG.mynumber.removePrefix, '');\n }\n return phone;\n }).catch(function () {\n return false;\n });\n }\n return false;\n }\n\n fetchVehicleInstallments.$inject = ['$q', 'InstallmentsCalculator', 'data', 'CONFIG'];\n function fetchVehicleInstallments($q, InstallmentsCalculator, data, CONFIG) {\n if (CONFIG.installmentsCalculator && CONFIG.installmentsCalculator.enabled) {\n InstallmentsCalculator.init();\n return InstallmentsCalculator.getMonthlyRate(data)\n .then(function (response) {\n return response[InstallmentsCalculator.getMVS(data)];\n })\n .catch(function () {\n return $q.resolve(null);\n });\n }\n return $q.resolve(null);\n }\n\n fetchDealers.$inject = ['$window', '$q', '$state', '$transition$', 'uvl'];\n\n function fetchDealers($window, $q, $state, $transition$, uvl) {\n var query = $transition$.params().query || uvl.getLastQuery();\n if (!query) {\n $state.go('root.search');\n return $q.reject('Missing search query');\n }\n return uvl.getDealerList(query)\n .then(function (dealers) {\n var dealerObject = {};\n angular.forEach(dealers, function (dealer) {\n var brand = $window.parseInt(dealer.BRAND);\n dealerObject[dealer.SINCOM] = dealerObject[dealer.SINCOM] || {};\n dealerObject[dealer.SINCOM][brand] = dealerObject[dealer.SINCOM][brand] || [];\n dealerObject[dealer.SINCOM][brand].push(dealer);\n });\n return dealerObject;\n });\n }\n}\n\nscrollTopOnRouteChangeService.$inject = ['$window', '$transitions', '$log'];\n\nfunction scrollTopOnRouteChangeService($window, $transitions, $log) {\n $transitions.onFinish({}, function () {\n try {\n $window.scroll({\n top: 0,\n left: 0,\n behavior: 'instant'\n });\n } catch (error) {\n $log.warn('Error in window.scroll function ' + error);\n }\n });\n}\n\nclearEloquaVehicleData.$inject = ['$window'];\nfunction clearEloquaVehicleData($window) {\n delete $window.vehicleData;\n}\n\nsetEloquaVehicleData.$inject = ['$window', 'data'];\nfunction setEloquaVehicleData($window, data) {\n $window.vehicleData = data;\n}\n\nclearLastQuery.$inject = ['ResultHelper'];\nfunction clearLastQuery(ResultHelper) {\n ResultHelper.reset();\n}\n","angular\n .module('fca-used')\n .factory('ResultHelper', ResultHelper);\n\nResultHelper.$inject = ['$localStorage', 'CONFIG'];\n\nfunction ResultHelper($localStorage, CONFIG) {\n var resultHelper = {};\n\n resultHelper.filters = undefined;\n resultHelper.firstSearch = true;\n resultHelper.search = 0;\n resultHelper.setCount = function (count) {\n resultHelper.firstSearch = false;\n resultHelper.search++;\n resultHelper.vehiclesCount = count;\n };\n\n resultHelper.getCount = function () {\n return resultHelper.vehiclesCount;\n };\n\n resultHelper.ordered = false;\n resultHelper.vehiclesCount = 0;\n\n resultHelper.reset = function () {\n delete $localStorage.lastQuery;\n delete resultHelper.lastQuery;\n delete resultHelper.filters;\n\n resultHelper.search = 0;\n resultHelper.vehiclesCount = 0;\n resultHelper.firstSearch = true;\n };\n\n resultHelper.getLastQuery = function () {\n return angular.copy(resultHelper.lastQuery);\n };\n\n resultHelper.setLastQuery = function (query) {\n resultHelper.lastQuery = query;\n };\n\n resultHelper.getUvlVolumeMax = function () {\n return resultHelper.uvlMax || angular.copy($localStorage.uvlMax) || CONFIG.search.volume.max;\n };\n\n resultHelper.setUvlVolumeMax = function (max) {\n $localStorage.uvlMax = max;\n resultHelper.uvlMax = max;\n };\n\n return resultHelper;\n}\n","/*!\n* Merge Sort in JavaScript v1.0\n* http://github.com/justinforce/merge-sort\n*\n* Copyright (c) 2011, Justin Force\n* Licensed under the BSD 3-Clause License\n*/\nangular\n .module('fca-used')\n .constant('mergeSort', mergeSort);\n\nfunction mergeSort(array, compare) {\n var length = array.length;\n var middle = Math.floor(length / 2);\n\n // define default comparison function if none is defined\n if (!compare) {\n compare = function (left, right) {\n if (left < right) {\n return -1;\n }\n if (left === right) {\n return 0;\n }\n return 1;\n };\n }\n\n if (length < 2) {\n return array;\n }\n\n function merge(left, right, compare) {\n var result = [];\n\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (compare(left[0], right[0]) <= 0) {\n result.push(left[0]);\n left = left.slice(1);\n } else {\n result.push(right[0]);\n right = right.slice(1);\n }\n } else if (left.length > 0) {\n result.push(left[0]);\n left = left.slice(1);\n } else if (right.length > 0) {\n result.push(right[0]);\n right = right.slice(1);\n }\n }\n return result;\n }\n\n return merge(\n mergeSort(array.slice(0, middle), compare),\n mergeSort(array.slice(middle, length), compare),\n compare\n );\n}\n\n","angular\n .module('fca-used')\n .config(l10nConfiguration)\n .factory('labelsLoader', labelsLoader)\n .run(setLocaleFormats);\n\nl10nConfiguration.$inject = ['$translateProvider', 'CONFIG'];\nfunction l10nConfiguration($translateProvider, CONFIG) {\n $translateProvider.useSanitizeValueStrategy('sanitizeParameters');\n $translateProvider.useLoaderCache(true);\n $translateProvider.useLoader('labelsLoader', {\n market: CONFIG.market.id,\n brand: CONFIG.brand.id,\n language: CONFIG.language.id\n });\n $translateProvider.preferredLanguage(CONFIG.language.id);\n}\n\nlabelsLoader.$inject = ['$http', 'CONFIG'];\nfunction labelsLoader($http, CONFIG) {\n return function (options) {\n var url = CONFIG.language.endpoint;\n url = url.replace(':brand', options.brand);\n url = url.replace(':market', options.market);\n url = url.replace(':language', options.key);\n return $http.get(url)\n .catch(function () {\n return $http.get('l10n/' + options.market + '-' + options.key + '.json');\n })\n .catch(function () {\n return options.key;\n })\n .then(function (translations) {\n angular.forEach(translations.data, function (value, key) {\n delete translations.data[key];\n translations.data[key.replace(options.brand + '.', '')] = value;\n });\n /* eslint-disable dot-notation */\n if (translations.data['search_flag_premium_1'] === '') {\n /* eslint-enable dot-notation */\n CONFIG.firstLabelPremium = false;\n } else {\n CONFIG.firstLabelPremium = true;\n }\n return translations.data;\n });\n };\n}\n\nsetLocaleFormats.$inject = ['$locale', 'CONFIG'];\nfunction setLocaleFormats($locale, CONFIG) {\n $locale.NUMBER_FORMATS.GROUP_SEP = CONFIG.language.numberGroupSeparator;\n $locale.NUMBER_FORMATS.DECIMAL_SEP = CONFIG.language.numberDecimalSeparator;\n}\n","angular\n .module('fca-used')\n .factory('InstallmentsCalculator', installmentsCalculatorService);\n\ninstallmentsCalculatorService.$inject = ['$http', '$sce', '$httpParamSerializer', 'moment', 'Guid', 'CONFIG', '$window'];\n\nfunction installmentsCalculatorService($http, $sce, $httpParamSerializer, moment, Guid, CONFIG, $window) {\n var uuid = Guid.newGuid();\n var countryCode = CONFIG.language.id + '_' + CONFIG.market.id.toUpperCase();\n\n return {\n init: init,\n getMVS: getMVS,\n getMonthlyRate: getMonthlyRate,\n getIframeUrl: getIframeUrl\n };\n\n function init() {\n uuid = Guid.newGuid();\n }\n\n function getMVS(vehicle) {\n return vehicle.simType + vehicle.brandCode + vehicle.modelCode;\n }\n\n function getMonthlyRate(vehicles) {\n if (!angular.isArray(vehicles)) {\n vehicles = [vehicles];\n }\n var params = {\n countryCode: countryCode,\n data: [],\n token: uuid,\n guid: '',\n model: false\n };\n\n angular.forEach(vehicles, function (vehicle) {\n params.data.push({\n mvs: getMVS(vehicle),\n price: vehicle.priceCurrent,\n priceService: 0,\n pricePromotion: 0,\n age: moment().diff(moment([vehicle.registrationYear, vehicle.registrationMonth - 1, vehicle.registrationDay]), 'M'),\n mileage: vehicle.km,\n fuel: vehicle.fuelCode\n });\n });\n\n params.data = angular.toJson(params.data);\n\n var url = $sce.trustAsResourceUrl(CONFIG.installmentsCalculator.api + '/GetFinancingInstallment');\n\n return $http.jsonp(url, {\n jsonpCallbackParam: 'callback',\n params: params\n }).then(function (response) {\n return response.data.response;\n });\n }\n\n function getIframeUrl(vehicle) {\n var url = CONFIG.installmentsCalculator.iframe.domain + CONFIG.installmentsCalculator.iframe.path + '?' + $httpParamSerializer({\n mvs: getMVS(vehicle),\n uuid: uuid,\n price: vehicle.priceCurrent,\n lang: countryCode,\n priceService: 0,\n pricePromotion: 0,\n age: moment().diff(moment([vehicle.registrationYear, vehicle.registrationMonth - 1, vehicle.registrationDay]), 'M'),\n mileage: vehicle.km,\n fuel: vehicle.fuelCode,\n data: [],\n /* eslint-disable camelcase */\n opncl_performance: true,\n opncl_advertising: true,\n /* eslint-enable camelcase */\n pricePromotionNoVAT: 0,\n priceNoVAT: 0,\n originUrl: encodeURIComponent($window.location.href),\n dealerCode: vehicle.dealerCode,\n prescoringActive: true,\n vinCode: vehicle.vin\n });\n return $sce.trustAsResourceUrl(url);\n }\n}\n","angular\n .module('fca-used')\n .factory('httpInterceptor', [\"$q\", \"$rootScope\", \"asyncTasks\", \"CONFIG\", \"$sce\", function ($q, $rootScope, asyncTasks, CONFIG ,$sce) {\n function doShowLoader(config) {\n if(angular.isDefined(config) && angular.isDefined(config.url)){\n return (angular.isString(config.url) && config.url.substr(0, CONFIG.uvl.api.length) === CONFIG.uvl.api) || angular.isString($sce.valueOf(config.url));\n }\n return false\n }\n return {\n request: function (config) {\n if (doShowLoader(config)) {\n asyncTasks.push();\n }\n return config || $q.when(config);\n },\n response: function (response) {\n if (doShowLoader(response.config)) {\n if (response.data && response.data.errors) {\n asyncTasks.error = '500';\n }\n asyncTasks.pop();\n }\n return response || $q.when(response);\n },\n responseError: function (response) {\n if (response.status > 299 &&\n (!CONFIG.mynumber || response.config.url !== CONFIG.mynumber.endpoint) &&\n response.config.url.toLowerCase().indexOf('.jpg') !== response.config.url.length - 4 &&\n response.config.url.toLowerCase().indexOf('.png') !== response.config.url.length - 4 &&\n response.config.url.toLowerCase().indexOf('.jpeg') !== response.config.url.length - 5\n ) {\n if (response.config.url.toLowerCase().indexOf('l10n') === -1) {\n asyncTasks.error = response.status;\n }\n }\n if (doShowLoader(response.config)) {\n asyncTasks.pop();\n }\n return $q.reject(response);\n }\n };\n }])\n .config([\"$httpProvider\", function ($httpProvider) {\n $httpProvider.interceptors.push('httpInterceptor');\n }]);\n","angular\n .module('fca-used')\n .directive('fragment', FragmentDirective);\n\nFragmentDirective.$inject = ['$window', '$compile', '$http'];\n\nfunction FragmentDirective($window, $compile, $http) {\n return {\n link: function (scope, elem, attr) {\n $http.get(attr.src)\n .then(function (response) {\n var eloqua = $window.document.createElement('html');\n eloqua.innerHTML = response.data;\n var form = eloqua.getElementsByTagName('section-eloqua')[0];\n var scripts = form.getElementsByTagName('script');\n var length = scripts.length;\n for (var i = 0; i < length; i++) {\n var script = scripts[i];\n if (script.getAttribute('data-ngtype') === 'text/javascript-lazy') {\n var s = $window.document.createElement('script');\n s.async = false;\n s.type = 'text/javascript';\n var src = script.getAttribute('src');\n if (angular.isDefined(src)) {\n s.setAttribute('src', src);\n } else {\n var code = script.innerHTML;\n s.text = code;\n }\n $window.document.head.appendChild(s);\n }\n }\n while (length--) {\n scripts[length].parentNode.removeChild(scripts[length]);\n }\n\n // Horrible workaround for nested forms on Chrome. Thanks Sharepoint.\n var mockForm = $window.document.createElement('form');\n mockForm.setAttribute('style', 'display: none !important;');\n form.insertBefore(mockForm, form.childNodes[0]);\n\n elem.html(form.outerHTML);\n $compile(elem.contents())(scope);\n });\n }\n };\n}\n"," /* eslint-disable angular/di */\nangular\n .module('fca-used')\n .config(['energyLabelConfigProvider', function (energyLabelConfigProvider) {\n energyLabelConfigProvider.setEnergyClassList(['A+', 'A', 'B', 'C', 'D', 'E', 'F', 'G']);\n }]);\n /* eslint-enable angular/di */\n","angular\n .module('fca-used')\n // WARNING: keep breakpoints in sync with style/_variables.scss\n .constant('BREAKPOINTS', {\n PHONE_PORTRAIT: {\n MIN: 0,\n MAX: 480\n },\n TABLET_PORTRAIT: {\n MIN: 481,\n MAX: 768\n },\n DESKTOP: {\n MIN: 769,\n MAX: Number.MAX_VALUE\n }\n });\n","(function () {\n 'use strict';\n\n angular\n .module('fca-used')\n .service('asyncTasks', asyncTasks);\n\n asyncTasks.$inject = ['$timeout'];\n\n function asyncTasks($timeout) {\n var service = {\n push: push,\n pop: pop\n };\n\n service.count = 0;\n\n return service;\n\n function push() {\n $timeout(function () {\n service.count++;\n }, 130);\n }\n\n function pop() {\n service.count--;\n }\n }\n})();\n"]}