PageSourceSearch

https://doneer.vogelbescherming.be/giften/~mijn-donatie?_cv=1

html vogelbescherming.be collected 2026-10-02 02:57:17 UTC 158,836 bytes, 2,771 lines download raw bytes

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-&amp;-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.