1"use strict"; 2 3// @ts-check 4// IPINFO Module 5var IPINFO = function ($, STATEHANDLER) { 6 // ************************************************************************** 7 // PRIVATE 8 // ************************************************************************** 9 // Country code list 10 var countryList = { 11 AF: 'AFG', 12 AL: 'ALB', 13 DZ: 'DZA', 14 AS: 'ASM', 15 AD: 'AND', 16 AO: 'AGO', 17 AI: 'AIA', 18 AG: 'ATG', 19 AR: 'ARG', 20 AM: 'ARM', 21 AW: 'ABW', 22 AU: 'AUS', 23 AT: 'AUT', 24 AZ: 'AZE', 25 BS: 'BHS', 26 BH: 'BHR', 27 BD: 'BGD', 28 BB: 'BRB', 29 BY: 'BLR', 30 BE: 'BEL', 31 BZ: 'BLZ', 32 BJ: 'BEN', 33 BM: 'BMU', 34 BT: 'BTN', 35 BO: 'BOL', 36 BA: 'BIH', 37 BW: 'BWA', 38 BR: 'BRA', 39 IO: 'BGR', 40 VG: 'VGB', 41 BN: 'BRN', 42 BG: 'BGR', 43 BF: 'BFA', 44 BI: 'BDI', 45 KH: 'KHM', 46 CM: 'CMR', 47 CA: 'CAN', 48 CV: 'CPV', 49 BQ: 'ANT', 50 KY: 'CYM', 51 CF: 'CAF', 52 TD: 'TCD', 53 CL: 'CHL', 54 CN: 'CHN', 55 CO: 'COL', 56 KM: 'COM', 57 CD: 'COD', 58 CG: 'COG', 59 CK: 'COK', 60 CR: 'CRI', 61 CI: 'CIV', 62 HR: 'HRV', 63 CU: 'CUB', 64 CW: 'CUW', 65 CY: 'CYP', 66 CZ: 'CZE', 67 DK: 'DNK', 68 DJ: 'DJI', 69 DM: 'DMA', 70 DO: 'DOM', 71 EC: 'ECU', 72 EG: 'EGY', 73 SV: 'SLV', 74 GQ: 'GNQ', 75 ER: 'ERI', 76 EE: 'EST', 77 ET: 'ETH', 78 FK: 'FLK', 79 FO: 'FRO', 80 FJ: 'FJI', 81 FI: 'FIN', 82 FR: 'FRA', 83 GF: 'GUF', 84 PF: 'PYF', 85 GA: 'GAB', 86 GM: 'GMB', 87 GE: 'GEO', 88 DE: 'DEU', 89 GH: 'GHA', 90 GI: 'GIB', 91 GR: 'GRC', 92 GL: 'GRL', 93 GD: 'GRD', 94 GP: 'GLP', 95 GU: 'GUM', 96 GT: 'GTM', 97 GN: 'GIN', 98 GW: 'GNB', 99 GY: 'GUY', 100 HT: 'HTI', 101 HN: 'HND', 102 HK: 'HKG', 103 HU: 'HUN', 104 IS: 'ISL', 105 IN: 'IND', 106 ID: 'IDN', 107 IR: 'IRN', 108 IQ: 'IRQ', 109 IE: 'IRL', 110 IL: 'ISR', 111 IT: 'ITA', 112 JM: 'JAM', 113 JP: 'JPN', 114 JO: 'JOR', 115 KZ: 'KAZ', 116 KE: 'KEN', 117 KI: 'KIR', 118 KW: 'KWT', 119 KG: 'KGZ', 120 LA: 'LAO', 121 LV: 'LVA', 122 LB: 'LBN', 123 LS: 'LSO', 124 LR: 'LBR', 125 LY: 'LBY', 126 LI: 'LIE', 127 LT: 'LTU', 128 LU: 'LUX', 129 MO: 'MAC', 130 MK: 'MKD', 131 MG: 'MDG', 132 MW: 'MWI', 133 MY: 'MYS', 134 MV: 'MDV', 135 ML: 'MLI', 136 MT: 'MLT', 137 MH: 'MHL', 138 MQ: 'MTQ', 139 MR: 'MRT', 140 MU: 'MUS', 141 MX: 'MEX', 142 FM: 'FSM', 143 MD: 'MDA', 144 MC: 'MCO', 145 MN: 'MNG', 146 ME: 'MNE', 147 MS: 'MSR', 148 MA: 'MAR', 149 MZ: 'MOZ', 150 MM: 'MMR', 151 NA: 'NAM', 152 NR: 'NRU', 153 NP: 'NPL', 154 NL: 'NLD', 155 NC: 'NCL', 156 NZ: 'NZL', 157 NI: 'NIC', 158 NE: 'NER', 159 NG: 'NGA', 160 NU: 'NIU', 161 NF: 'NFK', 162 KP: 'PRK', 163 MP: 'MNP', 164 NO: 'NOR', 165 OM: 'OMN', 166 PK: 'PAK', 167 PW: 'PLW', 168 PS: 'PSE', 169 PA: 'PAN', 170 PG: 'PNG', 171 PY: 'PRY', 172 PE: 'PER', 173 PH: 'PHL', 174 PL: 'POL', 175 PT: 'PRT', 176 PR: 'PRI', 177 QA: 'QAT', 178 RE: 'REU', 179 RO: 'ROU', 180 RU: 'RUS', 181 RW: 'RWA', 182 BL: 'BLM', 183 SH: 'SHN', 184 KN: 'KNA', 185 LC: 'LCA', 186 MF: 'MAF', 187 PM: 'SPM', 188 VC: 'VCT', 189 WS: 'WSM', 190 SM: 'SMR', 191 ST: 'STP', 192 SA: 'SAU', 193 SN: 'SEN', 194 RS: 'SRB', 195 SC: 'SYC', 196 SL: 'SLE', 197 SG: 'SGP', 198 SX: 'SXM', 199 SK: 'SVK', 200 SI: 'SVN', 201 SB: 'SLB', 202 SO: 'SOM', 203 ZA: 'ZAF', 204 KR: 'KOR', 205 SS: 'SSD', 206 ES: 'ESP', 207 LK: 'LKA', 208 SD: 'SDN', 209 SR: 'SUR', 210 SZ: 'SWZ', 211 SE: 'SWE', 212 CH: 'CHE', 213 SY: 'SYR', 214 TW: 'TWN', 215 TJ: 'TJK', 216 TZ: 'TZA', 217 TH: 'THA', 218 TL: 'TLS', 219 TG: 'TGO', 220 TK: 'TKL', 221 TO: 'TON', 222 TT: 'TTO', 223 TN: 'TUN', 224 TR: 'TUR', 225 TM: 'TKM', 226 TC: 'TCA', 227 TV: 'TUV', 228 VI: 'VIR', 229 UG: 'UGA', 230 UA: 'UKR', 231 AE: 'ARE', 232 GB: 'GBR', 233 US: 'USA', 234 UY: 'URY', 235 UZ: 'UZB', 236 VU: 'VUT', 237 VA: 'VAT', 238 VE: 'VEN', 239 VN: 'VNM', 240 WF: 'WLF', 241 YE: 'YEM', 242 ZM: 'ZMB', 243 ZW: 'ZWE' 244 }; // State list 245 246 var stateList = { 247 'AL': 'Alabama', 248 'AK': 'Alaska', 249 'AZ': 'Arizona', 250 'AR': 'Arkansas', 251 'CA': 'California', 252 'CO': 'Colorado', 253 'CT': 'Connecticut', 254 'DE': 'Delaware', 255 'DC': 'District, Columbia', 256 'FL': 'Florida', 257 'GA': 'Georgia', 258 'HI': 'Hawaii', 259 'ID': 'Idaho', 260 'IL': 'Illinois', 261 'IN': 'Indiana', 262 'IA': 'Iowa',
263 'KS': 'Kansas', 264 'KY': 'Kentucky', 265 'LA': 'Louisiana', 266 'ME': 'Maine', 267 'MD': 'Maryland', 268 'MA': 'Massachusetts', 269 'MI': 'Michigan', 270 'MN': 'Minnesota', 271 'MS': 'Mississippi', 272 'MO': 'Missouri', 273 'MT': 'Montana', 274 'NE': 'Nebraska', 275 'NV': 'Nevada', 276 'NH': 'New Hampsh,', 277 'NJ': 'New Jer,', 278 'NM': 'New Mex,', 279 'NY': 'New Y,', 280 'NC': 'North Carol,', 281 'ND': 'North Dak,', 282 'OH': 'Ohio', 283 'OK': 'Oklahoma', 284 'OR': 'Oregon', 285 'PA': 'Pennsylvania', 286 'RI': 'Rhode Isl,', 287 'SC': 'South Carol,', 288 'SD': 'South Dak,', 289 'TN': 'Tennessee', 290 'TX': 'Texas', 291 'UT': 'Utah', 292 'VT': 'Vermont', 293 'VA': 'Virginia', 294 'WA': 'Washington', 295 'WV': 'West Virgi,', 296 'WI': 'Wisconsin', 297 'WY': 'Wyoming', 298 'AA': 'Armed For, Americas', 299 'AP': 'Armed For, Pacific', 300 'AE': 'Armed For, Other', 301 'AB': 'Alberta', 302 'BC': 'British Colum,', 303 'MB': 'Manitoba', 304 'NB': 'New Brunsw,', 305 'NF': 'Newfoundland', 306 'NT': 'Northwest Territor,', 307 'NS': 'Nova Sco,', 308 'ON': 'Ontario', 309 'PE': 'Prince Edw, Island', 310 'QC': 'Quebec', 311 'SK': 'Saskatchewan', 312 'YT': 'Yukon', 313 'AGS': 'Aguascalientes', 314 'BCN': 'Baja Califor, Norte', 315 'BCS': 'Baja Califor, Sur', 316 'CAM': 'Campeche', 317 'CHIS': 'Chiapas', 318 'CHIH': 'Chihuahua', 319 'COAH': 'Coahuila', 320 'COL': 'Colima', 321 'DF': 'Distrito Fede,', 322 'DGO': 'Durango', 323 'GTO': 'Guanajuato', 324 'GRO': 'Guerrero', 325 'HGO': 'Hidalgo', 326 'JAL': 'Jalisco', 327 'EDM': 'Mexic, Estado de', 328 'MICH': 'Michoacan', 329 'MOR': 'Morelos', 330 'NAY': 'Nayarit', 331 'NL': 'Nuevo L,', 332 'OAX': 'Oaxaca', 333 'PUE': 'Puebla', 334 'QRO': 'Queretaro', 335 'QROO': 'Quintana ,', 336 'SLP': 'San L, Potosi', 337 'SIN': 'Sinaloa', 338 'SON': 'Sonora', 339 'TAB': 'Tabasco', 340 'TAMPS': 'Tamaulipas', 341 'TLAX': 'Tlaxcala', 342 'VER': 'Veracruz', 343 'YUC': 'Yucatan', 344 'ZAC': 'Zacatecas' 345 }; // Function to initialize IPINFO module 346 // @params: module settings 347 348 function init() { 349 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 350 _ref$defaultCountry = _ref.defaultCountry, 351 defaultCountry = _ref$defaultCountry === void 0 ? '' : _ref$defaultCountry, 352 _ref$showStateCheckli = _ref.showStateChecklist, 353 showStateChecklist = _ref$showStateCheckli === void 0 ? ['USA'] : _ref$showStateCheckli, 354 _ref$euChecklist = _ref.euChecklist, 355 euChecklist = _ref$euChecklist === void 0 ? ['AUT', 'BEL', 'BGR', 'HRV', 'CYP', 'CZE', 'DNK', 'EST', 'FIN', 'FRA', 'DEU', 'GRC', 'HUN', 'IRL', 'ITA', 'LVA', 'LTU', 'LUX', 'MLT', 'NLD', 'POL', 'PRT', 'ROM', 'SVK', 'SVN', 'ESP', 'SWE', 'GBR'] : _ref$euChecklist, 356 _ref$phoneProxyDataNa = _ref.phoneProxyDataName, 357 phoneProxyDataName = _ref$phoneProxyDataNa === void 0 ? 'phone-proxy' : _ref$phoneProxyDataNa, 358 _ref$phoneDataName = _ref.phoneDataName, 359 phoneDataName = _ref$phoneDataName === void 0 ? 'Phone' : _ref$phoneDataName, 360 _ref$countryDataName = _ref.countryDataName, 361 countryDataName = _ref$countryDataName === void 0 ? 'Country' : _ref$countryDataName, 362 _ref$ipDataName = _ref.ipDataName, 363 ipDataName = _ref$ipDataName === void 0 ? 'userIPAddr' : _ref$ipDataName, 364 _ref$locDataName = _ref.locDataName, 365 locDataName = _ref$locDataName === void 0 ? 'userGeoLoc' : _ref$locDataName, 366 _ref$postalDataName = _ref.postalDataName, 367 postalDataName = _ref$postalDataName === void 0 ? 'userPostalCode' : _ref$postalDataName, 368 _ref$stateDataName = _ref.stateDataName, 369 stateDataName = _ref$stateDataName === void 0 ? 'State' : _ref$stateDataName, 370 _ref$postal2DataName = _ref.postal2DataName, 371 postal2DataName = _ref$postal2DataName === void 0 ? 'PostalCode' : _ref$postal2DataName, 372 _ref$optInEmailDataNa = _ref.optInEmailDataName, 373 optInEmailDataName = _ref$optInEmailDataNa === void 0 ? 'lead[exmailers]' : _ref$optInEmailDataNa, 374 _ref$optInHiddenDataN = _ref.optInHiddenDataNameList,
375 optInHiddenDataNameList = _ref$optInHiddenDataN === void 0 ? ['lead[optin_phone]', 'lead[sms_text]'] : _ref$optInHiddenDataN, 376 _ref$formClass = _ref.formClass, 377 formClass = _ref$formClass === void 0 ? 'LeadForm' : _ref$formClass, 378 _ref$optInClass = _ref.optInClass, 379 optInClass = _ref$optInClass === void 0 ? 'opt-ins' : _ref$optInClass, 380 _ref$optInReqClass = _ref.optInReqClass, 381 optInReqClass = _ref$optInReqClass === void 0 ? 'opt-in-required' : _ref$optInReqClass, 382 _ref$disclaimerEuClas = _ref.disclaimerEuClass, 383 disclaimerEuClass = _ref$disclaimerEuClas === void 0 ? 'disclaimer-eu' : _ref$disclaimerEuClas, 384 _ref$disclaimerNonEuC = _ref.disclaimerNonEuClass, 385 disclaimerNonEuClass = _ref$disclaimerNonEuC === void 0 ? 'disclaimer-non-eu' : _ref$disclaimerNonEuC, 386 _ref$hiddenClass = _ref.hiddenClass, 387 hiddenClass = _ref$hiddenClass === void 0 ? 'hidden' : _ref$hiddenClass, 388 _ref$submitBtnClass = _ref.submitBtnClass, 389 submitBtnClass = _ref$submitBtnClass === void 0 ? 'btn-submit' : _ref$submitBtnClass, 390 _ref$submitValDefault = _ref.submitValDefault, 391 submitValDefault = _ref$submitValDefault === void 0 ? $(".".concat(submitBtnClass)).val() || $(".".concat(submitBtnClass)).text() : _ref$submitValDefault, 392 _ref$submitValEu = _ref.submitValEu, 393 submitValEu = _ref$submitValEu === void 0 ? 'Submit' : _ref$submitValEu, 394 _ref$btnDisabledClass = _ref.btnDisabledClass, 395 btnDisabledClass = _ref$btnDisabledClass === void 0 ? 'btn-disabled' : _ref$btnDisabledClass, 396 _ref$ipInfoUrl = _ref.ipInfoUrl, 397 ipInfoUrl = _ref$ipInfoUrl === void 0 ? 'https://ipinfo.io/?token=11627ae1b2831c' : _ref$ipInfoUrl, 398 _ref$pathToUtils = _ref.pathToUtils, 399 pathToUtils = _ref$pathToUtils === void 0 ? '/js/intl-tel-input-v12.1.6/js/utils.js' : _ref$pathToUtils; 400 401 var trackedCountry; // initialize intl-tel-input plugin 402 403 $("[data-sc-field-name=\"".concat(phoneProxyDataName, "\"]")).intlTelInput({ 404 initialCountry: 'auto', 405 utilsScript: pathToUtils, 406 autoPlaceholder: 'aggressive', 407 customPlaceholder: function customPlaceholder(selectedCountryPlaceholder, selectedCountryData) { 408 // remove parenthesis in placeholders 409 return selectedCountryPlaceholder.replace(/\(|\)/g, ''); 410 }, 411 geoIpLookup: function geoIpLookup(callback) { 412 $.get(ipInfoUrl, function () {}, 'jsonp').always(function (resp) { 413 // filtering so that we won't get 'undefined' 414 var phoneVal = '', 415 countryVal = resp && resp.country ? resp.country : '', 416 ipVal = resp && resp.ip ? resp.ip : '', 417 locVal = resp && resp.loc ? resp.loc : '', 418 postalVal = resp && resp.postal ? resp.postal : '', 419 stateVal = resp && resp.region ? resp.region : ''; // convert country code 420 421 trackedCountry = !defaultCountry.length ? mapCountry(countryVal) : defaultCountry.toUpperCase(); // doing reverse lookup to get 2-digit code of trackedCountry 422 423 var countryProp = getProp(countryList, trackedCountry); 424 callback(countryProp); // set initial values on page load 425 426 var setInfoValues = { 427 phoneVal: phoneVal, 428 trackedCountry: trackedCountry, 429 ipVal: ipVal, 430 locVal: locVal, 431 postalVal: postalVal, 432 phoneDataName: phoneDataName, 433 countryDataName: countryDataName, 434 ipDataName: ipDataName, 435 locDataName: locDataName, 436 postalDataName: postalDataName, 437 formClass: formClass 438 }; 439 setInfo(setInfoValues); // event listener to update country value 440 441 var updateCountryValues = { 442 phoneProxyDataName: phoneProxyDataName, 443 countryDataName: countryDataName, 444 stateDataName: stateDataName, 445 postal2DataName: postal2DataName, 446 stateVal: stateVal, 447 euChecklist: euChecklist, 448 showStateChecklist: showStateChecklist, 449 optInClass: optInClass, 450 optInEmailDataName: optInEmailDataName,
451 optInHiddenDataNameList: optInHiddenDataNameList, 452 optInReqClass: optInReqClass, 453 disclaimerEuClass: disclaimerEuClass, 454 disclaimerNonEuClass: disclaimerNonEuClass, 455 submitBtnClass: submitBtnClass, 456 submitValDefault: submitValDefault, 457 submitValEu: submitValEu, 458 btnDisabledClass: btnDisabledClass, 459 hiddenClass: hiddenClass 460 }; 461 updateCountry(updateCountryValues); 462 }); 463 } 464 }); // update phone to international number 465 466 updateIntlPhone(phoneProxyDataName, phoneDataName); 467 } // Function to convert 2-digit country code to 3-digit 468 // @params: 'string' = 2-digit country code 469 // @return: 'string' = 3-digit country code 470 471 472 function mapCountry(countryCode) { 473 var mappedCountry = countryCode.length ? countryList[countryCode.toUpperCase()] : countryCode; 474 return mappedCountry; 475 } // Function to get property of an object using a given value 476 // @params: 'object' = object list, 'string' = value 477 // @return: 'string' = property of an object 478 479 480 function getProp(objList, objVal) { 481 for (var prop in objList) { 482 if (objList[prop] === objVal) { 483 return prop; 484 } 485 } 486 } // Function to set initial values on page load 487 // @params: 'object' = collection of values 488 489 490 function setInfo(values) { 491 var phoneVal = values.phoneVal, 492 trackedCountry = values.trackedCountry, 493 ipVal = values.ipVal, 494 locVal = values.locVal, 495 postalVal = values.postalVal, 496 phoneDataName = values.phoneDataName, 497 countryDataName = values.countryDataName, 498 ipDataName = values.ipDataName, 499 locDataName = values.locDataName, 500 postalDataName = values.postalDataName, 501 formClass = values.formClass; // Function to set value for existing input element or create new hidden fields 502 503 function setter(inputDataName, value, formClass) { 504 // check if input field already exist and change its value 505 var $input = $("[data-sc-field-name=\"".concat(inputDataName, "\"]")); 506 507 if ($input.length) { 508 $input.val(value); 509 } // else create input element and set the value 510 else { 511 var inputField = "<input data-sc-field-name=\"".concat(inputDataName, "\" type=\"hidden\" value=\"").concat(value, "\" />"); 512 $(".".concat(formClass)).append(inputField); 513 } 514 } 515 516 setter(phoneDataName, phoneVal, formClass); 517 setter(countryDataName, trackedCountry, formClass); 518 setter(ipDataName, ipVal, formClass); 519 setter(locDataName, locVal, formClass); 520 setter(postalDataName, postalVal, formClass); 521 } // Function to check if country code match our checklist 522 // @params: 'array' = country list, 'string' = country code 523 // @return: 'boolean' 524 525 526 function countryMatch(checkList, trackedCountry) { 527 return checkList.indexOf(trackedCountry) > -1; 528 } // Function to check country and toggle opt-ins, toggle state 529 // @params: 'object' = collection of values 530 531 532 function countryChecker(values) { 533 var euChecklist = values.euChecklist, 534 showStateChecklist = values.showStateChecklist, 535 trackedCountry = values.trackedCountry, 536 optInClass = values.optInClass, 537 optInEmailDataName = values.optInEmailDataName, 538 optInHiddenDataNameList = values.optInHiddenDataNameList, 539 disclaimerEuClass = values.disclaimerEuClass, 540 disclaimerNonEuClass = values.disclaimerNonEuClass, 541 stateDataName = values.stateDataName, 542 postal2DataName = values.postal2DataName, 543 optInReqClass = values.optInReqClass, 544 submitBtnClass = values.submitBtnClass, 545 submitValDefault = values.submitValDefault, 546 submitValEu = values.submitValEu, 547 btnDisabledClass = values.btnDisabledClass, 548 hiddenClass = values.hiddenClass; 549 var $optIn = $(".".concat(optInClass)); 550 var $disclaimerEuClass = $(".".concat(disclaimerEuClass)); 551 var $disclaimerNonEuClass = $(".".concat(disclaimerNonEuClass)); // toggle opt-ins, 552 // toggle disclaimer, 553 // check required opt-in and toggle/disable submit button 554 // change submit button value based on EU checlist 555 556 // if (countryMatch(euChecklist, trackedCountry)) { 557 if (trackedCountry !== 'USA') { 558 $optIn.removeClass(hiddenClass); 559 $optIn.find('input[type="checkbox"]').prop('checked', false); 560 $disclaimerEuClass.removeClass(hiddenClass); 561 $disclaimerNonEuClass.addClass(hiddenClass); 562 optInRequiredOn(optInReqClass, submitBtnClass, btnDisabledClass); 563 $(".".concat(submitBtnClass)).val(submitValEu).text(submitValEu); 564 } else { 565 $optIn.addClass(hiddenClass); 566 $optIn.find('input[type="checkbox"]').prop('checked', true); 567 $disclaimerEuClass.addClass(hiddenClass); 568 $disclaimerNonEuClass.removeClass(hiddenClass); 569 optInRequiredOff(optInReqClass, submitBtnClass, btnDisabledClass); 570 $(".".concat(submitBtnClass)).val(submitValDefault).text(submitValDefault); 571 } // sync the visible and hidden opt-ins 572 573
574 optInSync(optInEmailDataName, optInHiddenDataNameList); // toggle state and postal field 575 576 var $state = $("[data-sc-field-name=\"".concat(stateDataName, "\"]")); 577 var $postal = $("[data-sc-field-name=\"".concat(postal2DataName, "\"]")); 578 579 if (countryMatch(showStateChecklist, trackedCountry)) { 580 $state.removeClass(hiddenClass); 581 $(".form__label__zip").removeClass(hiddenClass); 582 $postal.removeClass(hiddenClass); 583 $postal.val(''); 584 } else { 585 $state.addClass(hiddenClass); 586 $(".form__label__zip").addClass(hiddenClass); 587 $state.val(''); 588 $postal.addClass(hiddenClass); 589 $postal.val('00000'); 590 } 591 } // Function to toggle/disable submit button if required opt-in is not checked 592 // @params: 'string' optInReqClass, submitBtnClass 593 594 595 function optInRequired(optInReqClass, submitBtnClass, btnDisabledClass) { 596 var $optInReq = $(".".concat(optInReqClass)), 597 optInReqNum = $optInReq.length; // get how many are required opt-ins 598 // check how many required opt-ins are 'checked' 599 600 var optInCheck = $optInReq.filter(function () { 601 return $(this).prop('checked'); 602 }); // if all required opt-ins are checked, enable submit button 603 604 var $submitBtn = $(".".concat(submitBtnClass)); 605 606 if (optInCheck.length === optInReqNum) { 607 $submitBtn.prop('disabled', false); 608 $submitBtn.removeClass(btnDisabledClass); 609 } else { 610 $submitBtn.prop('disabled', true); 611 $submitBtn.addClass(btnDisabledClass); 612 } 613 } // Function for load/event listener for optInRequired() 614 // @params: 'string' optInReqClass, submitBtnClass, btnDisabledClass 615 616 617 function optInRequiredOn(optInReqClass, submitBtnClass, btnDisabledClass) { 618 var $optInReq = $(".".concat(optInReqClass)); 619 620 if ($optInReq.length) { 621 // on page load 622 optInRequired(optInReqClass, submitBtnClass, btnDisabledClass); // on-change 623 624 $optInReq.on('change', function () { 625 optInRequired(optInReqClass, submitBtnClass, btnDisabledClass); 626 }); 627 } 628 } // Function to remove load/event listener for optInRequired() 629 // @params: 'string' optInReqClass, submitBtnClass, btnDisabledClass 630 631 632 function optInRequiredOff(optInReqClass, submitBtnClass, btnDisabledClass) { 633 $(".".concat(optInReqClass)).off(); 634 var $submitBtn = $(".".concat(submitBtnClass)); 635 $submitBtn.prop('disabled', false); 636 $submitBtn.removeClass(btnDisabledClass); 637 } // Function to update phone input to International number 638 // @params: 'string' = phone proxy id, phone id 639 640 641 function updateIntlPhone(phoneProxyDataName, phoneDataName) { 642 // listen to "keyup", but also "change" to update when the user selects a country 643 var $phoneProxy = $("[data-sc-field-name=\"".concat(phoneProxyDataName, "\"]")); 644 $phoneProxy.on('keyup change', function () { 645 var intlNumber = $phoneProxy.intlTelInput('getNumber'); 646 647 /*if (intlNumber) { 648 if (intlNumber.match(/^\+1/)) { 649 // if USA 650 // remove country code 651 var natlNumber = intlNumber.slice(2); 652 $("[data-sc-field-name=\"".concat(phoneDataName, "\"]")).val(natlNumber); 653 } else { 654 $("[data-sc-field-name=\"".concat(phoneDataName, "\"]")).val(intlNumber); 655 } 656 }*/ 657 $("[data-sc-field-name=\"".concat(phoneDataName, "\"]")).val(intlNumber); 658 }); 659 } // Function to update country by listening to onchange event 660 // @params: 'object' = collection of values 661 662 663 function updateCountry(values) { 664 var phoneProxyDataName = values.phoneProxyDataName, 665 countryDataName = values.countryDataName, 666 stateDataName = values.stateDataName, 667 stateVal = values.stateVal; 668 $("[data-sc-field-name=\"".concat(phoneProxyDataName, "\"]")).on('countrychange', function (e, countryData) { 669 // update country value 670 var countryCode = mapCountry(countryData.iso2); 671 $("[data-sc-field-name=\"".concat(countryDataName, "\"]")).val(countryCode); 672 values.trackedCountry = countryCode; // this set the value of State for some forms that have State field 673 674 var $state = $("[data-sc-field-name=\"".concat(stateDataName, "\"]")); 675 676 if ($state.length) { 677 STATEHANDLER.countryChangeHandler(countryDataName, stateDataName, true);
677 // get code of State 678 679 var stateProp = getProp(stateList, stateVal); 680 681 if (stateProp) { 682 $state.val(stateProp); 683 } 684 } // country checker 685 686 687 countryChecker(values); 688 }); 689 } // Function to also check the hidden checkbox when the required opt-in is checked 690 // @params: 'string' = email opt-in name, phone opt-in name 691 692 693 function optInSync(optInEmailDataName, optInHiddenDataNameList) { 694 $("[data-sc-field-name=\"".concat(optInEmailDataName, "\"]")).on('change', function () { 695 if ($(this).prop('checked')) { 696 var _iteratorNormalCompletion = true; 697 var _didIteratorError = false; 698 var _iteratorError = undefined; 699 700 try { 701 for (var _iterator = optInHiddenDataNameList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { 702 var dataName = _step.value; 703 $("[data-sc-field-name=\"".concat(dataName, "\"]")).prop('checked', true); 704 } 705 } catch (err) { 706 _didIteratorError = true; 707 _iteratorError = err; 708 } finally { 709 try { 710 if (!_iteratorNormalCompletion && _iterator.return != null) { 711 _iterator.return(); 712 } 713 } finally { 714 if (_didIteratorError) { 715 throw _iteratorError; 716 } 717 } 718 } 719 } else { 720 var _iteratorNormalCompletion2 = true; 721 var _didIteratorError2 = false;
722 var _iteratorError2 = undefined; 723 724 try { 725 for (var _iterator2 = optInHiddenDataNameList[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { 726 var _dataName = _step2.value; 727 $("[data-sc-field-name=\"".concat(_dataName, "\"]")).prop('checked', false); 728 } 729 } catch (err) { 730 _didIteratorError2 = true; 731 _iteratorError2 = err; 732 } finally { 733 try { 734 if (!_iteratorNormalCompletion2 && _iterator2.return != null) { 735 _iterator2.return(); 736 } 737 } finally { 738 if (_didIteratorError2) { 739 throw _iteratorError2; 740 } 741 } 742 } 743 } 744 }); 745 } // ************************************************************************** 746 // PUBLIC 747 // ************************************************************************** 748 749 750 return { 751 init: init 752 }; 753}(jQuery, STATEHANDLER); // end IPINFO Module
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.