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.