60 Used Luxury Cars, Trucks & SUVs | Lux Motors (2024)

`) rateMobile.push(`

`) }) $('#interestRateSelectDesktop').html(rateDesktop.join('')) $interestRateSelect.html(rateMobile.join('')) $(`#interestRateSelect option[value="${financialTerms.interestRate}"]`).prop('selected', true) $('.interest-rate-option').each(function (index) { const rate = +$(this).find('.interest-rate').html().split('%')[0] $(this).on('click', function() { setInterestRate(rate, index) }) }) const monthsHtml = monthlyPaymentsData.months.map(month => { return `

` }).join('') $('#paymentMonths').html(monthsHtml) $('#owedOnTradeInput').val(formatNumber(monthlyPaymentsData.owedOnTrade || 0)) $('#downPaymentInput').val(formatNumber(monthlyPaymentsData.downPayment || 0)) } populatePopupContent() $('#saveChanges').on('click', function() { updateStoredFinancialTerms() }) //create event listener with this name and update the text content for the heading lines. document.addEventListener("financialTermsChange", function ({ detail: { interestRate, downPayment, paymentMonths, downPaymentPercentage, owedOnTrade, tradeIn, tradeInTyped } }) { const { financialTerms, car } = contentSate.get() const formatedFinancePercent = Number.parseFloat(interestRate || financialTerms.interestRate).toFixed(2) let downPaymentContent = downPayment || formatNumber(financialTerms.downPayment) let downPaymentPercent = downPaymentPercentage || financialTerms.downPaymentPercentage if(aprText) { aprText = ` ${aprText}`; } //VDP if (car) { const monthlyPayment = getMonthlyPayment(car.price, getMonthlyPaymentData(), getDealerFinanceTerms()) if (downPaymentPercent) { downPaymentContent = getDownPaymentByPercentage(car.price, downPaymentPercent) downPaymentContent = formatNumber(downPaymentContent || 0) } if (financialTerms.clientDownPayment) { downPaymentPercent = getPercentageByDownPayment(car.price, financialTerms.clientDownPayment) } if (financialTerms.clientDownPaymentPercentage) { downPaymentContent = getDownPaymentByPercentage(car.price, financialTerms.clientDownPaymentPercentage) downPaymentContent = formatNumber(downPaymentContent || 0) } enableOwedOnTradeInput() if (buyHere){ $('.financial-terms-text').html(`${paymentMonths || financialTerms.paymentMonths} mo, ${buyHere.vdp.interestRate ? `${formatedFinancePercent}%${aprText},` : ''} $${downPaymentContent} down`) } else { $('.financial-terms-text').html(`${paymentMonths || financialTerms.paymentMonths} mo, ${formatedFinancePercent}%${aprText}, $${downPaymentContent} down`) } if (carStrike && carDetails.vehicleCondition && carStrike.includes(carDetails.vehicleCondition)) { if (buyHere && !buyHere.vdp.priced && buyHere.vdp.payment){ $('.monthly-payment-per').html(`${formatNumber(monthlyPayment, '$').strike()} ${buyHere ? buyHere.frequency : '/mo'}`) $('.monthly-payment-mo').html(`${formatNumber(monthlyPayment, '$').strike()} ${buyHere ? buyHere.frequency : '/mo'} `) } else if (buyHere && buyHere.vdp.priced && !buyHere.vdp.payment){ $('.monthly-payment-per').html(`${formatNumber(car.price, '$').strike()}`) $('.monthly-payment-mo').html(`${formatNumber(car.price, '$').strike()}`) } else { $('.monthly-payment-per').html(`${formatNumber(monthlyPayment, '$').strike()} ${buyHere ? buyHere.frequency : '/mo'}`) $('.monthly-payment-mo').html(`${formatNumber(monthlyPayment, '$').strike()} ${buyHere ? buyHere.frequency : '/mo'} `) } } else { if (buyHere && searchByDownPayment.enable) { if (buyHere && searchByDownPayment.enable && hideDownPayment && hideDownPayment.vdp && !checkForHideValue(carDetails.vehicleCondition, hideDownPayment.vdp) ) { $('.monthly-payment-mo').html(`${formatNumber(car.price / searchByDownPayment.value, '$')}`) $('.down-payment-mo').html(`${formatNumber(car.price / searchByDownPayment.value, '$')} est. down payment`) } } else { if (buyHere && !buyHere.vdp.priced && buyHere.vdp.payment && (!searchByDownPayment || (searchByDownPayment && !searchByDownPayment.enable))){ $('.monthly-payment-per').html(`${formatNumber(monthlyPayment, '$')} ${buyHere ? buyHere.frequency : '/mo'}`) $('.monthly-payment-mo').html(`${formatNumber(monthlyPayment, '$')} ${buyHere ? buyHere.frequency : '/mo'}`) } else if (buyHere && buyHere.vdp.priced && !buyHere.vdp.payment){ $('.monthly-payment-per').html(`${formatNumber(car.price, '$')}`) $('.monthly-payment-mo').html(`${formatNumber(car.price, '$')}`) } else { $('.monthly-payment-per').html(`${formatNumber(monthlyPayment, '$')} ${buyHere ? buyHere.frequency : '/mo'}`) $('.monthly-payment-mo').html(`${formatNumber(monthlyPayment, '$')} ${buyHere ? buyHere.frequency : '/mo'}`) } } } } //SRP downPaymentContent = downPaymentPercent !== 0 ? `${Number.parseFloat(downPaymentPercent).toFixed(2)}%` : `$${downPaymentContent}` let newDisplayData = `${paymentMonths || financialTerms.paymentMonths} mo, ${formatedFinancePercent}%${aprText}, ${downPaymentContent} down` if (buyHere && !buyHere.interestRate){ newDisplayData = `${paymentMonths || financialTerms.paymentMonths} mo, ${downPaymentContent} down` } const displayData = document.querySelector('#monthlyPaymentDisplayData') const displayDataMobile = document.querySelector('#monthlyPaymentDisplayDataMobile') if (displayData) { displayData.innerHTML = newDisplayData } if (displayDataMobile) { displayDataMobile.innerHTML = newDisplayData } updateMonthlyPayment() }) $interestRateSelect.change(function(event) { const value = event.target.value $customRateInput.val(value) updateInterestRate(value) }) $customRateInput.change(function (event) { updateInterestRate(event.target.value) }) $('#downPaymentInput').change(function (event) { let downPayment = getRawNumber(event.target.value) const { financialTerms, car } = contentSate.get() let percentage = financialTerms.downPaymentPercentage if (car) { percentage = getPercentageByDownPayment(car.price, downPayment) updateDownPaymentPercentage(percentage) } else { updateDownPaymentPercentage(0) } updateFinancialTerms('downPaymentPercentage', 0) updateFinancialTerms('clientDownPaymentPercentage', 0) updateFinancialTerms('clientDownPayment', +downPayment) updateDownPayment(downPayment) updateFinancialTerms('downPayment', +downPayment) downPayment = formatNumber(downPayment) document.dispatchEvent(new CustomEvent("financialTermsChange", { detail: { downPayment } })) }) $('#downPaymentPercentInput').change(function (event) { let downPaymentPercentage = getRawNumber(event.target.value) const { financialTerms, car } = contentSate.get() let downPayment = financialTerms.downPayment if (car) { downPayment = getDownPaymentByPercentage(car.price, downPaymentPercentage) updateDownPayment(downPayment) } else { updateDownPayment(0) } updateFinancialTerms('downPayment', 0) updateFinancialTerms('clientDownPayment', 0) updateFinancialTerms('clientDownPaymentPercentage', +downPaymentPercentage) updateDownPaymentPercentage(downPaymentPercentage) updateFinancialTerms('downPaymentPercentage', +downPaymentPercentage) downPaymentPercentage = formatNumber(downPaymentPercentage) document.dispatchEvent(new CustomEvent("financialTermsChange", { detail: { downPaymentPercentage } })) }) $('#tradeInInput').change(function (event) { let tradeIn = getRawNumber(event.target.value) let owedOt = getRawNumber(document.querySelector('#owedOnTradeInput').value) let tradeInTyped = tradeIn if(parseFloat(tradeIn) >= parseFloat(owedOt)) { event.preventDefault(); $('#owedOnTradeInput').prop("disabled", false); tradeInTyped = tradeIn tradeIn = parseFloat(tradeIn) - parseFloat(owedOt) updateFinancialTerms('tradeIn', +tradeIn) updateFinancialTerms('tradeInTyped', +tradeInTyped) updateDealerFinanceTerms('tradeInTyped', +tradeInTyped) updateDealerFinanceTerms('tradeinValue', +tradeIn) updateTradeIn(tradeInTyped) document.dispatchEvent(new CustomEvent("financialTermsChange", { detail: { tradeIn } })) }else { document.querySelector('#tradeInInput').value = numberFormat(getRawNumber(parseFloat(financialTerms.tradeInTyped))) } }) function enableOwedOnTradeInput () { let tIn = financialTerms.tradeIn let owedOt = financialTerms.owedOnTrade if(parseFloat(tIn) >= parseFloat(owedOt)) { $('#owedOnTradeInput').prop("disabled", false); } } $('#owedOnTradeInput').change(function (e) { let owedOt = parseFloat(e.target.value) let tIn = parseFloat(financialTerms.tradeInTyped) if(owedOt <= tIn && owedOt >= 0) { let tradeIn = tIn - owedOt updateFinancialTerms('tradeIn', +tradeIn) updateOwedOnTrade(owedOt) updateDealerFinanceTerms('owedOnTrade', +owedOt) updateDealerFinanceTerms('tradeinValue', +tradeIn) document.dispatchEvent(new CustomEvent("financialTermsChange", { detail: { tradeIn } })) }else{ document.querySelector('#owedOnTradeInput').value = numberFormat(getRawNumber(parseFloat(financialTerms.owedOnTrade))) } }) function updateOwedOnTrade(owedOt) { const owedOnTradeText = numberFormat(owedOt) document.querySelector('#owedOnTradeInput').value = owedOnTradeText updateFinancialTerms('owedOnTrade', +owedOt) } $paymentMonths.change(function (event) { const paymentMonths = event.target.value updateFinancialTerms('paymentMonths', +paymentMonths) document.dispatchEvent(new CustomEvent("financialTermsChange", { detail: { paymentMonths } })) }) function setInterestRate (rate, index) { updateSelectedInterestRateOption(index) updateInterestRate(rate) } function numberFormat (value = 0, symbol = '$') { const numberFormatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 2 }) const nonDigitRegex = /^(\D+)/ return numberFormatter.format(value).replace(nonDigitRegex, '$1 ') } function updateDownPayment (downPayment) { const downPaymentText = numberFormat(downPayment) let check = document.querySelector('#downPaymentInput') if (check){ check.value = downPaymentText } } function updateDownPaymentPercentage (percentage) { const percentageText = decimalToFloatText(percentage) let check = document.querySelector('#downPaymentPercentInput') if (check){ check.value = percentage } } function updatePaymentMonths(paymentMonths) { $paymentMonths .find('option[value="'+paymentMonths+'"]') .prop("selected", true).siblings() .removeAttr('selected') } function updateTradeIn (tradeIn) { let check = document.querySelector('#tradeInInput') if (check){ check.value = numberFormat(getRawNumber(parseFloat(tradeIn))) } } function updateInterestRate (rate) { const interestRate = getRawNumber(rate) const interestRateText = decimalToFloatText(interestRate) let check = document.querySelector('#customRateInput') if (check){ check.value = interestRate } updateFinancialTerms ('interestRate', +interestRate) document.dispatchEvent(new CustomEvent("financialTermsChange", { detail: { interestRate } })) const rateWithCero = Number.parseFloat(rate).toFixed(2) $interestRateSelect.find('option:selected').removeAttr('selected') $interestRateSelect.find('option[value="'+rateWithCero+'"]').attr("selected", true) } function updateStoredFinancialTerms () { const { financialTerms } = contentSate.get() if(paymentTermsType) { localStorage.setItem('financialTerms1', JSON.stringify(financialTerms)) } else { localStorage.setItem('financialTerms', JSON.stringify(financialTerms)) } } function getRawNumber (value) { const numberAndDotsRegex = /[^0-9.]+/g return parseFloat(+(typeof value === 'number' ? value : value.replace(numberAndDotsRegex, '')) || 0).toFixed(2) } function updateFinancialTerms (name, data) { const { financialTerms: oldFinancialTerms } = contentSate.get() let financialTerms = oldFinancialTerms || {} financialTerms[name] = data contentSate.set({ financialTerms }) updateStoredFinancialTerms() } function updateDealerFinanceTerms (name, data) { dealerFinanceTerms[name] = data } function decimalToFloatText (value) { return Number.isInteger(value) ? (value + '.00') : value && value.toString() } function updateMonthlyPaymentModalInputValues () { const { financialTerms: { downPayment, owedOnTrade, tradeIn, paymentMonths, interestRate, downPaymentPercentage, clientDownPayment, clientDownPaymentPercentage }, car } = contentSate.get() updateDownPayment(downPayment) updateDownPaymentPercentage(downPaymentPercentage) if (downPayment) { if (car) { const downPaymentP = getPercentageByDownPayment(car.price, downPayment) updateDownPaymentPercentage(downPaymentP) } updateDownPayment(downPayment || 0) } if (downPaymentPercentage) { if (car) { const downPaymentC = getDownPaymentByPercentage(car.price, downPaymentPercentage) updateDownPayment(downPaymentC) } updateDownPaymentPercentage(downPaymentPercentage) } if (clientDownPayment) { if (car) { const downPaymentP = getPercentageByDownPayment(car.price, clientDownPayment) updateDownPaymentPercentage(downPaymentP) } updateDownPayment(clientDownPayment || 0) } if (clientDownPaymentPercentage) { if (car) { const downPaymentC = getDownPaymentByPercentage(car.price, clientDownPaymentPercentage) updateDownPayment(downPaymentC || 0) } updateDownPaymentPercentage(clientDownPaymentPercentage) } if (tradeIn) { updateTradeIn(tradeIn) } if (owedOnTrade) { updateOwedOnTrade(owedOnTrade) } if (interestRate) { updateInterestRate(interestRate) updateInterestRateOption(interestRate) } if (paymentMonths) { updateFinancialTerms('paymentMonths', +paymentMonths) updatePaymentMonths(paymentMonths) } } function updateInterestRateOption (value) { const interestRateOptions = $('.interest-rate-option').map( function () { return +$(this).find('.interest-rate').html().split('%')[0] }).get() const index = interestRateOptions.findIndex(option => option === +value) if (index >= 0) { updateSelectedInterestRateOption(index) } } function updateMonthlyPayment () { // Update monthly payment range if slider is created const desktopMonthlyPaymentSlider = document.getElementById('desktopMonthlyPaymentSlider') const pencilIcon = (pencilIconSrp && (pencilIconSrp.modal || pencilIconSrp.vdp)) && (!searchByDownPayment || (searchByDownPayment && !searchByDownPayment.enable)) ? '' : ''; if (desktopMonthlyPaymentSlider && desktopMonthlyPaymentSlider.hasChildNodes()) { updateMonthlyPaymentSlider() } $('.car-container').each(function() { const originalTemplate = $(this).find('.popular-car-price').text() if(originalTemplate) { const carPriceTemplate = originalTemplate.split('$')[1].split(' ')[0].trim() const carPrice = +carPriceTemplate.replace(',', '').replace('.', ',') const monthlyPayment = getMonthlyPayment(carPrice, getMonthlyPaymentData(), paymentTerms, false, buyHere) const getCarContainerClassName = this.className.split(' ') let getCarClassCarCondition = getCarContainerClassName.find(element => element.includes('car-condition-')) if (getCarClassCarCondition && getCarClassCarCondition.length) { getCarClassCarCondition = getCarClassCarCondition.replace('car-condition-','') } const carVehicleConditions = (carDetails && carDetails.vehicleCondition) ? carDetails.vehicleCondition : getCarClassCarCondition; let text = '/mo' if (buyHere.priced && buyHere.payment && (buyHere.frequency === 'bi-weekly')){ text = '' } else if (!buyHere.priced && buyHere.payment){ text = buyHere.frequency } let newTemplate = `${formatNumber(monthlyPayment, '$', '', 0)} ${text} ${pencilIcon}` if ((!searchByDownPayment || (searchByDownPayment && !searchByDownPayment.enable))) { $(this).find('.est-payment').html(newTemplate); } $(this).find('#biweekly').html(newTemplate); } }) } function updateSelectedInterestRateOption (index) { const $interestOption = $('.card.text-center.m-0.p-2.py-3.cursor-pointer.squared').eq(index) if(!$interestOption.hasClass('selected-interest-rate')) { $('.card.text-center.m-0.p-2.py-3.cursor-pointer.squared.selected-interest-rate').removeClass('selected-interest-rate') $interestOption.addClass('selected-interest-rate') } } function getMonthlyPaymentData() { const { financialTerms: { downPayment, owedOnTrade, tradeIn, tradeInTyped, paymentMonths, interestRate, downPaymentPercentage } } = contentSate.get() return { downPayment, owedOnTrade, tradeIn, tradeInTyped, paymentMonths, interestRate, downPaymentPercentage } } $(function () { const { interestRate, downPayment, paymentMonths, downPaymentPercentage, owedOnTrade, tradeIn, tradeInTyped } = getMonthlyPaymentData() document.dispatchEvent(new CustomEvent("financialTermsChange", { detail: { interestRate, downPayment, paymentMonths, downPaymentPercentage, owedOnTrade, tradeIn, tradeInTyped } })) updateMonthlyPaymentModalInputValues() }) return { getDealerFinanceTerms, getMonthlyPaymentData, contentSate, getRawNumber }}

60 cars shownClear filter

Location

Condition

Year

Make

Model

Trim

Price

Monthly payment

72 mo, 3.45%, $0 down

Max mileage

Exterior color

Interior color

Body

Passengers

Drivetrain

Transmission

Engine

Fuel type

Fuel economy (MPG)

473

2020 Lamborghini Huracan EVO *180 Months Financing* *Leasing Available*

$309,900

Stock #:A13974

Miles:9,015

Interior:Gray

Est. payment:$4,771 /mo

275

2015 Lamborghini Huracan 610-4 Twin Turbo

$235,900

342

2023 BMW 7 Series 740i M Sport Professional *1 Owner*

$92,500

Stock #:M46947

Miles:9,740

Interior:Other

Est. payment:$1,424 /mo

32

2020 Ram 3500 Laramie Night Edition

$73,900

Stock #:236506

Miles:22,148

Interior:Black

Est. payment:$1,138 /mo

36

2022 BMW 8 Series M850i xDrive Gran Coupe *Leasing Available*

$69,900

Stock #:G94902

Miles:24,310

Interior:Black

Est. payment:$1,076 /mo

10

2020 GMC Sierra 2500HD Denali *1 Owner* *Pink Camo Wrap*

$69,900

Stock #:166664

Miles:42,021

Interior:Black

Est. payment:$1,076 /mo

162

2020 BMW M8 Competition *Leasing Available*

$68,900

Stock #:D38286

Miles:50,758

Interior:Black

Est. payment:$1,061 /mo

57

2020 Jaguar F-TYPE R

$59,900

Stock #:K65355

Miles:39,750

Interior:Black

Est. payment:$922 /mo

492

2016 Ford Mustang Shelby GT350 *1 Owner*

$59,700

Stock #:523472

Miles:5,371

Interior:Black

Est. payment:$919 /mo

77

2019 Audi RS 5 Sportback

$56,900

Stock #:900932

Miles:16,460

Interior:Black

Est. payment:$876 /mo

532

2023 Land Rover Defender 90 S *1 Owner*

$56,900

Stock #:174191

Miles:14,103

Interior:Other

Est. payment:$876 /mo

518

2010 Bentley Continental GT Speed *120 Months Financing* *Leasing Available*

$55,900

Stock #:066471

Miles:49,457

Interior:Other

Est. payment:$861 /mo

23

2022 Genesis G90 AWD 5.0L Ultimate *1 Owner*

$54,900

Stock #:094274

Miles:32,218

Interior:Other

Est. payment:$845 /mo

96

2023 Fisker Ocean One *1 Owner* *Electric*

$53,900

Stock #:004824

Miles:746

Interior:Other

Est. payment:$830 /mo

212

2020 Lincoln Navigator L Reserve *1 Owner*

$49,900

Stock #:L14392

Miles:68,551

Interior:Other

Est. payment:$768 /mo

44

2021 Chevrolet Silverado 1500 LT Trail Boss *1 Owner*

$44,900

Stock #:208533

Miles:46,303

Interior:Black

Est. payment:$691 /mo

41

2015 GMC Sierra 3500HD available WiFi Denali Z71

$44,900

Stock #:681310

Miles:121,348

Interior:Black

Est. payment:$691 /mo

33

2020 Land Rover Range Rover Sport 3.0 Supercharged HST

$44,900

Stock #:878985

Miles:74,832

Interior:Other

Est. payment:$691 /mo

Next1234

Modify your filters to see more cars or call 812-401-1080 for offline inventory

Back to top

60 Used Luxury Cars, Trucks & SUVs | Lux Motors (2024)
Top Articles
Latest Posts
Article information

Author: Jerrold Considine

Last Updated:

Views: 6456

Rating: 4.8 / 5 (78 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Jerrold Considine

Birthday: 1993-11-03

Address: Suite 447 3463 Marybelle Circles, New Marlin, AL 20765

Phone: +5816749283868

Job: Sales Executive

Hobby: Air sports, Sand art, Electronics, LARPing, Baseball, Book restoration, Puzzles

Introduction: My name is Jerrold Considine, I am a combative, cheerful, encouraging, happy, enthusiastic, funny, kind person who loves writing and wants to share my knowledge and understanding with you.