PageSourceSearch

https://hospicesagen.dk/wp-content/themes/hello-theme-child-master/js/payment.js?ver=1.0.0

js hospicesagen.dk collected 2026-10-09 18:13:47 UTC 9,500 bytes, 237 lines download raw bytes

1jQuery(document).ready(function(){
2    localStorage.removeItem('paymentSuccess');
3    localStorage.removeItem('paymentMemberSuccess');
4});
5
6jQuery(document).on('gform_confirmation_loaded', function(event, formId){
7    if(formId == 4 && localStorage.getItem('paymentSuccess') === 'true'){
8        localStorage.removeItem('paymentSuccess');
9        if (document.getElementById('gform_4')) {
10            const payButton = document.getElementById('paybeforesend');
11            const nextSibling = payButton.nextSibling;
12            if (nextSibling && nextSibling.tagName === 'SPAN' && nextSibling.innerText === 'Betaling gennemført') {
13                nextSibling.remove();
14            }
15        }
16    }
17    if(formId == 5 && localStorage.getItem('paymentMemberSuccess') === 'true'){
18        localStorage.removeItem('paymentMemberSuccess');
19        if (document.getElementById('gform_5')) {
20            const payButtonMember = document.getElementById('paybeforesendmember');
21            const nextSiblingMember = payButtonMember.nextSibling;
22            if (nextSiblingMember && nextSiblingMember.tagName === 'SPAN' && nextSiblingMember.innerText === 'Betaling gennemført') {
23                nextSiblingMember.remove();
24            }
25        }
26    }
27});
28
29jQuery(document).on('gform_post_render', function(){
30		if (document.getElementById('gform_4')) {
31        const values = [100, 200, 300, 500, 1000, 1500, 2500, 5000];
32        const slider = document.querySelector('.slider input[type="range"]');
33        const input = document.querySelector('.amount-field input');
34    
35
36        slider.oninput = function() {
37            input.value = values[slider.value];
38        }
39
40        slider.oninput();
41
42    }
43
44    if (localStorage.getItem('paymentSuccess') === 'true') {
45        const payButton = document.getElementById('paybeforesend');
46        const label = document.createElement('span');
47        label.innerText = 'Betaling gennemført';
48        label.style.marginLeft = '10px';
49        payButton.parentNode.insertBefore(label, payButton.nextSibling);
50        
51        document.getElementById('gform_submit_button_4').style.visibility = 'visible';
52    }
53
54    if (localStorage.getItem('paymentMemberSuccess') === 'true') {
55        const payButtonMember = document.getElementById('paybeforesendmember');
56        const labelMember = document.createElement('span');
57        labelMember.innerText = 'Betaling gennemført';
58        labelMember.style.marginLeft = '10px';
59        payButtonMember.parentNode.insertBefore(labelMember, payButtonMember.nextSibling);
60        
61        document.getElementById('gform_submit_button_5').style.visibility = 'visible';
62    }
63
64    if (localStorage.getItem('paymentSuccess') === 'true' || localStorage.getItem('paymentMemberSuccess') === 'true') {
65        return;
66    }
67    const form = document.getElementById('gform_4');
68    if ( form ) {
69        form.addEventListener('input', function() {
70            let allFilled = true;
71            const requiredFields = form.querySelectorAll('[aria-required="true"]');
72            const privacyCheckbox = form.querySelector('.privacy-required input[type="checkbox"]');
73            requiredFields.forEach(function(field) {
74            if (!field.value) {
75                allFilled = false;
76            }
77            });
78            const payButton = document.getElementById('paybeforesend');
79            if (allFilled && privacyCheckbox.checked) {
80                payButton.classList.remove('payment_not_active');
81            } else {
82                payButton.classList.add('payment_not_active');
83            }
84        });
85    }
86
87    const formMember = document.getElementById('gform_5');
88    if( formMember ) {
89        formMember.addEventListener('input', function() {
90            let allFilled = true;
91            const requiredFields = formMember.querySelectorAll('[aria-required="true"]');
92            const privacyCheckbox = formMember.querySelector('.privacy-required input[type="checkbox"]');
93            requiredFields.forEach(function(field) {
94            if (!field.value) {
95                allFilled = false;
96            }
97            });
98            const payButtonMember = document.getElementById('paybeforesendmember');
99            if (allFilled && privacyCheckbox.checked) {
100                payButtonMember.classList.remove('payment_not_active');
101            } else {
102                payButtonMember.classList.add('payment_not_active');
103            }
104        });
105    }
106    
107
108	if ( form ) {
109        document.getElementById('paybeforesend').addEventListener('click', function () {
110            resetEpayWindowState();
111
112            var amount = document.querySelector('.amount-field input');
113            amount = getPriceInMinorUnits(parseFloat(amount.value));
114
115
116            getHash(amount).then(function(response) {
117                var parsedResponse = JSON.parse(response);
118                var hash = parsedResponse.hash;
119                // console.log("Hash: " + hash);
120
121                paymentwindow = new PaymentWindow({
122                    'merchantnumber': "6686842",
123                    'amount': amount,
124                    'currency': "DKK",
125                    'instantcapture': "1",
126                    'windowstate': "4",
127                    'iframeheight': "600",
128                    'iframewidth': "800",
129                    'hash': hash
130                });
131
132                paymentwindow.on('completed', function () {
133                    localStorage.setItem('paymentSuccess', 'true');
134                    var hiddenPaymentField = document.querySelector('#gform_4 .hidden_payment input');
135                    hiddenPaymentField.value = response;
136                    // console.log("Setting hidden payment field to: " + response);
137                    document.getElementById('gform_4').submit();
138                    var iframe = document.getElementById('epay_frame');
139                    if (iframe) {
140                        iframe.remove();
141                    }
142                    paymentwindow.close();
143                });
144                paymentwindow.append('payment4');
145                paymentwindow.open();
146            }).catch(function(error) {
147                console.error("Failed to get hash:", error);
148            });
149        });
150    }
151
152    if ( formMember ) {
153        document.getElementById('paybeforesendmember').addEventListener('click', function (e) {
154            resetEpayWindowState();
155
156            var amountmember = document.querySelector('.memberprice input');
157            var cleanamount = amountmember.value.replace(/\D/g, '');
158            cleanamount = getPriceInMinorUnits(parseFloat(cleanamount));
159
160            getHash(cleanamount).then(function(response) {
161                var parsedResponse = JSON.parse(response);
162                var hash = parsedResponse.hash;
163                // console.log("Hash: " + hash);
164
165                paymentmemberwindow = new PaymentWindow({
166                    'merchantnumber': "6686842",
167                    'amount': cleanamount,
168                    'currency': "DKK",
169                    'instantcapture': "1",
170                    'windowstate': "4",
171                    'iframeheight': "600",
172                    'iframewidth': "800",
173                    'hash': hash
174                });
175
176                paymentmemberwindow.on('completed', function () {
177                    localStorage.setItem('paymentMemberSuccess', 'true');
178                    var hiddenPaymentField = document.querySelector('#gform_5 .hidden_payment input');
179                    hiddenPaymentField.value = response;
180                    // console.log("Setting hidden payment field to: " + response);
181                    document.getElementById('gform_5').submit();
182                    var iframe = document.getElementById('epay_frame');
183                    if (iframe) {
184                        iframe.remove();
185                    }
186                    paymentmemberwindow.close();
187                });
188                paymentmemberwindow.append('payment5');
189                paymentmemberwindow.open();
190            }).catch(function(error) {
191                console.error("Failed to get hash:", error);
192            });
193            
194        });
195    }
196
197
198});
199
200function resetEpayWindowState() {
201    var iframe = document.getElementById('epay_frame');
202    if (iframe) {
203        iframe.remove();
204    }
205
206    if (typeof paymentwindow !== 'undefined' && paymentwindow && typeof paymentwindow.close === 'function') {
207        paymentwindow.close();
208    }
209
210    if (typeof paymentmemberwindow !== 'undefined' && paymentmemberwindow && typeof paymentmemberwindow.close === 'function') {
211        paymentmemberwindow.close();
212    }
213}
214
215function getHash(amount) {
216    return new Promise(function(resolve, reject) {
217        var xhr = new XMLHttpRequest();
218        xhr.open("POST", "https://hospicesagen.dk/wp-content/themes/hello-theme-child-master/paymenthash.php", true);
219        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
220        xhr.onreadystatechange = function () {
221            if (xhr.readyState === 4) {
222                if (xhr.status === 200) {
223                    // console.log("Received hash: " + hash);
224                    var response = xhr.responseText;
225                    resolve(response);
226                } else {
227                    reject(xhr.status);
228                }
229            }
230        };
231        xhr.send("amount=" + amount);
232    });
233}
234
235function getPriceInMinorUnits(priceInDkk) {
236    return Math.round(priceInDkk * 100);
237}

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.