{"version":3,"sources":["model-details.js"],"names":["$","document","ready","packagesHeight","featureLen","css","createVideoComponent","videoUrl","videoComponent","data","Lightbox","PlayerState","_satellite","track","events","onStateChange","event","videoHasStarted","PLAYING","onReady","youTubeState","YouTubeState","LOADED","ENDED","showVideo","onClose","this","player","pauseVideo","onOpen","playVideo","loadYouTubeApi","appendChild","script","type","LOADING","videoId","attr","NOT_LOADED","open","val","el","index","initEvents","dd","children","opts","find","window","windowWidth","$window","width","length","text","addClass","first","replaceWith","html","on","e","detail","originalEvent","wheelDelta","removeClass","str","toLowerCase","indexOf","navigator","msMaxTouchPoints","isTouch","yearLen","onYouTubeIframeAPIReady","click","close","resetMenu","obj","focus","toggleClass","key","eq","trigger","pathname","placeholder","url","location","opt","href","each","preventDefault","getValue","options","DropDown","hasClass"],"mappings":"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","file":"model-details.min.js","sourcesContent":["$(document).ready(function () {\r\n\r\n var $window = $(window);\r\n var windowWidth = $window.width();\r\n var featureLen = $(\"#packages .features > div\").length;\r\n var str = $('.inventory-btn a').text();\r\n\r\n // Add has-sub-nav class to increse padding top\r\n $('.ahm-wrapper').addClass('has-sub-nav');\r\n\r\n //ADA fixes\r\n $(\"hr\").attr('aria-hidden', 'true');\r\n $('.model-details h2').first().replaceWith(function () {\r\n return '

' + $(this).html() + '

';\r\n });\r\n //end of ADA fixes\r\n\r\n // If the user scrolls down, hide sticky nav on mobile. Otherwise, show sticky nav on scroll up.\r\n if (windowWidth < 768) {\r\n $('html').on('DOMMouseScroll mousewheel', function (e) {\r\n if (e.originalEvent.detail > 0 || e.originalEvent.wheelDelta < 0) {\r\n //scroll down\r\n $(\".acpv-header\").addClass(\"hideme\");\r\n $(\".details-year-selector-wrapper\").css(\"top\", \"0\");\r\n } else {\r\n //scroll up\r\n $(\".acpv-header\").removeClass(\"hideme\");\r\n $(\".details-year-selector-wrapper\").css(\"top\", \"60px\");\r\n }\r\n });\r\n\r\n // change button size of TSX Wagon only\r\n if (str.toLowerCase().indexOf(\"wagon\") >= 0) {\r\n $('.inventory-btn').css('width', '130px');\r\n $('.vehicle-badge img').css('width', '90%');\r\n }\r\n // Mobile - resize background image appropriately based on features count\r\n packagesHeight()\r\n\r\n } else {\r\n $('.inventory-btn').css('width', 'auto');\r\n }\r\n\r\n function packagesHeight() {\r\n // Mobile - resize background image appropriately based on features count\r\n if (featureLen == 4) {\r\n $('.model-details #packages').css('height', '320px');\r\n } else if (featureLen == 5 || featureLen == 6) {\r\n $('.model-details #packages').css('height', '420px');\r\n } else if (featureLen == 7) {\r\n $('.model-details #packages').css('height', '550px');\r\n } else if (featureLen == 8) {\r\n $('.model-details #packages').css('height', '610px');\r\n } else {\r\n $('.model-details #packages').css('height', '305px');\r\n }\r\n }\r\n\r\n $(window).on('resize', function () {\r\n var winWidth = $(window).width();\r\n\r\n if (winWidth < 768) {\r\n // Mobile - resize background image appropriately based on features count\r\n packagesHeight()\r\n }\r\n });\r\n\r\n // Tablet / Desktop - resize badge image for TSX wagon only\r\n if (windowWidth > 767) {\r\n if (str.toLowerCase().indexOf(\"wagon\") >= 0) {\r\n $('.vehicle-badge img').css('width', '90%');\r\n }\r\n }\r\n\r\n // Tablet - resize background image appropriately based on features count\r\n if (windowWidth > 767 && windowWidth < 992 && featureLen > 6) {\r\n $('.model-details #packages').css('height', '400px');\r\n }\r\n\r\n // Add button text via js on download button\r\n $(\"#download-button a\").html(\"DOWNLOAD BROCHURE\");\r\n\r\n // Check if mobile device then open download brochure on a new tab\r\n var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0));\r\n if (isTouch) {\r\n $(\"#download-button a\").attr('target', '_blank');\r\n }\r\n\r\n // If there is only 1 model year, hide dropdown (RL model)\r\n var yearLen = $('.year-dropdown li').length;\r\n if (yearLen < 2) {\r\n $('.wrapper-dropdown').css('visibility', 'hidden');\r\n }\r\n\r\n // const VIDEO_SOURCE = 'https://www.youtube.com/embed/twfVf_bJjO4';\r\n const YouTubeState = {\r\n NOT_LOADED: 0,\r\n LOADING: 1,\r\n LOADED: 2\r\n };\r\n\r\n // keep a record of which videos have been played using the video\r\n // url as the key\r\n const videoHasStarted = {};\r\n let videoUrl;\r\n let videoComponent;\r\n let youTubeState = YouTubeState.NOT_LOADED;\r\n\r\n // YouTube's iframe api will call this method\r\n window.onYouTubeIframeAPIReady = function () {\r\n videoComponent = createVideoComponent();\r\n };\r\n\r\n $(\".watch-button .btn-video\").click(showVideo);\r\n\r\n $(\".overlay-close-button\").click(close);\r\n\r\n function createVideoComponent() {\r\n const template = `\r\n \r\n \r\n `;\r\n\r\n const videoComponent = new Lightbox(template);\r\n\r\n videoComponent.player = new YT.Player('model-detail-video', {\r\n events: {\r\n onStateChange: (event) => {\r\n if (event.data === YT.PlayerState.PLAYING) {\r\n if (!videoHasStarted[videoUrl]) {\r\n _satellite.track('modeldetail_video_start');\r\n }\r\n\r\n videoHasStarted[videoUrl] = true;\r\n } else if (event.data === YT.PlayerState.ENDED) {\r\n _satellite.track('modeldetail_video_complete');\r\n }\r\n },\r\n onReady: () => {\r\n youTubeState = YouTubeState.LOADED;\r\n showVideo();\r\n }\r\n }\r\n });\r\n\r\n videoComponent.onClose = function () {\r\n this.player.pauseVideo();\r\n };\r\n\r\n videoComponent.onOpen = function () {\r\n this.player.playVideo();\r\n };\r\n\r\n return videoComponent;\r\n }\r\n\r\n function loadYouTubeApi() {\r\n const script = document.createElement('script');\r\n\r\n script.src = 'https://www.youtube.com/iframe_api';\r\n script.type = 'text/javascript';\r\n\r\n document.head.appendChild(script);\r\n\r\n youTubeState = YouTubeState.LOADING;\r\n }\r\n\r\n function showVideo(event) {\r\n\r\n const videoId = $(\".btn-video\").attr(\"data-videoid\");\r\n\r\n videoUrl = `https://www.youtube.com/embed/${videoId}`;\r\n\r\n if (youTubeState === YouTubeState.NOT_LOADED) {\r\n return loadYouTubeApi();\r\n }\r\n\r\n if (youTubeState === YouTubeState.LOADING) {\r\n return;\r\n }\r\n\r\n videoComponent.open();\r\n }\r\n\r\n // Year drop down Start\r\n function DropDown(el) {\r\n this.dd = el;\r\n this.placeholder = this.dd.children('span');\r\n this.opts = this.dd.find('li[role=\"menuitem\"] a');\r\n // this.url = this.dd.find('ul.year-dropdown > li a').attr('href');\r\n this.val = '';\r\n this.index = -1;\r\n this.initEvents();\r\n }\r\n DropDown.prototype = {\r\n initEvents: function () {\r\n var obj = this;\r\n\r\n obj.dd.on('click', function (event) {\r\n resetMenu(obj.opts);\r\n $(this).toggleClass('active');\r\n $(this).find('span').attr('aria-expanded','true');\r\n obj.opts.eq(0).attr('tabindex', 0);\r\n obj.opts.eq(0).focus();\r\n return false;\r\n });\r\n obj.dd.on('keydown', function (event) {\r\n if (event.key === 'Enter') {\r\n $(this).trigger('click');\r\n }\r\n });\r\n\r\n\r\n obj.opts.on('click', function () {\r\n // Tracking\r\n // _satellite.track(\"modeldetail_toggle_year\");\r\n\r\n var opt = $(this);\r\n var url = $(this).attr('href');\r\n var pathname = window.location.pathname;\r\n if (url.toLowerCase() !== pathname.toLowerCase()) {\r\n obj.val = opt.text();\r\n obj.index = opt.index();\r\n obj.placeholder.text(obj.val);\r\n //redirect to new model year page\r\n\r\n window.location.href = url;\r\n }\r\n });\r\n\r\n obj.opts.on('keydown', function (event) {\r\n event.preventDefault();\r\n if (event.key === 'Enter') {\r\n $(this).trigger('click');\r\n }\r\n });\r\n\r\n obj.opts.each(function(index) {\r\n $(this).on('keydown', function(event) {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n obj.dd.trigger('click');\r\n $('.dropdown-toggle').focus().attr('aria-expanded','false');\r\n resetMenu(obj.opts)\r\n } else if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n resetMenu(obj.opts)\r\n if (index === 0) {\r\n obj.opts.eq(obj.opts.length - 1).attr('tabindex', 0);\r\n obj.opts.eq(obj.opts.length - 1).focus();\r\n } else {\r\n obj.opts.eq(index - 1).attr('tabindex', 0);\r\n obj.opts.eq(index - 1).focus();\r\n }\r\n } else if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n resetMenu(obj.opts)\r\n if (index === obj.opts.length - 1) {\r\n obj.opts.eq(0).attr('tabindex', 0);\r\n obj.opts.eq(0).focus();\r\n } else {\r\n obj.opts.eq(index + 1).attr('tabindex', 0);\r\n obj.opts.eq(index + 1).focus();\r\n }\r\n }\r\n });\r\n });\r\n },\r\n getValue: function () {\r\n return this.val;\r\n },\r\n getIndex: function () {\r\n return this.index;\r\n }\r\n }\r\n\r\n let resetMenu = function (options) {\r\n options.each(function () { $(this).attr('tabindex', -1); });\r\n }\r\n\r\n $(function () {\r\n var dd = new DropDown($('#year-dd'));\r\n\r\n $(document).click(function () {\r\n // all dropdowns\r\n if ($('.wrapper-dropdown').hasClass('active')) {\r\n $('.wrapper-dropdown').removeClass('active');\r\n $('.dropdown-toggle').focus().attr('aria-expanded','false');\r\n $('.year-dropdown').find('li[role=\"menuitem\"] a').eq(0).attr('tabindex', -1);\r\n }\r\n });\r\n });\r\n});"]}