Address: | 3990 Ogden Ave, Aurora, 60504 |
Phone: | +1 630-348-9211 |
Website: | Go to site |
Social networks: | |
Work time: | Monday:9AM-7PM Tuesday:9AM-7PM|Wednesday:9AM-5PM|Thursday:9AM-7PM|Friday:9AM-7PM|Saturday:9AM-5PM|Sunday:Closed |
| |
Max Madsen’s Aurora Mitsubishi is located at 3990 Ogden Ave Aurora 60504, US Max Madsen's Aurora Mitsubishi | Mitsubishi Dealer in Aurora, IL We know you have high expectations, and we enjoy the challenge of meeting and exceeding them. Come experience the Max Madsen's Aurora Mitsubishi difference. Type New Used Certified Pre-Owned Year Make Model Search jQuery(document).ready(function($) { var Personalization = { sliderObject: {}, sliderguid: '', cookieName: '', filterKey: '', slider: '', slidesList: [], main: function(sliderJSON) { this.sliderObject = sliderJSON this.sliderguid = this.sliderObject.guid var cookieParts = this.sliderObject.cookiename.split('.') this.cookieName = cookieParts[0] if (cookieParts[1]) { this.filterKey = cookieParts[1] } if(this.cookieName === 'di_query_string'){ this.setupQueryCookie(window.location.search) } this.setSlider() this.getSlides() if(this.shouldFilter()) { this.filterInit() } }, cookieExists: function(cookieName) { if (this.getCookie(cookieName)) { return true } }, setSlider: function() { this.slider = $("[data-disliderguid='" + this.sliderguid + "']") }, getSlides: function() { this.slidesList = this.slider[0].querySelectorAll(".swiper-wrapper .di-slide") }, shouldFilter: function() { return this.slider[0].querySelectorAll('.swiper-wrapper .di-slide:not([data-filtervalue=""])').length > 0 }, setupQueryCookie: function(url){ if(!this.cookieExists(this.cookieName) && this.cookieName === 'di_query_string'){ DealerInspireCookie.CreateCookie(this.cookieName, '', 5) } var params = new URLSearchParams(url), items = []; for (const key of params.keys()){ if (key.includes(this.filterKey)){ items.push(params.get(key)) } } if(items.length){ var obj = {} obj[this.filterKey] = items DealerInspireCookie.CreateCookie(this.cookieName, JSON.stringify(obj), 5) } }, filterInit: function() { if (this.cookieName && typeof this['filter__' + this.cookieName] === 'function') { this['filter__' + this.cookieName]() } }, filter__di_vehicle_history: function() { if (this.getCookie(this.cookieName) && this.filterKey) { var self = this, reorderedSlides = [], unfilteredSlides = []; try { // Required for Personalizer 1.5.0+ vehicleHistoryArray = JSON.parse(this.cookieName); } catch (error) { // Legacy (currently '1.4.36.5', '1.4.36.6', '1.4.36.7') vehicleHistoryArray = this.unserialize(decodeURIComponent(this.getCookie(this.cookieName))); } if (Object.keys(vehicleHistoryArray).length && vehicleHistoryArray[this.filterKey].length) { var slideSpliceKeys = [] vehicleHistoryArray[this.filterKey].forEach(function(v, k) { v = v.split('+').join(' ').toLowerCase() for (var i = 0; i 1) } function playVideoSlide(slide, swiper) { if (slide.type != "video") { return } var slidePlayer, activeIndex = swiper.activeIndex, realSlide = swiper.slides[activeIndex], isDuplicateSlide = $(realSlide).hasClass('swiper-slide-duplicate'), useSlideAudio = slide.videoSlideAudio, slideID = (isDuplicateSlide) ? slide.guid + "-video-duplicate" : slide.guid + "-video"; $currentSlide = $('[data-guid="'+slide['guid']+'"]'); if (isDuplicateSlide && typeof slide.playerDuplicate == 'object' && typeof slide.videoStart != 'undefined') { slidePlayer = slide.playerDuplicate } else if (! isDuplicateSlide && typeof slide.player == 'object' && typeof slide.videoStart != 'undefined') { slidePlayer = slide.player } // if (typeof slidePlayer != 'undefined' && typeof slidePlayer.seekTo == 'function' && slidePlayer) { if (slidePlayer) { slidePlayer.seekTo(slide.videoStart) slidePlayer.pauseVideo() if (! useSlideAudio) { slidePlayer.playVideo() } else { showPlayButton($currentSlide) } if (hasNextSlide(slide, swiper)) { slideAfterDuration(slide) } return; } // - stop swiper autoplay if video needs to go to next slide after duration is done so slides don't prematurely transition if the page takes longer to load // - Video will automatically go to next slide and autoplay will be re-enabled if there are other images in the slider // - If custom duration is not set and videos prematurely transition, a longer duration would need to be set on the main slider if (hasNextSlide(slide, swiper)) { swiper.autoplay.stop() } // if slide is supposed to slide to next slide after duration, do not loop the video var ytConfigLoop = (hasNextSlide(slide, swiper)) ? 0 : 1 var player = new YT.Player(slideID, { videoId: slide.videoId, width: '100%', height: '100%', playerVars: { autoplay: 1, loop: ytConfigLoop, rel: 0, controls: 0, showinfo: 0, modestbranding: 1, fs: 0, // Hide fullscreen button cc_load_policy: 0, // Disable closed captions iv_load_policy: 3, // Disable video annotations autohide: 1, mute: 1 // do not used playlist property, if playlist property is used, after video is played, playerstate = 0 is never fired. Need to know when player is finished with video }, events: { onReady: function(event) { /* Maybe deprecate this since youtube videos could be played if using the audio option */ if (useSlideAudio) { // due to the nature of youtube, we must use stopVideo here // or else there will be a loading icon that appears // with no graphic of the video to let the user know // what video they're playing event.target.stopVideo() addPlayButton(slide) addPauseButton(slide) if(event.target.isMuted()) { event.target.unMute() } } else { if(! event.target.isMuted()) { event.target.mute() } } if (slide.videoStart && ! useSlideAudio) { event.target.seekTo(slide.videoStart) } if (! useSlideAudio) { event.target.playVideo() } // if slide to next slide after duration is set then check current youtube // video time and slide to next slide once duration is complete if (hasNextSlide(slide, swiper)) { slideAfterDuration(slide) } }, onStateChange: function(event) { /* Maybe deprecate this since youtube videos could be played if using the audio option */ /* if (isMobile()) { return false } */ var hasCustomTiming = slide.videoEnd if (hasCustomTiming) { // IF custom timing is defined, and Slide to next slide after video is done = false then restart video to videoStart position // If autoplay has been disabled (when clicking on prev/next/pagination) then loop the video if (! hasNextSlide(slide, swiper)) { if (event.data == YT.PlayerState.PLAYING) { var videoStart = (slide.videoStart ? slide.videoStart : 0), videoEnd = (slide.videoEnd ? slide.videoEnd : 0), duration = (videoEnd - videoStart) * 1000 setTimeout(function() { if (event.target && slide.active) { playVideoSlide(slide, swiper) } }, duration) } // handle videos that naturally end and change to next slide if (event.data === YT.PlayerState.ENDED) { if (typeof swiper != 'undefined') { swiper.slideNext(); if (! slider.disableAutoplay) { swiper.autoplay.start(); } return } } } } else { if (! hasNextSlide(slide, swiper)) { // loop video if no custom end timing has been set if (event.data === YT.PlayerState.ENDED) { // if slide.videoSlideAudio = true then do not loop the video and show the play button if (useSlideAudio) { showPlayButton($currentSlide) if(event.target.isMuted()) { event.target.unMute() } } else { var seekToTime = (typeof slide.videoStart != 'defined' && slide.videoStart) ? slide.videoStart : 0; event.target.seekTo(seekToTime) event.target.playVideo() } } } } } } }) // e/o: youtube iframe player if (isDuplicateSlide) { slide.playerDuplicate = player } else { slide.player = player } /** * If current video time matches videoEnd time or the video naturally ended return true * @return boolean return true if either current video time matches videoEnd time or the video naturally ended */ function maybeTransitionVideoSlide(interval) { var _player = (isDuplicateSlide) ? slide.playerDuplicate : slide.player, playerState = _player.getPlayerState(); // stop the autoplay until video reaches custom endpoint or end of video swiper.autoplay.stop() if ((slide.videoEnd && _player.getCurrentTime() >= parseInt(slide.videoEnd) - 0.5) || playerState == YT.PlayerState.ENDED) { if (typeof swiper != 'undefined') { clearInterval(slide.videoEndInterval) swiper.slideNext(); if (! slider.disableAutoplay) { swiper.autoplay.start(); } return true } } } /** * Stops the slideshow to play the full video or custom duration and transitions to next slide if video has ended or custom duration has been ran */ function slideAfterDuration(slide) { // handle videos with custom videoEnd values and go to next slide if (typeof slide.videoEnd != 'undefined') { slide.videoEndInterval = setInterval(function() { maybeTransitionVideoSlide(slide.videoEndInterval) }, 1000) } } } // e/o: playVideoSlide() /** * Retrieve a query variable from the URL * * @param string variable The GET variable to retrieve value for * @return string The value of the GET variable retrieved */ function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split('&'); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split('='); if (decodeURIComponent(pair[0]) == variable) { return decodeURIComponent(pair[1]); } } } /** * Go to a specific slide using the slide title or by `slide` GET parameter * * @param object slider The slider object * @return int The slide position / number */ function getDeepLinkedSlide(slider, slideTitle) { var foundSlide = false if (getQueryVariable('di_slide') && slider.slides && slider.slides.length > 1) { if (! slideTitle) { var slideTitle = getQueryVariable('di_slide') } if ($('[data-disliderguid="'+slider['guid']+'"]').find('[data-title="'+slideTitle+'"]').length) { var $slide = $('[data-disliderguid="'+slider['guid']+'"]').find('[data-title="'+slideTitle+'"]'), slideGuid = $slide.data('guid'); slider.slides.forEach(function(slide, i) { if (slide.guid == slideGuid) { foundSlide = i+1 } }) } } return foundSlide; } function removeDuplicateSlides(slider) { if ($('[data-disliderguid="'+slider.guid+'"]').length) { $('[data-disliderguid="'+slider.guid+'"] .swiper-slide-duplicate').each(function(i, el) { $(el).remove() }) } } /** * Depending on current window width and the visibility of the slides * we only use the slides needed and remove the ones not needed to * keep swiper indexes in check * * @param object slider the slider object * @param object swiper the swiper object * @return null */ function maybeCleanUpSlides(slider, swiper) { var removedSlideIndexes = [] slider.slides.forEach(function(slide, i) { if (slide.slideVisibility != 'both') { if (window.innerWidth >= 768 && isMobileSlide(slide)) { removedSlideIndexes.push(i) } if (window.innerWidth < 768 && isDesktopSlide(slide)) { removedSlideIndexes.push(i) } } }) if (removedSlideIndexes.length) { swiper.removeSlide(removedSlideIndexes) } if (window.innerWidth >= 768) { slider.slides = slider.slides.filter(function (e) { return e.slideVisibility != 'mobile'; }); } if (window.innerWidth < 768) { slider.slides = slider.slides.filter(function (e) { return e.slideVisibility != 'desktop'; }); } // make sure after removal that we turn off seamless looping and we // remove all duplicated slides if the amount of slides is less than // or equal to one slide if (slider.slides.length |