{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/javascript/app/utilities/index.js","webpack:///./src/assets/javascript/app/intro.js","webpack:///./src/assets/javascript/app/controls.js","webpack:///./src/assets/javascript/app/overlay.js","webpack:///./src/assets/javascript/app/question.js","webpack:///./src/assets/javascript/app/mpi.js","webpack:///./src/assets/javascript/app/results.js","webpack:///./src/assets/javascript/app/progress-bar.js","webpack:///./src/assets/javascript/app/ball-selector.js","webpack:///./src/assets/javascript/app/utilities/selectors.js","webpack:///./src/assets/javascript/app/index.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","qs","selector","scope","document","querySelector","qsArray","nodeList","querySelectorAll","arr","trackEvent","category","action","label","dataLayer","completedEvt","undefined","ga","console","log","getQueryStringVariable","variable","vars","location","search","substring","split","pair","Intro","params","introEl","el","contentCTA","startButton","contentLoader","loaderBar","dataBgSrcElements","loadCount","timeline","loadQueue","Modernizr","webp","imgLoaded","progress","style","transform","setTimeout","classList","add","imgLoadError","e","warn","clearTimeline","kill","forEach","src","getAttribute","removeAttribute","substr","lastIndexOf","backgroundImage","indexOf","img","Image","addEventListener","cb","blur","this","showInstant","show","TweenLite","set","opacity","TimelineLite","onComplete","to","hide","remove","Controls","_singletonInstance","initialize","self","controlsEl","getElementById","backBtn","nextBtn","controlsActive","nextBtnActive","backBtnActive","nextTrackingObj","enable","disable","enableNextButton","setNextTrackingObj","trackingObj","disableNextButton","enableBackButton","disableBackButton","onNextButtonClick","onBackButtonClick","Overlay","importantOverlay","importantOverlayBg","importantOverlayClose","anyModelOverlay","anyModelOverlayBg","anyModelOverlayClose","openImportantWindow","id","setAttribute","clientHeight","closeImportantWindow","removeEventListener","openAnyBallWindow","closeAnyBallWindow","mpiOverlay","mpiOverlayBg","mpiOverlayClose","mpiOverlayValue","openMPIWindow","mpi","yCoord","textContent","closeMPIWindow","scrollToMiddle","btn","evt","innerText","clientY","vidOverlay","vidOverlayContentWrap","vidOverlayContent","vidOverlayBg","vidOverlayClose","openVideoWindow","vidUrl","iframe","createElement","iframeUrl","appendChild","closeVideoWindow","getBoundingClientRect","innerHTML","lnk","preventDefault","sendResultsOverlay","resultsOverlayBg","resultsOverlayClose","resultsForm","emailInput","emailSuccess","submitButton","primaryId","alternateId","primaryColor","alternateColor","submitResultsForm","disabled","showResultsError","setInitialEmailValue","email","showResultsSuccess","openSendResults","closeSendResults","VALUES","next","shortcut","analyticsQuestion","analyticsAnswer","weightAmount","weightIds","color","scores","v1","v1x","avx","v1xld","velocity","trufeel","Question","question","questionEl","inputType","textEl","answerButtonArray","dropdownsEl","dropdownA","dropdownB","dropdownBArray","sliderEl","sliderInput","sliderValues","sliderValueDisplay","sliderImages","sliderIndex","importantBtn","controls","animElArray","answerEl","values","JSON","parse","stringify","clearSelectedButton","b","onButtonClick","button","target","tagName","parentElement","parseFloat","updateSlider","parseInt","selected","getNext","getShortcut","getInputType","reset","parentNode","optionEl","anyText","ua","navigator","userAgent","isInternetExplorer","overlay","MPI","SCORES","maxPossibleScores","primaryValue","secondaryValue","calcPossibleMax","history","questionElArray","maxScoresArray","q","answers","maxScore","multiplier","a","prop","score","calcPrimaryValue","Math","round","calcSecondaryValue","getPrimaryValue","getSecondaryValue","Results","resultsEl","resultsContentEl","pageMainEl","primaryParentEl","secondaryParentEl","isActive","isExpanded","primaryResultId","secondaryResultId","primaryResultIndex","secondaryResultIndex","primaryResultSuccess","secondaryResultSuccess","primaryEl","secondaryEl","secondaryColor","compareOverlay","alternativeButtons","primaryButtons","compareButtons","restartButtons","backButtons","sendResultsButtons","buyButtons","virtualButtons","hidePrimary","hideAlternative","showCompare","restart","goBack","sendResult","display","sendResults","partner","sweepsLink","onBuyClick","termsCheck","onVirtualClick","hideCompare","concat","showAlternative","closeAccordion","showPrimary","accordionWrapper","height","resizeFrame","setCompare","comparePrimaryEl","compareSecondaryEl","clearCompare","ballId","imgStyle","compareEl","productImage","hideResults","isActiveArray","isVisibleArray","isDisabledArray","clearResults","setActive","resultEl","titleEl","descEl","productEl","buyEl","toggleItems","items","_addEventHandlers","_toggleItem","checked","resultObj","totals","sortedResults","keys","sort","calcResults","getIsActive","getIsExpanded","element","index","parent","content","children","contains","immediateRender","ease","Power1","easeOut","from","init","Array","visibility","x","ProgressBar","setProgress","currentQuestion","totalQuestions","y","wrap","bars","previous","barCount","insertAdjacentHTML","removeChild","BallSelector","handleBackButton","results","progressBar","pop","intro","questions","includes","getHeight","innerWidth","body","products","ids","productsYellow","ballSelector","lastHeight","postMessage","applyFullName","code","ballName","toLowerCase","getProductId","xmlhttp","XMLHttpRequest","onreadystatechange","readyState","responseText","Message","open","resutlsHook","terms","optin","formData","FormData","primaryProductId","alternateProductId","append","primaryName","alternateName","send"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./dist/assets/javascript/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([121,\"vendor\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/**\r\n * querySelector wrapper\r\n *\r\n * @param {string} selector Selector to query\r\n * @param {Element} [scope] Optional scope element for the selector\r\n */\r\nexport function qs(selector, scope) {\r\n return (scope || document).querySelector(selector);\r\n}\r\n\r\nexport function qsArray (selector, scope) {\r\n let nodeList = (scope || document).querySelectorAll(selector);\r\n let arr = [];\r\n for(let i = 0; i < nodeList.length; i++) {\r\n arr.push(nodeList[i]);\r\n }\r\n return arr;\r\n}\r\n\r\n/**\r\n * addEventListener wrapper\r\n *\r\n * @param {Element|Window} target Target Element\r\n * @param {string} type Event name to bind to\r\n * @param {Function} callback Event callback\r\n * @param {boolean} [capture] Capture the event\r\n */\r\nexport function $on(target, type, callback, capture) {\r\n target.addEventListener(type, callback, !!capture);\r\n}\r\n\r\n/**\r\n * Attach a handler to an event for all elements matching a selector.\r\n *\r\n * @param {Element} target Element which the event must bubble to\r\n * @param {string} selector Selector to match\r\n * @param {string} type Event name\r\n * @param {Function} handler Function called when the event bubbles to target\r\n * from an element matching selector\r\n * @param {boolean} [capture] Capture the event\r\n */\r\n// export function $delegate(target, selector, type, handler, capture) {\r\n// const dispatchEvent = event => {\r\n// const targetElement = event.target;\r\n// const potentialElements = target.querySelectorAll(selector);\r\n// let i = potentialElements.length;\r\n//\r\n// while (i--) {\r\n// if (potentialElements[i] === targetElement) {\r\n// handler.call(targetElement, event);\r\n// break;\r\n// }\r\n// }\r\n// };\r\n//\r\n// $on(target, type, dispatchEvent, !!capture);\r\n// }\r\n\r\n/**\r\n * Returns a function, that, as long as it continues to be invoked, will not\r\n * be triggered. The function will be called after it stops being called for\r\n * N milliseconds. If `immediate` is passed, trigger the function on the\r\n * leading edge, instead of the trailing.\r\n *\r\n * @param {Function} func to be executed on debounce\r\n * @param {number} wait time in milliseconds\r\n * @param {boolean} immediate boolean\r\n *\r\n * */\r\nexport function debounce(func, wait, immediate) {\r\n let timeout;\r\n return function() {\r\n let context = this, args = arguments;\r\n let later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n let callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\n/*!\r\n* Microsoft Internet Explorer Browser Test\r\n* */\r\nexport function isInternetExplorer() {\r\n let ua = window.navigator.userAgent;\r\n\r\n let msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n return true;\r\n // IE 10 or older => return version number\r\n // return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n return true;\r\n // IE 11 => return version number\r\n // let rv = ua.indexOf('rv:');\r\n // return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n}\r\n\r\n/*!\r\n * Microsoft Edge Browser Test\r\n * */\r\nexport function isEdge() {\r\n let ua = window.navigator.userAgent;\r\n\r\n let edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n return true;\r\n // // Edge (IE 12+) => return version number\r\n // return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n}\r\n\r\n/*\r\n * Google Analytic tracking function\r\n * */\r\n\r\nexport function trackEvent(category, action, label, value)\r\n{\r\n\r\n if (typeof dataLayer !== 'undefined')\r\n {\r\n var completedEvt = { 'event': 'GAEvent', 'eventCategory': category, 'eventAction': action, 'eventLabel': label, 'UA Event Value' : value, 'app' : 'Golf Ball Selector'};\r\n dataLayer.push(completedEvt);\r\n }\r\n\r\n else if (window.ga !== undefined && window.ga !== null)\r\n window.ga('send', 'event', category, action, label, value);\r\n console.log('event: ' + category + \", \" + action + ', ' + label + ', ' + value);\r\n}\r\n\r\n/*\r\n * Check for a query string variable and return the value if it exists, false if it doesn't exist\r\n * */\r\n\r\nexport function getQueryStringVariable(variable)\r\n{\r\n var query = window.location.search.substring(1);\r\n var vars = query.split(\"&\");\r\n for (var i=0;i maxScore[prop] ? score * multiplier : maxScore[prop];\r\n }\r\n });\r\n maxScoresArray.push(maxScore);\r\n });\r\n\r\n let maxPossibleScores = JSON.parse(JSON.stringify(SCORES));\r\n\r\n maxScoresArray.forEach(function(scores){\r\n for(let prop in SCORES) {\r\n maxPossibleScores[prop] += scores[prop];\r\n }\r\n });\r\n\r\n // console.log('possible max scores', maxPossibleScores);\r\n\r\n self.maxPossibleScores = maxPossibleScores;\r\n}\r\n\r\nMPI.prototype.calcPrimaryValue = function(id, score) {\r\n let self = this;\r\n let maxPossibleScores = self.maxPossibleScores;\r\n let value = Math.round((score / maxPossibleScores[id]) * 100);\r\n value = value < 81 ? 81 : value;\r\n self.primaryValue = value;\r\n}\r\n\r\nMPI.prototype.calcSecondaryValue = function(id, score) {\r\n let self = this;\r\n let maxPossibleScores = self.maxPossibleScores;\r\n let value = Math.round((score / maxPossibleScores[id]) * 100);\r\n value = value < 75 ? 75 : value;\r\n value = value === 100 ? 99 : value;\r\n if (value > self.primaryValue) {\r\n value = self.primaryValue - 1;\r\n }\r\n self.secondaryValue = value;\r\n}\r\n\r\nMPI.prototype.getPrimaryValue = function () {\r\n return this.primaryValue;\r\n}\r\n\r\nMPI.prototype.getSecondaryValue = function () {\r\n return this.secondaryValue;\r\n}\r\n\r\nexport default MPI;\r\n","import {qs, qsArray, trackEvent, getQueryStringVariable} from './utilities/index';\r\nimport MPI from \"./mpi\";\r\nimport Overlay from \"./overlay\";\r\n\r\nconst VALUES = {\r\n weightAmount: null,\r\n weightIds: null,\r\n color: null,\r\n scores: {\r\n v1: 0,\r\n v1x: 0,\r\n avx: 0,\r\n v1xld: 0,\r\n 'tour-soft': 0,\r\n velocity: 0,\r\n trufeel: 0\r\n }\r\n};\r\n\r\nconst EASE_IN_DURATION = 0.5;\r\nconst EASE_IN_STAGGER = \"-=0.35\";\r\nconst EASE_OUT_DURATION = 0.25;\r\n\r\n// const EASE_IN_DURATION = 0.75;\r\n// const EASE_IN_STAGGER = \"-=0.5\";\r\n// const EASE_OUT_DURATION = 0.25;\r\n\r\nlet Results = function (params) {\r\n let results = this;\r\n // parent for entire section\r\n let resultsEl = params.el;\r\n let resultsContentEl = qs('.results-content', resultsEl);\r\n let pageMainEl = document.getElementById('main');\r\n\r\n // use these to switch between recommended and alternative\r\n // parent for all primary result elements\r\n let primaryParentEl = qs('.primary-content', resultsEl);\r\n // parent for all secondary result elements\r\n let secondaryParentEl = qs('.secondary-content', resultsEl);\r\n\r\n // is the results section active\r\n let isActive = false;\r\n let isExpanded = false;\r\n let timeline = null;\r\n\r\n // string id for each result\r\n let primaryResultId = null;\r\n let secondaryResultId = null;\r\n let primaryResultIndex = 0;\r\n let secondaryResultIndex = 1;\r\n let primaryResultSuccess = false;\r\n let secondaryResultSuccess = false;\r\n\r\n // the result element\r\n let primaryEl = null;\r\n let secondaryEl = null;\r\n\r\n // color for each result\r\n let primaryColor = null;\r\n let secondaryColor = null;\r\n\r\n let compareOverlay = document.getElementById('compare-overlay');\r\n let compareBackBtn = qs('.back-btn', compareOverlay);\r\n\r\n let alternativeButtons = qsArray('.alternative-btn');\r\n let primaryButtons = qsArray('.primary-btn');\r\n let compareButtons = qsArray('.compare-btn');\r\n let restartButtons = qsArray('.restart-btn');\r\n let backButtons = qsArray('.results-back-btn');\r\n let sendResultsButtons = qsArray('.send-results-btn', resultsEl);\r\n let buyButtons = qsArray('.buy-link', resultsEl);\r\n let virtualButtons = qsArray('.virtual-results-btn', resultsEl);\r\n\r\n let mpi = new MPI();\r\n\r\n alternativeButtons.forEach(function (el) {\r\n el.addEventListener('click', hidePrimary);\r\n });\r\n\r\n primaryButtons.forEach(function (el) {\r\n el.addEventListener('click', hideAlternative);\r\n });\r\n\r\n compareButtons.forEach(function(el){\r\n el.addEventListener('click', showCompare);\r\n });\r\n\r\n restartButtons.forEach(function(el){\r\n el.addEventListener('click', restart);\r\n });\r\n\r\n backButtons.forEach(function (el) {\r\n el.addEventListener('click', goBack);\r\n });\r\n\r\n /*\r\n compareBackBtn.addEventListener('click', function () {\r\n hideCompare();\r\n });\r\n */\r\n\r\n /**\r\n * SEND RESULT TOGGLE\r\n * Display the Send Result Button and Dialogue if the SendResult variable is passed in the query string\r\n */\r\n let sendResult = false;\r\n try {\r\n if(getQueryStringVariable('sendResult') === \"true\")\r\n {\r\n sendResult = true;\r\n }\r\n } catch (e) {\r\n console.log('Error getting sendResult query string variables');\r\n }\r\n\r\n if(sendResult)\r\n {\r\n sendResultsButtons.forEach(function(el){\r\n el.style.display = \"block\";\r\n el.addEventListener('click', sendResults);\r\n });\r\n }\r\n else{\r\n sendResultsButtons.forEach(function(el){\r\n el.style.display = \"none\";\r\n });\r\n }\r\n\r\n /**\r\n * PARTNER TOGGLE\r\n * Hide the buy buttons if the partner variable is passed in the query string\r\n */\r\n let partner = false;\r\n let hasSweeps = false;\r\n try {\r\n if ( getQueryStringVariable('partner') === \"true\" ) {\r\n partner = true;\r\n }\r\n } catch (e) {\r\n console.log('Error getting partner query string variables');\r\n }\r\n\r\n if ( partner ) {\r\n buyButtons.forEach(function(el){\r\n el.style.display = 'none';\r\n });\r\n\r\n //hide Virtual Consultations link on partner sites?\r\n var resultFooters = document.querySelectorAll('.results-footer');\r\n resultFooters.forEach(function (el) {\r\n el.style.display = 'none';\r\n });\r\n\r\n var sweepsPromos = document.querySelectorAll('.results-sweeps-promo');\r\n \r\n sweepsPromos.forEach(function (el) {\r\n var sweepsLink = el.querySelector('.promo-sweeps-link');\r\n var partnerHref = 'data-partner-href';\r\n if (sweepsLink.getAttribute(partnerHref) != null && sweepsLink.getAttribute(partnerHref).length > 0) {\r\n sweepsLink.setAttribute('href', sweepsLink.getAttribute(partnerHref));\r\n } else {\r\n el.style.display = 'none';\r\n }\r\n });\r\n\r\n } else {\r\n buyButtons.forEach(function(el){\r\n el.addEventListener('click', onBuyClick);\r\n });\r\n }\r\n\r\n\r\n \r\n\r\n /**\r\n * TERMS TOGGLE\r\n * AutoCheck Interest Optin if Terms is passed in query string\r\n */\r\n let termsCheck = false;\r\n try {\r\n if ( getQueryStringVariable('termsCheck') === \"true\" ) {\r\n termsCheck = true;\r\n }\r\n } catch (e) {\r\n console.log('Error getting termsCheck query string variables');\r\n }\r\n let terms = document.getElementById('terms');\r\n terms.checked = termsCheck;\r\n\r\n\r\n virtualButtons.forEach(function(el){\r\n el.addEventListener('click', onVirtualClick);\r\n });\r\n\r\n function onBuyClick() {\r\n trackEvent('navigation', 'Results', 'Product Details');\r\n }\r\n\r\n function onVirtualClick() {\r\n trackEvent('navigation', 'Results', 'Schedule a Virtual Consultation');\r\n }\r\n\r\n function showAlternative() {\r\n clearTimeline();\r\n let animElArray = [];\r\n animElArray.push(qs('.content-header', secondaryParentEl));\r\n animElArray = animElArray.concat(qsArray('.col', secondaryEl));\r\n TweenLite.set(animElArray, { opacity: 0 });\r\n secondaryParentEl.classList.add('is-active');\r\n secondaryParentEl.classList.add('is-disabled');\r\n timeline = new TimelineLite({\r\n onComplete: function () {\r\n secondaryParentEl.classList.remove('is-disabled');\r\n }\r\n });\r\n animElArray.forEach(function (el, i) {\r\n if (i === 0) {\r\n timeline.to(el, EASE_IN_DURATION, { opacity: 1 });\r\n } else {\r\n timeline.to(el, EASE_IN_DURATION, { opacity: 1 }, EASE_IN_STAGGER);\r\n }\r\n });\r\n trackEvent('navigation', 'Results', 'See Alternative Results');\r\n }\r\n\r\n function showPrimary() {\r\n clearTimeline();\r\n let animElArray = [];\r\n animElArray.push(qs('.content-header', primaryParentEl));\r\n animElArray = animElArray.concat(qsArray('.col', primaryEl));\r\n TweenLite.set(animElArray, { opacity: 0 });\r\n primaryParentEl.classList.add('is-active');\r\n primaryParentEl.classList.add('is-disabled');\r\n timeline = new TimelineLite({\r\n onComplete: function () {\r\n primaryParentEl.classList.remove('is-disabled');\r\n }\r\n });\r\n animElArray.forEach(function (el, i) {\r\n if (i === 0) {\r\n timeline.to(el, EASE_IN_DURATION, { opacity: 1 });\r\n } else {\r\n timeline.to(el, EASE_IN_DURATION, { opacity: 1 }, EASE_IN_STAGGER);\r\n }\r\n });\r\n trackEvent('navigation', 'Results', 'See Primary Results');\r\n }\r\n\r\n function hidePrimary() {\r\n console.log('hidePrimary');\r\n hideCompare();\r\n clearTimeline();\r\n primaryParentEl.classList.add('is-disabled');\r\n timeline = new TimelineLite({\r\n onComplete: function () {\r\n primaryParentEl.classList.remove('is-active');\r\n primaryParentEl.classList.remove('is-disabled');\r\n TweenLite.set(primaryParentEl, { opacity: 1 });\r\n showAlternative()\r\n }\r\n });\r\n timeline.to(primaryParentEl, EASE_OUT_DURATION, { opacity: 0 });\r\n closeAccordion();\r\n }\r\n\r\n function hideAlternative() {\r\n console.log('hideAlt');\r\n hideCompare();\r\n clearTimeline();\r\n secondaryParentEl.classList.add('is-disabled');\r\n timeline = new TimelineLite({\r\n onComplete: function () {\r\n secondaryParentEl.classList.remove('is-active');\r\n secondaryParentEl.classList.remove('is-disabled');\r\n TweenLite.set(secondaryParentEl, { opacity: 1 });\r\n showPrimary();\r\n }\r\n });\r\n timeline.to(secondaryParentEl, EASE_OUT_DURATION, { opacity: 0 });\r\n closeAccordion();\r\n }\r\n\r\n function closeAccordion() {\r\n isExpanded = false;\r\n let accordionWrapper = qs('.results-accordion-wrapper.is-active', resultsEl);\r\n if (accordionWrapper) {\r\n let accordion = qs('.results-accordion-wrapper.is-active .results-accordion', resultsEl);\r\n accordion.style.height = 0;\r\n accordionWrapper.classList.remove('is-active');\r\n }\r\n pageMainEl.classList.remove('results-expanded');\r\n window.resizeFrame();\r\n }\r\n\r\n function showCompare() {\r\n closeAccordion();\r\n pageMainEl.classList.add('results-compare');\r\n window.resizeFrame();\r\n resultsEl.classList.add('is-disabled');\r\n TweenLite.set(compareOverlay, { opacity: 0 });\r\n TweenLite.to(resultsContentEl, EASE_OUT_DURATION, { opacity: 0, onComplete: function () {\r\n compareOverlay.classList.add('is-active');\r\n TweenLite.to(compareOverlay, EASE_IN_DURATION, { opacity: 1 });\r\n }});\r\n trackEvent('navigation', 'Compare', 'Show Compare Overlay');\r\n }\r\n\r\n function hideCompare() {\r\n compareOverlay.classList.add('is-disabled');\r\n pageMainEl.classList.remove('results-compare');\r\n window.resizeFrame();\r\n TweenLite.to(compareOverlay, EASE_OUT_DURATION, {\r\n opacity: 0, onComplete: function () {\r\n compareOverlay.classList.remove('is-active');\r\n compareOverlay.classList.remove('is-disabled');\r\n TweenLite.to(resultsContentEl, EASE_IN_DURATION, { opacity: 1, onComplete: function () {\r\n resultsEl.classList.remove('is-disabled');\r\n }});\r\n }});\r\n\r\n trackEvent('navigation', 'Compare', 'Hide Compare Overlay');\r\n }\r\n\r\n function setCompare() {\r\n // console.log(primaryEl, secondaryEl);\r\n clearCompare();\r\n\r\n let ballId = primaryEl.getAttribute('data-result');\r\n let imgStyle = qs('.product-image.is-active .img', primaryEl).getAttribute('style');\r\n let compareEl = qs('[data-ball=\"' + ballId + '\"]', compareOverlay);\r\n let productImage = qs('.product-image', compareEl);\r\n productImage.setAttribute('style', imgStyle);\r\n compareEl.classList.add('is-optimal');\r\n qs('.mpi-value', compareEl).innerText = mpi.getPrimaryValue();\r\n\r\n ballId = secondaryEl.getAttribute('data-result');\r\n imgStyle = qs('.product-image.is-active .img', secondaryEl).getAttribute('style');\r\n compareEl = qs('[data-ball=\"' + ballId + '\"]', compareOverlay);\r\n productImage = qs('.product-image', compareEl);\r\n productImage.setAttribute('style', imgStyle);\r\n compareEl.classList.add('is-alternative');\r\n qs('.mpi-value', compareEl).innerText = mpi.getSecondaryValue();\r\n\r\n // console.log(compareEl);\r\n // console.log(productImage);\r\n // console.log(ballId);\r\n // console.log(imgSrc);\r\n }\r\n\r\n function clearCompare () {\r\n let comparePrimaryEl = qs('.is-optimal', compareOverlay);\r\n let compareSecondaryEl = qs('.is-alternative', compareOverlay);\r\n if (comparePrimaryEl) {\r\n comparePrimaryEl.classList.remove('is-optimal');\r\n }\r\n if (compareSecondaryEl) {\r\n compareSecondaryEl.classList.remove('is-alternative');\r\n }\r\n }\r\n\r\n function sendResults () {\r\n let overlay = new Overlay();\r\n overlay.openSendResults('sign-in', primaryResultId, primaryColor, secondaryResultId, secondaryColor);\r\n trackEvent('navigation', 'Send Results', 'Open');\r\n }\r\n\r\n function restart() {\r\n hideCompare();\r\n params.restart();\r\n trackEvent('navigation', 'Home');\r\n }\r\n\r\n function goBack() {\r\n hideCompare();\r\n hidePrimary();\r\n hideAlternative();\r\n hideResults(function () {\r\n\r\n });\r\n trackEvent('navigation', 'Previous');\r\n params.goBack();\r\n }\r\n\r\n function hideResults(cb) {\r\n clearTimeline();\r\n isActive = false;\r\n resultsEl.classList.add('is-disabled');\r\n timeline = new TimelineLite({\r\n onComplete: function () {\r\n pageMainEl.classList.remove('results-visible');\r\n pageMainEl.classList.remove('results-expanded');\r\n resultsEl.classList.remove('is-active');\r\n resultsEl.classList.remove('is-disabled');\r\n clearResults();\r\n window.resizeFrame();\r\n if (cb) {\r\n cb();\r\n }\r\n }\r\n });\r\n timeline.to(resultsEl, EASE_OUT_DURATION, { opacity: 0 });\r\n }\r\n\r\n // Results public methods\r\n this.show = function(history) {\r\n console.log('Show results based on history', history);\r\n\r\n let resultObj = calcResults(history);\r\n let sortedResults = resultObj.sortedResults;\r\n let totals = resultObj.totals;\r\n console.log('resultObj', resultObj);\r\n\r\n primaryResultId = sortedResults[primaryResultIndex];\r\n secondaryResultId = sortedResults[secondaryResultIndex];\r\n\r\n primaryColor = sortedResults.color;\r\n secondaryColor = sortedResults.color;\r\n\r\n primaryEl = document.getElementById('primary-result-' + primaryResultId);\r\n primaryResultSuccess = setActive(primaryEl, primaryColor);\r\n if (!primaryResultSuccess) {\r\n primaryResultIndex += 1;\r\n secondaryResultIndex += 1;\r\n primaryResultId = sortedResults[primaryResultIndex];\r\n secondaryResultId = sortedResults[secondaryResultIndex];\r\n console.log('Primary result not available, shift primary result to ', primaryResultId);\r\n console.log('Shift secondary result to ', secondaryResultId);\r\n primaryEl = document.getElementById('primary-result-' + primaryResultId);\r\n primaryResultSuccess = setActive(primaryEl, primaryColor);\r\n if (!primaryResultSuccess) {\r\n console.warn('Primary result still not available, you should not get this');\r\n }\r\n }\r\n\r\n secondaryEl = document.getElementById('secondary-result-' + secondaryResultId);\r\n secondaryResultSuccess = setActive(secondaryEl, secondaryColor);\r\n if (!secondaryResultSuccess) {\r\n secondaryResultIndex += 1;\r\n secondaryResultId = sortedResults[secondaryResultIndex];\r\n console.log('Secondary result not available, shift result index to', secondaryResultId);\r\n secondaryEl = document.getElementById('secondary-result-' + secondaryResultId);\r\n secondaryResultSuccess = setActive(secondaryEl, secondaryColor);\r\n if (!secondaryResultSuccess) {\r\n console.warn('Secondary result still not available, you should not get this');\r\n }\r\n }\r\n\r\n trackEvent('Recommendation', 'Primary', primaryResultId, primaryColor);\r\n trackEvent('Recommendation', 'Alternative', secondaryResultId, secondaryColor);\r\n\r\n // set MPI\r\n mpi.calcPrimaryValue(primaryResultId, totals.scores[primaryResultId]);\r\n mpi.calcSecondaryValue(secondaryResultId, totals.scores[secondaryResultId]);\r\n qs('.mpi-value', primaryEl).innerText = mpi.getPrimaryValue();\r\n qs('.mpi-value', secondaryEl).innerText = mpi.getSecondaryValue();\r\n\r\n setCompare();\r\n\r\n // default to showing the primary result first\r\n primaryParentEl.classList.add('is-active');\r\n primaryParentEl.classList.add('is-visible');\r\n\r\n isActive = true;\r\n pageMainEl.classList.add('results-visible');\r\n window.resizeFrame();\r\n\r\n clearTimeline();\r\n let animElArray = [resultsEl];\r\n animElArray.push(qs('.content-header', primaryParentEl));\r\n animElArray = animElArray.concat(qsArray('.col', primaryEl));\r\n TweenLite.set(animElArray, { opacity: 0 });\r\n resultsEl.classList.add('is-active');\r\n timeline = new TimelineLite({\r\n onComplete: function() {\r\n // temp debug for compare overlay\r\n // setTimeout(function () {\r\n // showCompare();\r\n // }, 250);\r\n }});\r\n animElArray.forEach(function (el, i) {\r\n if (i === 0) {\r\n timeline.to(el, EASE_IN_DURATION, { opacity: 1 });\r\n } else {\r\n timeline.to(el, EASE_IN_DURATION, { opacity: 1 }, EASE_IN_STAGGER);\r\n }\r\n });\r\n }\r\n\r\n this.hide = function(cb) {\r\n hideResults(cb);\r\n }\r\n\r\n this.getIsActive = function () {\r\n return isActive;\r\n }\r\n\r\n this.getIsExpanded = function () {\r\n return isExpanded;\r\n }\r\n\r\n // private methods\r\n function setActive (resultEl, color) {\r\n // title\r\n let titleEl = qs('.titles [data-color=\"' + color + '\"]', resultEl);\r\n titleEl = titleEl === null ? qs('.titles [data-color=\"white\"]', resultEl) : titleEl;\r\n if (titleEl) {\r\n titleEl.classList.add('is-active');\r\n } else {\r\n // Potentially return false here to shift the sorted results down\r\n console.warn('No title available for result', resultEl);\r\n return false;\r\n }\r\n // description\r\n let descEl = qs('.descriptions [data-color=\"' + color + '\"]', resultEl);\r\n descEl = descEl === null ? qs('.descriptions [data-color=\"white\"]', resultEl) : descEl;\r\n if (descEl) {\r\n descEl.classList.add('is-active');\r\n } else {\r\n // Potentially return false here to shift the sorted results down\r\n console.warn('No description available for result', resultEl);\r\n return false;\r\n }\r\n // product image\r\n let productEl = qs('.product-images [data-color=\"' + color + '\"]', resultEl);\r\n productEl = productEl === null ? qs('.product-images [data-color=\"white\"]', resultEl) : productEl;\r\n if (productEl) {\r\n productEl.classList.add('is-active');\r\n } else {\r\n // Potentially return false here to shift the sorted results down\r\n console.warn('No image available for result', resultEl);\r\n return false;\r\n }\r\n // buy button\r\n let buyEl = qs('.buy-links [data-color=\"' + color + '\"]', resultEl);\r\n buyEl = buyEl === null ? qs('.buy-links [data-color=\"white\"]', resultEl) : buyEl;\r\n if (buyEl) {\r\n buyEl.classList.add('is-active');\r\n }\r\n resultEl.classList.add('is-active');\r\n return true;\r\n }\r\n\r\n function calcResults (history) {\r\n // console.log('history', history);\r\n let totals = JSON.parse(JSON.stringify(VALUES));\r\n\r\n let fields;\r\n\r\n history.forEach(function(question){\r\n let values = question.values;\r\n console.log(\"Q=\" + JSON.stringify(question));\r\n if (values.weightIds) {\r\n if (totals.weightIds) {\r\n console.warn('totals.weightIds already set', totals.weightIds);\r\n }\r\n totals.weightIds = values.weightIds;\r\n }\r\n\r\n if (values.weightAmount) {\r\n if (totals.weightAmount) {\r\n console.warn('totals.weightAmount already set', totals.weightAmount);\r\n }\r\n totals.weightAmount = parseFloat(values.weightAmount);\r\n }\r\n\r\n if (values.color) {\r\n if (totals.color) {\r\n console.warn('totals.color already set', totals.color);\r\n }\r\n totals.color = values.color;\r\n }\r\n\r\n });\r\n\r\n history.forEach(function(question) {\r\n let values = question.values;\r\n let scores = values.scores;\r\n let multiplier = 1;\r\n\r\n if (totals.weightIds && totals.weightIds.indexOf(question.id) !== -1) {\r\n multiplier = totals.weightAmount;\r\n }\r\n\r\n for (let prop in scores) {\r\n totals.scores[prop] += scores[prop] * multiplier;\r\n }\r\n\r\n });\r\n\r\n if ( totals.color === \"\" || totals.color === null ) {\r\n console.warn('totals.color was never set, defaulting to white');\r\n totals.color = \"white\";\r\n }\r\n\r\n mpi.calcPossibleMax(history, totals.weightIds, totals.weightAmount);\r\n // console.log('scores', totals.scores);\r\n // console.table(totals);\r\n\r\n let sortedResults = Object.keys(totals.scores).sort(function(a,b){return totals.scores[b]-totals.scores[a]});\r\n sortedResults.color = totals.color;\r\n\r\n // start Bad Combos check\r\n if (sortedResults[0] === \"v1x\" && sortedResults[1] === \"avx\") {\r\n // remove avx and move v1 into its place\r\n console.log('sortedResults', sortedResults);\r\n console.log('Bad Combo v1x and avx, remove avx and move v1 into its place');\r\n sortedResults.splice(sortedResults.indexOf('v1'), 1);\r\n sortedResults.splice(1, 1, 'v1');\r\n }\r\n if (sortedResults[0] === \"avx\" && sortedResults[1] === \"v1x\") {\r\n // remove v1x and move v1 into its place\r\n console.log('sortedResults', sortedResults);\r\n console.log('Bad Combo avx and v1x, remove v1x and move v1 into its place');\r\n sortedResults.splice(sortedResults.indexOf('v1'), 1);\r\n sortedResults.splice(1, 1, 'v1');\r\n }\r\n // end Bad Combos check\r\n\r\n // console.log('sortedResults', sortedResults);\r\n\r\n return {\r\n totals: totals,\r\n sortedResults: sortedResults\r\n };\r\n }\r\n\r\n function clearResults () {\r\n let isActiveArray = qsArray('.is-active', resultsEl);\r\n let isVisibleArray = qsArray('.is-visible', resultsEl);\r\n let isDisabledArray = qsArray('.is-disabled', resultsEl);\r\n\r\n isActiveArray.forEach(function (el) {\r\n el.classList.remove('is-active');\r\n });\r\n\r\n isVisibleArray.forEach(function (el) {\r\n el.classList.remove('is-visible');\r\n });\r\n\r\n isDisabledArray.forEach(function (el) {\r\n el.classList.remove('is-disabled');\r\n });\r\n }\r\n\r\n function clearTimeline() {\r\n if (timeline) {\r\n timeline.kill();\r\n timeline = null;\r\n }\r\n }\r\n\r\n var Accordion = function () {\r\n\r\n var\r\n toggleItems,\r\n items;\r\n\r\n var _init = function () {\r\n toggleItems = document.querySelectorAll('.btn-results-accordion');\r\n toggleItems = Array.prototype.slice.call(toggleItems);\r\n items = document.querySelectorAll('.results-accordion');\r\n items = Array.prototype.slice.call(items);\r\n\r\n _addEventHandlers();\r\n TweenLite.set(items, { visibility: 'visible' });\r\n TweenLite.from(items, 0.9, { opacity: 0, x: -100, ease: Power1.easeOut }, 0.3)\r\n }\r\n\r\n var _addEventHandlers = function () {\r\n toggleItems.forEach(function (element, index) {\r\n element.addEventListener('click', _toggleItem, false);\r\n });\r\n }\r\n\r\n var _toggleItem = function () {\r\n var parent = this.parentNode;\r\n var content = parent.children[1];\r\n if (!parent.classList.contains('is-active')) {\r\n isExpanded = true;\r\n parent.classList.add('is-active');\r\n TweenLite.set(content, { height: 'auto' })\r\n TweenLite.from(content, 0.6, { height: 0, immediateRender: false, ease: Power1.easeOut })\r\n pageMainEl.classList.add('results-expanded');\r\n } else {\r\n isExpanded = false;\r\n parent.classList.remove('is-active');\r\n TweenLite.to(content, 0.3, { height: 0, immediateRender: false, ease: Power1.easeOut })\r\n pageMainEl.classList.remove('results-expanded');\r\n }\r\n window.resizeFrame();\r\n\r\n }\r\n\r\n return {\r\n init: _init\r\n }\r\n\r\n }();\r\n\r\n Accordion.init();\r\n\r\n}\r\n\r\nexport default Results;\r\n","import {qs, qsArray} from './utilities/index';\r\nimport Overlay from \"./overlay\";\r\n\r\nlet ProgressBar = function () {\r\n if (ProgressBar.prototype._singletonInstance) {\r\n return ProgressBar.prototype._singletonInstance;\r\n }\r\n ProgressBar.prototype._singletonInstance = this;\r\n\r\n this.initialize();\r\n}\r\n\r\nProgressBar.prototype.initialize = function () {\r\n\r\n let self = this;\r\n\r\n let parent = document.getElementById('question-progress-bar');\r\n \r\n\r\n this.setProgress = function (currentQuestion, totalQuestions) {\r\n let wrap = document.querySelector('#question-progress-bar .progress-bar-wrap');\r\n let bars = document.querySelectorAll('#question-progress-bar .progress-bar-wrap .progress-bar');\r\n let previous = document.getElementById('previous');\r\n \r\n var barCount = bars.length;\r\n while (barCount < totalQuestions) {\r\n wrap.insertAdjacentHTML('beforeend', '
');\r\n barCount++;\r\n }\r\n while (barCount > totalQuestions) {\r\n wrap.removeChild(wrap.children[wrap.children.length - 1]);\r\n barCount--;\r\n }\r\n\r\n if (currentQuestion < 1) {\r\n previous.disabled = true;\r\n } else {\r\n previous.disabled = false;\r\n }\r\n\r\n let y;\r\n for (y = 0; y < totalQuestions; y++) {\r\n if (y < currentQuestion) {\r\n document.querySelectorAll('#question-progress-bar .progress-bar-wrap .progress-bar')[y].classList.add('complete');\r\n } else {\r\n document.querySelectorAll('#question-progress-bar .progress-bar-wrap .progress-bar')[y].classList.remove('complete');\r\n }\r\n }\r\n }\r\n\r\n this.show = function () {\r\n TweenLite.set([parent], { opacity: 0 });\r\n TweenLite.to([parent], 0.5, { opacity: 1 });\r\n }\r\n\r\n this.hide = function () {\r\n TweenLite.to([parent], 0.25, { opacity: 0 });\r\n }\r\n\r\n}\r\n\r\nexport default ProgressBar;\r\n","import { qs ,qsArray } from './utilities/selectors';\r\nimport Intro from \"./intro\";\r\nimport Controls from \"./controls\";\r\nimport Question from \"./question\";\r\nimport Results from \"./results\";\r\nimport ProgressBar from \"./progress-bar\";\r\nimport testHistory from './test/history';\r\nimport { totalmem } from 'os';\r\n\r\nlet BallSelector = function () {\r\n if (BallSelector.prototype._singletonInstance) {\r\n return BallSelector.prototype._singletonInstance;\r\n }\r\n BallSelector.prototype._singletonInstance = this;\r\n\r\n this.initialize();\r\n};\r\n\r\nBallSelector.prototype.initialize = function () {\r\n console.log('BallSelector initalizing');\r\n\r\n\r\n function handleBackButton() {\r\n results.hide();\r\n // hide and reset where we currently are\r\n controls.disable();\r\n currentQuestion.hide(function () {\r\n currentQuestion.reset();\r\n\r\n if (history.length > 0) {\r\n // return to the last question\r\n progressBar.show();\r\n currentQuestion = history.pop();\r\n progressBar.setProgress(history.length, totalQuestions);\r\n // we can make an assumption that next button should be active when returning to a previous question\r\n controls.enableNextButton();\r\n currentQuestion.show(function () {\r\n controls.enable();\r\n console.log('history', JSON.parse(JSON.stringify(history)));\r\n });\r\n } else {\r\n progressBar.setProgress(0, totalQuestions);\r\n progressBar.hide();\r\n controls.disableNextButton();\r\n controls.disableBackButton();\r\n intro.show();\r\n }\r\n });\r\n }\r\n\r\n\r\n // vars/\r\n let history = [];\r\n let questions = {};\r\n let startQuestionId = 'question-1';\r\n let currentQuestion = null;\r\n let shortcut = null;\r\n let totalQuestions = 11;\r\n // let controlsEl = document.getElementById('controls');\r\n let controls = new Controls();\r\n let intro = new Intro({\r\n el: document.getElementById('intro'),\r\n cb: startQuestions\r\n });\r\n let results = new Results({\r\n el: document.getElementById('results'),\r\n restart: restart,\r\n goBack: handleBackButton\r\n });\r\n let progressBar = new ProgressBar();\r\n\r\n // initialize each question\r\n qsArray('.question').forEach(function(el){\r\n let id = el.getAttribute('id');\r\n questions[id] = new Question({\r\n id: id,\r\n el: el\r\n });\r\n });\r\n // assign currentQuestion to the first question\r\n currentQuestion = questions[startQuestionId];\r\n\r\n // Initialize global control events\r\n controls.onBackButtonClick = handleBackButton;\r\n\r\n function restart() {\r\n results.hide(function () {\r\n // loop through history and reset each question\r\n while (history.length) {\r\n let q = history.pop();\r\n q.reset();\r\n }\r\n\r\n // assign currentQuestion to the first question\r\n currentQuestion = questions[startQuestionId];\r\n totalQuestions = 11;\r\n progressBar.setProgress(0, totalQuestions);\r\n\r\n intro.show();\r\n });\r\n }\r\n\r\n\r\n\r\n controls.onNextButtonClick = function() {\r\n // console.log('Next Button Clicked');\r\n\r\n controls.disable();\r\n\r\n // call Question.getNext()\r\n // push currentQuestion into history\r\n // hide currentQuestion\r\n // show next Question or Results based on what getDataNext returns\r\n let next = currentQuestion.getNext();\r\n if (currentQuestion.id === 'question-1') {\r\n shortcut = currentQuestion.getShortcut();\r\n }\r\n history.push(currentQuestion);\r\n\r\n\r\n // console.log('Next:', next);\r\n // console.log('Shortcut:', shortcut);\r\n console.log('history', JSON.parse(JSON.stringify(history)));\r\n\r\n if (next === 'results') {\r\n progressBar.setProgress(totalQuestions, totalQuestions);\r\n } else {\r\n try {\r\n if (next.includes('plus')) {\r\n totalQuestions = 11;\r\n } else if (next.includes('performance')) {\r\n totalQuestions = 10;\r\n if (shortcut != null) {\r\n totalQuestions = 9;\r\n }\r\n } else if (next.includes('preference')) {\r\n totalQuestions = 7;\r\n }\r\n // console.log('next question is ' + next + ' total is ' + totalQuestions);\r\n } catch (e) {\r\n totalQuestions = 11;\r\n }\r\n progressBar.setProgress(history.length, totalQuestions);\r\n }\r\n\r\n currentQuestion.hide(function () {\r\n // Check if next is question-3 and shortcut is not null\r\n if (next === 'question-3' && shortcut !== null) {\r\n next = shortcut;\r\n }\r\n // Check if next is results\r\n if (next === 'results') {\r\n controls.disableBackButton();\r\n controls.disableNextButton();\r\n // use this to capture history for easy testing\r\n //console.log('RESULTS');\r\n //console.log(JSON.stringify(history));\r\n results.show(history);\r\n progressBar.hide();\r\n } else {\r\n currentQuestion = questions[next];\r\n if (currentQuestion.getInputType() !== 'slider') {\r\n controls.disableNextButton();\r\n }\r\n currentQuestion.show(function () {\r\n controls.enable();\r\n });\r\n \r\n }\r\n\r\n if (history.length > 0) {\r\n controls.enableBackButton();\r\n }\r\n });\r\n\r\n }\r\n\r\n function startQuestions () {\r\n intro.hide(function () {\r\n progressBar.show();\r\n currentQuestion.show(function () {\r\n controls.enable();\r\n controls.enableBackButton();\r\n });\r\n });\r\n }\r\n\r\n // public methods\r\n this.getHeight = function () {\r\n let height = 800;\r\n let width = window.innerWidth;\r\n let body = document.body;\r\n let main = document.getElementById('main');\r\n\r\n height = main.clientHeight;\r\n //Math.max(body.scrollHeight, body.offsetHeight,\r\n //html.clientHeight, html.scrollHeight, html.offsetHeight);\r\n //console.log('Heres the HEIGHT: ' + height);\r\n\r\n // Calc height based on window size and currentState:\r\n // preloader, intro, question, results\r\n /*if (width < 800) {\r\n height = 668;\r\n if (results.getIsActive()) {\r\n height = 1000;\r\n if (results.getIsExpanded()) {\r\n height = 1600;\r\n }\r\n }\r\n } else {\r\n if (results.getIsActive()) {\r\n height = 1000;\r\n if (results.getIsExpanded()) {\r\n height = 1200;\r\n }\r\n }\r\n }\r\n */\r\n return height;\r\n }\r\n\r\n // start the app\r\n intro.showInstant();\r\n\r\n // // jump to specific question\r\n // startQuestionId = 'question-1';\r\n // startQuestionId = 'question-2';\r\n // startQuestionId = 'question-3';\r\n // startQuestionId = 'performance-q2';\r\n // startQuestionId = 'performance-q3';\r\n // startQuestionId = 'performance-q4';\r\n // startQuestionId = 'performance-q5';\r\n // startQuestionId = 'performance-q6';\r\n // startQuestionId = 'performance-best';\r\n // startQuestionId = 'performance-q7';\r\n // startQuestionId = 'plus-q2';\r\n // startQuestionId = 'plus-q3';\r\n // startQuestionId = 'plus-q4';\r\n // startQuestionId = 'plus-q5';\r\n // startQuestionId = 'plus-q6';\r\n // startQuestionId = 'plus-best';\r\n // startQuestionId = 'plus-q7';\r\n // startQuestionId = 'plus-q8';\r\n // startQuestionId = 'preference-q1';\r\n // startQuestionId = 'preference-q2';\r\n // startQuestionId = 'preference-q3';\r\n // startQuestionId = 'preference-q4';\r\n // currentQuestion = questions[startQuestionId];\r\n // progressBar.show();\r\n // currentQuestion.show(function () {\r\n // controls.enable();\r\n // controls.enableBackButton();\r\n // });\r\n\r\n // debug results\r\n // results.show(JSON.parse(testHistory['avx-v1']));\r\n // results.show(JSON.parse(testHistory['velocity-green-trufeel']));\r\n // results.show(JSON.parse(testHistory['tour-speed-tour-soft-yellow']));\r\n // results.show(JSON.parse(testHistory['v1x-yellow-v1xld']));\r\n // results.show(JSON.parse(testHistory['tour-soft-velocity-orange']));\r\n // results.show(JSON.parse(testHistory['v1xld-v1x-white']));\r\n}\r\n\r\nexport default BallSelector;\r\n","function qs(selector, scope) {\r\n return (scope || document).querySelector(selector);\r\n}\r\n\r\nfunction qsArray (selector, scope) {\r\n var nodeList = (scope || document).querySelectorAll(selector);\r\n var arr = [];\r\n for(var i = 0; i < nodeList.length; i++) {\r\n arr.push(nodeList[i]);\r\n }\r\n return arr;\r\n}\r\n\r\nexport { qs, qsArray };\r\n","import BallSelector from './ball-selector';\r\nimport Overlay from './overlay';\r\n\r\nif (__DEV__) {\r\n console.log('DEVELOPMENT ENVIRONMENT');\r\n}\r\nif (__SRC__) {\r\n console.log('SOURCE ENVIRONMENT');\r\n}\r\nif (__DIST__) {\r\n console.log('DISTRIBUTION ENVIRONMENT');\r\n}\r\n\r\nconst products = {ids: {\r\n v1: 114,\r\n v1x: 115,\r\n avx: 2677,\r\n v1xld: 3419,\r\n 'tour-soft': 2678,\r\n velocity: 2712,\r\n trufeel: 3021\r\n}\r\n};\r\n\r\nconst productsYellow = {\r\n ids: {\r\n v1: 3421,\r\n v1x: 3437,\r\n avx: 3453,\r\n 'tour-soft': 2695,\r\n trufeel: 3037\r\n }\r\n};\r\n\r\n// /**\r\n// * IFRAME RESIZING\r\n// */\r\nfunction scrollToMiddle() {\r\n if (typeof window.ballSelector === 'undefined' || window.ballSelector == null) {\r\n return;\r\n }\r\n\r\n window.parent.postMessage([\"scrollToMiddle\"], \"*\");\r\n}\r\n\r\nfunction resizeFrame() {\r\n if (typeof window.ballSelector === 'undefined' || window.ballSelector == null) {\r\n return;\r\n }\r\n\r\n let height = window.ballSelector.getHeight();\r\n if (height != window.lastHeight) {\r\n window.parent.postMessage([\"frameHeight\", height], \"*\");\r\n window.lastHeight = height;\r\n }\r\n}\r\nwindow.lastHeight = 0;\r\nwindow.resizeFrame = resizeFrame;\r\nwindow.scrollToMiddle = scrollToMiddle;\r\nresizeFrame();\r\nwindow.addEventListener('load', resizeFrame);\r\nwindow.addEventListener('resize', resizeFrame);\r\n\r\nlet overlay = new Overlay();\r\nwindow.showResultsError = function () {\r\n overlay.showResultsError();\r\n}\r\nwindow.showResultsSuccess = function () {\r\n overlay.showResultsSuccess();\r\n}\r\n\r\n/***\r\n *\r\n * TODO: If logged in to Team Titleist call this function to prepopulate the email field:\r\n * window.setInitialEmailValue('tom@sample.com');\r\n *\r\n */\r\nwindow.setInitialEmailValue = function (email) {\r\n console.log('window.setInitialEmailValue: ' + email)\r\n // let overlay = new Overlay();\r\n // overlay.setInitialEmailValue(email);\r\n}\r\n// window.setInitialEmailValue('tom@sample.com');\r\n\r\nvar applyFullName = function(code, color){\r\n var ballName = code;\r\n switch (code) {\r\n case 'v1':\r\n ballName = 'Pro V1';\r\n break;\r\n case 'v1x':\r\n ballName = 'Pro V1x'\r\n break;\r\n case 'v1xld':\r\n ballName = 'Pro V1x Left Dash';\r\n break;\r\n case 'avx':\r\n ballName = 'AVX';\r\n break;\r\n case 'tour-soft':\r\n ballName = 'Tour Soft';\r\n break;\r\n case 'velocity':\r\n ballName = 'Velocity';\r\n break;\r\n case 'trufeel':\r\n ballName = 'TruFeel';\r\n break;\r\n }\r\n\r\n if (color.toLowerCase() == 'yellow') {\r\n ballName += ' Yellow';\r\n }\r\n\r\n return ballName;\r\n};\r\n\r\nvar getProductId = function (code, color) {\r\n if (color.toLowerCase() == 'yellow') {\r\n return productsYellow.ids[code];\r\n }\r\n\r\n return products.ids[code];\r\n}\r\n\r\n/***\r\n *\r\n * TODO: Titleist needs to write the ajax call here. Fake sample timer shows results options.\r\n * I think that you could move this function outside of this file if that helps.\r\n * Valid ids: t100, t100s, t200, t300, 620mb, 620cb\r\n *\r\n */\r\nwindow.submitResultsForm = function (email, primaryId, primaryColor, alternateId, alternateColor) {\r\n console.log('window.submitResultsForm: ' + email + ' primaryId: ' + primaryId + ' primaryColor: ' + primaryColor + ', alternateId: ' + alternateId + ' alternateColor: ' + alternateColor);\r\n //Put ajax calls here using parameter variable?\r\n \r\n var xmlhttp = new XMLHttpRequest(); // new HttpRequest instance\r\n xmlhttp.onreadystatechange = function()\r\n {\r\n if(xmlhttp.readyState == 4)\r\n {\r\n if(xmlhttp.responseText != undefined){\r\n let responseM = JSON.parse(xmlhttp.responseText);\r\n if(responseM.Message == \"Success\")\r\n window.showResultsSuccess();\r\n else\r\n window.showResultsError();\r\n }\r\n\r\n else\r\n {\r\n window.showResultsError();\r\n }\r\n }\r\n\r\n } \r\n xmlhttp.open(\"POST\", resutlsHook);\r\n let terms = document.querySelectorAll('#terms');\r\n let optin = false;\r\n\r\n if (terms && terms[0].checked) { \r\n optin = true;\r\n }\r\n\r\n var formData = new FormData();\r\n var primaryProductId = getProductId(primaryId, primaryColor);\r\n var alternateProductId = getProductId(alternateId, alternateColor);\r\n formData.append(\"productids\", primaryProductId);\r\n formData.append(\"productids\", alternateProductId);\r\n\r\n var primaryName = applyFullName(primaryId, primaryColor);\r\n var alternateName = applyFullName(alternateId, alternateColor);\r\n\r\n console.log('SUBMIT ' + primaryProductId + ' ' + alternateProductId + ' ' + primaryName + ' ' + alternateName);\r\n\r\n formData.append(\"email\", email);\r\n formData.append(\"products\", primaryName);\r\n formData.append(\"products\", alternateName);\r\n formData.append(\"source\", \"Golf Ball Selector\");\r\n formData.append(\"optin\", optin);\r\n //var jsondata = JSON.stringify({email: email, products : [primaryId, alternateId], source: \"Golf Ball Selector\"});\r\n xmlhttp.send(formData);\r\n // fake timer here and sample for success and error results.\r\n //setTimeout( function () {\r\n // just showing error if you use this email address for testing\r\n //if (email.toLowerCase() === 'error@error.com') {\r\n //if error\r\n //window.showResultsError();\r\n //} else {\r\n //if success\r\n //window.showResultsSuccess();\r\n //}\r\n\r\n //}, 1200);\r\n}\r\n\r\n\r\n\r\n// Star the app\r\nwindow.ballSelector = new BallSelector();\r\n\r\n"],"sourceRoot":""}