1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl_NL" lang="nl_NL"> 3<head> 4<meta content="text/html; charset=UTF-8" http-equiv="content-type"/> 5<title>Uw steun maakt een wereld van verschil!</title> 6<meta name="description" content="Wil u mee helpen om wilde dieren in Vlaanderen een stem te geven? Wil u er mee voor zorgen dat wilde dieren de vrijheid en ruimte krijgen om te floreren? Geef onze projecten en onze werking een steuntje in de rug. Elke gift, hoe groot of hoe klein ook, helpt." /> 7<meta name="keywords" content="vogelbescherming, donatie, steun, doneren, steun, bescherming van wilde dieren," /> 8<link type="text/css" href="https://doneer.vogelbescherming.be/themes/default/css/style_v2.css?hash=0bb9c864f817574922b301f24e909104" rel="stylesheet" /> 9
10<script type="text/javascript"> 11// <![CDATA[ 12 const cacheVersion = "26090"; 13var gamonitoring_previous_page = sessionStorage.getItem('gamonitoring_previous_page') || document.referrer || "https:\/\/doneer.vogelbescherming.be"; 14var gamonitoring_session_id = sessionStorage.getItem('gamonitoring_session_id') || String(Math.floor(Math.random() * 8999999999) + 1000000000)+'.'+String(Math.floor(Date.now()/1000)); 15var gamonitoring_v2_client_id = gamonitoring_session_id; 16var gamonitoring_v2_session_id = gamonitoring_v2_client_id.replace(/^.*\./, ''); 17 18 var gamonitoring_sc = ''; 19 if(!sessionStorage.getItem('gamonitoring_session_id')) 20 gamonitoring_sc = 'start'; 21 if(typeof(monitoringvga)=='undefined'){ 22 monitoringvga=1; 23 monitoring_serialize=serialize=function(n){var e=[];for(var o in n)n.hasOwnProperty(o)&&n[o]&&e.push(encodeURIComponent(o)+"="+encodeURIComponent(n[o]));return e.join("&")}; 24 try{ 25 var head = document.getElementsByTagName('HEAD')[0]; 26 document.addEventListener('DOMContentLoaded', function(event) { 27 28 29 var monitoringparams = {z:Math.random(),cid:"doneer.vogelbescherming.be\/"
29+gamonitoring_session_id,dl:"https:\/\/doneer.vogelbescherming.be\/VOGEL\/b:steps\/cid=1",sc:gamonitoring_sc,dr:gamonitoring_previous_page,cd:"2026-10-02:04.57.16-6abf1d8c11cd8",dt:window.location.host+'/'+"donations",ul:"nl-NL",ds:"web",}; 30 var inputs = document.querySelectorAll('input[type=hidden][name=context_form_id]'), i; 31 32 var link_v2 = document.createElement('link'); 33 monitoringparams.cid = gamonitoring_v2_client_id; 34 monitoringparams.sid = gamonitoring_v2_session_id; 35 link_v2.rel = 'stylesheet'; 36 link_v2.type = 'text/css'; 37 link_v2.href = 'https://monitoring.iraiser.eu/v2/check.css?'+monitoring_serialize(monitoringparams); 38 head.appendChild(link_v2); 39 var input_v2_client_id = document.createElement("input"); 40 input_v2_client_id.setAttribute("type", "hidden"); 41 input_v2_client_id.setAttribute("name", "private_monitoring_v2_client_id"); 42 input_v2_client_id.setAttribute("value", gamonitoring_v2_client_id); 43 var input_v2_session_id = document.createElement("input"); 44 input_v2_session_id.setAttribute("type", "hidden"); 45 input_v2_session_id.setAttribute("name", "private_monitoring_v2_session_id"); 46 input_v2_session_id.setAttribute("value", gamonitoring_v2_session_id); 47 48 for (i = 0; i < inputs.length; ++i) { 49 inputs[i].parentNode.insertBefore(input_v2_client_id, inputs[i]); 50 inputs[i].parentNode.insertBefore(input_v2_session_id, inputs[i]); 51 } 52 }); 53 window.onerror = function (eventOrMessage, url, lineNumber, colNumber, error) { 54 55 var monitoringerrorparams = {z:Math.random(),cid:"doneer.vogelbescherming.be\/"
55+gamonitoring_session_id,t:"event",ec:"JSError",ev:1,ea:"\/VOGEL\/b:steps\/cid=1\/",}; 56 57 if (!eventOrMessage) { 58 return; 59 } 60 if (typeof eventOrMessage !== 'string') { 61 error = eventOrMessage.error; 62 url = eventOrMessage.filename || eventOrMessage.fileName; 63 lineNumber = eventOrMessage.lineno || eventOrMessage.lineNumber; 64 colNumber = eventOrMessage.colno || eventOrMessage.columnNumber; 65 eventOrMessage = eventOrMessage.message || eventOrMessage.name || error.message || error.name; 66 } 67 if (error && error.stack) { 68 eventOrMessage = [eventOrMessage, '; Stack: ', error.stack, '.'].join(''); 69 } 70 var jsFile = (/[^/]+\.js/i.exec(url || '') || [])[0] || 'inline', 71 eventOrMessage = eventOrMessage.replace(/https?\:\/\/[^/]+/gi, '').replace(/[?&]context_form_[^ &]+/gi, ''); 72 stack = [eventOrMessage, ' > ' + jsFile, ':', lineNumber || '?', ':', colNumber || '?'].join('').substring(0,450); 73 monitoringerrorparams.ea += jsFile; 74 monitoringerrorparams.el = stack; 75 76 77 monitoringerrorparams.cid = gamonitoring_v2_client_id; 78 monitoringerrorparams.sid = gamonitoring_v2_session_id; 79 var link_v2 = document.createElement('link'); 80 link_v2.rel = 'stylesheet'; 81 link_v2.type = 'text/css'; 82 link_v2.href = 'https://monitoring.iraiser.eu/v2/error.css?'+monitoring_serialize(monitoringerrorparams); 83 head.appendChild(link_v2); 84 85 } 86 } catch (error) {console.error(error);} 87 sessionStorage.setItem('gamonitoring_previous_page',gamonitoring_previous_page); 88 sessionStorage.setItem('gamonitoring_session_id',gamonitoring_session_id); 89 } 90 91// ]]> 92</script>
92<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/jquery-1.11.2.min.js?hash=5790ead7ad3ba27397aedfa3d263b867" ></script>
vendor: 1 bytes, line 92
92
93<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/jquery.patch.min.js?hash=8c3155becb5ec93b830922ca82081911" ></script>
vendor: 1 bytes, line 93
93
94<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/jquery.cookie-1.0.min.js?hash=6f6ed3cd5486dbf3bb9143eea287a6a5" ></script>
vendor: 1 bytes, line 94
94
95<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/dnterrors.min.js?hash=963e9b559d6046553f6886a5d4b49b61" ></script>
vendor: 1 bytes, line 95
95
96<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/jquery.config.min.js?hash=aae7bb01c8a0e6da615dd41aaafab4b5" ></script>
vendor: 1 bytes, line 96
96
97<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/dynamic_form.min.js?hash=d0fa20a4d6821cc2aeba535277ff9b6e" ></script>
vendor: 1 bytes, line 97
97
98<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/visibility-toggle.min.js?hash=780b99b3a0928dcc5ff82ee20f36a435" ></script>
vendor: 1 bytes, line 98
98
99<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/step1.min.js?hash=646b3e2fefe3d9fcf3b9a63c96e570cf" ></script>
vendor: 1 bytes, line 99
99
100<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/step2.min.js?hash=d035c72682b282a43f33cf7e48dc4bb7" ></script>
vendor: 1 bytes, line 100
100
101<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/step3.min.js?hash=6cbdee3e206df521e4ffe5ccd7aba99f" ></script>
vendor: 1 bytes, line 101
101
102<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/steps.min.js?hash=676a05ab0f7d16e826b07dfee858008a" ></script>
vendor: 1 bytes, line 102
102
103<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/payment_button.min.js?hash=b238dd83060ba9692f5ccd77a63835ac" ></script>
vendor: 1 bytes, line 103
103
104<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/iban-validator.min.js?hash=683493897ee764a5c9b485c6412e20d0" ></script>
vendor: 1 bytes, line 104
104
105<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/jquery.ir-priceinput.min.js?hash=07482ff72021c2c53278074abe52347f" ></script>
vendor: 1 bytes, line 105
105
106<script type="text/javascript" src="/themes/default/js/fn-usage-tracker.min.js?v=1" ></script>
vendor: 1 bytes, line 106
106
107<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/common.min.js?hash=735eaf678c23f50f35606e522ee0a175" ></script>
vendor: 1 bytes, line 107
107
108<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/js/country-numbers-validator.es.min.js?hash=219ff0fdc744dcfa0e847ae1e26ed2a9" ></script>
vendor: 1 bytes, line 108
108
109<script type="text/javascript"> 110// <![CDATA[ 111 old_console_log = console.log; 112 if(typeof $.cookie == 'undefined' || !$.cookie('DntManager')){ 113 console.log = function(){}; 114 } 115 if(typeof(String.prototype.replaceAll) == 'undefined') String.prototype.replaceAll = String.prototype.replace; 116FnUsageTracker.scriptUrl = "https:\/\/front-monitoring.app.iraiser.eu\/v1\/fn-usage.js";FnUsageTracker.scriptIntegrity = "sha512-houIUfN6dnGaTQrXtzvMezD8WOwEC3If30IVZ\/E7G+moLAn+nygaEv6cZp9phf34Z+b6+CXRAJ2nd1a6UxB0Pg==";FnUsageTracker.sampleRate = "0.1";FnUsageTracker.initFnUsage(); 117var ira_form_version = 'b'; 118Common.price_pattern = "\u20ac1,22" 119Common.price_default_currency = "EUR" 120Common.price_campaign_currency = "EUR" 121Common.price_currencies = {"EUR":"\u20ac","USD":"$","AED":"DH","AFN":"AFN","ALL":"Lek","AMD":"AMD","ANG":"ANG","AOA":"Kz","ARS":"$","AUD":"$","AWG":"AWG","AZN":"AZN","BAM":"KM","BBD":"BBD","BDT":"\u09f3","BHD":".\u062f.\u0628 ","BIF":"BIF","BMD":"BMD","BND":"B$","BOB":"BOB","BRL":"R$","BSD":"BSD","BTC":"BTC","BTN":"BTN","BWP":"BWP","BYN":"BYN","BYR":"p.","BZD":"BZD","CAD":"$","CDF":"CDF","CHF":"CHF","CLF":"CLF","CLP":"$","CNY":"CN\u00a5","COP":"$","CRC":"CRC","CUC":"CUC","CUP":"CUP","CVE":"CVE","CYP":"\u00a3","CZK":"K\u010d","DJF":"DJF","DKK":"DKK","DOP":"DOP","DZD":"D.A.","EGP":"E\u00a3","ERN":"ERN","ETB":"ETB","FJD":"FJD","FKP":"FKP","GBP":"\u00a3","GEL":"GEL","GGP":"GGP","GHS":"GH\u20b5","GIP":"GIP","GMD":"GMD","GNF":"GNF","GTQ":"Q","GYD":"GYD","HKD":"$","HNL":"HNL","HRK":"kn","HTG":"HTG","HUF":"Ft","IDR":"Rp","ILS":"\u20aa","IMP":"IMP","INR":"\u20b9","IQD":"\u062f.\u0639","IRR":"IRR","ISK":"kr","JEP":"JEP","JMD":"JMD","JOD":"\u062f.\u0623","JPY":"\u00a5","KES":"KES","KGS":"KGS","KHR":"KHR","KMF":"KMF","KPW":"KPW","KRW":"\u20a9","KWD":"\u062f.\u0643 ","KYD":"KYD","KZT":"KZT","LAK":"LAK","LBP":"\u0644.\u0644.","LKR":"LKR","LRD":"LRD","LSL":"LSL","LTL":"LTL","LVL":"LVL","LYD":"LYD","MAD":"\u062f.\u0645","MDL":"MDL","MGA":"MGA","MKD":"\u0434\u0435\u043d","MMK":"MMK","MNT":"MNT","MOP":"MOP","MRO":"MRO","MUR":"MUR","MVR":"MVR","MWK":"MWK","MXN":"MX$","MYR":"RM","MZN":"MZN","NAD":"NAD","NGN":"\u20a6","NIO":"NIO","NOK":"kr","NPR":"NPR","NZD":"$","OMR":"\u0631.\u0639.","PAB":"PAB","PEN":"S\/.","PGK":"PGK","PHP":"\u20b1","PKR":"\u20a8","PLN":"z\u0142","PYG":"Gs","QAR":"QR","RON":"RON","RSD":"RSD","RUB":"\u0440\u0443\u0431","RWF":"RF","SAR":"SR","SBD":"SBD","SCR":"SCR","SDG":"SDG","SEK":"kr","SGD":"$","SHP":"SHP","SLL":"SLL","SOS":"SOS","SRD":"SRD","STD":"STD","SVC":"SVC","SYP":"SYP","SZL":"SZL","THB":"\u0e3f","TJS":"TJS","TMT":"TMT","TND":"DT","TOP":"TOP","TRY":"\u20ba","TTD":"TTD","TWD":"TWD","TZS":"TZS","UAH":"\u20b4","UGX":"UGX","UYU":"$U","UZS":"UZS","VEF":"VEF","VES":"Bs. S","VND":"\u20ab","VUV":"VUV","WST":"WST","XAF":"FCFA","XAG":"XAG","XAU":"XAU","XCD":"XCD","XDR":"XDR","XOF":"CFA","XPF":"XPF","YER":"YER","ZAR":"R","ZMK":"ZMK","ZMW":"ZK","ZWL":"ZWL"} 122Common.price_rates = {"AED":4.236866,"AFN":74.988531,"ALL":91.695487,"AMD":418.356726,"ANG":2.065498,"AOA":1057.91956,"ARS":1739.654766,"AUD":1.620135,"AWG":2.076613,"AZN":1.95743,"BAM":1.954638,"BBD":2.322919,"BDT":141.97498,"BGN":1.942142,"BHD":0.434841,"BIF":3448.039797,"BMD":1.153674,"BND":1.465867,"BOB":13.903734,"BRL":5.928844,"BSD":1.153314,"BTC":1.4927858e-5,"BTN":110.144042,"BWP":15.598727,"BYN":3.508614,"BYR":22612.013117,"BZD":2.319621,"CAD":1.604022,"CDF":2664.987492,"CHF":0.943054,"CLF":0.027901,"CLP":1101.678141,"CNY":7.741731,"CNH":7.745209,"COP":3594.917836,"CRC":519.491162,"CUC":1.153674,"CUP":30.572365,"CVE":110.199486,"CZK":24.290647,"DJF":205.387897,"DKK":7.47526,"DOP":68.109509,"DZD":154.140988,"EGP":59.883186,"ERN":17.305112,"ETB":188.391501,"EUR":1,"FJD":2.552446,"FKP":0.855023,"GBP":0.856199,"GEL":3.000626,"GGP":0.855023,"GHS":13.246125,"GIP":0.855023,"GMD":85.372255,"GNF":10140.235297,"GTQ":8.807878,"GYD":241.296549,"HKD":9.049149,"HNL":30.955597,"HRK":7.534995,"HTG":150.744955,"HUF":366.842417,"IDR":20395.805097,"ILS":3.514034,"IMP":0.855023,"INR":110.680615,"IQD":1510.895222,"IRR":1585811.628467,"ISK":139.963655,"JEP":0.855023,"JMD":182.011794,"JOD":0.817959,"JPY":178.6764,"KES":149.56209,"KGS":100.888672,"KHR":4676.361765,"KMF":491.465244,"KPW":1038.307092,"KRW":1568.962454,"KWD":0.356093,"KYD":0.961129,"KZT":516.313051,"LAK":25803.659678,"LBP":103735.922549,"LKR":379.564348,"LRD":201.259479,"LSL":18.736761,"LTL":3.4065,"LVL":0.697847,"LYD":7.318649,"MAD":10.9341,"MDL":20.080062,"MGA":4976.041734,"MKD":61.488445,"MMK":2422.087363,"MNT":4152.688475,"MOP":9.31812,"MRU":46.318464,"MUR":54.32717,"MVR":17.778191,"MWK":1999.911049,"MXN":19.796091,"MYR":4.699715,"MZN":73.718216,"NAD":18.736761,"NGN":1528.629342,"NIO":42.44587,"NOK":10.782037,"NPR":176.23123,"NZD":2.002749,"OMR":0.443584,"PAB":1.153314,"PEN":3.876379,"PGK":5.132038,"PHP":72.53726,"PKR":319.738015,"PLN":4.344171,"PYG":6936.876015,"QAR":4.215694,"RON":5.253715,"RSD":117.330991,"RUB":97.599104,"RWF":1701.788284,"SAR":4.328672,"SBD":9.251888,"SCR":15.87915,"SDG":693.941083,"SEK":11.284058,"SGD":1.467698,"SHP":0.854542,"SLE":28.438102,"SLL":24191.960484,"SOS":659.108159,"SRD":43.570841,"STD":23878.725411,"STN":24.485868,"SVC":10.092,"SYP":15000.071444,"SZL":18.722869,"THB":38.40006,"TJS":10.651122,"TMT":4.037859,"TND":3.375493,"TOP":2.77777,"TRY":56.114598,"TTD":7.831344,"TWD":36.761864,"TZS":3058.545852,"UAH":51.481094,"UGX":4521.312072,"USD":1.153674,"UYU":46.452183,"UZS":13574.870882,"VES":970.452202,"VND":29943.035431,"VUV":136.234837,"WST":3.151258,"XAF":655.957,"XAG":0.018286,"XAU":0.000269,"XCD":3.117862,"XCG":2.078655,"XDR":0.815707,"XOF":655.957,"XPF":119.331742,"YER":272.872809,"ZAR":18.811245,"ZMK":10384.449315,"ZMW":22.288749,"ZWL":371.482602,"SSP":633.704955,"MXV":2.244749,"CYP":1.7086,"VEF":3902666.416477} 123Common.price_currency_position = "left" 124Common.price_frequency_texts = {"once":"Ik steun eenmalig","regular":"Ik steun maandelijks"} 125Common.campaign_default_frequency = "once" 126Step1.tax_reduction_rates = {"ir":[30,0],"isf":[75,0],"corp":[60],"custom1":[],"custom2":[]}; 127Step1.tax_reduction_ceils = {"ir":[408130],"isf":[50000],"corp":[],"custom1":[],"custom2":[]}; 128Step1.tax_reduction_notices = {"ir":"ten belope van 10% van het belastbaar inkomen","isf":"","corp":"ten belope van 5\u2030 van de omzet","custom1":"","custom2":""}; 129Step1.tax_reduction_triggers = {"ir":"40","isf":"0","corp":"0","custom1":"0","custom2":"0"}; 130Step1.tax_reduction_exact = {"ir":false,"isf":false,"corp":false,"custom1":false,"custom2":false}; 131Step1.active_tax_reduction = 1; 132Step1.adapt_tax_bloc = false;
133Step1.tax_info = "Voor elke gift van 40 euro of meer hebt u recht op een belastingvermindering."; 134Step1.is_french_isf = 0; 135Step1.is_tipping_campaign = 1; 136 137Step1.amount_equivalences = {"once":[],"regular":[]} 138Step1.decimal_sep = ","; 139Step1.min_once_amount = 0; 140Step1.max_once_amount = ""; 141Step1.min_regular_amount = 0; 142Step1.max_regular_amount = ""; 143DntErrors.errorMsg.errors = "%s Wilt u alstublieft de onderstaande gegevens nog invullen"; 144DntErrors.errorMsg.error = "Wilt u alstublieft de onderstaande gegevens nog invullen"; 145DntErrors.errorMsg.choose_amount = "Wilt u alstublieft een bedrag voor uw gift kiezen"; 146DntErrors.errorMsg.min_once_amount = "het minimaal aanvaarde minimum bedrag is {min_amount_with_currency}"; 147DntErrors.errorMsg.max_once_amount = "Uw gift mag niet hoger zijn dan {max_amount_with_currency}"; 148DntErrors.errorMsg.min_regular_amount = "het minimaal aanvaarde minimum bedrag is {min_amount_with_currency}"; 149DntErrors.errorMsg.max_regular_amount = "Uw gift mag niet hoger zijn dan {max_amount_with_currency}"; 150DntErrors.errorMsg.errors = "%s Wilt u alstublieft de onderstaande gegevens nog invullen"; 151DntErrors.errorMsg.error = "Wilt u alstublieft de onderstaande gegevens nog invullen"; 152DntErrors.errorMsg.qualification = "Het veld '%s' is verplicht"; 153DntErrors.errorMsg.firstname = "Gelieve uw voornaam in te vullen"; 154DntErrors.errorMsg.lastname = "Gelieve uw achternaam in te voeren"; 155DntErrors.errorMsg.email = "Gelieve een geldig e-mailadres in te vullen"; 156DntErrors.errorMsg.company = "De bedrijfsnaam mag niet langer zijn dan 70 tekens"; 157DntErrors.errorMsg.company_siren = "De SIRENE is leeg of ongeldig"; 158DntErrors.errorMsg.company_status = "De rechtsvorm is leeg of onbekend"; 159DntErrors.errorMsg.address1 = "Je hebt je adres niet ingevuld"; 160DntErrors.errorMsg.postcode = "Voer uw postcode in (maximaal 10 tekens)"; 161DntErrors.errorMsg.city = "Je hebt je woonplaats niet ingevuld"; 162DntErrors.errorMsg.civility = "Selecteer uw titel"; 163DntErrors.errorMsg.errors = "%s Wilt u alstublieft de onderstaande gegevens nog invullen"; 164DntErrors.errorMsg.error = "Wilt u alstublieft de onderstaande gegevens nog invullen"; 165DntErrors.errorMsg.cardtype = "Kies uw type creditcard"; 166DntErrors.errorMsg.cardnumber = "Vul de cijfers van uw creditcard correct in"; 167DntErrors.errorMsg.cardscode = DntErrors.errorMsg.scode = "Vul de cijfers van de CVC-code op de keerzijde van uw creditcard correct in"; 168DntErrors.errorMsg.cardmonth = "Kies de maand waarin uw creditcard vervalt"; 169DntErrors.errorMsg.cardyear = "Kies het jaar waarin uw creditcard vervalt"; 170DntErrors.errorMsg.gocardless = "Deze betalingsmethode houdt een bedrag lager dan \u20ac 5000 in. Graag het bedrag verlagen of een ander betaalmethode kiezen"; 171DntErrors.errorMsg.ssn = "Voer een geldig persoonlijk identiteitsnummer in"; 172 173Step2.failed_dnt_url = "/index.php?module=donations&action=xhr:attemptSave"; 174form_context_lang = "nl_NL"; 175form_context_cid = 1; 176 177Step3.alert_msg = ""; 178Step3.modal_qualif = "0"; 179Step3.modal_qualif_url = "/index.php?module=donations&action=default:modalQualification"; 180Step3.modal_save_card = "0"; 181Step3.modal_save_card_url = "/index.php?module=donations&action=default:modalSaveCard"; 182Step3.modal_save_card_set_url = "/index.php?context_form_id=form_cached_2026-10-02.04:57:16_6abf1d8c1194a1.25417764&module=donations&action=default:setSaveCard"; 183 184Step3.cards_mastercard_length=16; 185Step3.cards_mastercard_cvvlength=3; 186Step3.cards_mastercard_hasalias=1; 187Step3.cards_visa_length=16; 188Step3.cards_visa_cvvlength=3; 189Step3.cards_visa_hasalias=1; 190 191 192$(document).ready(function() { 193 Step1.init(); 194 Step2.init(); 195 Steps.init(); 196 Steps.submit(); 197 198}); 199 200organisation_name = "Vogelbescherming Vlaanderen"; 201try{ var ira_context_infos = {"form_id":"form_cached_2026-10-02.04:57:16_6abf1d8c1194a1.25417764","campaign":1,"version":"b","lang":"nl_NL","amount":{"amount":"0","amount_donation":"0","frequency":"once","free_amount":false,"currency":"EUR","log":"Context initialization in onDntEntryPoint()"},"reserved":"[]","affectation":null,"_cpn_name_":"giften"}; console.warn(ira_context_infos); }catch(err){} 202 try{ 203 $.cookie('dnt_coords',null,{'path':'/','domain':'.doneer.vogelbescherming.be'}); 204 }catch(err){} 205 $(document).ready(function() { 206 try{ 207 var context_form_input = $("input[name='context_form_id']"); 208 if(context_form_input){ 209 var context_form_val = context_form_input.val(); 210 if(!context_form_val || context_form_val == 'form_cached'){ 211 context_form_input.val("form_cached_"+Math.floor(Math.random() * 1000000000)); 212 } 213 } 214 if(typeof ira_form_version != 'undefined'){ 215 $('input[name=lang]').after( $('<input type="hidden" name="form_version" />').val(ira_form_version) ); 216 } 217 var dnt_amount = {"amount":"0","amount_donation":"0","frequency":"once","free_amount":false,"currency":"EUR","log":"C
217ontext initialization in onDntEntryPoint()"}; 218 if(typeof Step1 != 'undefined' && dnt_amount){ 219 Step1.initValues(dnt_amount); 220 } 221 }catch(err){} 222 }); 223// ]]> 224</script>
224<meta name="viewport" content="width=device-width" /> 225<link rel="preconnect" href="https://libs.iraiser.eu" crossorigin /> 226<link rel="preconnect" href="https://fonts.googleapis.com" /> 227<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 228<link rel="dns-prefetch" href="https://libs.iraiser.eu" /> 229<link rel="canonical" href="https://doneer.vogelbescherming.be/~share?cid=1&lang=nl_NL" /> 230<style type="text/css"> 231 .regularblock { 232 display:none; 233 } 234 235 236 237body { 238 background: url(/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/origin/GeelgorsSHCK.jpeg); 239} 240 241#header { 242 } 243 244</style> 245 246<link rel="icon" href="/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/origin/VBV-favicon.png">
247<script type='text/javascript'> 248 optionsGlobal = ""; 249 optionsCampaign = {"theme":"arya","active_theme":"1","version":"4","font":"","font_title":"","fontsize":"","wedge":"5","--body-background-color":"#CAE5EF","donation_grid":"1","regular_heart_icon":"1","amount_keeping":"0","purchase_grid":"2","layout":"1","widgets_footer":"2","security_info_new":"1","widgets_header":"1","logo_position":"1","widgets_progress_bar":"false","live_counter_map_sum":"","live_counter_map_count":"","widgets_progress_bar_currency":"","widgets_color_progress_bar_goal":"#386353","widgets_progress_bar_goal":"","widgets_progress_bar_add_amount":"","widgets_progress_bar_add_donors":"","widgets_progress_bar_promt_amount":"","widgets_progress_bar_text":"","widgets_progress_bar_text_nl_NL":"","widgets_last_donors":"true","widgets_color_last_donors":"#E87C1B","widgets_last_donors_filter":"","widgets_last_donors_currency_auto":"1","widgets_last_donors_text":"$n steunde ons met een gift van $a. Bedankt!","widgets_last_donors_text_nl_NL":"$n steunde ons met een gift van $a. Bedankt!","widgets_co
249okies_banner":"false","widgets_color_cookies_banner":"#386353","widgets_cookies_banner_text":"","widgets_cookies_banner_text_nl_NL":"","widgets_cookies_banner_button":"","widgets_cookies_banner_button_nl_NL":"","widgets_most_popular_once":"false","widgets_most_popular_once_amount":"75","widgets_most_popular_once_title":"Meest gekozen","widgets_most_popular_once_title_nl_NL":"Meest gekozen","widgets_most_popular_once_text":"Dit bedrag wordt door donateurs vaak gekozen.","widgets_most_popular_once_text_nl_NL":"Dit bedrag wordt door donateurs vaak gekozen.","widgets_most_popular_regular":"false","widgets_most_popular_regular_amount":"10","widgets_most_popular_regular_title":"Meest gekozen","widgets_most_popular_regular_title_nl_NL":"Meest gekozen","widgets_most_popular_regular_text":"Dit bedrag wordt door donateurs vaak gekozen.","widgets_most_popular_regular_text_nl_NL":"Dit bedrag wordt door donateurs vaak gekozen.","--main-action-color":"#E87C1B","--main-action-color-lighter":"#ff9b3d","--description-color":"#386353","--information-color":"#386353","--column-background-color":"","--banner-color":"#386353","--banner-color-darker":"#00271a"}; 250 campaign_id = 1; 251 context_lang = "nl_NL"; 252 campaign_stats = {"count":499,"sum":"3324255","min":100,"max":100000,"avg":"66.62","progress":"100","last_donators":[{"firstname":"Karolien","total":5000,"currency":"EUR","date":"2026-09-30 16:31:00","campaign":1,"city":"HEUSDEN","message":"","avatar":""},{"firstname":"A.","total":2000,"currency":"EUR","date":"2026-09-28 18:52:00","campaign":1,"city":"TILBURG","message":"","avatar":""},{"firstname":"Wannes","total":5000,"currency":"EUR","date":"2026-09-28 16:30:00","campaign":1,"city":"HERENTALS","message":"","avatar":""},{"firstname":"Kim","total":5000,"currency":"EUR","date":"2026-09-28 10:45:00","campaign":1,"city":"HAALTERT","message":"","avatar":""},{"firstname":"filip","total":5000,"currency":"EUR","date":"2026-09-28 08:48:00","campaign":1,"city":"LENDELEDE","message":"","avatar":""},{"firstname":"Bert","total":5000,"currency":"EUR","date":"2026-09-28 07:42:00","campaign":1,"city":"TIELT","message":"","avatar":""},{"firstname":"CHRISTA","total":5000,"currency":"EUR","date":"2026-09-26 21:49:00","campaign":1,"city":"MECHELEN","message":"","avatar":""},{"firstname":"Gregory","total":4000,"currency":"EUR","date":"2026-09-26 15:13:00","campaign":1,"city":"OOSTENDE","message":"","avatar":""},{"firstname":"Bart","total":5000,"currency":"EUR","date":"2026-09-26 14:02:00","campaign":1,"city":"KESSEL-LO","message":"","avatar":""},{"firstname":"Hilde","total":5000,"currency":"EUR","date":"2026-09-26 08:57:00","campaign":1,"city":"ZAVENTEM","message":"","avatar":""},{"firstname":"Bart","total":2500,"currency":"EUR","date":"2026-09-25 18:16:00","campaign":1,"city":"ADEGEM","message":"","avatar":""},{"firstname":"Gino","total":4000,"currency":"EUR","date":"2026-09-25 11:56:00","campaign":1,"city":"GERAARDSBERGEN","message":"","avatar":""},{"firstname":"Peter","total":4000,"currency":"EUR","date":"2026-09-25 10:29:00","campaign":1,"city":"DUFFEL","message":"","avatar":""},{"firstname":"Tom","total":5000,"currency":"EUR","date":"2026-09-24 23:25:00","campaign":1,"city":"WERCHTER","message":"","avatar":""},{"firstname":"Luc","total":5000,"currency":"EUR","date":"2026-09-24 14:49:00","campaign":1,"city":"OOSTAKKER","message":"","avatar":""},{"firstname":"Sarah","total":4000,"currency":"EUR","date":"2026-09-23 19:04:00","campaign":1,"city":"BERCHEM","message":"","avatar":""},{"firstname":"Dirk","total":10000,"currency":"EUR","date":"2026-09-23 17:48:00","campaign":1,"city":"AARTSELAAR","message":"","avatar":""},{"firstname":"Nathalie","total":7500,"currency":"EUR","date":"2026-09-21 12:34:00","campaign":1,"city":"LILLE","message":"","avatar":""},{"firstname":"Riet","total":2500,"currency":"EUR","date":"2026-09-29 03:49:00","campaign":1,"city":"AMSTERDAM","message":"","avatar":""},{"firstname":"marianne","total":5000,"currency":"EUR","date":"2026-09-29 04:07:00","campaign":1,"city":"ZANDVOORT","message":"","avatar":""},{"firstname":"Mich\u00e8le","total":5000,"currency":"EUR","date":"2026-09-19 17:03:00","campaign":1,"city":"ROTTERDAM","message":"","avatar":""},{"firstname":"Thea","total":5000,"currency":"EUR","date":"2026-09-18 21:45:00","campaign":1,"city":"ZOERSEL","message":"","avatar":""},{"firstname":"Els","total":12500,"currency":"EUR","date":"2026-09-18 11:34:00","campaign":1,"city":"MECHELEN","message":"","avatar":""},{"firstname":"Clara","total":1000,"currency":"EUR","date":"2026-09-18 08:05:00","campaign":1,"city":"HOESELT BILZEN","message":"","avatar":""},{"firstname":"Nadine","total":5000,"currency":"EUR","date":"2026-09-17 17:48:00","campaign":1,"city":"GENT","message":"","avatar":""},{"firstname":"Marianne","total":5000,"currency":"EUR","date":"2026-09-17 08:34:00","campaign":1,"city":"MOSSET","message":"","avatar":""},{"firstname":"Luc","total":5000,"currency":"EUR","date":"2026-09-16 17:10:00","campaign":1,"city":"DESTELBERGEN","message":"","avatar":""},{"firstname":"Serge","total":1000,"currency":"EUR","date":"2026-09-16 11:20:00","campaign":1,"city":"HULDENBERG","message":"","avatar":""},{"firstname":"Johan","total":5000,"currency":"EUR","date":"2026-09-16 09
252:04:00","campaign":1,"city":"BIZE-MINERVOIS","message":"","avatar":""},{"firstname":"Annelies","total":2500,"currency":"EUR","date":"2026-09-15 20:59:00","campaign":1,"city":"ICHTEGEM","message":"","avatar":""},{"firstname":"Ignace","total":10000,"currency":"EUR","date":"2026-09-15 18:13:00","campaign":1,"city":"HASSELT","message":"","avatar":""},{"firstname":"Hanneke","total":5000,"currency":"EUR","date":"2026-09-15 12:03:00","campaign":1,"city":"BRUGGE","message":"","avatar":""},{"firstname":"Timothy","total":4000,"currency":"EUR","date":"2026-09-12 11:43:00","campaign":1,"city":"KORTRIJK-DUTSEL","message":"","avatar":""},{"firstname":"Jasper","total":4000,"currency":"EUR","date":"2026-09-11 18:32:00","campaign":1,"city":"BRUSSEL","message":"","avatar":""},{"firstname":"Sien","total":1500,"currency":"EUR","date":"2026-09-11 16:32:00","campaign":1,"city":"LEUVEN","message":"","avatar":""},{"firstname":"Paul","total":4000,"currency":"EUR","date":"2026-09-11 00:25:00","campaign":1,"city":"DESTELBERGEN","message":"","avatar":""},{"firstname":"Jean Marie","total":12500,"currency":"EUR","date":"2026-09-06 12:27:00","campaign":1,"city":"LOCHRSITI","message":"","avatar":""},{"firstname":"Martine","total":5000,"currency":"EUR","date":"2026-09-05 11:38:00","campaign":1,"city":"LOVENDEGEM","message":"","avatar":""},{"firstname":"Mark","total":2000,"currency":"EUR","date":"2026-09-15 03:27:00","campaign":1,"city":"OUDERGEM","message":"","avatar":""},{"firstname":"Karen","total":700,"currency":"EUR","date":"2026-09-05 04:30:00","campaign":1,"city":"SCHOTEN","message":"","avatar":""},{"firstname":"Clark Gillian","total":800,"currency":"EUR","date":"2026-09-05 04:30:00","campaign":1,"city":"ANTWERPEN","message":"","avatar":""},{"firstname":"Koen","total":1000,"currency":"EUR","date":"2026-09-15 03:20:00","campaign":1,"city":"DEINZE","message":"","avatar":""},{"firstname":"annie","total":500,"currency":"EUR","date":"2026-09-05 04:30:00","campaign":1,"city":"ASSENEDE","message":"","avatar":""},{"firstname":"Albert","total":1000,"currency":"EUR","date":"2026-09-15 03:24:00","campaign":1,"city":"DIEPENBEEK","message":"","avatar":""},{"firstname":"Luc","total":2000,"currency":"EUR","date":"2026-09-15 03:27:00","campaign":1,"city":"TESSENDERLO","message":"","avatar":""},{"firstname":"Piet","total":10000,"currency":"EUR","date":"2026-09-05 04:30:00","campaign":1,"city":"ROTSELAAR","message":"","avatar":""},{"firstname":"Gert","total":1000,"currency":"EUR","date":"2026-09-15 03:18:00","campaign":1,"city":"WELLEN","message":"","avatar":""},{"firstname":"Sofie","total":1000,"currency":"EUR","date":"2026-09-15 03:24:00","campaign":1,"city":"LINT","message":"","avatar":""},{"firstname":"floris","total":1000,"currency":"EUR","date":"2026-09-15 03:15:00","campaign":1,"city":"BOECHOUT","message":"","avatar":""},{"firstname":"Bart","total":500,"currency":"EUR","date":"2026-09-15 03:20:00","campaign":1,"city":"ANTWERPEN","message":"","avatar":""}],"date_cache":"2026-10-02"}; 253 campaign_stats_last_donators = [{"firstname":"Karolien","total":5000,"currency":"EUR","date":"2026-09-30 16:31:00","campaign":1,"city":"HEUSDEN","message":"","avatar":""},{"firstname":"A.","total":2000,"currency":"EUR","date":"2026-09-28 18:52:00","campaign":1,"city":"TILBURG","message":"","avatar":""},{"firstname":"Wannes","total":5000,"currency":"EUR","date":"2026-09-28 16:30:00","campaign":1,"city":"HERENTALS","message":"","avatar":""},{"firstname":"Kim","total":5000,"currency":"EUR","date":"2026-09-28 10:45:00","campaign":1,"city":"HAALTERT","message":"","avatar":""},{"firstname":"filip","total":5000,"currency":"EUR","date":"2026-09-28 08:48:00","campaign":1,"city":"LENDELEDE","message":"","avatar":""},{"firstname":"Bert","total":5000,"currency":"EUR","date":"2026-09-28 07:42:00","campaign":1,"city":"TIELT","message":"","avatar":""},{"firstname":"CHRISTA","total":5000,"currency":"EUR","date":"2026-09-26 21:49:00","campaign":1,"city":"MECHELEN","message":"","avatar":""},{"firstname":"Gregory","total":4000,"currency":"EUR","date":"2026-09-26 15:13:00","campaign":1,"city":"OOSTENDE","message":"","avatar":""},{"firstname":"Bart","total":5000,"currency":"EUR","date":"2026-09-26 14:02:00","campaign":1,"city":"KESSEL-LO","message":"","avatar":""},{"firstname":"Hilde","total":5000,"currency":"EUR","date":"2026-09-26 08:57:00","campaign":1,"city":"ZAVENTEM","message":"","avatar":""},{"firstname":"Bart","total":2500,"currency":"EUR","date":"2026-09-25 18:16:00","campaign":1,"city":"ADEGEM","message":"","avatar":""},{"firstname":"Gino","total":4000,"currency":"EUR","date":"2026-09-25 11:56:00","campaign":1,"city":"GERAARDSBERGEN","message":"","avatar":""},{"firstname":"Peter","total":4000,"currency":"EUR","date":"2026-09-25 10:29:00","campaign":1,"city":"DUFFEL","message":"","avatar":""},{"firstname":"Tom","total":5000,"currency":"EUR","date":"2026-09-24 23:25:00","campaign":1,"city":"WERCHTER","message":"","avatar":""},{"firstname":"Luc","total":5000,"currency":"EUR","date":"2026-09-24 14:49:00","campaign":1,"city":"OOSTAKKER","message":"","avatar":""},{"firstname":"Sarah","total":4000,"currency":"EUR","date":"2026-09-23 19:04:00","campaign":1,"city":"BERCHEM","message":"","avatar":""},{"firstname":"Dirk","total":10000,"currency":"EUR","date":"2026-09-23 17:48:00","campaign":1,"city":"AARTSELAAR","message":"","avatar":""},{"firstname":"Nathalie","total":7500,"currency":"EUR","date":"2026-09-21 12:34:00","campaign":1,"city":"LILLE","message":"","avatar":""},{"firstname":"Riet","total":2500,"currency":"EUR","date":"2026-09-29 03:49:00","campaign":1,"city":"AMSTERDAM","message":"","avatar":""},{"firstname":"marianne","total":5000,"currency":"EUR","date":"2026-09-29 04:07:00","campaign":1,"city":"ZANDVOORT","message":"","avatar":""},{"firstname":"Mich\u00e8le","total":5000,"currency":"EUR","date":"2026-09-19 17:03:00","campaign":1,"city":"ROTTERDAM","message":"","avatar":""},{"firstname":"Thea","total":5000,"currency":"EUR","date":"2026-09-18 21:45:00","campaign":1,"city":"ZOERSEL","message":"","avatar":""},{"firstname":"Els","total":12500,"currency":"EUR","date":"2026-09-18 11:34:00","campaign":1,"city":"MECHELEN","message":"","avatar":""},{"firstname":"Clara","total":1000,"currency":"EUR","date":"2026-09-18 08:05:00","campaign":1,"city":"HOESELT BILZEN","message":"","avatar":""},{"firstname":"Nadine","total":5000,"currency":"EUR","date":"2026-09-17 17:48:00","campaign":1,"city":"GENT","message":"","avatar":""},{"firstname":"Marianne","total":5000,"currency":"EUR","date":"2026-09-17 08:34:00","campaign":1,"city":"MOSSET","message":"","avatar":""},{"firstname":"Luc","total":5000,"currency":"EUR","date":"2026-09-16 17:10:00","campaign":1,"city":"DESTELBERGEN","message":"","avatar":""},{"firstname":"Serge","total":1000,"currency":"EUR","date":"2026-09-16 11:20:00","campaign":1,"city":"HULDENBERG","message":"","avatar":""},{"firstname":"Johan","total":5000,"currency":"EUR","date":"2026-09-16 09
253:04:00","campaign":1,"city":"BIZE-MINERVOIS","message":"","avatar":""},{"firstname":"Annelies","total":2500,"currency":"EUR","date":"2026-09-15 20:59:00","campaign":1,"city":"ICHTEGEM","message":"","avatar":""},{"firstname":"Ignace","total":10000,"currency":"EUR","date":"2026-09-15 18:13:00","campaign":1,"city":"HASSELT","message":"","avatar":""},{"firstname":"Hanneke","total":5000,"currency":"EUR","date":"2026-09-15 12:03:00","campaign":1,"city":"BRUGGE","message":"","avatar":""},{"firstname":"Timothy","total":4000,"currency":"EUR","date":"2026-09-12 11:43:00","campaign":1,"city":"KORTRIJK-DUTSEL","message":"","avatar":""},{"firstname":"Jasper","total":4000,"currency":"EUR","date":"2026-09-11 18:32:00","campaign":1,"city":"BRUSSEL","message":"","avatar":""},{"firstname":"Sien","total":1500,"currency":"EUR","date":"2026-09-11 16:32:00","campaign":1,"city":"LEUVEN","message":"","avatar":""},{"firstname":"Paul","total":4000,"currency":"EUR","date":"2026-09-11 00:25:00","campaign":1,"city":"DESTELBERGEN","message":"","avatar":""},{"firstname":"Jean Marie","total":12500,"currency":"EUR","date":"2026-09-06 12:27:00","campaign":1,"city":"LOCHRSITI","message":"","avatar":""},{"firstname":"Martine","total":5000,"currency":"EUR","date":"2026-09-05 11:38:00","campaign":1,"city":"LOVENDEGEM","message":"","avatar":""},{"firstname":"Mark","total":2000,"currency":"EUR","date":"2026-09-15 03:27:00","campaign":1,"city":"OUDERGEM","message":"","avatar":""},{"firstname":"Karen","total":700,"currency":"EUR","date":"2026-09-05 04:30:00","campaign":1,"city":"SCHOTEN","message":"","avatar":""},{"firstname":"Clark Gillian","total":800,"currency":"EUR","date":"2026-09-05 04:30:00","campaign":1,"city":"ANTWERPEN","message":"","avatar":""},{"firstname":"Koen","total":1000,"currency":"EUR","date":"2026-09-15 03:20:00","campaign":1,"city":"DEINZE","message":"","avatar":""},{"firstname":"annie","total":500,"currency":"EUR","date":"2026-09-05 04:30:00","campaign":1,"city":"ASSENEDE","message":"","avatar":""},{"firstname":"Albert","total":1000,"currency":"EUR","date":"2026-09-15 03:24:00","campaign":1,"city":"DIEPENBEEK","message":"","avatar":""},{"firstname":"Luc","total":2000,"currency":"EUR","date":"2026-09-15 03:27:00","campaign":1,"city":"TESSENDERLO","message":"","avatar":""},{"firstname":"Piet","total":10000,"currency":"EUR","date":"2026-09-05 04:30:00","campaign":1,"city":"ROTSELAAR","message":"","avatar":""},{"firstname":"Gert","total":1000,"currency":"EUR","date":"2026-09-15 03:18:00","campaign":1,"city":"WELLEN","message":"","avatar":""},{"firstname":"Sofie","total":1000,"currency":"EUR","date":"2026-09-15 03:24:00","campaign":1,"city":"LINT","message":"","avatar":""},{"firstname":"floris","total":1000,"currency":"EUR","date":"2026-09-15 03:15:00","campaign":1,"city":"BOECHOUT","message":"","avatar":""},{"firstname":"Bart","total":500,"currency":"EUR","date":"2026-09-15 03:20:00","campaign":1,"city":"ANTWERPEN","message":"","avatar":""}]; 254 campaign_currency = "EUR"; 255 iraiser_counter = ''; 256 client_livecounter = "vogel"; 257 bymonth = 'per maand'; 258 i18n = {"accessibilityHeaderButton":"Toegankelijkheid","accessibilityModalTitle":"Toegankelijkheidsopties van de pagina:","accessibilityModalOptionContrast":"Activeer kleuren met hoog contrast","accessibilityModalOptionSpacing":"Activeer extra afstand","accessibilityModalOptionLargeTexts":"Activeer extra grote teksten","accessibilityModalMessage":"Als u ondanks deze opties toegankelijkheidsproblemen op deze pagina ondervindt, neem dan per e-mail <a href=\"\/contact\">contact met ons op<\/a>, zodat we kunnen werken aan het verbeteren van uw ervaring. Bedankt."}; 259 checkoutPage = ''; 260</script>
vendor: 1 bytes, line 260
260
261<script id="javascript_arya" type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/arya/dist/v4/arya.js?v=26090" ></script>
261 262<link type="text/css" href="https://doneer.vogelbescherming.be/themes/default/arya/dist/v4/arya.css?v=26090" rel="stylesheet" />
262<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/arya/dist/v4/formTest.js?v=26090" ></script>
262 263<link rel="stylesheet" href="https://use.typekit.net/eqq5onc.css" integrity="sha384-8sSywR6Cyic3sLn5qyxVqHLMupv1qGOQjgFvwT8dlScLwU7gVp+A5k1Vtk35vWBy" crossorigin="anonymous"><link type="text/css" href="https://doneer.vogelbescherming.be/themes/default/arya/dist/v4/form_visible_label.css?v=26090" rel="stylesheet" />
263<script type="text/javascript" src="https://doneer.vogelbescherming.be/themes/default/arya/dist/v4/accessibility.js?v=26090" ></script>
263</head><body class="loading-improvements" id="type-b" > 264 265<div id="container"> 266 267 <div id="header" class="line"> 268 <div class="container" id="header_wrapinner"> 269 <div id="logo" class="unit size3of4"> 270 271 <h1> 272 <a href="http://www.vogelbescherming.be " title="Vogelbescherming Vlaanderen" target="_blank" rel="noopener noreferrer"> 273 <span class="screen-reader-only">Vogelbescherming Vlaanderen</span> 274 <img src="/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/origin/VBV-logo.png" alt="Vogelbescherming Vlaanderen startpagina" fetchpriority="high"/> 275 </a> 276 </h1> 277 278 </div> <!-- End Logo --> 279 280 </div> 281 </div> <!-- End Header --> 282 283 <div id="_wait"> 284 <div id="floatingCirclesG"> 285 <div class="f_circleG" id="frotateG_01"></div> 286 <div class="f_circleG" id="frotateG_02"></div> 287 <div class="f_circleG" id="frotateG_03"></div> 288 <div class="f_circleG" id="frotateG_04"></div> 289 <div class="f_circleG" id="frotateG_05"></div> 290 <div class="f_circleG" id="frotateG_06"></div> 291 <div class="f_circleG" id="frotateG_07"></div> 292 <div class="f_circleG" id="frotateG_08"></div> 293 </div> 294 </div> 295 296 <div id="main" class="line"> 297 298 <div class="container" id="main_wrapinner"> 299 300 <noscript> 301 </noscript> 302 303 304 <form action="/b/steps/save" method="post" id="form-steps" autocomplete="off"> 305 306 <input type="hidden" name="context_form" value="" /> 307<input type="hidden" name="context_form_id" value="" /> 308<input type="hidden" name="cid" value="1" /> 309<input type="hidden" name="lang" value="nl_NL" /> 310<input type="hidden" name="scope" value="" id="scope"/> 311 312<input id="useragent_input_0" type="hidden" name="private_user_agent_cli" value=""/>
313<script type="text/javascript"> 314 document.getElementById("useragent_input_0").value = navigator.userAgent; 315</script>
315 316<input id="referer_input_0" type="hidden" name="private_referer" value=""/>
317<script type="text/javascript"> 318 document.getElementById("referer_input_0").value = document.referrer; 319</script>
319 320<input id="random_input_0" type="hidden" name="private_random" value=""/>
321<script type="text/javascript"> 322 document.getElementById("random_input_0").value = Math.random(); 323 setTimeout(function(){ document.getElementById("random_input_0").value = Math.random(); }, 3000); 324</script>
324 325 326 <div id="step-1" class="unit size1of3"> 327 <div class="step-container"> 328 <div class="step-title"> 329 <h2>Mijn gift</h2> 330 </div> 331 332 <div class="step-content"> 333 334 <div> 335 336 </div> 337 338 339 <div id="once" class="bloc"> 340 <div class="bloc-content"> 341 <h3>Ik steun eenmalig</h3> 342 <div id="bloc-amount-once"> 343 344 <fieldset class="amount type2ct"> 345 346 <ul class="radio-desc line" id="amount-list-once"> 347 348 <li> 349 <div class="unit size1of2"><img src="/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/pricelist_item/eekhoorn-500.jpg" width="120" height="90" alt="" /></div> 350 <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-once" value="5000" id="amount-once-5000" type="radio" /> <span id="value_of_amount-once-5000"><data class='price_currency'>â¬</data><data class='price_amount'>50</data></span></label><p></p></div> 351 352 </li> 353 354 <li> 355 <div class="unit size1of2"><img src="/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/pricelist_item/Zondertitel500x300px.png" width="120" height="90" alt="" /></div> 356 <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-once" value="7500" id="amount-once-7500" type="radio" /> <span id="value_of_amount-once-7500"><data class='price_currency'>â¬</data><data class='price_amount'>75</data></span></label><p></p></div> 357 358 </li> 359 360 <li> 361 <div class="unit size1of2"><img src="/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/pricelist_item/Zondertitel500x300px1.png" width="120" height="90" alt="" /></div> 362 <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-once" value="12500" id="amount-once-12500" type="radio" /> <span id="value_of_amount-once-12500"><data class='price_currency'>â¬</data><data class='price_amount'>125</data></span></label><p></p></div> 363 364 </li> 365 </ul> 366 </fieldset> 367 368 <div class="amount-equivalences"> 369 <p class="amount-equivalences-img"></p> 370 <p class="amount-equivalences-description"></p> 371 </div> 372 373 <fieldset class="free-amount"> 374 <p><label>Vrij bedrag <span class="price_currency">â¬</span> <input autocomplete="section-famount" name="famount-once" type="text" size="6" id="famount-once" /> 375 376 </label></p> 377 </fieldset> 378 379 <p class="tax-info"></p> 380 <!--<input type="hidden" value="" name="iraiser_analytics_session_id" id="iraiser_analytics_session_id"/>--> 381 382 <input type="hidden" name="referrer" /> 383
383<script type="text/javascript"> 384 try{ 385 $("input[name=referrer]").val(document.referrer); 386 if(document.location.search.indexOf('_cv')>1) { 387 $('input[name=referrer]').after($('<input type="hidden" name="query_string" />').val(document.location.search.substring(1))); 388 } 389 }catch(e){} 390 </script>
390 391 392 393</div> </div> 394 </div> <!-- End Once --> 395 396 <div class="onceblock"> 397 398 399 </div> 400 401 <div id="or"> 402 <p>of</p> 403 </div> 404 405 <div id="regular" class="bloc"> 406 <div class="bloc-content"> 407 <h3>Ik steun maandelijks</h3> 408 <div id="bloc-amount-regular"> 409 410 <fieldset class="amount type2ct"> 411 412 <ul class="radio-desc line" id="amount-list-regular"> 413 414 <li> 415 <div class="unit size1of2"><img src="/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/pricelist_item/Zondertitel500x300px2.png" width="120" height="90" alt="" /></div> 416 <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-regular" value="500" id="amount-regular-500" type="radio" /> <span id="value_of_amount-regular-500"><data class='price_currency'>â¬</data><data class='price_amount'>5</data></span></label><p></p></div> 417 418 </li> 419 420 <li> 421 <div class="unit size1of2"><img src="/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/pricelist_item/Zondertitel500x300px4.png" width="120" height="90" alt="" /></div> 422 <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-regular" value="1000" id="amount-regular-1000" type="radio" /> <span id="value_of_amount-regular-1000"><data class='price_currency'>â¬</data><data class='price_amount'>10</data></span></label><p></p></div> 423 424 </li> 425 426 <li> 427 <div class="unit size1of2"><img src="/cdn.iraiser.eu/AFwk7ZGpMM2HlEaMxWAE2Q==/default/pricelist_item/Zondertitel500x300px3.png" width="120" height="90" alt="" /></div> 428 <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-regular" value="2000" id="amount-regular-2000" type="radio" /> <span id="value_of_amount-regular-2000"><data class='price_currency'>â¬</data><data class='price_amount'>20</data></span></label><p></p></div> 429 430 </li> 431 </ul> 432 </fieldset> 433 434 <div class="amount-equivalences"> 435 <p class="amount-equivalences-img"></p> 436 <p class="amount-equivalences-description"></p> 437 </div> 438 439 <fieldset class="free-amount"> 440 <p><label>Vrij bedrag <span class="price_currency">â¬</span> <input autocomplete="section-famount" name="famount-regular" type="text" size="6" id="famount-regular" /> 441 442 </label></p> 443 </fieldset> 444 445 <p class="tax-info"></p> 446 <!--<input type="hidden" value="" name="iraiser_analytics_session_id" id="iraiser_analytics_session_id"/>--> 447 448 <input type="hidden" name="referrer" /> 449
449<script type="text/javascript"> 450 try{ 451 $("input[name=referrer]").val(document.referrer); 452 if(document.location.search.indexOf('_cv')>1) { 453 $('input[name=referrer]').after($('<input type="hidden" name="query_string" />').val(document.location.search.substring(1))); 454 } 455 }catch(e){} 456 </script>
456 457 458 459</div> </div> 460 </div> <!-- End Each-month --> 461 462 <div class="regularblock"> 463 464 465 </div> 466 467 468 469 <div> 470 471 </div> 472 473 474 475 </div> <!-- End Step-content --> 476 477 <div class="step-info"> 478 <h4>Elke gift maakt een verschil.</h4> 479 <div class="step-info-body"> 480 <p>Dankzij uw steun geven we een stem aan wilde dieren.</p> 481 482<ul> 483 <li>We kijken toe op de handhaving van de <strong>wetgeving</strong>, verscherpen die waar mogelijk en stellen ons burgerlijke partij in geval van ernstige overtredingen;</li> 484 <li>We pleiten voor een faunavriendelijk <strong>beleid</strong>;</li> 485 <li>We begeleiden de <strong>opvangcentra voor vogels en wilde dieren </strong>door opleidingen te organiseren en hun stem te laten weerklinken bij overheidsinstanties;</li> 486 <li>We zetten campagnes en acties op om het brede publiek te <strong>sensibiliseren</strong>.</li> 487</ul> 488 489 </div> 490 </div> <!-- End Step-info --> 491 </div> <!-- End Step-container --> 492 </div> <!-- End Step-1 --> 493 494 <div id="step-2" class="unit size1of3"> 495 <div class="step-container"> 496 <div class="step-title"> 497 <h2>Mijn gegevens</h2> 498 </div> 499 500 <div class="step-content"> 501 502 503 <fieldset id="fieldset-step2"> 504 505 506 507 508 <p id="c-email"> 509 <label for="email"> 510 E-mail 511 <span class="required">*</span> 512 <span class="help"> 513 </span> 514 </label> 515 <input type="text" name="email" id="email" /> 516 </p> 517 518 519 520 <p name="reserved_Telefoon" id="reserved_Telefoon_id_6abf1d8c1d0d3" data-type="phone" class="custom-field-p" > 521 <label for="reserved_Telefoon"> 522 523 524 525 <span class="reserved_title">Telefoonnummer</span> 526 527 <span id="nameHelp_reserved_Telefoon" class="help"></span> 528 </label> 529 530 531 <input 532 id="reserved_Telefoon" 533 type="tel" 534 aria-describedby="nameHelp_reserved_Telefoon" 535 name="reserved_Telefoon" 536 data-scope="step2" 537 data-required="" 538 value="" 539 540 /> 541 542 543 </p> 544 545 546
546<script type="text/javascript"> 547 load_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3 = function(){ 548 549 var reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3 = $("#reserved_Telefoon_id_6abf1d8c1d0d3 input[name=reserved_Telefoon]"); 550 if(!reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3.length && typeof Step3 != 'undefined'){ 551 552 reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3 = Step3.select("#reserved_Telefoon_id_6abf1d8c1d0d3 input[name=reserved_Telefoon]"); 553 } 554 555 var iti_reserved_Telefoon_id_6abf1d8c1d0d3 = window.intlTelInput(reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3[0],{ 556 557 initialCountry: "auto", 558 autoPlaceholder: "polite", 559 preferredCountries: ['fr', 'gb', 'be', 'nl', 'de'], 560 utilsScript: "/libs.iraiser.eu/libs/intl-tel-input-15.0.1/build/js/utils.js" 561 }); 562 $("form:has(#reserved_Telefoon_id_6abf1d8c1d0d3)").submit(function() { 563 const reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3_tmp = reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3.val(); 564 reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3.val(iti_reserved_Telefoon_id_6abf1d8c1d0d3.getNumber()); 565 if(reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3.val() == ''){ 566 567 reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3.val(reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3_tmp); 568 } 569 570 }); 571 572 try { 573 if (reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3.val() == '') iti_reserved_Telefoon_id_6abf1d8c1d0d3.setCountry('us'); 574 }catch(e){} 575 576 577 578 $( document ).ready(function(){ 579 $('select[name=country],input[name=country]').change(function(){ 580 try { 581 if(reserved_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3.val() == '') iti_reserved_Telefoon_id_6abf1d8c1d0d3.setCountry($(this).val().toLowerCase()); 582 }catch(e){} 583 }); 584 }); 585 586 } 587 588 $( document ).ready(function(){ 589 if(typeof hasPhoneAlready === 'undefined'){ 590 hasPhoneAlready = true; 591 $('head').append('<link rel="stylesheet" type="text/css" href="/libs.iraiser.eu/libs/intl-tel-input-15.0.1/build/css/intlTelInput.min.css" />'); 592 $.getScript('/libs.iraiser.eu/libs/intl-tel-input-15.0.1/build/js/intlTelInput.min.js',function () { 593 load_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3(); 594 document.body.dispatchEvent(new Event('intlTelInput_loaded')); 595 }); 596 }else{ 597 598 $('body').on('intlTelInput_loaded', load_phone_input_reserved_Telefoon_id_6abf1d8c1d0d3); 599 } 600 601 }); 602 </script>
602 603 604 605 606 <fieldset id="fielset-name"> 607 <p id="c-isc"> 608 <label> 609 <input type="checkbox" value="OK" name="iscompany" id="iscompany" /> 610 Ik doe een gift uit naam van een organisatie </label> 611 </p> 612 <p id="c-isc-inf" class="company-infos hidden"> 613 <label for="company">Firmanaam <span class="required">*</span> <span class="help"> 614 </span> 615 </label> 616 <input type="text" name="company" id="company" 617 class="required_for_company" /> 618 </p> 619 620 621 <input type="hidden" id="civility" name="civility" value="18"/> 622 <p id="c-fname"> 623 <label for="firstname">Voornaam 624 <span class="required">*</span> <span class="help"> 625 </span> 626 </label> 627 <input type="text" name="firstname" id="firstname" autocomplete="given-name" /> 628 </p> 629 <p id="c-lname"> 630 <label for="lastname"> 631 Achternaam 632 <span class="required">*</span> 633 <span class="help"> 634 </span> 635 </label> 636 <input type="text" name="lastname" id="lastname" autocomplete="family-name" /> 637 </p> 638 </fieldset> 639 640 641 642 <p name="reserved_NN" id="reserved_NN_id_6abf1d8c1d198" data-type="short" class="custom-field-p individual-infos" > 643 <label for="reserved_NN"> 644 645 646 647 <span class="reserved_title">Rijksregisternummer</span> 648 649 <span id="nameHelp_reserved_NN" class="help">Vult u bij uw donatie uw rijksregisternummer in, dan wordt uw gift automatisch opgenomen in uw belastingaangifte.</span> 650 </label> 651 652 653 <input 654 id="reserved_NN" 655 type="text" 656 aria-describedby="nameHelp_reserved_NN" 657 name="reserved_NN" 658 data-scope="step2" 659 data-required="" 660 value="" 661 662 data-ira-check="CountryNumbersValidator.isIdentityNumberValid('BE', $('#reserved_NN').val()) || $('#iscompany').is(':checked')" 663 data-ira-errormsg-empty="Het veld '%s' is verplicht" 664 data-ira-errormsg-invalid="Het nationale nummer is ongeldig. Het moet 11 cijfers bevatten en het formaat volgen: YY.MM.DD-XXX.CC<br>Dit veld is optioneel. U kunt dit veld leeg laten als u het nummer niet kent of niet wilt opgeven." 665 666 /> 667 668 669 </p> 670 671 672 673 674 675 <fieldset id="fielset-address"> 676 <p id="c-addr1"> 677 <label for="address1"> 678 Adres 679 <span class="required">*</span> 680 <span class="help"> 681 </span> 682 </label> 683 <input type="text" name="address1" id="address1" /> 684 </p> 685 <input type="hidden" id="address2" name="address2" value="N/A"/> 686 <div class="line"> 687 <p id="c-pcode" class="unit size1of2"> 688 <label for="postcode"> 689 Postcode 690 <span class="required">*</span> 691 <span class="help"> 692 </span> 693 </label> 694 <input type="text" name="postcode" id="postcode" /> 695 </p> 696 <p id="c-city" class="unit size2of2 lastUnit"> 697 <label for="city"> 698 Woonplaats
699 <span class="required">*</span> 700 <span class="help"> 701 </span> 702 </label> 703 <input type="text" name="city" id="city" /> 704 </p> 705 </div> 706 <p id="c-country"> 707 <label for="country"> 708 Land 709 <span class="required">*</span> 710 <span class="help"> 711 </span> 712 </label> 713 <select name="country" id="country"> 714 <option value="BE">België</option> 715 <option value="FR">Frankrijk</option> 716 <option value="HT">Haïti</option> 717 <option value="IT">Italië</option> 718 <option value="NL">Nederland</option> 719 720 <option value="">----------------------------------</option> 721 <option value="AF">Afghanistan</option> 722 <option value="AX">Alandeilanden</option> 723 <option value="AL">Albanië</option> 724 <option value="DZ">Algerije</option> 725 <option value="AS">Amerikaans Samoa</option> 726 <option value="UM">Amerikaanse kleinere afgelegen eilanden</option> 727 <option value="VI">Amerikaanse Maagdeneilanden</option> 728 <option value="AD">Andorra</option> 729 <option value="AO">Angola</option> 730 <option value="AI">Anguilla</option> 731 <option value="AQ">Antarctica</option> 732 <option value="AG">Antigua en Barbuda</option> 733 <option value="AR">Argentinië</option> 734 <option value="AM">Armenië</option> 735 <option value="AW">Aruba</option> 736 <option value="AC">Ascension</option> 737 <option value="AU">Australië</option> 738 <option value="AZ">Azerbeidzjan</option> 739 <option value="BS">Bahamaâs</option> 740 <option value="BH">Bahrein</option> 741 <option value="BD">Bangladesh</option> 742 <option value="BB">Barbados</option> 743 <option value="BE">België</option> 744 <option value="BZ">Belize</option> 745 <option value="BJ">Benin</option> 746 <option value="BM">Bermuda</option> 747 <option value="BT">Bhutan</option> 748 <option value="BO">Bolivia</option> 749 <option value="BA">Bosnië en Herzegovina</option> 750 <option value="BW">Botswana</option> 751 <option value="BV">Bouveteiland</option> 752 <option value="BR">Brazilië</option> 753 <option value="IO">Britse Gebieden in de Indische Oceaan</option> 754 <option value="VG">Britse Maagdeneilanden</option> 755 <option value="BN">Brunei</option> 756 <option value="BG">Bulgarije</option> 757 <option value="BF">Burkina Faso</option> 758 <option value="BI">Burundi</option> 759 <option value="KH">Cambodja</option> 760 <option value="CA">Canada</option> 761 <option value="IC">Canarische Eilanden</option> 762 <option value="KY">Caymaneilanden</option> 763 <option value="CF">Centraal-Afrikaanse Republiek</option> 764 <option value="EA">Ceuta en Melilla</option> 765 <option value="CL">Chili</option> 766 <option value="CN">China</option> 767 <option value="CX">Christmaseiland</option> 768 <option value="CP">Clipperton</option> 769 <option value="CC">Cocoseilanden</option> 770 <option value="CO">Colombia</option> 771 <option value="KM">Comoren</option> 772 <option value="CG">Congo</option> 773 <option value="CD">Congo-Kinshasa</option> 774 <option value="CK">Cookeilanden</option> 775 <option value="CR">Costa Rica</option> 776 <option value="CU">Cuba</option> 777 <option value="CY">Cyprus</option> 778 <option value="DK">Denemarken</option> 779 <option value="DG">Diego Garcia</option> 780 <option value="DJ">Djibouti</option> 781 <option value="DM">Dominica</option> 782 <option value="DO">Dominicaanse Republiek</option> 783 <option value="DE">Duitsland</option> 784 <option value="EC">Ecuador</option> 785 <option value="EG">Egypte</option> 786 <option value="SV">El Salvador</option> 787 <option value="GQ">Equatoriaal-Guinea</option> 788 <option value="ER">Eritrea</option> 789 <option value="EE">Estland</option> 790 <option value="ET">Ethiopië</option> 791 <option value="FX">Europese Frankrijk</option> 792 <option value="EU">Europese Unie</option> 793 <option value="FO">Faeröer</option> 794 <option value="FK">Falklandeilanden</option> 795 <option value="FJ">
795Fiji</option> 796 <option value="PH">Filipijnen</option> 797 <option value="FI">Finland</option> 798 <option value="FR">Frankrijk</option> 799 <option value="GF">Frans-Guyana</option> 800 <option value="PF">Frans-Polynesië</option> 801 <option value="TF">Franse Gebieden in de zuidelijke Indische Oceaan</option> 802 <option value="GA">Gabon</option> 803 <option value="GM">Gambia</option> 804 <option value="GE">Georgië</option> 805 <option value="GH">Ghana</option> 806 <option value="GI">Gibraltar</option> 807 <option value="GD">Grenada</option> 808 <option value="GR">Griekenland</option> 809 <option value="GL">Groenland</option> 810 <option value="GP">Guadeloupe</option> 811 <option value="GU">Guam</option> 812 <option value="GT">Guatemala</option> 813 <option value="GG">Guernsey</option> 814 <option value="GN">Guinee</option> 815 <option value="GW">Guinee-Bissau</option> 816 <option value="GY">Guyana</option> 817 <option value="HT">Haïti</option> 818 <option value="HM">Heard- en McDonaldeilanden</option> 819 <option value="IM">Het Eiland Man</option> 820 <option value="HN">Honduras</option> 821 <option value="HU">Hongarije</option> 822 <option value="HK">Hongkong SAR van China</option> 823 <option value="IE">Ierland</option> 824 <option value="IS">IJsland</option> 825 <option value="IN">India</option> 826 <option value="ID">Indonesië</option> 827 <option value="IQ">Irak</option> 828 <option value="IR">Iran</option> 829 <option value="IL">Israël</option> 830 <option value="IT">Italië</option> 831 <option value="CI">Ivoorkust</option> 832 <option value="JM">Jamaica</option> 833 <option value="JP">Japan</option> 834 <option value="YE">Jemen</option> 835 <option value="JE">Jersey</option> 836 <option value="JO">Jordanië</option> 837 <option value="CV">Kaapverdië</option> 838 <option value="CM">Kameroen</option> 839 <option value="KZ">Kazachstan</option> 840 <option value="KE">Kenia</option> 841 <option value="KG">Kirgizië</option> 842 <option value="KI">Kiribati</option> 843 <option value="KW">Koeweit</option> 844 <option value="HR">Kroatië</option> 845 <option value="LA">Laos</option> 846 <option value="LS">Lesotho</option> 847 <option value="LV">Letland</option> 848 <option value="LB">Libanon</option> 849 <option value="LR">Liberia</option> 850 <option value="LY">Libië</option> 851 <option value="LI">Liechtenstein</option> 852 <option value="LT">Litouwen</option> 853 <option value="LU">Luxemburg</option> 854 <option value="MO">Macao SAR van China</option> 855 <option value="MK">Macedonië</option> 856 <option value="MG">Madagaskar</option> 857 <option value="MW">Malawi</option> 858 <option value="MV">Malediven</option> 859 <option value="MY">Maleisië</option> 860 <option value="ML">Mali</option> 861 <option value="MT">Malta</option> 862 <option value="MA">Marokko</option> 863 <option value="MH">Marshalleilanden</option> 864 <option value="MQ">Martinique</option> 865 <option value="MR">Mauritanië</option> 866 <option value="MU">Mauritius</option> 867 <option value="YT">Mayotte</option> 868 <option value="MX">Mexico</option> 869 <option value="FM">Micronesië</option> 870 <option value="MD">Moldavië</option> 871 <option value="MC">Monaco</option> 872 <option value="MN">Mongolië</option> 873 <option value="ME">Montenegro</option> 874 <option value="MS">Montserrat</option> 875 <option value="MZ">Mozambique</option> 876 <option value="MM">Myanmar</option> 877 <option value="NA">Namibië</option> 878 <option value="NR">Nauru</option> 879 <option value="NL">Nederland</option> 880 <option value="AN">Nederlandse Antillen</option> 881 <option value="NP">Nepal</option> 882 <option value="NI">Nicaragua</option> 883 <option value="NC">Nieuw-Caledonië</option> 884 <option value="NZ">Nieuw-Zeeland</option> 885 <option value="NE">Niger</option> 886 <option value="NG">Nigeria</option> 887 <option value="NU">Niue</option> 888 <option value="KP">Noord-Korea</option> 889 <option value="MP">Noordelijke Marianeneilanden</option> 890 <option value="NO">Noorwegen</option> 891 <option value="NF">Norfolkeiland</option> 892 <option value="QO">Oceanië (overige)</option> 893 <option value="UG">Oeganda</option> 894 <option value="UA">Oekraïne</option> 895 <option value="UZ">Oezbekistan</option> 896 <option value="OM">Oman</option> 897 <option value="ZZ">Onbekend of onjuist gebied</option> 898 <option value="TL">Oost-Timor</option> 899 <option value="AT">Oostenrijk</option> 900 <option value="PK">Pakistan</option> 901 <option value="PW">Palau</option> 902 <option value="PS">Palestijns Gebied</option> 903 <option value="PA">Panama</option> 904 <option value="PG">Papoea-Nieuw-Guinea</option> 905 <option value="PY">Paraguay</option> 906 <option value="PE">
906Peru</option> 907 <option value="PN">Pitcairn</option> 908 <option value="PL">Polen</option> 909 <option value="PT">Portugal</option> 910 <option value="PR">Puerto Rico</option> 911 <option value="QA">Qatar</option> 912 <option value="RE">Réunion</option> 913 <option value="RO">Roemenië</option> 914 <option value="RU">Rusland</option> 915 <option value="RW">Rwanda</option> 916 <option value="BL">Saint Barthélemy</option> 917 <option value="KN">Saint Kitts en Nevis</option> 918 <option value="LC">Saint Lucia</option> 919 <option value="PM">Saint Pierre en Miquelon</option> 920 <option value="VC">Saint Vincent en de Grenadines</option> 921 <option value="SB">Salomoneilanden</option> 922 <option value="WS">Samoa</option> 923 <option value="SM">San Marino</option> 924 <option value="ST">Sao Tomé en Principe</option> 925 <option value="SA">Saoedi-Arabië</option> 926 <option value="SN">Senegal</option> 927 <option value="RS">Servië</option> 928 <option value="CS">Servië en Montenegro</option> 929 <option value="SC">Seychellen</option> 930 <option value="SL">Sierra Leone</option> 931 <option value="SG">Singapore</option> 932 <option value="SH">Sint-Helena</option> 933 <option value="MF">Sint-Maarten</option> 934 <option value="SI">Slovenië</option> 935 <option value="SK">Slowakije</option> 936 <option value="SD">Soedan</option> 937 <option value="SO">Somalië</option> 938 <option value="ES">Spanje</option> 939 <option value="LK">Sri Lanka</option> 940 <option value="SR">Suriname</option> 941 <option value="SJ">Svalbard en Jan Mayen</option> 942 <option value="SZ">Swaziland</option> 943 <option value="SY">Syrië</option> 944 <option value="TJ">Tadzjikistan</option> 945 <option value="TW">Taiwan</option> 946 <option value="TZ">Tanzania</option> 947 <option value="TH">Thailand</option> 948 <option value="TG">Togo</option> 949 <option value="TK">Tokelau</option> 950 <option value="TO">Tonga</option> 951 <option value="TT">Trinidad en Tobago</option> 952 <option value="TA">Tristan da Cunha</option> 953 <option value="TD">Tsjaad</option> 954 <option value="CZ">Tsjechië</option> 955 <option value="TN">Tunesië</option> 956 <option value="TR">Turkije</option> 957 <option value="TM">Turkmenistan</option> 958 <option value="TC">Turks- en Caicoseilanden</option> 959 <option value="TV">Tuvalu</option> 960 <option value="UY">Uruguay</option> 961 <option value="VU">Vanuatu</option> 962 <option value="VA">Vaticaanstad</option> 963 <option value="VE">Venezuela</option> 964 <option value="GB">Verenigd Koninkrijk</option> 965 <option value="AE">Verenigde Arabische Emiraten</option> 966 <option value="US" selected="selected">Verenigde Staten</option> 967 <option value="VN">Vietnam</option> 968 <option value="WF">Wallis en Futuna</option> 969 <option value="EH">Westelijke Sahara</option> 970 <option value="BY">Wit-Rusland</option> 971 <option value="ZM">Zambia</option> 972 <option value="ZW">Zimbabwe</option> 973 <option value="ZA">Zuid-Afrika</option> 974 <option value="GS">Zuid-Georgië en Zuidelijke Sandwicheilanden</option> 975 <option value="KR">Zuid-Korea</option> 976 <option value="SE">Zweden</option> 977 <option value="CH">Zwitserland</option> 978 979</select> 980 </p> 981 <!-- FindMyAddress not enabled on this campaign --> 982 </fieldset> 983 984 985 <p id="required-info"> 986 <span class="required">*</span> 987 <span class="help"> 988 Verplichte velden 989 (deze gegevens zijn noodzakelijk om van uw fiscale aftrek gebruik te kunnen maken) </span> 990 </p> 991 992 </fieldset> 993 994 </div> <!-- End Bloc --> 995 996 <div class="step-info"> 997 <h4>We respecteren uw privacy.</h4> 998 <div class="step-info-body"> 999 <p>Vogelbescherming Vlaanderen vzw hecht veel waarde aan de bescherming van uw persoonsgegevens en uw privacy.</p> 1000 1001<p>Wij doen er alles aan om uw privacy te waarborgen en gaan daarom zorgvuldig om met persoonsgegevens. Vogelbescherming Vlaanderen vzw houdt zich in alle gevallen aan de toepasselijke wet- en regelgeving, waaronder de Algemene Verordening Gegevensbescherming (Verordening EU 2016/679).<br /> 1002<br /> 1003<a href="https://www.vogelbescherming.be/privacy-policy/" target="_blank">Lees de volledige privacy policy hier.</a></p> 1004 1005 </div> 1006 </div> <!-- End Step-info --> 1007 </div> <!-- End Step-container --> 1008</div> <!-- End Step-2 --> 1009 1010 <div id="step-3" class="unit size1of3 lastUnit"> 1011 <div class="step-container"> 1012 <div class="step-title"> 1013 <h2>Mijn betaling</h2> 1014 </div> 1015 <div class="step-content"> 1016 <div id="security-info"> 1017 <p>Veilige betalingen met de nieuwste coderingsprotocollen, ontworpen om te voldoen aan de hoogste industrienormen.</p> 1018</div> 1019 1020 <style> 1021 1022 #amount_tip_reassurance { 1023 background-color: #fff; 1024 position: fixed; 1025 top: 0; 1026 left: 0; 1027 height: auto; 1028 width: 100%; 1029 z-index: 900; 1030 box-shadow: 0 10px 40px 0 rgba(0,0,0,0.5); 1031 display: flex; 1032 flex-direction: column; 1033 justify-content: center; 1034 align-items: center; 1035 font-family: 'proxima-nova', sans-serif; 1036 padding-bottom: 30px !important; 1037 font-size: 17px; 1038 line-height: 21px; 1039 } 1040 #amount_tip_reassurance .title, 1041 #amount_tip_reassurance .text, 1042 #amount_tip_reassurance .note { 1043 width: 650px; 1044 max-width: calc( 100% - 40px ); 1045 margin: 0 auto; 1046 font-family: inherit; 1047 font-size: inherit; 1048 line-height: inherit; 1049 text-align: justify; 1050 margin-top: 30px; 1051 } 1052 1053 #amount_tip_reassurance .title { 1054 font-weight: bold; 1055 text-align: left; 1056 position: relative; 1057 padding-right:35px; 1058 } 1059 #amount_tip_reassurance .title::after { 1060 content: ''; 1061 transform: rotate(45deg); 1062 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'><path d='M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z'/></svg>"); 1063 position: absolute; 1064 top: 0; 1065 right: 0; 1066 height: 20px;
1067 width: 20px; 1068 background-size: 20px; 1069 background-position: center center; 1070 background-repeat: no-repeat; 1071 cursor: pointer; 1072 } 1073 #amount_tip_reassurance .text span { 1074 display: block; 1075 } 1076 #amount_tip_reassurance .text span + span { 1077 margin-top: 10px; 1078 } 1079 #amount_tip_reassurance .note { 1080 font-weight: bold; 1081 padding-left: 72px; 1082 background-image: url("data:image/svg+xml,%3Csvg width='46px' height='50px' viewBox='0 0 46 50' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eicon_bonne_nouvelle%3C/title%3E%3Cdefs%3E%3Cpolygon id='path-1' points='0 -2.81314491e-15 42.4618783 -2.81314491e-15 42.4618783 25.13505 0 25.13505'%3E%3C/polygon%3E%3Cpolygon id='path-3' points='0 0 43.4554269 0 43.4554269 48.3329011 0 48.3329011'%3E%3C/polygon%3E%3C/defs%3E%3Cg id='Page-de-don---PAYMENT---Tipping-&-Cover-Fees' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='V3---Cover-Fees---3-Steps-Help-Text-V2---Tablet-horizontal' transform='translate(-188.000000, -176.000000)'%3E%3Cg id='icon_bonne_nouvelle' transform='translate(188.000000, 176.000000)'%3E%3Cg id='Group-3' transform='translate(2.723954, 24.864950)'%3E%3Cmask id='mask-2' fill='white'%3E%3Cuse xlink:href='%23path-1'%3E%3C/use%3E%3C/mask%3E%3Cg id='Clip-2'%3E%3C/g%3E%3Cpath d='M40.8068549,0.279351056 L30.6268917,10.2205775 C30.0773618,10.7572402 29.2128815,10.757933 28.6624607,10.2221611 L20.8845136,2.91228445 C20.0239924,2.0746274 17.9195065,2.04879394 17.0835321,2.91228445 L13.2041595,7.41789555 C12.5329847,8.11124161 11.3454378,10.0069814 10.6640681,9.32402808 L1.65482551,0.292020335 C1.07134585,-0.292944003 0.0582984763,0.069219197 0.00267242591,0.903214038 C0.000890808636,0.930037276 0,0.957058471 0,0.984277624 L0,23.9473447 C0,24.6006044 0.522310797,25.1350895 1.16062467,25.1350895 L41.3013526,25.1350895 C41.9396665,25.1350895 42.4618783,24.6006044 42.4618783,23.9473447 L42.4618783,0.984277624 C42.4618783,0.957058471 42.4609875,0.930037276 42.4592059,0.903214038 C42.4037778,0.0706048993 41.3968671,-0.296804174 40.8068549,0.279351056' id='Fill-1' fill='%2377A9BB' mask='url(%23mask-2)'%3E%3C/path%3E%3C/g%3E%3Cpath d='M15.6311973,10.2204454 C15.6311973,11.0898747 14.9264687,11.7942074 14.0574354,11.7942074 C13.1884021,11.7942074 12.4836735,11.0898747 12.4836735,10.2204454 C12.4836735,9.35141213 13.1884021,8.64668352 14.0574354,8.64668352 C14.9264687,8.64668352 15.6311973,9.35141213 15.6311973,10.2204454' id='Fill-4' fill='%23FFC700'%3E%3C/path%3E%3Cpath d='M30.873131,10.2204454 C30.873131,11.0898747 30.1684024,11.7942074 29.2993691,11.7942074 C28.4303358,11.7942074 27.7256072,11.0898747 27.7256072,10.2204454 C27.7256072,9.35141213 28.4303358,8.64668352 29.2993691,8.64668352 C30.1684024,8.64668352 30.873131,9.35141213 30.873131,10.2204454' id='Fill-6' fill='%23FFC700'%3E%3C/path%3E%3Cpath d='M15.8525138,16.1136395 C15.8525138,18.8850441 18.5685893,21.1576949 21.7835177,21.1576949 C25.0536762,21.1576949 27.7145216,18.8850441 27.7145216,16.1136395 L27.7145216,15.8921251 C27.5482373,15.2270869 26.8275731,14.672707 25.9963497,14.672707 L17.6261138,14.6723111 C16.7391653,14.6723111 16.018897,15.226691 15.9079419,15.8917291 L15.8525138,15.8917291 L15.8525138,16.1136395 Z' id='Fill-8' fill='%23FFC700'%3E%3C/path%3E%3Cg id='Group-12'%3E%3Cmask id='mask-4' fill='white'%3E%3Cuse xlink:href='%23path-3'%3E%3C/use%3E%3C/mask%3E%3Cg id='Clip-11'%3E%3C/g%3E%3Cpath d='M41.9034403,45.1184677 C41.7924851,44.7859981 41.5709707,44.5087586 41.2937313,44.2315192 L31.3166746,34.2544625 L38.3005153,27.2706217 C38.3557454,27.2152926 38.4114704,27.1043374 38.4667996,27.0491073 L41.9031434,23.6126645 L41.9034403,45.1184677 Z M40.4067828,46.8366396 C40.4067828,46.8366396 40.3514537,46.8366396 40.4067828,46.8366396 L3.10367627,46.8366396 L3.04834715,46.8366396 C2.93739199,46.6703553 2.88216185,46.4484449 2.88216185,46.2269305 C2.88216185,45.894362 2.99311702,45.6172215 3.21463143,45.3399821 L20.840765,27.7138485 C21.0622794,27.4923341 21.3952439,27.38128 21.7277135,27.38128 C22.060183,27.38128 22.3374225,27.4923341 22.6146619,27.7138485 L40.2407955,45.3399821 C40.4623099,45.5614965 40.5732651,45.894461 40.5732651,46.2269305 C40.5732651,46.3932148 40.5180349,46.6151251 40.4070798,46.8366396 L40.4067828,46.8366396 Z M1.55168967,45.1184677 L1.55168967,23.6677957 L4.98813245,27.1042385 C5.04346156,27.1595676 5.09908761,27.2705227 5.15441673,27.3257529 L12.1382575,34.3095936 L2.16120073,44.2866503 C1.8843572,44.4533305 1.66284279,44.7858001 1.55188762,45.1184677 L1.55168967,45.1184677 Z M2.32768297,20.3975382 L4.43404948,18.2911717 L4.43404948,24.3327348 L2.32768297,22.2263683 C2.10616855,21.9491289 1.93948836,21.6718894 1.93948836,21.2841897 C1.93948836,20.896391 2.05044352,20.6191516 2.32768297,20.3976372 L2.32768297,20.3975382 Z M5.98603608,4.7113879 L37.4691929,4.7113879 L37.4691929,25.5523508 C37.4691929,25.7738653 37.3582377,26.0511047 37.1919534,26.217389 L30.2634418,33.1459006 L23.6677957,26.6055836 C23.1690418,26.1068297 22.4483776,25.7742612 21.7276145,25.7742612 C21.0068513,25.7742612 20.286583,26.0515006 19.7874333,26.6055836 L13.1917871,33.1459006 L6.26327552,26.217389 C6.09699124,26.0511047 5.98603608,25.8291944 5.98603608,25.5523508 L5.98603608,4.7113879 Z M20.7853369,1.8843572 C21.0625763,1.60711776 21.3397168,1.49616259 21.7275155,1.49616259 C22.1157101,1.49616259 22.3925536,1.60711776 22.6697931,1.8843572 L23.8892111,3.10377525 L19.5105897,3.10377525 L2
10820.7853369,1.8843572 Z M39.0211795,18.2910727 L41.127546,20.3974392 C41.3490604,20.6189536 41.5157406,20.9519181 41.5157406,21.3397168 C41.5157406,21.7278124 41.4047854,22.004656 41.127546,22.2818954 L39.0211795,24.3882619 L39.0211795,18.2910727 Z M42.2917339,19.3443055 C42.2917339,19.2889763 42.2364048,19.2889763 42.2364048,19.2333503 L39.0215754,16.0185209 L39.0211795,3.15920334 L26.1064338,3.15920334 L23.7784539,0.831223437 C23.224074,0.27674455 22.5037068,-5.62628983e-15 21.7277135,-5.62628983e-15 C20.9517202,-5.62628983e-15 20.231056,0.277140465 19.676973,0.831223437 L17.3489931,3.15920334 L4.43424743,3.15920334 L4.43424743,16.073949 L1.21941804,19.2884814 C1.16418791,19.3438106 1.16418791,19.3438106 1.16418791,19.3994366 C0.443523722,19.9539155 0,20.8404681 0,21.8383717 L0,45.2290269 C0,46.9471988 1.38570232,48.3329011 3.10387423,48.3329011 L40.3515527,48.3329011 C42.0697246,48.3329011 43.4554269,46.9471988 43.4554269,45.2290269 L43.4554269,21.7829436 C43.4554269,20.78504 43.0119032,19.9538165 42.2916349,19.3440085 L42.2917339,19.3443055 Z' id='Fill-10' fill='%23000000' mask='url(%23mask-4)'%3E%3C/path%3E%3C/g%3E%3Cpath d='M14.6618688,16.5028931 C14.6713708,18.2136416 15.4175715,19.8338246 16.7656619,21.0680895 C18.124442,22.3123512 19.9064552,22.997581 21.783488,22.997581 C25.7103704,22.997581 28.9052061,20.069196 28.9052061,16.4697353 L28.9052061,16.2084314 C28.7083374,15.4405544 27.9143299,14.8442075 27.0801371,14.8442075 L16.5566188,14.8437126 C15.6498746,14.8437126 14.8464642,15.4477798 14.7274917,16.2188242 L14.6837431,16.5028931 L14.6618688,16.5028931 Z M21.783488,23.667766 C19.7384883,23.667766 17.7957336,22.9200806 16.3130321,21.5623893 C14.8159787,20.1916327 13.9915848,18.3829943 13.9915848,16.4697353 L13.9918818,15.8327081 L14.1301551,15.8327081 C14.4247158,14.8692491 15.4163838,14.1735275 16.5566188,14.1735275 L27.0801371,14.1740224 C28.2451169,14.1740224 29.3141862,14.9990102 29.56678,16.0928242 L29.5753911,16.1301392 L29.5753911,16.4697353 C29.5753911,20.4386837 26.079957,23.667766 21.783488,23.667766 L21.783488,23.667766 Z' id='Fill-13' fill='%23000000'%3E%3C/path%3E%3Cpath d='M14.1875726,8.94363953 C13.3743633,8.94363953 12.7127894,9.60521341 12.7127894,10.4184227 C12.7127894,11.231632 13.3743633,11.8932059 14.1875726,11.8932059 C15.0007819,11.8932059 15.6623558,11.231632 15.6623558,10.4184227 C15.6623558,9.60521341 15.0007819,8.94363953 14.1875726,8.94363953 M14.1875726,12.4870783 C13.0469417,12.4870783 12.118917,11.5590537 12.118917,10.4184227 C12.118917,9.27769277 13.0469417,8.3497671 14.1875726,8.3497671 C15.3282036,8.3497671 16.2562282,9.27769277 16.2562282,10.4184227 C16.2562282,11.5590537 15.3282036,12.4870783 14.1875726,12.4870783' id='Fill-15' fill='%23000000'%3E%3C/path%3E%3Cpath d='M29.3671399,8.94363953 C28.5539305,8.94363953 27.8924556,9.60521341 27.8924556,10.4184227 C27.8924556,11.231632 28.5539305,11.8932059 29.3671399,11.8932059 C30.1803492,11.8932059 30.841923,11.231632 30.841923,10.4184227 C30.841923,9.60521341 30.1803492,8.94363953 29.3671399,8.94363953 M29.3671399,12.4870783 C28.2265089,12.4870783 27.2985832,11.5590537 27.2985832,10.4184227 C27.2985832,9.27769277 28.2265089,8.3497671 29.3671399,8.3497671 C30.5077708,8.3497671 31.4357955,9.27769277 31.4357955,10.4184227 C31.4357955,11.5590537 30.5077708,12.4870783 29.3671399,12.4870783' id='Fill-17' fill='%23000000'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); 1083 background-repeat: no-repeat; 1084 background-position: left center; 1085 background-size: 46px 50px; 1086 min-height: 50px; 1087 display: flex; 1088 justify-content: center; 1089 align-items: center; 1090 } 1091 1092 @media only screen and (max-width: 959px) and (min-width: 0px){ 1093 #amount_tip_reassurance { 1094 font-size: 16px; 1095 line-height: 20px; 1096 } 1097 #amount_tip_reassurance .title, 1098 #amount_tip_reassurance .text, 1099 #amount_tip_reassurance .note { 1100 margin-top: 20px; 1101 } 1102 } 1103 1104 @media only screen and (max-width: 568px) and (min-width: 0px) { 1105 #amount_tip_reassurance { 1106 font-size: 15px; 1107 line-height: 17px; 1108 padding-bottom: 25px !important; 1109 } 1110 #amount_tip_reassurance .title, 1111 #amount_tip_reassurance .text, 1112 #amount_tip_reassurance .note { 1113 margin-top: 15px; 1114 } 1115 #amount_tip_reassurance .note { 1116 background-size: 30px; 1117 padding-left: 45px; 1118 min-height: 40px; 1119 } 1120 } 1121 </style> 1122 1123 <div id="donor-cover-container"> 1124 <div id="donor-cover-block" 1125 class="action_block tip-once tip-regular" 1126 data-icon="heart" 1127 data-eval-visible="!!donation.amount_donation" 1128 > 1129 1130 <div id="amount_tip_reassurance" style="display: none;">
1131 <span class="title">Hallo ð</span> 1132 <div class="text"> 1133 <span>Wij zijn <i>iRaiser</i>, wij bieden online oplossingen voor fondsenwerving - zoals dit donatieformulier - voor non-profitorganisaties zoals Vogelbescherming Vlaanderen.<br><br>Dankzij een bedrijfsmodel gebaseerd op <b>vrijwillige bijdragen van donateurs</b> ondersteunen we non-profitorganisaties door onze diensten aan te bieden zonder de kosten door te berekenen voor het gebruik van het platform (<i>hosting, beveiliging, database, betaalmethoden, support, etc.</i>) zodat ze zich kunnen concentreren op hun missie in plaats van op technologie.<br><br>Door bij te dragen, bevestigt u dat u begrijpt dat iRaiser een bedrijf is dat zijn diensten levert aan non-profitorganisaties en dat u bereid bent om financiële steun te verlenen.<br><br>Bedankt â¤ï¸<br><br><i>PS: alleen uw donatie aan Vogelbescherming Vlaanderen (zonder de vrijwillige bijdrage aan iRaiser) komt in aanmerking voor belastingvoordeel. In de informatie over belastingvoordeel onder het bedrag van uw donatie wordt hier al rekening mee gehouden.</i></span> 1134 1135 </div> 1136 1137 </div> 1138 1139 <p id="amount_tip_block"> 1140 1141 <input type="hidden" name="private_tip_step" value="296e6e0fb758567d_._TDJvI84n5mebnrvVMksSBg" /> 1142 <input type="hidden" name="private_tip_help" value="1f4df89fc73e29dd_._yxpiSijTvA8Ju1_E_cxMag" /> 1143 <input type="hidden" name="private_tip_reassurance" value="88272c3ae4ebfa81_._7dyh5YIlkPUKWBIRjU1rKw" /> 1144 <input type="hidden" name="private_tip_amounts" value="8838218b6048ade0_._n8CpvEpG4kzuBw5ArQHdxA" /> 1145 <input type="hidden" name="private_tip_ux" value="e827c1fbb7c8e52e_._LUC6nd_CWk1mbMIQ-buvjA" /> 1146 1147 1148 <span class="help">Dit donatieplatform wordt aangeboden door onze partner <i>iRaiser</i>.<br>Het toevoegen van een vrijwillige bijdrage aan iRaiser bovenop uw donatie, betekent dat u hen in staat stelt een deel van de platformkosten te dekken en zo meer organisaties zoals de onze ondersteunen. 1149 <a id="amount_tip_help_icon" class="icon"> 1150 <svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> 1151 <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z"></path> 1152 </svg> 1153 </a> 1154 </span> 1155 <select name="amount_tip" id="amount_tip" required="required" class="noplugin"> 1156 <option 1157 data-val="var v_round=50;if(amount<500 && 50>50){v_round=50;};if(amount<200 && 50>
115725){v_round=25;};Math.max(v_round,Math.round(amount*5/(100*v_round))*v_round)" 1158 1159 data-value="self" 1160 data-tag-html="{value_with_currency} {#var _m=Math.floor(self.val()/donation.amount_donation*100);if(donation.amount_donation<2000)_m='';if(_m && ((_m-5)/5*100)<34)_m=5;if(_m) _m='('+_m+'%)';_m}" 1161 data-base="5" 1162 1163 >5%</option> 1164 <option 1165 data-val="var v_round=50;if(amount<500 && 50>50){v_round=50;};if(amount<200 && 50>25){v_round=25;};Math.max(v_round,Math.round(amount*7/(100*v_round))*v_round)" 1166 1167 data-value="self" 1168 data-tag-html="{value_with_currency} {#var _m=Math.floor(self.val()/donation.amount_donation*100);if(donation.amount_donation<2000)_m='';if(_m && ((_m-7)/7*100)<34)_m=7;if(_m) _m='('+_m+'%)';_m}" 1169 data-base="7" 1170 data-default="1" selected 1171 >7%</option> 1172 <option 1173 data-val="var v_round=50;if(amount<500 && 50>50){v_round=50;};if(amount<200 && 50>
117325){v_round=25;};Math.max(v_round,Math.round(amount*10/(100*v_round))*v_round)" 1174 1175 data-value="self" 1176 data-tag-html="{value_with_currency} {#var _m=Math.floor(self.val()/donation.amount_donation*100);if(donation.amount_donation<2000)_m='';if(_m && ((_m-10)/10*100)<34)_m=10;if(_m) _m='('+_m+'%)';_m}" 1177 data-base="10" 1178 1179 >10%</option> 1180 1181 <option value="0" data-base="0" > 1182 Ik draag liever niet bij </option> 1183 </select> 1184 <span id="summary-oneoff" class="summary" data-tag-html="Totaalbedrag van uw betaling: {donation_amount_with_currency}" style="display: none;"></span> 1185 <span id="summary-regular" class="summary" data-tag-html="Totaalbedrag van elke betaling: {donation_amount_with_currency}" style="display: none;"></span> 1186 </p> 1187 </div> 1188 </div> 1189 1190 1191
1191<script> 1192 // TODO: Maybe put the js in a specific js file 1193 // TODO: Avoid using jquery outside the on ready function. 1194 // TODO: Keep $('#amount_tip_reassurance') in a const to avoid new object creation everytime. 1195 $('#amount_tip_reassurance').appendTo('body'); 1196 // TODO: Use on instead of click or scroll 1197 $('#amount_tip_reassurance,input,select').click(function(){ 1198 $('#amount_tip_reassurance').slideUp(); 1199 }); 1200 $(window).scroll(function(){ 1201 $('#amount_tip_reassurance').slideUp(); 1202 }); 1203 $('#amount_tip_help_icon').click(function(){ 1204 $('#amount_tip_reassurance').slideToggle(); 1205 }); 1206 1207 $(function() { 1208 /* 1209 /!\ WARNING /!\ Let it here! 1210 This const is only used in manageDonorCoverWidgetPresence. 1211 But if the const is put in this function, the code does not work anymore! 1212 When the element is detached in the function, the block does not exist anymore, 1213 and it canât be appended when itâs supposed to be! 1214 */ 1215 const $donorCoverWidget = $('#donor-cover-block'); 1216 1217 function changeSummaryMessageFrequency() { 1218 const isOneOff = Common.getDonation().frequency === 'once'; 1219 $('#summary-oneoff').toggle(isOneOff); 1220 $('#summary-regular').toggle(!isOneOff); 1221 } 1222 1223 function manageDonorCoverWidgetPresence() { 1224 const $donorCoverContainer = $('#donor-cover-container'); 1225 const frequency = Common.getDonation().frequency; 1226 if (!$donorCoverWidget.hasClass('tip-' + frequency)) { 1227 $donorCoverWidget.detach(); 1228 return; 1229 } 1230 if ($donorCoverContainer.children().length === 0) { 1231 // If user set a one-off amount and donor cover widget is not already here. 1232 $donorCoverContainer.append($donorCoverWidget); 1233 } 1234 changeSummaryMessageFrequency(); 1235 } 1236 1237 const body = $('body'); 1238 1239 // Add an event to toggle donor cover widget depending on given event and selector. 1240 body.on('init_done', manageDonorCoverWidgetPresence); 1241 // Change the summary message when the amount (or the frequency) was changed 1242 body.on('change_amount', changeSummaryMessageFrequency); 1243 // Some treatments when the page is ready 1244 manageDonorCoverWidgetPresence(); 1245 }); 1246 </script>
1246 1247 1248 1249 1250 1251 1252 1253 <div class="payment"> 1254 <div id="payment_modes_once"> 1255 1256 <fieldset id="payment_mode-bancontact" class="payment_mode"> 1257 1258 <h4 class="payment_head"><span class="payment_mode_title">Bancontact</span></h4> 1259 <div class="payment_body" id="bancontact"> 1260 1261 1262 <p id="bancontact-submit" class="payment-submit"> 1263 <input 1264 name="stripe_bancontact_submit" 1265 type="submit" 1266 value="Bevestigen" 1267 data-no_amount_txt="Bevestigen" 1268 data-once_txt="Bevestigen" 1269 data-regular_txt="Bevestigen" 1270 id="stripe_bancontact_submit" 1271 class="button payment-button " 1272 1273 data-scope="stripe_bancontact" 1274 1275 alt="Bancontact" 1276 1277/> 1278 </p> 1279 1280 1281 </div> 1282 1283 </fieldset> 1284 1285 1286 1287 1288 <input type="hidden" name="paymentNonce" id="paymentNonce" value="" autocomplete="off"/> 1289 <input type="hidden" name="stripeErrorCode" id="stripeErrorCode" value="" autocomplete="off"/> 1290 <input type="hidden" name="stripeError" id="stripeError" value="" autocomplete="off"/> 1291 1292 1293 <fieldset id="payment_mode-card" class="payment_mode"> 1294 <h4 class="payment_head"> 1295 <span class="payment_mode_title">Creditcard</span> 1296 </h4> 1297 <div class="payment_body" id="creditcard"> 1298 1299 <p id="card-number"> 1300 <label for="stripe_creditcard_cardNumber_placeholder_once">Vul het nummer van uw creditcard in</label> 1301 <input type="text" id="stripe_creditcard_cardNumber_placeholder_once" autocomplete="off"/> 1302 </p> 1303 1304 <div class="line"> 1305 <p id="card-expiry" class="unit size1of2"> 1306 <label for="stripe_creditcard_cardExpiry_placeholder_once">Vervaldatum</label> 1307 <input type="text" id="stripe_creditcard_cardExpiry_placeholder_once" autocomplete="off"/> 1308 </p> 1309 1310 <p id="card-scode" class="unit size2of2 lastUnit"> 1311 <label for="stripe_creditcard_cardCvc_placeholder_once">Veiligheidscode</label> 1312 <input type="text" id="stripe_creditcard_cardCvc_placeholder_once" autocomplete="off"/> 1313 <span class="help">De veiligheidscode bestaat uit de 3 laatste cijfers op de keerzijde van uw creditcard</span> 1314 <span class="help amex" 1315 style="display: none;">De veiligheidscode bestaat uit 4 cijfers, die rechts bovenaan staan aan de achterkant van uw bankkaart</span> 1316 </p> 1317 1318 </div> 1319 1320 1321 1322 1323
1324<script type="text/javascript"> 1325 if (!window.stripeJsLoaded) { 1326 window.stripeJsLoaded = new Promise((resolve, reject) => { 1327 const s = document.createElement('script'); 1328 s.src = 'https://js.stripe.com/v3/'; 1329 s.type = 'text/javascript'; 1330 s.onerror = reject; 1331 s.onload = resolve; 1332 document.head.appendChild(s); 1333 }); 1334 } 1335</script>
1335 1336 1337<input type="hidden" name="stripe_creditcard_paymentMethod" id="stripe_creditcard_paymentMethod_once" 1338 data-scope="stripe" data-required = "1" data-ira-check="window.stripe_creditcard.checkPaymentMethod('once')"/>
1339<script> 1340 var stripeElementGetFrequency = () => Step1.current_donation.frequency; 1341 1342 if (!window.stripe_creditcard) { 1343 const VAL_ERROR = 'error'; 1344 const VAL_NOT_SET = 'N/A'; 1345 1346 const defaultCoords = {}; 1347 1348 1349 1350 defaultCoords["firstname"] = null; 1351 defaultCoords["lastname"] = null; 1352 defaultCoords["email"] = null; 1353 1354 const defaultPaymentMethodErrorMessage = "Uw bankgegevens zijn niet correct. Gelieve ze te controleren en opnieuw in te brengen."; 1355 const lang = "nl_NL"; 1356 const cardCvcPlaceholder = "Use the value provided by Stripe"; 1357 const stripePublicApiKey = "pk_live_srqYyZqem3SpTx2GjUycaPjN"; 1358 const stripeApiVersion = "2020-08-27"; 1359 1360 1361 const coordNames = Object.keys(defaultCoords); 1362 1363 const elementConf = { 1364 'cardNumber': { 1365 defaultErrorMessage: DntErrors.errorMsg.cardnumber, 1366 options: {showIcon: true}, 1367 }, 1368 'cardExpiry': { 1369 defaultErrorMessage: DntErrors.errorMsg.cardmonth, 1370 }, 1371 'cardCvc': { 1372 defaultErrorMessage: DntErrors.errorMsg.cardscode, 1373 }, 1374 }; 1375 // only add a CVC placeholder for languages which have a short CVC provided 1376 if (cardCvcPlaceholder != 'Use the value provided by Stripe') { 1377 elementConf.cardCvc.options = {placeholder: cardCvcPlaceholder}; 1378 } 1379 const elementTypes = Object.keys(elementConf); 1380 1381 window.stripe_creditcard = { 1382 complete: {}, 1383 elements: {}, 1384 error: {}, 1385 frequencies: {}, 1386 lastInitFrequency: '', 1387 stripe: false, 1388 1389 checkElement: function(frequency, elementType) { 1390 this.log('checkElement', [frequency, elementType]); 1391 if (frequency !== this.lastInitFrequency) return false; 1392 1393 const complete = this.complete[frequency][elementType]; 1394 const error = this.error[frequency][elementType]; 1395 const placeholder = $('#' + this.getPlaceholderId(frequency, elementType)); 1396 1397 if (!complete || error) { 1398 placeholder.attr('data-ira-errormsg', error && error.message 1399 ? error.message 1400 : elementConf[elementType].defaultErrorMessage 1401 ); 1402 return false; 1403 } else { 1404 placeholder.removeAttr('data-ira-errormsg'); 1405 return true; 1406 } 1407 }, 1408 1409 checkPaymentMethod: function(frequency) { 1410 this.log('checkPaymentMethod', [frequency]); 1411 if (frequency !== this.lastInitFrequency) return false; 1412 1413 const paymentMethodInput = this.getPaymentMethodInput(frequency); 1414 1415 if (paymentMethodInput.val() === VAL_ERROR) { 1416 paymentMethodInput.attr('data-ira-errormsg', this.error[frequency].paymentMethod || defaultPaymentMethodErrorMessage); 1417 return false; 1418 } else { 1419 paymentMethodInput.removeAttr('data-ira-errormsg'); 1420 return true; 1421 } 1422 }, 1423 1424 createPaymentMethod: function (frequency) { 1425 if (frequency !== this.lastInitFrequency) return; 1426 this.log('createPaymentMethod', [frequency]); 1427 1428 const paymentMethodInput = this.resetPaymentMethod(frequency); 1429 1430 for (let elementType of elementTypes) { 1431 if (!this.complete[frequency][elementType]) return; 1432 } 1433 1434 const coords = {}; 1435 for (let coordName of coordNames) { 1436 const coordInput = $('input[name="' + coordName + '"]'); 1437 coords[coordName] = coordInput.length ? coordInput.val() : defaultCoords[coordName]; 1438 if (!coords[coordName]) return; 1439 } 1440 1441 // All other inputs we rely on are ok and won't trigger any error message display, 1442 // so until createPaymentMethod succeds, we must ensure paymentMethodInput does 1443 paymentMethodInput.val(VAL_ERROR); 1444 1445 // Prevent form submission before createPaymentMethod answers 1446 $('#stripe_submit.' + frequency).prop('disabled', true); 1447 setTimeout(() => { 1448 try { 1449 this.stripe.createPaymentMethod({ 1450 type: 'card', 1451 card: this.elements[frequency].cardNumber, 1452 billing_details: { 1453 name: coords.firstname + ' ' + co
1453ords.lastname, 1454 email: coords.email, 1455 } 1456 }).then(result => { 1457 $('#stripe_submit.' + frequency).prop('disabled', false); 1458 console.log(result); 1459 1460 if (result.paymentMethod && result.paymentMethod.id) { 1461 paymentMethodInput.val(result.paymentMethod.id); 1462 console.log('paymentMethod = ' + paymentMethodInput.val()); 1463 } else { 1464 this.error[frequency].paymentMethod = result.error.message; 1465 for (let prop of ['type', 'code', 'decline_code', 'message']) { 1466 window.onerror('createPaymentMethod error.' + prop + ' = ' + result.error[prop]); 1467 } 1468 } 1469 }); 1470 } catch (e) { 1471 console.log(e); 1472 $('#stripe_submit.' + frequency).prop('disabled', false); 1473 } 1474 }, 500); 1475 1476 }, 1477 1478 getContainerId: function(frequency, elementType) { 1479 return 'stripe_creditcard_' + elementType + '_container_' + frequency; 1480 }, 1481 1482 getPaymentMethodInput: function(frequency) { 1483 return $('#stripe_creditcard_paymentMethod_' + frequency); 1484 }, 1485 1486 getPlaceholderId: function(frequency, elementType) { 1487 return 'stripe_creditcard_' + elementType + '_placeholder_' + frequency; 1488 }, 1489 1490 /** 1491 * Build an array of Stripe JS CssFontSource objects 1492 * from the fonts used by the specified elements. 1493 * 1494 * See https://stripe.com/docs/js/appendix/css_font_source_object 1495 * 1496 * Warning: works only for fonts loaded from a google-style stylesheet URL 1497 * with a family=xxx parameter (where xxx is the font-family) 1498 */ 1499 getStripeJsCssFontSources: function(ids) { 1500 try { 1501 const used = {}; 1502 for (let id of ids) { 1503 const computedStyle = window.getComputedStyle(document.getElementById(id)); 1504 const fontFamily = computedStyle.getPropertyValue('font-family'); 1505 used[fontFamily] = true; 1506 } 1507 1508 const hrefs = []; 1509 for (let s of document.styleSheets) { 1510 if (!s.href) continue; 1511 const params = new URLSearchParams(new URL(s.href).search); 1512 const fontFamily = params.get('family'); 1513 if (used[fontFamily] && (hrefs.indexOf(s.href) === -1)) { 1514 hrefs.push(s.href); 1515 } 1516 } 1517 return hrefs.map(href => ({cssSrc: href})); 1518 } catch (error) { 1519 /** 1520 * Stripe Element implementation has javascript incompatibility with Opera browser. 1521 * We work around this problem by catching exceptions in getStripeJsCssFontSources and returning an empty list. 1522 * This fix will have an impact on the design of Stripe Elements, but it will not block the creation of donations. 1523 */ 1524 return []; 1525 } 1526 }, 1527 1528 /** 1529 * Get the locale as expected by Stripe JS 1530 * 1531 * See https://stripe.com/docs/js/appendix/supported_locales 1532 */ 1533 getStripeJsLocale: function () { 1534 switch(lang) { 1535 case 'en_EN': 1536 return 'en-GB'; 1537 case 'se_SE': 1538 return 'sv'; 1539 case 'zh_TW': 1540 return lang.substring(0, 2) + '-' + lang.substring(3, 5); 1541 default: 1542 return lang.substring(0, 2); 1543 } 1544 }, 1545 1546 /** 1547 * Build a Stripe JS Style object from the specified element's computed style 1548 * and copy all other styles to the provided container. 1549 * 1550 * See https://stripe.com/docs/js/appendix/style 1551 */ 1552 getStripeJsStyle: function(id, container) { 1553 const styleKeyMap = { 1554 // Stripe JS recommands setting background-color on the container 1555 //'background-color': 'backgroundColor', 1556 'color': 'color', 1557 'font-family': 'fontFamily', 1558 'font-size': 'fontSize', 1559 'font-smoothing': 'fontSmoothing', 1560 'font-style': 'fontStyle', 1561 'font-variant': 'fontVariant', 1562 'font-weight': 'fontWeight', 1563 // Stripe JS doesn't like line-height and doesn't even take it into account 1564 //'line-height': 'lineHeight', 1565 'letter-spacing': 'letterSpacing', 1566 'text-align': 'textAlign', 1567 'text-decoration': 'textDecoration', 1568 'text-shadow': 'textShadow', 1569 'text-transform': 'textTransform', 1570 }; 1571 const baseStyle = {}; 1572 const computedStyle = window.getComputedStyle(document.getElementById(id)); 1573 for (let cssProp of computedStyle) { 1574 const styleKey = styleKeyMap[cssProp]; 1575 const cssValue = computedStyle.getPropertyValue(cssProp); 1576 if (styleKey) { 1577 baseStyle[styleKey] = cssValue; 1578 } else { 1579 container.css(cssProp, cssValue); 1580 } 1581 } 1582 return {base: baseStyle}; 1583 }, 1584 1585 init: function (reason) { 1586 const frequency = stripeElementGetFrequency(); 1587 if (!this.frequencies[frequency]) return; 1588 this.log('init', [frequency, reason]); 1589 1590 // Stripe elements are reset at every init so we need to reset as well 1591 this.complete[frequency] = {}; 1592 this.error[frequency] = {}; 1593 this.resetPaymentMethod(frequency); 1594 this.lastInitFrequency = frequency; 1595 1596 this.mount(frequency); 1597 }, 1598 1599 isMounted: function(frequency) { 1600 return !!this.elements[frequency]; 1601 }, 1602 1603 log: function (method, params = []) { 1604 console.log('stripe_creditcard.' + method + '(' + params.join(', ') + ')'); 1605 }, 1606 1607 mount: function (frequency) { 1608 const wasAlreadyMounted = this.unmount(frequency); 1609 this.log('mount', [frequency]); 1610 1611 if (!this.stripe) { 1612 this.stripe = Stripe(stripePublicApiKey, {
1613 locale: this.getStripeJsLocale(), 1614 apiVersion: stripeApiVersion 1615 }); 1616 } 1617 1618 const stripeElements = this.stripe.elements({ 1619 fonts: this.getStripeJsCssFontSources( 1620 elementTypes.map(elementType => this.getPlaceholderId(frequency, elementType)) 1621 ), 1622 }); 1623 1624 this.elements[frequency] = {}; 1625 for (let elementType of elementTypes) { 1626 const placeholderId = this.getPlaceholderId(frequency, elementType); 1627 1628 const containerId = this.getContainerId(frequency, elementType); 1629 const container = $('<span/>').attr('id', containerId); 1630 1631 const element = stripeElements.create(elementType, Object.assign( 1632 {style: this.getStripeJsStyle(placeholderId, container)}, 1633 elementConf[elementType].options 1634 )); 1635 this.elements[frequency][elementType] = element; 1636 1637 $('#' + placeholderId) 1638 .attr('data-scope', 'stripe') 1639 .attr('data-required', '1') 1640 .attr('data-ira-check', "window.stripe_creditcard.checkElement('" + frequency + "', '" + elementType + "')") 1641 .val(VAL_NOT_SET) 1642 .hide() 1643 .after(container); 1644 element.mount('#' + containerId); 1645 1646 // Stripe creates an intermediate div between the container and its iframe 1647 // Let's force this div's contents to be vertically centered inside the container 1648 $('#' + containerId + ' div').css({ 1649 display: 'flex', 1650 height: '100%', 1651 'align-items': 'center', 1652 }); 1653 1654 element.on('change', ev => this.onElementChanged(frequency, ev, placeholderId)); 1655 } 1656 1657 if (!wasAlreadyMounted) { 1658 for (let coordName of coordNames) { 1659 $('input[name="' + coordName + '"]').on('change', () => this.createPaymentMethod(frequency)); 1660 } 1661 // Force a re-init if the payment mode was previously hidden 1662 // as Stripe does not mount well hidden fields 1663 const cvcPlaceholderId = this.getPlaceholderId(frequency, 'cardCvc'); 1664 $('#payment_mode-card:has(#' + cvcPlaceholderId + ')').on('payment_shown', () => this.init('payment_shown')); 1665 } 1666 }, 1667 1668 unmount: function (frequency) { 1669 if (!this.isMounted(frequency)) return false; 1670 this.log('unmount', [frequency]); 1671 1672 for (let elementType of elementTypes) { 1673 this.elements[frequency][elementType].destroy(); 1674 $('#' + this.getContainerId(frequency, elementType)).remove(); 1675 $('#' + this.getPlaceholderId(frequency, elementType)).show(); 1676 } 1677 return true; 1678 }, 1679 1680 onElementChanged: function (frequency, ev, placeholderId) { 1681 this.log('onElementChanged', [ 1682 frequency, 1683 ev.elementType, 1684 ev.complete ? 'complete' : 'not complete', 1685 ev.error ? ev.error.message : 'no error', 1686 ]); 1687 this.complete[frequency][ev.elementType] = ev.complete; 1688 this.error[frequency][ev.elementType] = ev.error; 1689 1690 this.createPaymentMethod(frequency); 1691 Common.toggleDisplayErrorInput($("#" + placeholderId), !!ev.error); 1692 }, 1693 1694 resetPaymentMethod: function (frequency) { 1695 const paymentMethodInput = this.getPaymentMethodInput(frequency); 1696 paymentMethodInput.val(VAL_NOT_SET); 1697 this.error[frequency].paymentMethod = false;
1698 return paymentMethodInput; 1699 }, 1700 }; 1701 1702 window.stripeJsLoaded.then(() => { 1703 // Force a reinit when the donation amount or the style change 1704 for (let event of ['init_done', 'WebFont.fontactive']) { 1705 $('body').on(event, () => window.stripe_creditcard.init(event)); 1706 } 1707 }); 1708 } 1709 1710 if (!window.stripe_creditcard.frequencies["once"]) { 1711 window.stripe_creditcard.frequencies["once"] = true; 1712 window.stripeJsLoaded.then(() => { 1713 // Ensure the 1st init is done only once, for the active frequency 1714 if (stripeElementGetFrequency() === "once") { 1715 window.stripe_creditcard.init("stripeJsLoaded"); 1716 } 1717 }); 1718 } 1719 1720</script>
1720 1721 1722 1723 1724 <p id="card-submit" class="payment-submit"> 1725 <input 1726 name="stripe_submit" 1727 type="submit" 1728 value="Bevestigen" 1729 data-no_amount_txt="Bevestigen" 1730 data-once_txt="Bevestigen" 1731 data-regular_txt="Bevestigen" 1732 id="stripe_submit" 1733 class="button payment-button once" 1734 1735 data-scope="stripe" 1736 1737/> 1738 </p> 1739 </div> 1740 </fieldset> 1741 1742 1743 <fieldset id="payment_mode-apple_pay-once" class="payment_mode" data-scope='stripe_apple_pay'> 1744 1745 <h4 class="payment_head"><span 1746 class="payment_mode_title">Apple Pay</span></h4> 1747 <div class="payment_body" id="apple_pay"> 1748 1749 1750 1751 <div id="apple_pay-submit" class="payment-submit"> 1752 <input 1753 name="stripe_apple_pay_submit" 1754 type="submit" 1755 value="Bevestigen" 1756 data-no_amount_txt="Bevestigen" 1757 data-once_txt="Bevestigen" 1758 data-regular_txt="Bevestigen" 1759 id="stripe_apple_pay_submit" 1760 class="button payment-button once" 1761 1762 data-scope="stripe_apple_pay" 1763 1764 alt="Apple Pay" 1765 1766 style="display:none;" 1767 1768 disabled="disabled" 1769 1770/> 1771 </div> 1772 <input type="hidden" name="stripe_apple_pay_paymentMethod" id="stripe_apple_pay_paymentMethod" class="once" value=""/> 1773 1774 1775 1776 </div> 1777 1778 </fieldset> 1779 1780 1781 1782 1783 1784 1785
1786<script type="text/javascript"> 1787 if (!window.stripeJsLoaded) { 1788 window.stripeJsLoaded = new Promise((resolve, reject) => { 1789 const s = document.createElement('script'); 1790 s.src = 'https://js.stripe.com/v3/'; 1791 s.type = 'text/javascript'; 1792 s.onerror = reject; 1793 s.onload = resolve; 1794 document.head.appendChild(s); 1795 }); 1796 } 1797</script>
1797 1798 1799
1800<script type="text/javascript"> 1801 var Stripe_obj = { 1802 PayWithApple:true, 1803 PayWithWallet:true, 1804 StripeButtonPopulate: false, 1805 buttons: { 1806 Step2: false, 1807 Step3: false 1808 }, 1809 paymentRequest: false, 1810 populate: function (ev) { 1811 try { 1812 $('input[name=private_stripe_connect_paymentMethod]').val(JSON.stringify(ev)); 1813 if ((!$('input[name=lastname]').val() || !$('input[name=firstname]').val()) && ev.payerName) { 1814 var name = ev.payerName.split(' ').filter(function(x){ return x&&true;}); 1815 if (name.length) { 1816 $('input[name=firstname]').val(name[0]); 1817 $('input[name=lastname]').val(name.slice(1).join(' ')); 1818 }else{ 1819 $('input[name=firstname]').val('N/A'); 1820 $('input[name=lastname]').val(ev.payerName); 1821 } 1822 } 1823 if (ev.payerEmail) { 1824 $('input[name=email]').val(ev.payerEmail); 1825 } 1826 if (!$('select[name=civility] option:selected').val()) { 1827 // If no civility was selected, force a "0" civility value 1828 // for the step 2 validation not to fail if the civility was mandatory 1829 $('select[name=civility] option:first').prop('selected', 'selected').val("0"); 1830 } 1831 if ($('input[type=tel]').length && !$('input[type=tel]').val() && ev.payerPhone) { 1832 $('input[type=tel]').val(ev.payerPhone); 1833 } 1834 if (ev.paymentMethod && ev.paymentMethod.billing_details) { 1835 let evBillingDetails = ev.paymentMethod.billing_details; 1836 if ((!$('input[name=lastname]').val() || !$('input[name=firstname]').val()) && evBillingDetails.name) { 1837 var name = evBillingDetails.name.replace('').split(' ').filter(function(x){ return x&&true;}); 1838 if (name.length) { 1839 $('input[name=firstname]').val(name[0]); 1840 $('input[name=lastname]').val(name.slice(1).join(' ')); 1841 }else{ 1842 $('input[name=firstname]').val('N/A'); 1843 $('input[name=lastname]').val(evBillingDetails.name); 1844 } 1845 } 1846 if (evBillingDetails.address) { 1847 let evBillingAddress = evBillingDetails.address; 1848 if (!$('input[name=country]').val() && evBillingAddress.country) { 1849 $('select[name=country] option[value=' + evBillingAddress.country + ']').prop('selected', 'selected'); 1850 } 1851 if (!$('input[name=address1]').val() && evBillingAddress.line1) { 1852 $('input[name=address1]').val(evBillingAddress.line1); 1853 } 1854 if (!$('input[name=address2]').val() && evBillingAddress.line2) { 1855 $('input[name=address2]').val(evBillingAddress.line2); 1856 } 1857 if (!$('input[name=postcode]').val() && evBillingAddress.postal_code) { 1858 $('input[name=postcode]').val(evBillingAddress.postal_code); 1859 } 1860 if (!$('input[name=city]').val() && evBillingAddress.city) { 1861 $('input[name=city]').val(evBillingAddress.city); 1862 } 1863 } 1864 } 1865 } 1866 catch (err) { 1867 let msg = 'Stripe_obj.populate exception: ' + err; 1868 console.log(msg); 1869 window.onerror(msg); 1870 } 1871 }, 1872 createStripeButton: function (ev) { 1873 console.log('Stripe_obj.createStripeButton'); 1874 1875 if(!Stripe_obj.buttons.Step3 && !Stripe_obj.buttons.Step2) return; 1876 1877 var amount = parseInt(Common.getDonation().amount); 1878 var currency = (Common.getCurrency() || "EUR").toLowerCase(); 1879 1880 var accountCountry = "BE"; 1881 var frequency = Step1.current_donation.frequency; 1882 1883 1884 // Some currencies are having an amount with three decimal cents, 1885 // We must write 12340 for 12.340 KWD for example (in those cases, last digit must always be a 0) 1886 const threeDecimalCurrencies = ["BHD","JOD","KWD","OMR","TND"]; 1887 if (threeDecimalCurrencies.includes(currency.toUpperCase())) { 1888 amount = amount * 10; 1889 } 1890 // Some currencies are having an amount with no decimal cents, 1891 const zeroDecimalCurrencies = ["BIF","CLP","DJF","GNF","JPY","KMF","KRW","MGA","PYG","RWF","UGX","VND","VUV","XAF","XOF","XPF"]; 1892 if (zeroDecimalCurrencies.includes(currency.toUpperCase())) { 1893 amount = amount / 100; 1894 } 1895 1896 console.log({Step2: Stripe_obj.buttons.Step2 && true,Step3: Stripe_obj.buttons.Step3 && true}); 1897 console.log({amount: amount, currency: currency, accountCountry: accountCountry, frequency: frequency}); 1898 Stripe_obj.paymentRequest = false;
1899 1900 try{ 1901 if (!Stripe_obj.stripe) { 1902 // Create a Stripe client. 1903 Stripe_obj.stripe = Stripe("pk_live_srqYyZqem3SpTx2GjUycaPjN", { apiVersion: "2020-08-27" }); 1904 } 1905 Stripe_obj.paymentRequest = Stripe_obj.stripe.paymentRequest({ 1906 country: accountCountry, 1907 currency: currency, 1908 total: { 1909 label: "Vogelbescherming Vlaanderen", 1910 amount: parseInt(amount) 1911 }, 1912 requestPayerName: true, 1913 requestPayerEmail: true 1914 //requestPayerPhone: true 1915 }); 1916 }catch(error){ 1917 console.log("paymentRequest creation failed"); 1918 console.log(error); 1919 } 1920 1921 if(!Stripe_obj.paymentRequest){ 1922 // nothing available 1923 Stripe_obj.removeStripeConnect(); 1924 Stripe_obj.removeStripePay(); 1925 }else { 1926 Stripe_obj.paymentRequest.canMakePayment().then( 1927 function (result) { 1928 console.log('paymentRequest.canMakePayment() - promise fulfilled'); 1929 console.log(result); 1930 // data-stripe-mode drives the wallet logo (v4 CSS). Wallet availability does not 1931 // depend on the frequency, so tag both frequencies at once (Common.select reaches 1932 // the detached one), otherwise the other frequency's logo flickers in on switch. 1933 var stripeApplePayElements = Common.select("[data-scope='stripe_apple_pay']"); 1934 1935 // show / hide the appropriate blocks and mount the button 1936 if (result) { 1937 if (!result.applePay) { 1938 var txt = $("fieldset[data-scope='stripe_apple_pay'] .payment_mode_title").first().text(); 1939 var ua = window.navigator.userAgent; 1940 if (ua.indexOf('Chrome') > 0) { 1941 txt = txt.replace('Apple Pay', 'Google Pay'); 1942 stripeApplePayElements.attr('data-stripe-mode','google'); 1943 } else { 1944 txt = txt.replace('Apple Pay', 'Saved Credit Cards'); 1945 stripeApplePayElements.attr('data-stripe-mode','other'); 1946 } 1947 if(txt) { 1948 Common.select("[data-scope='stripe_apple_pay'] .payment_mode_title").text(txt); 1949 } 1950 1951 Stripe_obj.removeStripeConnect(); 1952 if (Stripe_obj.PayWithWallet) { 1953 Stripe_obj.mountStripePay(frequency); 1954 } else { 1955 Stripe_obj.removeStripePay(); 1956 } 1957 } else { 1958 stripeApplePayElements.attr('data-stripe-mode','apple'); 1959 $('#stripe_apple_pay_submit.' + frequency).addClass('apple_pay_styled_button'); 1960 //Apple Pay OK 1961 if (Stripe_obj.buttons.Step2) { 1962 Stripe_obj.mountStripeConnect(frequency); 1963 } 1964 if (Stripe_obj.buttons.Step3) { 1965 if (Stripe_obj.PayWithApple) { 1966 // Mount the button with its value cleared 1967 // for it not to interfere with Apple Pay styling 1968 Stripe_obj.mountStripePay(frequency); 1969 } else { 1970 Stripe_obj.removeStripePay(); 1971 } 1972 }
1973 Stripe_obj.validatePaymentMethodIfExists(); 1974 } 1975 } else { 1976 // nothing available 1977 Stripe_obj.removeStripeConnect(); 1978 Stripe_obj.removeStripePay(); 1979 } 1980 }, 1981 function (reason) { 1982 console.log('paymentRequest.canMakePayment() - promise rejected'); 1983 console.log(reason); 1984 Stripe_obj.removeStripeConnect(); 1985 Stripe_obj.removeStripePay(); 1986 } 1987 ); 1988 1989 Stripe_obj.paymentRequest.on('cancel', function (ev) { 1990 console.log('paymentRequest.on(cancel)'); 1991 $('.ira-processing').removeClass('ira-processing'); 1992 }); 1993 1994 Stripe_obj.paymentRequest.on('paymentmethod', function (ev) { 1995 console.log('paymentRequest.on(paymentMethod)'); 1996 console.log(ev); 1997 if (Stripe_obj.StripeButtonPopulate) { 1998 Stripe_obj.populate(ev); 1999 Stripe_obj.StripeButtonPopulate = false; 2000 } 2001 // Send the paymentMethod to your server to charge it 2002 $('#stripe_apple_pay_paymentMethod.' + frequency).val(ev.paymentMethod.id); 2003 ev.complete('success'); 2004 $('#stripe_apple_pay_submit.' + frequency).prop('disabled', false).trigger('click'); 2005 //$('.ira-processing').removeClass('ira-processing'); 2006 }); 2007 } 2008 }, 2009 2010 mountStripePay:function(frequency){ 2011 console.log(`mountStripePay(${frequency})`); 2012 // Reveal the Arya v4 tab that was built hidden (unavailable-payment-method). Clear the inline 2013 // display instead of using .show(): on the detached frequency block jQuery forces 2014 // display:block on the <h4>, which overrides the CSS display:flex and collapses the ::before 2015 // wallet logo. 2016 var stripeApplePayTab = Common.select("[data-scope='stripe_apple_pay']").filter('h4.unavailable-payment-method'); 2017 if (stripeApplePayTab.length) { 2018 stripeApplePayTab.removeClass('unavailable-payment-method').css('display', ''); 2019 $('body').trigger($.Event('paymentModeListUpdated')); 2020 } 2021 $('#stripe_apple_pay_submit.' + frequency).prop('disabled', false).show(); 2022 }, 2023 validatePaymentMethodIfExists:function(){ 2024 }, 2025 removeStripePay: function(){ 2026 Stripe_obj.buttons.Step3 = false; 2027 console.log("removeStripePay"); 2028 const stripeApplePayElmt = Common.select("[data-scope='stripe_apple_pay']"); 2029 stripeApplePayElmt.filter('h4').addClass('unavailable-payment-method'); 2030 stripeApplePayElmt.hide(); 2031 $('body').trigger($.Event('paymentModeListUpdated')); 2032 }, 2033 mountStripeConnect:function(frequency){ 2034 console.log(`mountStripeConnect(${frequency})`); 2035 $('#StripePayButtonLogin').attr('data-frequency', frequency).show(); 2036 }, 2037 removeStripeConnect: function(){ 2038 console.log("removeStripeConnect"); 2039 Stripe_obj.buttons.Step2 = false; 2040 $("#stripe-connect").detach(); 2041 if(!$('#fielset-step2-connect fieldset').length){ 2042 // no connector available 2043 $('.step2_connect_block').detach(); 2044 // remove all blocks related to connectors 2045 }else{ 2046 var fieldsetlength = $('#fielset-step2-connect fieldset').length; 2047 if($("#fielset-step2-connect fieldset.regularblock").length == fieldsetlength){ 2048 $('.step2_connect_block').addClass('regularblock'); 2049 }else if($("#fielset-step2-connect fieldset.onceblock").length == fieldsetlength){ 2050 $('.step2_connect_block').addClass('onceblock'); 2051 } 2052 } 2053 }, 2054
2055 stripe: false 2056 2057 } 2058 2059 window.stripeJsLoaded.then(() => { 2060 $('body').on('init_done tip_changed', Stripe_obj.createStripeButton); 2061 Stripe_obj.createStripeButton(); 2062 }); 2063</script>
2063 2064 2065 2066 2067
2067<script> 2068 Stripe_obj.buttons.Step3 = true; 2069 $('#stripe_apple_pay_submit.once').click(function(event){ 2070 // Submit the form if called after receiving the paymentMethod 2071 if ( 2072 (Stripe_obj.buttons.Step2 || Stripe_obj.buttons.Step3) && 2073 $('#stripe_apple_pay_paymentMethod.once').val() 2074 ) { 2075 console.log('stripe_apple_pay_submit -- submitting form'); 2076 return true; 2077 } 2078 else if (Stripe_obj.buttons.Step3) { 2079 // Or show the Apple/Google/Microsoft popup if called in step 3 and the form is valid 2080 if (Step1.check() && Step2.check() && Step3.check()) { 2081 console.log('paymentRequest.show() -- stripePay'); 2082 Stripe_obj.paymentRequest.show(); 2083 return false; 2084 } else { 2085 DntErrors.displayErrors(); 2086 } 2087 } 2088 // Or stay on the form 2089 setTimeout(() => $('.ira-processing').removeClass('ira-processing'), 500); 2090 return false; 2091 }); 2092 </script>
2092 2093 <style> 2094 #stripe_apple_pay_submit.apple_pay_styled_button { 2095 -webkit-appearance: -apple-pay-button !important; 2096 -apple-pay-button-type: donate; 2097 2098 color: transparent !important; 2099 } 2100 </style> 2101 2102 2103<fieldset id="payment_mode-iban" class="payment_mode"> 2104 <h4 class="payment_head"> 2105 <span class="payment_mode_title">IBAN</span> 2106 </h4> 2107 <div class="payment_body" id="iban"> 2108 2109 2110 <p id="iban-input"> 2111 <label for="iban-number">Uw IBAN nummer</label> 2112 <input type="text" name="iban-number" id="iban-number" maxlength="34" autocomplete="off" 2113 data-required="1" 2114 data-ira-check="IBANValidator.validate($('#iban-number').val()).valid" 2115 data-ira-errormsg-empty="Het IBAN-veld is verplicht" 2116 data-ira-errormsg-invalid="U dient een geldig IBAN-nummer in te voeren" 2117 data-scope='stripe_sepa_debit' /> 2118 </p> 2119 2120 2121 2122 2123 <p id="iban-submit" class="payment-submit"> 2124 2125 2126 <input 2127 name="stripe_sepa_debit_submit" 2128 type="submit" 2129 value="Bevestigen" 2130 data-no_amount_txt="Bevestigen" 2131 data-once_txt="Bevestigen" 2132 data-regular_txt="Bevestigen" 2133 id="iban_submit" 2134 class="button payment-button " 2135 2136 data-scope="stripe_sepa_debit" 2137 2138/> 2139 </p> 2140 </div> 2141</fieldset> 2142 2143 </div> 2144 2145<div id="payment_modes_regular" style="display:none"> 2146 2147 2148 2149 2150 2151 <input type="hidden" name="paymentNonce" id="paymentNonce" value="" autocomplete="off"/> 2152 <input type="hidden" name="stripeErrorCode" id="stripeErrorCode" value="" autocomplete="off"/> 2153 <input type="hidden" name="stripeError" id="stripeError" value="" autocomplete="off"/> 2154 2155 2156 <fieldset id="payment_mode-card" class="payment_mode"> 2157 <h4 class="payment_head"> 2158 <span class="payment_mode_title">Creditcard</span> 2159 </h4> 2160 <div class="payment_body" id="creditcard"> 2161 2162 <p id="card-number"> 2163 <label for="stripe_creditcard_cardNumber_placeholder_regular">Vul het nummer van uw creditcard in</label> 2164 <input type="text" id="stripe_creditcard_cardNumber_placeholder_regular" autocomplete="off"/> 2165 </p> 2166 2167 <div class="line"> 2168 <p id="card-expiry" class="unit size1of2"> 2169 <label for="stripe_creditcard_cardExpiry_placeholder_regular">Vervaldatum</label> 2170 <input type="text" id="stripe_creditcard_cardExpiry_placeholder_regular" autocomplete="off"/> 2171 </p> 2172 2173 <p id="card-scode" class="unit size2of2 lastUnit"> 2174 <label for="stripe_creditcard_cardCvc_placeholder_regular">Veiligheidscode</label> 2175 <input type="text" id="stripe_creditcard_cardCvc_placeholder_regular" autocomplete="off"/> 2176 <span class="help">De veiligheidscode bestaat uit de 3 laatste cijfers op de keerzijde van uw creditcard</span> 2177 <span class="help amex" 2178 style="display: none;">De veiligheidscode bestaat uit 4 cijfers, die rechts bovenaan staan aan de achterkant van uw bankkaart</span> 2179 </p> 2180 2181 </div> 2182 2183 2184 2185 2186
2187<script type="text/javascript"> 2188 if (!window.stripeJsLoaded) { 2189 window.stripeJsLoaded = new Promise((resolve, reject) => { 2190 const s = document.createElement('script'); 2191 s.src = 'https://js.stripe.com/v3/'; 2192 s.type = 'text/javascript'; 2193 s.onerror = reject; 2194 s.onload = resolve; 2195 document.head.appendChild(s); 2196 }); 2197 } 2198</script>
2198 2199 2200<input type="hidden" name="stripe_creditcard_paymentMethod" id="stripe_creditcard_paymentMethod_regular" 2201 data-scope="stripe" data-required = "1" data-ira-check="window.stripe_creditcard.checkPaymentMethod('regular')"/>
2202<script> 2203 var stripeElementGetFrequency = () => Step1.current_donation.frequency; 2204 2205 if (!window.stripe_creditcard) { 2206 const VAL_ERROR = 'error'; 2207 const VAL_NOT_SET = 'N/A'; 2208 2209 const defaultCoords = {}; 2210 2211 2212 2213 defaultCoords["firstname"] = null; 2214 defaultCoords["lastname"] = null; 2215 defaultCoords["email"] = null; 2216 2217 const defaultPaymentMethodErrorMessage = "Uw bankgegevens zijn niet correct. Gelieve ze te controleren en opnieuw in te brengen."; 2218 const lang = "nl_NL"; 2219 const cardCvcPlaceholder = "Use the value provided by Stripe"; 2220 const stripePublicApiKey = "pk_live_srqYyZqem3SpTx2GjUycaPjN"; 2221 const stripeApiVersion = "2020-08-27"; 2222 2223 2224 const coordNames = Object.keys(defaultCoords); 2225 2226 const elementConf = { 2227 'cardNumber': { 2228 defaultErrorMessage: DntErrors.errorMsg.cardnumber, 2229 options: {showIcon: true}, 2230 }, 2231 'cardExpiry': { 2232 defaultErrorMessage: DntErrors.errorMsg.cardmonth, 2233 }, 2234 'cardCvc': { 2235 defaultErrorMessage: DntErrors.errorMsg.cardscode, 2236 }, 2237 }; 2238 // only add a CVC placeholder for languages which have a short CVC provided 2239 if (cardCvcPlaceholder != 'Use the value provided by Stripe') { 2240 elementConf.cardCvc.options = {placeholder: cardCvcPlaceholder}; 2241 } 2242 const elementTypes = Object.keys(elementConf); 2243 2244 window.stripe_creditcard = { 2245 complete: {}, 2246 elements: {}, 2247 error: {}, 2248 frequencies: {}, 2249 lastInitFrequency: '', 2250 stripe: false, 2251 2252 checkElement: function(frequency, elementType) { 2253 this.log('checkElement', [frequency, elementType]); 2254 if (frequency !== this.lastInitFrequency) return false; 2255 2256 const complete = this.complete[frequency][elementType]; 2257 const error = this.error[frequency][elementType]; 2258 const placeholder = $('#' + this.getPlaceholderId(frequency, elementType)); 2259 2260 if (!complete || error) { 2261 placeholder.attr('data-ira-errormsg', error && error.message 2262 ? error.message 2263 : elementConf[elementType].defaultErrorMessage 2264 ); 2265 return false; 2266 } else { 2267 placeholder.removeAttr('data-ira-errormsg'); 2268 return true; 2269 } 2270 }, 2271 2272 checkPaymentMethod: function(frequency) { 2273 this.log('checkPaymentMethod', [frequency]); 2274 if (frequency !== this.lastInitFrequency) return false; 2275 2276 const paymentMethodInput = this.getPaymentMethodInput(frequency); 2277 2278 if (paymentMethodInput.val() === VAL_ERROR) { 2279 paymentMethodInput.attr('data-ira-errormsg', this.error[frequency].paymentMethod || defaultPaymentMethodErrorMessage); 2280 return false; 2281 } else { 2282 paymentMethodInput.removeAttr('data-ira-errormsg'); 2283 return true; 2284 } 2285 }, 2286 2287 createPaymentMethod: function (frequency) { 2288 if (frequency !== this.lastInitFrequency) return; 2289 this.log('createPaymentMethod', [frequency]); 2290 2291 const paymentMethodInput = this.resetPaymentMethod(frequency); 2292 2293 for (let elementType of elementTypes) { 2294 if (!this.complete[frequency][elementType]) return; 2295 } 2296 2297 const coords = {}; 2298 for (let coordName of coordNames) { 2299 const coordInput = $('input[name="' + coordName + '"]'); 2300 coords[coordName] = coordInput.length ? coordInput.val() : defaultCoords[coordName]; 2301 if (!coords[coordName]) return; 2302 } 2303 2304 // All other inputs we rely on are ok and won't trigger any error message display, 2305 // so until createPaymentMethod succeds, we must ensure paymentMethodInput does 2306 paymentMethodInput.val(VAL_ERROR); 2307 2308 // Prevent form submission before createPaymentMethod answers 2309 $('#stripe_submit.' + frequency).prop('disabled', true); 2310 setTimeout(() => { 2311 try { 2312 this.stripe.createPaymentMethod({ 2313 type: 'card', 2314 card: this.elements[frequency].cardNumber, 2315 billing_details: { 2316 name: coords.firstname + ' ' + co
2316ords.lastname, 2317 email: coords.email, 2318 } 2319 }).then(result => { 2320 $('#stripe_submit.' + frequency).prop('disabled', false); 2321 console.log(result); 2322 2323 if (result.paymentMethod && result.paymentMethod.id) { 2324 paymentMethodInput.val(result.paymentMethod.id); 2325 console.log('paymentMethod = ' + paymentMethodInput.val()); 2326 } else { 2327 this.error[frequency].paymentMethod = result.error.message; 2328 for (let prop of ['type', 'code', 'decline_code', 'message']) { 2329 window.onerror('createPaymentMethod error.' + prop + ' = ' + result.error[prop]); 2330 } 2331 } 2332 }); 2333 } catch (e) { 2334 console.log(e); 2335 $('#stripe_submit.' + frequency).prop('disabled', false); 2336 } 2337 }, 500); 2338 2339 }, 2340 2341 getContainerId: function(frequency, elementType) { 2342 return 'stripe_creditcard_' + elementType + '_container_' + frequency; 2343 }, 2344 2345 getPaymentMethodInput: function(frequency) { 2346 return $('#stripe_creditcard_paymentMethod_' + frequency); 2347 }, 2348 2349 getPlaceholderId: function(frequency, elementType) { 2350 return 'stripe_creditcard_' + elementType + '_placeholder_' + frequency; 2351 }, 2352 2353 /** 2354 * Build an array of Stripe JS CssFontSource objects 2355 * from the fonts used by the specified elements. 2356 * 2357 * See https://stripe.com/docs/js/appendix/css_font_source_object 2358 * 2359 * Warning: works only for fonts loaded from a google-style stylesheet URL 2360 * with a family=xxx parameter (where xxx is the font-family) 2361 */ 2362 getStripeJsCssFontSources: function(ids) { 2363 try { 2364 const used = {}; 2365 for (let id of ids) { 2366 const computedStyle = window.getComputedStyle(document.getElementById(id)); 2367 const fontFamily = computedStyle.getPropertyValue('font-family'); 2368 used[fontFamily] = true; 2369 } 2370 2371 const hrefs = []; 2372 for (let s of document.styleSheets) { 2373 if (!s.href) continue; 2374 const params = new URLSearchParams(new URL(s.href).search); 2375 const fontFamily = params.get('family'); 2376 if (used[fontFamily] && (hrefs.indexOf(s.href) === -1)) { 2377 hrefs.push(s.href); 2378 } 2379 } 2380 return hrefs.map(href => ({cssSrc: href})); 2381 } catch (error) { 2382 /** 2383 * Stripe Element implementation has javascript incompatibility with Opera browser. 2384 * We work around this problem by catching exceptions in getStripeJsCssFontSources and returning an empty list. 2385 * This fix will have an impact on the design of Stripe Elements, but it will not block the creation of donations. 2386 */ 2387 return []; 2388 } 2389 }, 2390 2391 /** 2392 * Get the locale as expected by Stripe JS 2393 * 2394 * See https://stripe.com/docs/js/appendix/supported_locales 2395 */ 2396 getStripeJsLocale: function () { 2397 switch(lang) { 2398 case 'en_EN': 2399 return 'en-GB'; 2400 case 'se_SE': 2401 return 'sv'; 2402 case 'zh_TW': 2403 return lang.substring(0, 2) + '-' + lang.substring(3, 5); 2404 default: 2405 return lang.substring(0, 2); 2406 } 2407 }, 2408 2409 /** 2410 * Build a Stripe JS Style object from the specified element's computed style 2411 * and copy all other styles to the provided container. 2412 * 2413 * See https://stripe.com/docs/js/appendix/style 2414 */ 2415 getStripeJsStyle: function(id, container) { 2416 const styleKeyMap = { 2417 // Stripe JS recommands setting background-color on the container 2418 //'background-color': 'backgroundColor', 2419 'color': 'color', 2420 'font-family': 'fontFamily', 2421 'font-size': 'fontSize', 2422 'font-smoothing': 'fontSmoothing', 2423 'font-style': 'fontStyle', 2424 'font-variant': 'fontVariant', 2425 'font-weight': 'fontWeight', 2426 // Stripe JS doesn't like line-height and doesn't even take it into account 2427 //'line-height': 'lineHeight', 2428 'letter-spacing': 'letterSpacing', 2429 'text-align': 'textAlign', 2430 'text-decoration': 'textDecoration', 2431 'text-shadow': 'textShadow', 2432 'text-transform': 'textTransform', 2433 }; 2434 const baseStyle = {}; 2435 const computedStyle = window.getComputedStyle(document.getElementById(id)); 2436 for (let cssProp of computedStyle) { 2437 const styleKey = styleKeyMap[cssProp]; 2438 const cssValue = computedStyle.getPropertyValue(cssProp); 2439 if (styleKey) { 2440 baseStyle[styleKey] = cssValue; 2441 } else { 2442 container.css(cssProp, cssValue); 2443 } 2444 } 2445 return {base: baseStyle}; 2446 }, 2447 2448 init: function (reason) { 2449 const frequency = stripeElementGetFrequency(); 2450 if (!this.frequencies[frequency]) return; 2451 this.log('init', [frequency, reason]); 2452 2453 // Stripe elements are reset at every init so we need to reset as well 2454 this.complete[frequency] = {}; 2455 this.error[frequency] = {}; 2456 this.resetPaymentMethod(frequency); 2457 this.lastInitFrequency = frequency; 2458 2459 this.mount(frequency); 2460 }, 2461 2462 isMounted: function(frequency) { 2463 return !!this.elements[frequency]; 2464 }, 2465 2466 log: function (method, params = []) { 2467 console.log('stripe_creditcard.' + method + '(' + params.join(', ') + ')'); 2468 }, 2469 2470 mount: function (frequency) { 2471 const wasAlreadyMounted = this.unmount(frequency); 2472 this.log('mount', [frequency]); 2473 2474 if (!this.stripe) { 2475 this.stripe = Stripe(stripePublicApiKey, {
2476 locale: this.getStripeJsLocale(), 2477 apiVersion: stripeApiVersion 2478 }); 2479 } 2480 2481 const stripeElements = this.stripe.elements({ 2482 fonts: this.getStripeJsCssFontSources( 2483 elementTypes.map(elementType => this.getPlaceholderId(frequency, elementType)) 2484 ), 2485 }); 2486 2487 this.elements[frequency] = {}; 2488 for (let elementType of elementTypes) { 2489 const placeholderId = this.getPlaceholderId(frequency, elementType); 2490 2491 const containerId = this.getContainerId(frequency, elementType); 2492 const container = $('<span/>').attr('id', containerId); 2493 2494 const element = stripeElements.create(elementType, Object.assign( 2495 {style: this.getStripeJsStyle(placeholderId, container)}, 2496 elementConf[elementType].options 2497 )); 2498 this.elements[frequency][elementType] = element; 2499 2500 $('#' + placeholderId) 2501 .attr('data-scope', 'stripe') 2502 .attr('data-required', '1') 2503 .attr('data-ira-check', "window.stripe_creditcard.checkElement('" + frequency + "', '" + elementType + "')") 2504 .val(VAL_NOT_SET) 2505 .hide() 2506 .after(container); 2507 element.mount('#' + containerId); 2508 2509 // Stripe creates an intermediate div between the container and its iframe 2510 // Let's force this div's contents to be vertically centered inside the container 2511 $('#' + containerId + ' div').css({ 2512 display: 'flex', 2513 height: '100%', 2514 'align-items': 'center', 2515 }); 2516 2517 element.on('change', ev => this.onElementChanged(frequency, ev, placeholderId)); 2518 } 2519 2520 if (!wasAlreadyMounted) { 2521 for (let coordName of coordNames) { 2522 $('input[name="' + coordName + '"]').on('change', () => this.createPaymentMethod(frequency)); 2523 } 2524 // Force a re-init if the payment mode was previously hidden 2525 // as Stripe does not mount well hidden fields 2526 const cvcPlaceholderId = this.getPlaceholderId(frequency, 'cardCvc'); 2527 $('#payment_mode-card:has(#' + cvcPlaceholderId + ')').on('payment_shown', () => this.init('payment_shown')); 2528 } 2529 }, 2530 2531 unmount: function (frequency) { 2532 if (!this.isMounted(frequency)) return false; 2533 this.log('unmount', [frequency]); 2534 2535 for (let elementType of elementTypes) { 2536 this.elements[frequency][elementType].destroy(); 2537 $('#' + this.getContainerId(frequency, elementType)).remove(); 2538 $('#' + this.getPlaceholderId(frequency, elementType)).show(); 2539 } 2540 return true; 2541 }, 2542 2543 onElementChanged: function (frequency, ev, placeholderId) { 2544 this.log('onElementChanged', [ 2545 frequency, 2546 ev.elementType, 2547 ev.complete ? 'complete' : 'not complete', 2548 ev.error ? ev.error.message : 'no error', 2549 ]); 2550 this.complete[frequency][ev.elementType] = ev.complete; 2551 this.error[frequency][ev.elementType] = ev.error; 2552 2553 this.createPaymentMethod(frequency); 2554 Common.toggleDisplayErrorInput($("#" + placeholderId), !!ev.error); 2555 }, 2556 2557 resetPaymentMethod: function (frequency) { 2558 const paymentMethodInput = this.getPaymentMethodInput(frequency); 2559 paymentMethodInput.val(VAL_NOT_SET); 2560 this.error[frequency].paymentMethod = false;
2561 return paymentMethodInput; 2562 }, 2563 }; 2564 2565 window.stripeJsLoaded.then(() => { 2566 // Force a reinit when the donation amount or the style change 2567 for (let event of ['init_done', 'WebFont.fontactive']) { 2568 $('body').on(event, () => window.stripe_creditcard.init(event)); 2569 } 2570 }); 2571 } 2572 2573 if (!window.stripe_creditcard.frequencies["regular"]) { 2574 window.stripe_creditcard.frequencies["regular"] = true; 2575 window.stripeJsLoaded.then(() => { 2576 // Ensure the 1st init is done only once, for the active frequency 2577 if (stripeElementGetFrequency() === "regular") { 2578 window.stripe_creditcard.init("stripeJsLoaded"); 2579 } 2580 }); 2581 } 2582 2583</script>
2583 2584 2585 2586 2587 <p id="card-submit" class="payment-submit"> 2588 <input 2589 name="stripe_submit" 2590 type="submit" 2591 value="Bevestigen" 2592 data-no_amount_txt="Bevestigen" 2593 data-once_txt="Bevestigen" 2594 data-regular_txt="Bevestigen" 2595 id="stripe_submit" 2596 class="button payment-button regular" 2597 2598 data-scope="stripe" 2599 2600/> 2601 </p> 2602 </div> 2603 </fieldset> 2604 2605 2606 <fieldset id="payment_mode-apple_pay-regular" class="payment_mode" data-scope='stripe_apple_pay'> 2607 2608 <h4 class="payment_head"><span 2609 class="payment_mode_title">Apple Pay</span></h4> 2610 <div class="payment_body" id="apple_pay"> 2611 2612 2613 2614 <div id="apple_pay-submit" class="payment-submit"> 2615 <input 2616 name="stripe_apple_pay_submit" 2617 type="submit" 2618 value="Bevestigen" 2619 data-no_amount_txt="Bevestigen" 2620 data-once_txt="Bevestigen" 2621 data-regular_txt="Bevestigen" 2622 id="stripe_apple_pay_submit" 2623 class="button payment-button regular" 2624 2625 data-scope="stripe_apple_pay" 2626 2627 alt="Apple Pay" 2628 2629 style="display:none;" 2630 2631 disabled="disabled" 2632 2633/> 2634 </div> 2635 <input type="hidden" name="stripe_apple_pay_paymentMethod" id="stripe_apple_pay_paymentMethod" class="regular" value=""/> 2636 2637 2638 2639 </div> 2640 2641 </fieldset> 2642 2643 2644 2645
2645<script> 2646 Stripe_obj.buttons.Step3 = true; 2647 $('#stripe_apple_pay_submit.regular').click(function(event){ 2648 // Submit the form if called after receiving the paymentMethod 2649 if ( 2650 (Stripe_obj.buttons.Step2 || Stripe_obj.buttons.Step3) && 2651 $('#stripe_apple_pay_paymentMethod.regular').val() 2652 ) { 2653 console.log('stripe_apple_pay_submit -- submitting form'); 2654 return true; 2655 } 2656 else if (Stripe_obj.buttons.Step3) { 2657 // Or show the Apple/Google/Microsoft popup if called in step 3 and the form is valid 2658 if (Step1.check() && Step2.check() && Step3.check()) { 2659 console.log('paymentRequest.show() -- stripePay'); 2660 Stripe_obj.paymentRequest.show(); 2661 return false; 2662 } else { 2663 DntErrors.displayErrors(); 2664 } 2665 } 2666 // Or stay on the form 2667 setTimeout(() => $('.ira-processing').removeClass('ira-processing'), 500); 2668 return false; 2669 }); 2670 </script>
2670 2671 <style> 2672 #stripe_apple_pay_submit.apple_pay_styled_button { 2673 -webkit-appearance: -apple-pay-button !important; 2674 -apple-pay-button-type: subscribe; 2675 2676 color: transparent !important; 2677 } 2678 </style> 2679 2680 2681<fieldset id="payment_mode-iban" class="payment_mode"> 2682 <h4 class="payment_head"> 2683 <span class="payment_mode_title">IBAN</span> 2684 </h4> 2685 <div class="payment_body" id="iban"> 2686 2687 2688 <p id="iban-input"> 2689 <label for="iban-number">Uw IBAN nummer</label> 2690 <input type="text" name="iban-number" id="iban-number" maxlength="34" autocomplete="off" 2691 data-required="1" 2692 data-ira-check="IBANValidator.validate($('#iban-number').val()).valid" 2693 data-ira-errormsg-empty="Het IBAN-veld is verplicht" 2694 data-ira-errormsg-invalid="U dient een geldig IBAN-nummer in te voeren" 2695 data-scope='stripe_sepa_debit' /> 2696 </p> 2697 2698 2699 2700 2701 <p id="iban-submit" class="payment-submit"> 2702 2703 2704 <input 2705 name="stripe_sepa_debit_submit" 2706 type="submit" 2707 value="Bevestigen" 2708 data-no_amount_txt="Bevestigen" 2709 data-once_txt="Bevestigen" 2710 data-regular_txt="Bevestigen" 2711 id="iban_submit" 2712 class="button payment-button " 2713 2714 data-scope="stripe_sepa_debit" 2715 2716/> 2717 </p> 2718 </div> 2719</fieldset> 2720 2721 </div> 2722 </div> <!-- End Payment --> 2723 </div> <!-- End Bloc --> 2724 2725 <div class="step-info"> 2726 <h4>Zorgeloos schenken</h4> 2727 <div class="step-info-body"> 2728 Deze website is 100% veilig.<br /> 2729Alle bankgegevens om de betaling te verwerken worden gecodeerd met behulp van het SSL-protocol. Ze worden in geen geval opgeslagen op onze computersystemen.<br /> 2730<br /> 2731Onze donorservice staat tot uw beschikking om al uw vragen te beantwoorden. Aarzel niet om contact met ons op te nemen via e-mail: [email protected]<br /> 2732<br /> 2733<meta charset="UTF-8" />Giften aan Vogelbescherming Vlaanderen zijn fiscaal aftrekbaar vanaf 40 euro. Hebt u gedurende het hele kalenderjaar voor 40 euro of meer gesteund? Dan ontvangt u daarvoor een fiscaal attest. Vult u bij uw donatie uw rijksregisternummer in, dan wordt uw gift automatisch opgenomen in uw belastingaangifte en hoeft u niets te ondernemen om van uw belastingvoordeel te genieten. 2734 </div> 2735 </div> <!-- End Step-info --> 2736 </div> <!-- End Step-container --> 2737</div> <!-- End Step 3 --> 2738 2739 2740 2741 </form> 2742 2743 2744 </div> 2745 </div> <!-- End Main --> 2746 2747 <div id="footer" class="line"> 2748 <div class="container" id="footer_wrapinner"> 2749 2750 <div id="powered" class="unit size1of3" style="display:block !important;"> 2751 2752<a style="display:block !important;" href="https://www.iraiser.com/nl/" title="Powered by iRaiser" target="_blank"> 2753 2754 <img style="display:block !important; min-width: 100px!important;min-height: 15px!important;" src="/themes/default/arya/assets/powered_by_iraiser_black.svg" alt="Powered by iRaiser" width="120" height="18" loading="lazy"/> 2755 </a> 2756 </div> 2757 2758 <div id="copyright" class="unit size2of3 lastUnit"> 2759 <p> 2760 2761 <a href="https://doneer.vogelbescherming.be/privacy" title="Privacy" target="_blank" rel="noopener noreferrer">Privacy</a> <span>|</span> 2762 <a href="https://doneer.vogelbescherming.be/disclaimer" title="Disclaimer" target="_blank" rel="noopener noreferrer">Disclaimer</a> <span>|</span> 2763 <a href="https://doneer.vogelbescherming.be/contact" title="Contact" target="_blank" rel="noopener noreferrer">Contact</a> 2764 </p> 2765 </div> 2766 </div> 2767 </div> <!-- End Footer --> 2768</div> <!-- End Container --> 2769 2770 2771</body></html>
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.