{"version":3,"file":"account.min.js","sources":["scripts/account.min.js"],"sourcesContent":["/**************************************************************************\nName: account.js\nDescription: Account address scripting.\nDate Created: 07/15/2021 by Jenna Hart\nModified: \n**************************************************************************/\njQuery.noConflict();\n\nvar isManual = false;\n\nvar statesArray = [\n\t{'name':'Alabama','abbrv':'AL'},\n\t{'name':'Alaska','abbrv':'AK'},\n\t{'name':'American Samoa','abbrv':'AS'},\n\t{'name':'Arizona','abbrv':'AZ'},\n\t{'name':'Arkansas','abbrv':'AR'},\n\t{'name':'Armed Forces Americas','abbrv':'AA'},\n\t{'name':'Armed Forces Europe','abbrv':'AE'},\n\t{'name':'Armed Forces Pacific','abbrv':'AP'},\n\t{'name':'California','abbrv':'CA'},\n\t{'name':'Colorado','abbrv':'CO'},\n\t{'name':'Connecticut','abbrv':'CT'},\n\t{'name':'Delaware','abbrv':'DE'},\n\t{'name':'District Of Columbia','abbrv':'DC'},\n\t{'name':'Florida','abbrv':'FL'},\n\t{'name':'Georgia','abbrv':'GA'},\n\t{'name':'Guam','abbrv':'GU'},\n\t{'name':'Hawaii','abbrv':'HI'},\n\t{'name':'Idaho','abbrv':'ID'},\n\t{'name':'Illinois','abbrv':'IL'},\n\t{'name':'Indiana','abbrv':'IN'},\n\t{'name':'Iowa','abbrv':'IA'},\n\t{'name':'Kansas','abbrv':'KS'},\n\t{'name':'Kentucky','abbrv':'KY'},\n\t{'name':'Louisiana','abbrv':'LA'},\n\t{'name':'Maine','abbrv':'ME'},\n\t{'name':'Marshall Islands','abbrv':'MH'},\n\t{'name':'Maryland','abbrv':'MD'},\n\t{'name':'Massachusetts','abbrv':'MA'},\n\t{'name':'Michigan','abbrv':'MI'},\n\t{'name':'Minnesota','abbrv':'MN'},\n\t{'name':'Mississippi','abbrv':'MS'},\n\t{'name':'Missouri','abbrv':'MO'},\n\t{'name':'Montana','abbrv':'MT'},\n\t{'name':'Nebraska','abbrv':'NE'},\n\t{'name':'Nevada','abbrv':'NV'},\n\t{'name':'New Hampshire','abbrv':'NH'},\n\t{'name':'New Jersey','abbrv':'NJ'},\n\t{'name':'New Mexico','abbrv':'NM'},\n\t{'name':'New York','abbrv':'NY'},\n\t{'name':'North Carolina','abbrv':'NC'},\n\t{'name':'North Dakota','abbrv':'ND'},\n\t{'name':'Northern Mariana Islands','abbrv':'NP'},\n\t{'name':'Ohio','abbrv':'OH'},\n\t{'name':'Oklahoma','abbrv':'OK'},\n\t{'name':'Oregon','abbrv':'OR'},\n\t{'name':'Pennsylvania','abbrv':'PA'},\n\t{'name':'Puerto Rico','abbrv':'PR'},\n\t{'name':'Rhode Island','abbrv':'RI'},\n\t{'name':'South Carolina','abbrv':'SC'},\n\t{'name':'South Dakota','abbrv':'SD'},\n\t{'name':'Tennessee','abbrv':'TN'},\n\t{'name':'Texas','abbrv':'TX'},\n\t{'name':'US Virgin Islands','abbrv':'VI'},\n\t{'name':'Utah','abbrv':'UT'},\n\t{'name':'Vermont','abbrv':'VT'},\n\t{'name':'Virginia','abbrv':'VA'},\n\t{'name':'Washington','abbrv':'WA'},\n\t{'name':'West Virginia','abbrv':'WV'},\n\t{'name':'Wisconsin','abbrv':'WI'},\n\t{'name':'Wyoming','abbrv':'WY'}\n];\n\nvar provincesArray = [\n\t{'name':'Alberta','abbrv':'AB'},\n\t{'name':'British Columbia','abbrv':'BC'},\n\t{'name':'Manitoba','abbrv':'MB'},\n\t{'name':'New Brunswick','abbrv':'NB'},\n\t{'name':'Newfoundland','abbrv':'NF'},\n\t{'name':'Northwest Territory','abbrv':'NT'},\n\t{'name':'Nova Scotia','abbrv':'NS'},\n\t{'name':'Nunavut','abbrv':'NU'},\n\t{'name':'Ontario','abbrv':'ON'},\n\t{'name':'Prince Edward Island','abbrv':'PE'},\n\t{'name':'Quebec','abbrv':'QC'},\n\t{'name':'Saskatchewan','abbrv':'SK'},\n\t{'name':'Yukon','abbrv':'YT'}\n];\n\nvar regionsArray = statesArray.concat(provincesArray);\n\njQuery(document).ready(function(){\n\tjQuery('input[name=\"addr1\"], input[name=\"city\"], input[name=\"state\"], input[name=\"zip\"]').on('change', function() {\n\t\tsetAddressUnverified(jQuery(this));\n\t});\n});\n\nvar addressLookupCount = 0;\n\nvar closeAddressFayt = function() {\n\tjQuery('.fayt-address-results').removeClass('active loading').css('height', 0);\n\n\tsetTimeout(function() {\n\t\tjQuery('.fayt-address-results').html('');\n\t}, 300);\n}\n\nvar getAddress = debounce(function(input, preferred, selected) {\n\tvar form = input.closest('form');\n\tvar address = encodeURIComponent(form.find('input[name=\"addr1\"]').val( ));\n\tvar resultsContainer = form.find('.fayt-address-results');\n\tvar html = jQuery('
');\n\tvar ssURL = 'https://us-autocomplete-pro.api.smartystreets.com/lookup?key=102630831775935594&search=' + address + '&max_results=5&' + preferred;\n\n\tif(selected != undefined)\n\t\tssURL += '&selected=' + selected;\n\n\tif(address.length > 0)\n\t{\n\t\tjQuery.ajax( {\n\t\t\ttype : 'GET',\n\t\t\turl : ssURL,\n\t\t\tcache : false,\n\t\t\tasync : false,\n\t\t\tdataType : 'json',\n\t\t\tsuccess : function( data ){\n\t\t\t\tif(data.suggestions != null)\n\t\t\t\t{\n\t\t\t\t\tfor (var i = 0; i < data.suggestions.length; i++) {\n\t\t\t\t\t\tvar address = data.suggestions[i];\n\t\t\t\t\t\tvar street = address.secondary.length > 0 ? address.street_line + ', ' + address.secondary : address.street_line;\n\t\t\t\t\t\tvar entryText = address.entries > 1 ? ' (' + address.entries + ')' : '';\n\n\t\t\t\t\t\thtml.append('' + street + entryText + ', ' + address.city + ', ' + address.state + ' ' + address.zipcode + '');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml.append('Not found, continue with my address');\n\n\t\t\t\tresultsContainer.append(html);\n\n\t\t\t\tvar thisHeight = resultsContainer.find('div').height();\n\t\t\t\tresultsContainer.addClass('active').removeClass('loading').css('height', thisHeight + 'px');\n\t\t\t\taddressLookupCount = 0;\n\t\t\t},\n\t\t\terror : function(data){\n\t\t\t\tlogError(ssURL, data);\n\n\t\t\t\tif(addressLookupCount == 0) {\n\t\t\t\t\taddressLookupCount = 1;\n\t\t\t\t\tpreferred = '';\n\t\t\t\t\tgetAddress(input, preferred);\n\t\t\t\t} else {\n\t\t\t\t\taddressLookupCount = 0;\n\t\t\t\t\tsetManualEntry(input);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}, 500);\n\nfunction logError(requestString, response){\n\t//Logs an error from the smarty streets api to the back end\n\tvar dataObject={ method : 'setSmartyStreetsErrorLogAjax' }\n\n\tdataObject.requestString = requestString;\n\tdataObject.response = JSON.stringify(response);\n\n\tjQuery.ajax( {\n\t\ttype : 'GET',\n\t\turl : '/cfcs/accountDAO.cfc',\n\t\tcache : false,\n\t\tasync : false,\n\t\tdataType : 'json',\n\t\tdata : dataObject\n\t});\n}\n\nvar selectAddress = function(link, preferred){\n\t//Fills the hidden address fields when an option is selected from the address FAYT window\n\tif(link.hasClass('manual-entry')){\n\t\tsetManualEntry(link);\n\t\treturn;\n\t}\n\n\tvar form = link.closest('form'),\n\t\tinput = form.find('input[name=\"addr1\"]'),\n\t\tstreet = link.attr('data-street'),\n\t\tcity = link.attr('data-city'),\n\t\tstateAbbrv = link.attr('data-state'),\n\t\tstate = regionsArray.find(x => x.abbrv === stateAbbrv).name\n\t\tzip = link.attr('data-zip'),\n\t\tentries = parseInt(link.attr('data-entries')),\n\t\tcityStateZip = city + ', ' + state + ' ' + zip;\n\n\tinput.val(street);\n\tform.find('input[name=\"city\"]').val(city);\n\tform.find('select[name=\"state\"]').val(state);\n\tform.find('input[name=\"zip\"]').val(zip);\n\tform.find('input[name=\"cityStateZip\"]').val(cityStateZip).trigger(\"blur\");\n\tform.find('select[name=\"country\"]').val('United States');\n\n\tif(entries > 1) {\n\t\tsetAddressLoading();\n\n\t\tvar selectedSS = street + '+(' + entries + ')+' + city + '+' + stateAbbrv + '+' + zip;\n\t\tvar selected = selectedSS.replace(/ /g, '+');\n\n\t\tgetAddress(input, preferred, selected);\n\t} else {\n\t\tform.find('input[name=\"ssVerified\"]').val(1);\n\t\tcloseAddressFayt();\n\t}\n}\n\nvar setAddressLoading = function(input){\n\t//Shows the loading spinner in the FAYT address window\n\tif(input != undefined) {\n\t\tvar form = input.closest('form'),\n\t\t\tresultsContainer = form.find('.fayt-address-results');\n\n\t\tresultsContainer.html('').addClass('loading').css('height', '37px');\n\t} else {\n\t\tjQuery('.fayt-address-results').html('').addClass('loading').css('height', '37px');\n\t}\n}\n\nvar setAddressUnverified = function(input){\n\t//Saves the form as not being smarty sheet verified\n\tvar form = input.closest('form');\n\n\tform.find('input[name=\"ssVerified\"]').val(0);\n\tform.find('input[name=\"cityStateZip\"]').val('');\n}\n\nvar setManualEntry = function(link){\n\t//Shows the manual entry address fields and hides the FAYT window\n\tvar form = link.closest('form');\n\n\tcloseAddressFayt();\n\n\tisManual = true;\n\tform.find('input[name=\"isManual\"]').val(true);\n\n\tform.find('label[for=\"cityStateZip\"]').attr('aria-hidden', true).hide('fast');\n\tform.find('input[name=\"cityStateZip\"]').attr('type', 'hidden');\n\tform.find(\"#cityStateZipErr\").hide(\"fast\");\n\n\tform.find('label[for=\"city\"]').attr('aria-hidden', false).show('fast');\n\tform.find('input[name=\"city\"]').show(\"fast\");\n\tform.find(\"#cityErr\").show(\"fast\");\n\n\tform.find('label[for=\"accountSignupState\"]').attr('aria-hidden', false).show('fast');\n\tform.find('select[name=\"state\"]').parent().show('fast');\n\tform.find(\"#stateErr\").show(\"fast\");\n\n\tform.find('label[for=\"country\"]').attr('aria-hidden', false).show('fast');\n\tform.find('select[name=\"country\"]').parent().show('fast');\n\tform.find(\"#countryErr\").show(\"fast\");\n\n\tform.find('label[for=\"zip\"]').attr('aria-hidden', false).show('fast');\n\tform.find('input[name=\"zip\"]').show(\"fast\");\n\tform.find(\"#zipErr\").show(\"fast\");\n}\n\nfunction setSubmitInteraction(){\n\t//Checks for visiable inputs with errors and enables or disables the submit button\n\tlet formFields = jQuery(\"input.acct-signup-field:visible:not(.optional), .acct-signup-field select:visible:not(.optional)\");\n\tlet allInputsValid = true;\n\tfor(let i=0; i