{"version":3,"sources":["SemanticStatementPanels.js"],"names":["$","window","THF","Interface","SemanticStatementPanels","container","options","$buttonQuote","current","panel","GOTO_DIRECTION_FORWARD","panelPosition","extend","selectors","parentElem","panelWrapper","btnOption","matrix","moduleMode","data","location","age","membership-type","cover-type","$parent","$panelWrapper","$container","$allPanels","$panel","start","statement-summary","$dropdown","$panelElem","selector","bindEvents","$buttonOption","$buttonGetStarted","$buttonBack","off","on","eventGetStarted","eventButtonBack","eventButtonOption","eventButtonQuote","eventDropdownUpdate","e","doAction","name","this","attr","value","val","parseInt","toString","populateStatementSummary","setLinkHref","Utility","DatalayerTracking","track","type","action","actionCategory","actionValue","select","text","state","membershipType","hospitalCover","ancillaryCover","matches","match","length","Location","navigateToLiveQuoteTool","selectedValues","each","push","join","gotoPanel","panelName","direction","addClass","removeClass","populateCoverTypePanel","hidePanel","not","showPanel","setWrapperAttr","preventDefault","pop","element","eventAction","_","indexOf","filteredCoverTypeData","filter","item","result","coverTypeValueLength","coverTypeValue","coverType","coverTypes","htmlCoverTypes","i","htmlCoverTypeText","append","html","label","htmlCoverTypeLink","option","prop","selectpicker","elem","currentPanel","trackIfElementInViewport","jQuery","document"],"mappings":"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","file":"semantic-statement-panels.min.js","sourcesContent":["/**\r\n * Twiddly dee twiddly dumb,\r\n * This is a file that had little use of my thumb.\r\n * - Blanksy\r\n */\r\n(function ($, window, document, undefined) {\r\n 'use strict';\r\n window.THF = window.THF || {};\r\n window.THF.Interface = window.THF.Interface || {};\r\n window.THF.Interface.SemanticStatementPanels = function (container, options) {\r\n var current = {\r\n panel: 'location',\r\n }\r\n /**\r\n * CONSTANTS\r\n */\r\n var GOTO_DIRECTION_FORWARD = 1;\r\n var GOTO_DIRECTION_BACK = 1;\r\n\r\n /**\r\n * Default values for the code below to function.\r\n *\r\n * @type {{selectors: {parentElem: string, btnOption: string, panel: string}, data: {}}}\r\n */\r\n var defaults = {\r\n selectors: {\r\n //Module Parent\r\n parentElem: '.semantic-statement',\r\n panelWrapper: '.panel-wrapper',\r\n btnOption: 'a.option',\r\n panel: '.panel'\r\n },\r\n matrix: [],\r\n moduleMode: 'NotSpecified'\r\n };\r\n\r\n /**\r\n *\r\n */\r\n options = $.extend(true, {}, defaults, options);\r\n\r\n /**\r\n * Breadcrumb for the back button, this is pushed and popped\r\n * as the panels are navigated.\r\n *\r\n * @type {Array}\r\n */\r\n var panelPosition = [];\r\n\r\n /**\r\n *\r\n * @type {{location: string, age: string, membership-type: string, cover-type: string}}\r\n */\r\n var data = {\r\n 'location': '',\r\n 'age': '',\r\n 'membership-type': '',\r\n 'cover-type': ''\r\n };\r\n\r\n /**\r\n * Declare DOM elements\r\n */\r\n var $parent = $(container);\r\n var $panelWrapper = $container(options.selectors.panelWrapper);\r\n var $allPanels = $container('.panel');\r\n var $panel = {\r\n 'start': $container('.panel.start'),\r\n 'location': $container('.panel.location'),\r\n 'age': $container('.panel.age'),\r\n 'membership-type': $container('.panel.membership-type'),\r\n 'cover-type': $container('.panel.cover-type'),\r\n 'statement-summary': $container('.panel.statement-summary')\r\n };\r\n var $dropdown = {\r\n 'location': $panelElem('statement-summary', 'select[name=\"location\"]'),\r\n 'age': $panelElem('statement-summary', 'select[name=\"age\"]'),\r\n 'membership-type': $panelElem('statement-summary', 'select[name=\"membership-type\"]'),\r\n 'cover-type': $panelElem('statement-summary', 'select[name=\"cover-type\"]')\r\n };\r\n\r\n\r\n /**\r\n * Helper function to return a jquery object, which is a child of 'parentElem'\r\n *\r\n * @param {string} selector\r\n * @returns {*|HTMLElement}\r\n */\r\n function $container(selector) {\r\n return $(selector, $parent);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} panel\r\n * @param {string} selector\r\n * @returns {*|HTMLElement}\r\n */\r\n function $panelElem(panel, selector) {\r\n return $(selector, $container('.panel.' + panel));\r\n }\r\n\r\n\r\n /**********************************\r\n // Event Binding\r\n **********************************/\r\n /**\r\n * Binds the events to the relevant DOM elements.\r\n *\r\n * Note: The .off() is necessary as it allows for the\r\n * rebinding of the events when new options are added.\r\n */\r\n var $buttonQuote;\r\n var bindEvents = function () {\r\n var $buttonOption = $container(options.selectors.btnOption);\r\n var $buttonGetStarted = $panelElem('start', '.get-started');\r\n var $buttonBack = $container('.controls .back');\r\n $buttonQuote = $container('.btn-quote');\r\n\r\n // Panel Events\r\n $buttonGetStarted.off('click').on('click', eventGetStarted);\r\n $buttonBack.off('click').on('click', eventButtonBack);\r\n $buttonOption.off('click').on('click', eventButtonOption);\r\n $buttonQuote.off('click').on('click', eventButtonQuote);\r\n\r\n // Dropdown Events\r\n $dropdown.age.off('change', eventDropdownUpdate).on('change', eventDropdownUpdate);\r\n $dropdown.location.off('change', eventDropdownUpdate).on('change', eventDropdownUpdate);\r\n $dropdown['membership-type'].off('change', eventDropdownUpdate).on('change', eventDropdownUpdate);\r\n $dropdown['cover-type'].off('change', eventDropdownUpdate).on('change', eventDropdownUpdate);\r\n };\r\n\r\n var eventDropdownUpdate = function (e) {\r\n var doAction = false;\r\n var name = $(this).attr('name');\r\n var value = $(this).val();\r\n\r\n if( name == 'location' ) {\r\n data.location = value;\r\n }\r\n else if( name == 'age' ) {\r\n doAction = true;\r\n data.age = parseInt(value,10);\r\n }\r\n else if( name == 'membership-type' ) {\r\n doAction = true;\r\n data['membership-type'] = value;\r\n }\r\n else if( name == 'cover-type' ) {\r\n doAction = true;\r\n data['cover-type'] = value.toString();\r\n }\r\n if( doAction ) {\r\n populateStatementSummary();\r\n setLinkHref();\r\n }\r\n\r\n THF.Utility.DatalayerTracking.track('SemanticStatement', {\r\n type: options.moduleMode,\r\n action: 'dropdown-select',\r\n panel: current.panel,\r\n actionCategory: name,\r\n actionValue: getAnalyticsSelectLabelValue($(this))\r\n });\r\n \r\n };\r\n\r\n // Chrome was cancelling the redirect request so instead of redirecting via JS update the href attribute.\r\n var setLinkHref = function() {\r\n var state = data.location;\r\n var membershipType = data['membership-type'];\r\n var coverType = data['cover-type'];\r\n var hospitalCover = '';\r\n var ancillaryCover = '';\r\n\r\n var matches = coverType.match(/^[0-9]+\\-([a-zA-Z0-9]*)\\|([a-zA-Z0-9]*)?$/);\r\n if (matches.length === 3) {\r\n hospitalCover = matches[1];\r\n ancillaryCover = matches[2];\r\n }\r\n\r\n $buttonQuote.attr(\"href\", THF.Utility.Location.navigateToLiveQuoteTool(state, membershipType, hospitalCover, ancillaryCover, data.age));\r\n };\r\n\r\n var eventButtonQuote = function(e) {\r\n THF.Utility.DatalayerTracking.track('SemanticStatement', {\r\n type: options.moduleMode,\r\n action: 'button-click',\r\n panel: current.panel,\r\n actionCategory: 'Get a quote now',\r\n actionValue: getAnalyticsQuoteLabelValue()\r\n });\r\n };\r\n\r\n function getAnalyticsQuoteLabelValue() {\r\n var selectedValues = [];\r\n $('select', $panel['statement-summary']).each(function () {\r\n selectedValues.push($(':selected', this).text());\r\n });\r\n\r\n return selectedValues.join(' | ');\r\n }\r\n \r\n function getAnalyticsSelectLabelValue(select) {\r\n return $(':selected', select).text();\r\n }\r\n\r\n /**\r\n * When clicking the get stared link this happens.\r\n *\r\n * @param e An event object that is returned from jQuery Events.\r\n */\r\n var eventGetStarted = function (e) {\r\n e.preventDefault();\r\n panelPosition.push('start');\r\n gotoPanel('location');\r\n };\r\n\r\n /**\r\n * When clicking on any of the back buttons this event is triggered.\r\n *\r\n * @param e An event object that is returned from jQuery Events.\r\n */\r\n var eventButtonBack = function (e) {\r\n e.preventDefault();\r\n var panel = panelPosition.pop();\r\n THF.Utility.DatalayerTracking.track('SemanticStatement', {\r\n type: options.moduleMode,\r\n action: 'button-click',\r\n panel: current.panel,\r\n actionCategory: null,\r\n actionValue: 'Back'\r\n });\r\n gotoPanel(panel, GOTO_DIRECTION_BACK);\r\n };\r\n\r\n /**\r\n * When clicking on any of the options in the panels before the Semantic\r\n * statement this is the event that pushes you forwards.\r\n *\r\n * @param e An event object that is returned from jQuery Events.\r\n */\r\n var eventButtonOption = function (e) {\r\n e.preventDefault();\r\n\r\n var element = $(this);\r\n\r\n var type = element.data('type');\r\n var value = element.data('value');\r\n var text = $('span', element).text();\r\n\r\n // Ensure we have the panel that we are saying we are selecting.\r\n var validOption = (typeof data[type] !== 'undefined');\r\n if (validOption) {\r\n data[type] = value;\r\n var eventAction = null;\r\n var panel = '';\r\n switch (type) {\r\n case 'location':\r\n eventAction = 'Step 1';\r\n panel = 'age';\r\n break;\r\n case 'age':\r\n eventAction = 'Step 2';\r\n panel = 'membership-type';\r\n break;\r\n case 'membership-type':\r\n eventAction = 'Step 3';\r\n panel = 'cover-type';\r\n break;\r\n case 'cover-type':\r\n eventAction = 'Step 4';\r\n panel = 'statement-summary';\r\n break;\r\n case 'statement-summary':\r\n eventAction = 'Step 5';\r\n panel = '';\r\n break;\r\n }\r\n\r\n if (eventAction !== null) {\r\n THF.Utility.DatalayerTracking.track('SemanticStatement', {\r\n type: options.moduleMode,\r\n action: 'button-click',\r\n panel: type,\r\n actionCategory: null,\r\n actionValue: text\r\n });\r\n }\r\n\r\n if (_.indexOf(panelPosition, type) == -1) {\r\n panelPosition.push(type);\r\n }\r\n gotoPanel(panel);\r\n }\r\n else {\r\n // console.log('ERROR: Invalid data type: ' + type);\r\n }\r\n };\r\n\r\n /**\r\n * Selects the relevant cover types to display based\r\n * on the selections of age and membership-type.\r\n */\r\n var filteredCoverTypeData = function () {\r\n /**\r\n * We only want to get cover types that are of the\r\n * age range and that are of the correct membership type.\r\n */\r\n var results = _.filter(options.matrix, function (item) {\r\n\r\n var result = true;\r\n // Only get the cover types which are related to the selected membership type.\r\n if (data['membership-type'] != item['membership-type']) {\r\n result = false;\r\n }\r\n\r\n // Filter the cover types by the ages that are in the array.\r\n if (result === true && _.indexOf(item.age, parseInt(data.age, 10)) == -1) {\r\n result = false;\r\n }\r\n\r\n // Alrighty then, lets return the result here.\r\n return result;\r\n });\r\n return results;\r\n };\r\n\r\n var coverTypeValueLength = 0;\r\n /**\r\n * Build the cover type value from the cover type object passed in.\r\n *\r\n * @param {object} coverType\r\n * @return {string}\r\n */\r\n var coverTypeValue = function (coverType) {\r\n return (coverTypeValueLength++) + '-' + coverType.hospitalCover + '|' + coverType.ancillaryCover;\r\n\r\n };\r\n\r\n /**\r\n * Iterate over the cover types and render the markup\r\n * that needs to be injected.\r\n *\r\n * There is likely a better way of doing this, but this works\r\n * for now.\r\n */\r\n var populateCoverTypePanel = function () {\r\n coverTypeValueLength = 0;\r\n var coverTypes = filteredCoverTypeData();\r\n if (coverTypes.length > 0) {\r\n var coverType;\r\n var htmlCoverTypes = $('
');\r\n for (var i = 0; i < coverTypes.length; i++) {\r\n coverType = coverTypes[i];\r\n\r\n var htmlCoverTypeText = $('
')\r\n .append($('').html(coverType.label));\r\n var htmlCoverTypeLink = $('')\r\n .attr('href', '#')\r\n .attr('data-type', 'cover-type')\r\n .attr('data-value', coverTypeValue(coverType))\r\n .addClass('option')\r\n // .append(htmlCoverTypeTextWrap)\r\n .append(htmlCoverTypeText);\r\n htmlCoverTypes.append(htmlCoverTypeLink);\r\n }\r\n\r\n $panelElem('cover-type', '.panel-options').html(htmlCoverTypes.html());\r\n bindEvents();\r\n }\r\n };\r\n\r\n /**\r\n * Iterate over the cover types and populate any dropdown's and values that are needed.\r\n */\r\n var populateStatementSummary = function () {\r\n coverTypeValueLength = 0;\r\n\r\n //// Set the value for the State Dropdown\r\n $dropdown.location.val(data.location);\r\n\r\n // Set the value for the Age Dropdown\r\n $dropdown.age.val(data.age);\r\n\r\n // Set the value for the Membership Type Dropdown\r\n $dropdown['membership-type'].val(data['membership-type']);\r\n\r\n // Cover Types Dropdown\r\n var coverTypes = filteredCoverTypeData();\r\n $dropdown['cover-type'].html('');\r\n if (coverTypes.length > 0) {\r\n var coverType;\r\n var option;\r\n for (var i = 0; i < coverTypes.length; i++) {\r\n coverType = coverTypes[i];\r\n option = $('