1var autocomplete = { 2 pro6pp_cache: {}, 3 autoCompleteTimer: 0, 4 pro6pp_auth_key: "1FulN4sT6ztTIntC", 5 6 inputPostalCode: 'PostalCode', 7 inputHouseNumber: 'HouseNumber', 8 inputCountryCode: 'CountryCode', 9 inputStreet: 'Street', 10 inputCity: 'City', 11 inputCoordinates: 'coords', 12 13 activePrefix: '', 14 15 initialize: function (formElement) { 16 17 let matchedElements = formElement.querySelectorAll( 18 "[name*='." + autocomplete.inputPostalCode + "'], [name='" + autocomplete.inputPostalCode + "'], " + 19 "[name*='." + autocomplete.inputHouseNumber + "'], [name='" + autocomplete.inputHouseNumber + "']" 20 ); 21 22 matchedElements.forEach(function (element) { 23 let prefix = ''; 24 let name = element.getAttribute('name'); 25 let dotIndex = name.indexOf('.'); 26 if (dotIndex !== -1) { 27 prefix = name.substring(0, dotIndex) + '.'; 28 } 29 30 element.onkeyup = function () { 31 autocomplete.autocomplete(formElement, prefix); 32 }; 33 }); 34 35 }, 36 37 pro6pp_cached_get: function (obj, url, callback) { 38 if (autocomplete.pro6pp_cache.hasOwnProperty(url)) { 39 callback(obj, autocomplete.pro6pp_cache[url]); 40 } else { 41 pubbleUtility.getJson(url + "&callback=?", {}, function (data) { 42 autocomplete.pro6pp_cache[url] = data; 43 callback(obj, data); 44 }); 45 } 46 }, 47 48 autocomplete: function (formElement, prefix) { 49 50 clearTimeout(autocomplete.autoCompleteTimer); 51 autocomplete.autoCompleteTimer = setTimeout(function () { 52 53 autocomplete.activePrefix = prefix; 54 55 var countryField = formElement.querySelector("[name='" + prefix + autocomplete.inputCountryCode + "']") 56 || formElement.querySelector("[name='" + autocomplete.inputCountryCode + "']"); 57 58 if (countryField && countryField.value && countryField.value !== 'NL') { 59 return; 60 } 61 62 var postcode; 63 var streetnumber; 64 65 if (formElement.querySelector("[name='" + prefix + autocomplete.inputPostalCode + "']")) { 66 postcode = formElement.querySelector("[name='" + prefix + autocomplete.inputPostalCode + "']").value; 67 } 68 69 if (formElement.querySelector("[name='" + prefix + autocomplete.inputHouseNumber + "']")) { 70 streetnumber = formElement.querySelector("[name='" + prefix + autocomplete.inputHouseNumber + "']").value; 71 } 72 73 // Trigger on '5408xb' and on '5408 xb' 74 var nl_sixpp_regex = /[0-9]{4,4}\s?[a-zA-Z]{2,2}/; 75 if (nl_sixpp_regex.test(postcode)) { 76 var url = "//api.pro6pp.nl/v1/autocomplete?auth_key=" 77 + autocomplete.pro6pp_auth_key + "&nl_sixpp=" + postcode 78 + "&streetnumber=" + streetnumber; 79 80 if (window.location.protocol == 'https:') { 81 url = "//api.pro6pp.nl/v1/autocomplete?auth_key=" 82 + autocomplete.pro6pp_auth_key + "&nl_sixpp=" + postcode 83 + "&streetnumber=" + streetnumber; 84 } 85 url = encodeURI(url); 86 autocomplete.pro6pp_cached_get(formElement, url, autocomplete.fillin); 87 } else { 88 if (formElement.querySelector("[name='" + prefix + autocomplete.inputStreet + "']")) { 89 formElement.querySelector("[name='" + prefix + autocomplete.inputStreet + "']").value = ''; 90 } 91 92 if (formElement.querySelector("[name='" + prefix + autocomplete.inputCity + "']")) { 93 formElement.querySelector("[name='" + prefix + autocomplete.inputCity + "']").value = ''; 94 } 95 96 } 97 }, 200); 98 }, 99 100 101 fillin: function (formElement, json) { 102 if (json.status == undefined) { 103 json = JSON.parse(json.substring(2)); 104 } 105 106 if (json.status == 'ok') { 107 if (json.results.length == 1) { 108 109 if (formElement.querySelector("[name='" + autocomplete.activePrefix + autocomplete.inputStreet + "']")) { 110 formElement.querySelector("[name='" + autocomplete.activePrefix + autocomplete.inputStreet + "']").value = json.results[0].street; 111 } 112 113 if (formElement.querySelector("[name='" + autocomplete.activePrefix + autocomplete.inputCity + "']")) { 114 formElement.querySelector("[name='" + autocomplete.activePrefix + autocomplete.inputCity + "']").value = json.results[0].city; 115 } 116 117 if (formElement.querySelector("[name='" + autocomplete.activePrefix + autocomplete.inputCo
117ordinates + "']")) { 118 formElement.querySelector("[name='" + autocomplete.activePrefix + autocomplete.inputCoordinates + "']").value = json.results[0].lat + "," + json.results[0].lng; 119 } 120 121 } 122 } 123 } 124};
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.