PageSourceSearch

https://www.dehoefslag.nl/js/pubble.autocomplete.js?v=2023

js dehoefslag.nl collected 2026-10-02 11:53:08 UTC 5,057 bytes, 124 lines download raw bytes

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.