CINXE.COM
Help us
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_EN" lang="en_EN"> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"/> <title>Help us</title> <meta name="description" content="Reporters Without Borders, an NGO of public utility, defends the freedom to inform and be informed over the world" /> <meta name="keywords" content="journalists, press, reporters, hostages, censorship" /> <link type="text/css" href="https://donate.rsf.org/themes/default/css/style_v2.css?hash=f8b6806de2accedfb5c1d726ef192c66" rel="stylesheet" /> <script type="text/javascript"> // <![CDATA[ const cacheVersion = "24070"; var gamonitoring_previous_page = sessionStorage.getItem('gamonitoring_previous_page') || document.referrer || "https:\/\/donate.rsf.org"; var gamonitoring_session_id = sessionStorage.getItem('gamonitoring_session_id') || String(Math.floor(Math.random() * 8999999999) + 1000000000)+'.'+String(Math.floor(Date.now()/1000)); var gamonitoring_v2_client_id = gamonitoring_session_id; var gamonitoring_v2_session_id = gamonitoring_v2_client_id.replace(/^.*\./, ''); var gamonitoring_sc = ''; if(!sessionStorage.getItem('gamonitoring_session_id')) gamonitoring_sc = 'start'; if(typeof(monitoringvga)=='undefined'){ monitoringvga=1; 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("&")}; try{ var head = document.getElementsByTagName('HEAD')[0]; document.addEventListener('DOMContentLoaded', function(event) { var monitoringparams = {z:Math.random(),cid:"donate.rsf.org\/"+gamonitoring_session_id,dl:"https:\/\/donate.rsf.org\/RSF\/b:steps\/cid=32",sc:gamonitoring_sc,dr:gamonitoring_previous_page,cd:"2024-11-23:16.46.02-6741f8bac3a68",dt:window.location.host+'/'+"donations",ul:"en-EN",ds:"web",}; var inputs = document.querySelectorAll('input[type=hidden][name=context_form_id]'), i; var link = document.createElement('link'); link.rel = 'stylesheet'; link.href = 'https://monitoring.iraiser.eu/check.css?'+monitoring_serialize(monitoringparams); head.appendChild(link); var input = document.createElement("input"); input.setAttribute("type", "hidden"); input.setAttribute("name", "private_monitoring_session_id"); input.setAttribute("value", "donate.rsf.org\/"+gamonitoring_session_id); for (i = 0; i < inputs.length; ++i) { inputs[i].parentNode.insertBefore(input, inputs[i]); } var link_v2 = document.createElement('link'); monitoringparams.cid = gamonitoring_v2_client_id; monitoringparams.sid = gamonitoring_v2_session_id; link_v2.rel = 'stylesheet'; link_v2.type = 'text/css'; link_v2.href = 'https://monitoring.iraiser.eu/v2/check.css?'+monitoring_serialize(monitoringparams); head.appendChild(link_v2); var input_v2_client_id = document.createElement("input"); input_v2_client_id.setAttribute("type", "hidden"); input_v2_client_id.setAttribute("name", "private_monitoring_v2_client_id"); input_v2_client_id.setAttribute("value", gamonitoring_v2_client_id); var input_v2_session_id = document.createElement("input"); input_v2_session_id.setAttribute("type", "hidden"); input_v2_session_id.setAttribute("name", "private_monitoring_v2_session_id"); input_v2_session_id.setAttribute("value", gamonitoring_v2_session_id); for (i = 0; i < inputs.length; ++i) { inputs[i].parentNode.insertBefore(input_v2_client_id, inputs[i]); inputs[i].parentNode.insertBefore(input_v2_session_id, inputs[i]); } }); window.onerror = function (eventOrMessage, url, lineNumber, colNumber, error) { var monitoringerrorparams = {z:Math.random(),cid:"donate.rsf.org\/"+gamonitoring_session_id,t:"event",ec:"JSError",ev:1,ea:"\/RSF\/b:steps\/cid=32\/",}; if (!eventOrMessage) { return; } if (typeof eventOrMessage !== 'string') { error = eventOrMessage.error; url = eventOrMessage.filename || eventOrMessage.fileName; lineNumber = eventOrMessage.lineno || eventOrMessage.lineNumber; colNumber = eventOrMessage.colno || eventOrMessage.columnNumber; eventOrMessage = eventOrMessage.message || eventOrMessage.name || error.message || error.name; } if (error && error.stack) { eventOrMessage = [eventOrMessage, '; Stack: ', error.stack, '.'].join(''); } var jsFile = (/[^/]+\.js/i.exec(url || '') || [])[0] || 'inline', eventOrMessage = eventOrMessage.replace(/https?\:\/\/[^/]+/gi, '').replace(/[?&]context_form_[^ &]+/gi, ''); stack = [eventOrMessage, ' > ' + jsFile, ':', lineNumber || '?', ':', colNumber || '?'].join('').substring(0,450); monitoringerrorparams.ea += jsFile; monitoringerrorparams.el = stack; var link = document.createElement('link'); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = 'https://monitoring.iraiser.eu/error.css?'+monitoring_serialize(monitoringerrorparams); head.appendChild(link); monitoringerrorparams.cid = gamonitoring_v2_client_id; monitoringerrorparams.sid = gamonitoring_v2_session_id; var link_v2 = document.createElement('link'); link_v2.rel = 'stylesheet'; link_v2.type = 'text/css'; link_v2.href = 'https://monitoring.iraiser.eu/v2/error.css?'+monitoring_serialize(monitoringerrorparams); head.appendChild(link_v2); } } catch (error) {console.error(error);} sessionStorage.setItem('gamonitoring_previous_page',gamonitoring_previous_page); sessionStorage.setItem('gamonitoring_session_id',gamonitoring_session_id); } // ]]> </script><script type="text/javascript" src="https://donate.rsf.org/themes/default/js/jquery-1.11.2.min.js?hash=5790ead7ad3ba27397aedfa3d263b867" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/jquery.cookie-1.0.min.js?hash=6f6ed3cd5486dbf3bb9143eea287a6a5" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/dnterrors.min.js?hash=af6b6c3691e205792b5ad49d7fa92b5a" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/jquery.config.min.js?hash=aae7bb01c8a0e6da615dd41aaafab4b5" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/step1.min.js?hash=ddb0461c6ec36bc51449a0f8bbafad7b" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/step2.min.js?hash=52f2b25c91cfb4ff1b559c7b186e6da6" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/step3.min.js?hash=1cbc70ae6688f4df94453feb30066dcd" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/steps.min.js?hash=0b3621bd88c488f4f53f841cb640a269" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/jquery.ir-priceinput.min.js?hash=07482ff72021c2c53278074abe52347f" ></script> <script type="text/javascript" src="https://donate.rsf.org/themes/default/js/common.min.js?hash=ef2e383a6a180f6fe62a1f93d12c1436" ></script> <script type="text/javascript"> // <![CDATA[ old_console_log = console.log; if(typeof $.cookie == 'undefined' || !$.cookie('DntManager')){ console.log = function(){}; } if(typeof(String.prototype.replaceAll) == 'undefined') String.prototype.replaceAll = String.prototype.replace; var ira_form_version = 'b'; Common.price_pattern = "\u20ac1.22" Common.price_default_currency = "EUR" Common.price_campaign_currency = "EUR" Common.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","BGN":"\u043b\u0432","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"} Common.price_rates = {"AED":3.975162,"AFN":71.402577,"ALL":98.759803,"AMD":419.550178,"ANG":1.956185,"AOA":986.507157,"ARS":1064.147299,"AUD":1.618097,"AWG":1.95081,"AZN":1.834638,"BAM":1.956967,"BBD":2.191527,"BDT":129.707345,"BGN":1.95627,"BHD":0.407955,"BIF":3150.908003,"BMD":1.08228,"BND":1.424963,"BOB":7.516482,"BRL":6.157743,"BSD":1.085357,"BTC":1.5997506e-5,"BTN":91.24511,"BWP":14.481769,"BYN":3.552051,"BYR":21212.695149,"BZD":2.187825,"CAD":1.496393,"CDF":3079.087489,"CHF":0.936259,"CLF":0.03735,"CLP":1030.601247,"CNY":7.710272,"CNH":7.705073,"COP":4629.72483,"CRC":558.132815,"CUC":1.08228,"CUP":28.68043,"CVE":110.33079,"CZK":25.272389,"DJF":193.277037,"DKK":7.457924,"DOP":65.298938,"DZD":144.556962,"EGP":52.638897,"ERN":16.234205,"ETB":130.491912,"EUR":1,"FJD":2.417488,"FKP":0.828127,"GBP":0.832247,"GEL":2.944353,"GGP":0.828127,"GHS":17.355349,"GIP":0.828127,"GMD":75.759333,"GNF":9362.669477,"GTQ":8.393005,"GYD":226.975346,"HKD":8.413929,"HNL":27.032119,"HRK":7.455862,"HTG":142.866511,"HUF":401.471538,"IDR":16859.06004,"ILS":4.101408,"IMP":0.828127,"INR":90.997213,"IQD":1421.860995,"IRR":45566.704929,"ISK":149.105894,"JEP":0.828127,"JMD":172.482852,"JOD":0.767316,"JPY":163.144567,"KES":140.01481,"KGS":92.533751,"KHR":4404.667205,"KMF":492.600137,"KPW":974.052084,"KRW":1493.081285,"KWD":0.331654,"KYD":0.904548,"KZT":523.446968,"LAK":23839.435747,"LBP":97197.056767,"LKR":318.232703,"LRD":208.93652,"LSL":19.127983,"LTL":3.195693,"LVL":0.65466,"LYD":5.223163,"MAD":10.762218,"MDL":19.428765,"MGA":5008.032567,"MKD":61.629257,"MMK":3515.204407,"MNT":3677.588709,"MOP":8.689362,"MRU":42.970623,"MUR":49.860667,"MVR":16.623853,"MWK":1881.939591,"MXN":21.578917,"MYR":4.675991,"MZN":69.103503,"NAD":19.127983,"NGN":1776.519502,"NIO":39.944188,"NOK":11.834893,"NPR":145.992055,"NZD":1.787104,"OMR":0.416635,"PAB":1.085347,"PEN":4.073729,"PGK":4.274549,"PHP":62.694363,"PKR":301.359886,"PLN":4.319711,"PYG":8598.206563,"QAR":3.95856,"RON":4.974052,"RSD":117.036725,"RUB":104.766655,"RWF":1468.48923,"SAR":4.064946,"SBD":8.982198,"SCR":15.347125,"SDG":650.995667,"SEK":11.418025,"SGD":1.423615,"SHP":0.828127,"SLE":24.724683,"SLL":22694.874647,"SOS":620.269867,"SRD":35.947925,"STD":22401.018434,"SVC":9.496751,"SYP":2719.262175,"SZL":19.122579,"THB":36.295356,"TJS":11.564903,"TMT":3.787981,"TND":3.356602,"TOP":2.534808,"TRY":37.062263,"TTD":7.36546,"TWD":34.677382,"TZS":2949.213457,"UAH":44.840953,"UGX":3978.372307,"USD":1.08228,"UYU":45.196951,"UZS":13909.422721,"VEF":218043921113.59,"VES":136836.34,"VND":27452.041451,"VUV":128.490532,"WST":3.031666,"XAF":656.354449,"XAG":0.032085,"XAU":0.000398,"XCD":2.924917,"XDR":0.814093,"XOF":656.354449,"XPF":119.331742,"YER":270.975982,"ZAR":19.042289,"ZMK":9741.82375,"ZMW":28.952532,"ZWL":348.493836,"CYP":1.7086,"SSP":633.704955} Common.price_currency_position = "left" Common.price_frequency_texts = {"once":"One-time gift","regular":"Monthly gift"} Common.campaign_default_frequency = "once" Step1.tax_reduction_rates = {"ir":[66],"isf":[75,0],"corp":[60],"custom1":[],"custom2":[]}; Step1.tax_reduction_ceils = {"ir":[],"isf":[66666.67],"corp":[],"custom1":[],"custom2":[]}; Step1.tax_reduction_notices = {"ir":"up to 20% of the taxable income","isf":"","corp":"up to 5\u2030 of the business revenue","custom1":"","custom2":""}; Step1.tax_reduction_triggers = {"ir":"0","isf":"0","corp":"0","custom1":"0","custom2":"0"}; Step1.active_tax_reduction = 1; Step1.adapt_tax_bloc = false; Step1.tax_info = "Your donation is tax-deductible up to 66%, subject to a limit of 20% of your income. For example, a donation of \u20ac100 would actually cost you \u20ac34. <br \/>This deduction is only available to people who are taxable in France. "; Step1.is_french_isf = 0; Step1.is_tipping_campaign = 0; Step1.amount_equivalences = {"once":[],"regular":[]} Step1.decimal_sep = "."; Step1.min_once_amount = 2; Step1.max_once_amount = 50000; Step1.min_regular_amount = 2; Step1.max_regular_amount = 10000; DntErrors.errorMsg.errors = "%s errors found on the form"; DntErrors.errorMsg.error = "an error has been found on the form"; DntErrors.errorMsg.choose_amount = "Please choose an amount for your donation"; DntErrors.errorMsg.min_once_amount = "Due to processing fees, the minimum amount accepted is {min_amount_with_currency}"; DntErrors.errorMsg.max_once_amount = "Your donation cannot be more than {max_amount_with_currency}"; DntErrors.errorMsg.min_regular_amount = "Due to processing fees, the minimum amount accepted is {min_amount_with_currency}"; DntErrors.errorMsg.max_regular_amount = "Your donation cannot be more than {max_amount_with_currency}"; DntErrors.errorMsg.errors = "%s errors found on the form"; DntErrors.errorMsg.error = "an error has been found on the form"; DntErrors.errorMsg.qualification = "The '%s' field is mandatory"; DntErrors.errorMsg.firstname = "Please enter your first name"; DntErrors.errorMsg.lastname = "Please enter your last name"; DntErrors.errorMsg.email = "Please enter a valid email"; DntErrors.errorMsg.company = "The company name should not exceed 70 characters"; DntErrors.errorMsg.company_siren = "The SIREN is empty or invalid"; DntErrors.errorMsg.company_status = "The legal form is empty or unknown"; DntErrors.errorMsg.address1 = "Please enter your address (38 characters maximum)"; DntErrors.errorMsg.address2 = "The address 2 should not exceed 38 characters"; DntErrors.errorMsg.postcode = "Please enter your postcode (10 characters maximum)"; DntErrors.errorMsg.city = "Please enter your city (38 characters maximum)"; DntErrors.errorMsg.civility = "Please select your title"; DntErrors.errorMsg.errors = "%s errors found on the form"; DntErrors.errorMsg.error = "an error has been found on the form"; DntErrors.errorMsg.cardtype = "Please select your card type"; DntErrors.errorMsg.cardnumber = "Please enter your card number"; DntErrors.errorMsg.cardscode = DntErrors.errorMsg.scode = "Please enter the 3 digit security code on the back of your card"; DntErrors.errorMsg.cardmonth = "Please enter the card expiry month"; DntErrors.errorMsg.cardyear = "Please enter the card expiry year"; DntErrors.errorMsg.gocardless = "This payment method can only be used for an amount less than 5000\u20ac. Thank you for reducing the amount or selecting another method of payment"; Step2.failed_dnt_url = "/index.php?module=donations&action=xhr:attemptSave"; form_context_lang = "en_EN"; form_context_cid = "32"; Step3.alert_msg = ""; Step3.modal_qualif = "0"; Step3.modal_qualif_url = "/index.php?module=donations&action=default:modalQualification"; Step3.modal_save_card = "0"; Step3.modal_save_card_url = "/index.php?module=donations&action=default:modalSaveCard"; Step3.modal_save_card_set_url = "/index.php?context_form_id=form_3f90dd821a5633fd9a6b75c01996d212353c6a43_6741f8bab92e74.26507938&module=donations&action=default:setSaveCard"; Step3.cards_mastercard_length=16; Step3.cards_mastercard_cvvlength=3; Step3.cards_mastercard_hasalias=1; Step3.cards_visa_length=16; Step3.cards_visa_cvvlength=3; Step3.cards_visa_hasalias=1; Step3.cards_amex_length=15; Step3.cards_amex_cvvlength=4; Step3.cards_amex_hasalias=1; $(document).ready(function() { Step1.init(); Step2.init(); Steps.init(); Steps.submit(); }); organisation_name = "Reporters Without Borders"; try{ var ira_context_infos = {"form_id":"form_3f90dd821a5633fd9a6b75c01996d212353c6a43_6741f8bab92e74.26507938","campaign":"32","version":"b","lang":"en_EN","amount":{"amount":null,"amount_donation":0,"frequency":null,"free_amount":null,"currency":null},"reserved":"[]","affectation":null,"_cpn_name_":null}; console.warn(ira_context_infos); }catch(err){} // ]]> </script><meta name="viewport" content="width=device-width" /> <link rel="canonical" href="https://donate.rsf.org/~share?cid=32&lang=en_EN" /> <style type="text/css"> body { background: url(/cdn.iraiser.eu/8u5I9gyQQatUmc/0NN6Fgg==/default/origin/000Nic62864011.jpg); } #header { } </style> <script type='text/javascript'> optionsGlobal = ""; optionsCampaign = {"theme":"arya","active_theme":"1","last_version":"1","version":"3","font":"Raleway","font_title":"Raleway","fontsize":"","wedge":"5","--body-background-color":"#FFFFFF","donation_grid":"1","purchase_grid":"2","layout":"2","1_column_direction":"2","widgets_footer":"1","hide_mobile_widget":"1","hide_mobile_reassurance_1":"1","hide_mobile_reassurance_2":"1","hide_mobile_reassurance_3":"0","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":"#010101","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_en_EN":"","widgets_progress_bar_text_fr_FR":"","widgets_progress_bar_text_es_ES":"","widgets_last_donors":"true","widgets_color_last_donors":"#010101","widgets_last_donors_filter":"10","widgets_last_donors_currency_auto":"1","widgets_last_donors_text":"$n just made a donation of $a, thanks !","widgets_last_donors_text_en_EN":"$n just made a donation of $a, thanks !","widgets_last_donors_text_fr_FR":"$n vient de faire un don de $a, merci !","widgets_last_donors_text_es_ES":"$n acaba de donar $a, \u00a1gracias!","widgets_cookies_banner":"false","widgets_color_cookies_banner":"#010101","widgets_cookies_banner_text":"","widgets_cookies_banner_text_en_EN":"","widgets_cookies_banner_text_fr_FR":"","widgets_cookies_banner_text_es_ES":"","widgets_cookies_banner_button":"","widgets_cookies_banner_button_en_EN":"","widgets_cookies_banner_button_fr_FR":"","widgets_cookies_banner_button_es_ES":"","widgets_most_popular_once":"true","widgets_most_popular_once_amount":"100","widgets_most_popular_once_title":"Most popular","widgets_most_popular_once_title_en_EN":"Most popular","widgets_most_popular_once_title_fr_FR":"Plus populaire","widgets_most_popular_once_title_es_ES":"M\u00e1s popular","widgets_most_popular_once_text":"","widgets_most_popular_once_text_en_EN":"","widgets_most_popular_once_text_fr_FR":"","widgets_most_popular_once_text_es_ES":"","widgets_most_popular_regular":"true","widgets_most_popular_regular_amount":"25","widgets_most_popular_regular_title":"Most popular","widgets_most_popular_regular_title_en_EN":"Most popular","widgets_most_popular_regular_title_fr_FR":"Plus populaire","widgets_most_popular_regular_title_es_ES":"M\u00e1s popular","widgets_most_popular_regular_text":"","widgets_most_popular_regular_text_en_EN":"","widgets_most_popular_regular_text_fr_FR":"","widgets_most_popular_regular_text_es_ES":"","--main-action-color":"#E40046","--main-action-color-lighter":"#ff4062","--description-color":"#E40046","--information-color":"#010101","--column-background-color":"#FFFFFFE8","--banner-color":"#030303","--banner-color-darker":"#000000"}; campaign_id = "32"; context_lang = "en_EN"; campaign_stats = {"count":"21244","sum":"227741814","min":"200","max":"984000","avg":"107.20","progress":"100","last_donators":[{"firstname":"Michel","total":"5000","currency":"EUR","date":"2024-11-22 20:35:00","campaign":"32","city":"BISCHHEIM","message":"","avatar":""},{"firstname":"Alain","total":"2500","currency":"EUR","date":"2024-11-22 20:25:00","campaign":"32","city":"GRENOBLE","message":"","avatar":""},{"firstname":"Aur\u00e9lie","total":"5000","currency":"EUR","date":"2024-11-22 19:03:00","campaign":"32","city":"PARIS","message":"","avatar":""},{"firstname":"Kenneth","total":"1000","currency":"GBP","date":"2024-11-22 18:46:00","campaign":"32","city":"TOWCESTER","message":"","avatar":""},{"firstname":"Val\u00e9rie","total":"15000","currency":"EUR","date":"2024-11-22 18:02:00","campaign":"32","city":"DONVILLE LES BAINS","message":"","avatar":""},{"firstname":"Alain","total":"5000","currency":"EUR","date":"2024-11-22 14:32:00","campaign":"32","city":"PARIS","message":"","avatar":""},{"firstname":"Lilian","total":"5000","currency":"EUR","date":"2024-11-22 13:32:00","campaign":"32","city":"ESSERTAUX","message":"","avatar":""},{"firstname":"Ass. loi 1901 en liquidation Les \u00c9ditions Num\u00e9riques Juridiques","total":"1290","currency":"EUR","date":"2024-11-22 11:19:00","campaign":"32","city":"PARIS","message":"","avatar":""},{"firstname":"Jean Fran\u00e7ois","total":"10000","currency":"EUR","date":"2024-11-22 09:56:00","campaign":"32","city":"BANYULS SUR MER","message":"","avatar":""},{"firstname":"GUERINEAU","total":"10000","currency":"EUR","date":"2024-11-22 08:58:00","campaign":"32","city":"SAURAIS","message":"","avatar":""},{"firstname":"Olivier","total":"15000","currency":"EUR","date":"2024-11-22 08:04:00","campaign":"32","city":"V\u00e9LINES","message":"","avatar":""},{"firstname":"Sylvain","total":"10000","currency":"EUR","date":"2024-11-22 07:49:00","campaign":"32","city":"VILLE-LA-GRAND","message":"","avatar":""},{"firstname":"Eli\u0161ka","total":"1600","currency":"EUR","date":"2024-11-22 07:08:00","campaign":"32","city":"HORN\u00ed BEZD\u011bKOV","message":"","avatar":""},{"firstname":"David","total":"10000","currency":"EUR","date":"2024-11-22 06:30:00","campaign":"32","city":"ST QUENTIN LA CHABANNE","message":"","avatar":""},{"firstname":"Laure","total":"4000","currency":"EUR","date":"2024-11-21 21:36:00","campaign":"32","city":"THYEZ","message":"","avatar":""},{"firstname":"Deborah","total":"6500","currency":"USD","date":"2024-11-21 21:14:00","campaign":"32","city":"VANCOUVER","message":"","avatar":""},{"firstname":"Monika","total":"2000","currency":"EUR","date":"2024-11-21 19:45:00","campaign":"32","city":"KREUZLINGEN","message":"","avatar":""},{"firstname":"Henri","total":"10000","currency":"EUR","date":"2024-11-21 18:30:00","campaign":"32","city":"VERSAILLES","message":"","avatar":""},{"firstname":"Asseline","total":"10000","currency":"EUR","date":"2024-11-21 17:32:00","campaign":"32","city":"BRETTEVILLE-SUR-ODON","message":"","avatar":""},{"firstname":"Paul","total":"6500","currency":"USD","date":"2024-11-21 17:05:00","campaign":"32","city":"MONTR\u00e9AL","message":"","avatar":""},{"firstname":"Bernhard","total":"10000","currency":"EUR","date":"2024-11-21 16:58:00","campaign":"32","city":"CHENE-BOUGERIES","message":"","avatar":""},{"firstname":"Jean-noel","total":"3000","currency":"EUR","date":"2024-11-21 16:36:00","campaign":"32","city":"VILLEJUIF","message":"","avatar":""},{"firstname":"Marie-Christine","total":"8000","currency":"EUR","date":"2024-11-21 15:20:00","campaign":"32","city":"VILLEMONTAIS","message":"","avatar":""},{"firstname":"Mathieu","total":"2000","currency":"EUR","date":"2024-11-21 12:57:00","campaign":"32","city":"NANTES","message":"","avatar":""},{"firstname":"Anne","total":"30000","currency":"EUR","date":"2024-11-21 12:13:00","campaign":"32","city":"CHANTELOUP EN BRIE","message":"","avatar":""},{"firstname":"MICHEL","total":"5000","currency":"EUR","date":"2024-11-21 10:24:00","campaign":"32","city":"CHERBOURG EN COTENTIN","message":"","avatar":""},{"firstname":"Philippe","total":"15000","currency":"EUR","date":"2024-11-20 23:21:00","campaign":"32","city":"LYON","message":"","avatar":""},{"firstname":"sophie","total":"20000","currency":"EUR","date":"2024-11-20 11:55:00","campaign":"32","city":"SAINT ALBAN LEYSSE","message":"","avatar":""},{"firstname":"Isabelle","total":"100000","currency":"EUR","date":"2024-11-19 20:47:00","campaign":"32","city":"RILLIEUX-LA-PAPE","message":"","avatar":""},{"firstname":"colette","total":"6000","currency":"EUR","date":"2024-11-19 14:44:00","campaign":"32","city":"ALES","message":"","avatar":""},{"firstname":"Joyce","total":"25000","currency":"EUR","date":"2024-11-19 14:30:00","campaign":"32","city":"AIX EN PROVENCE","message":"","avatar":""},{"firstname":"Agn\u00e8s","total":"3000","currency":"EUR","date":"2024-11-19 10:29:00","campaign":"32","city":"DUNKERQUE","message":"","avatar":""},{"firstname":"Dominique","total":"10000","currency":"EUR","date":"2024-11-18 21:33:00","campaign":"32","city":"LAVAL","message":"","avatar":""},{"firstname":"Claire","total":"3000","currency":"EUR","date":"2024-11-18 16:52:00","campaign":"32","city":"MAISONS ALFORT","message":"","avatar":""},{"firstname":"George Z. Georgiou & Associates LLC","total":"50000","currency":"EUR","date":"2024-11-18 10:53:00","campaign":"32","city":"NICOSIA","message":"","avatar":""},{"firstname":"Pierre","total":"10000","currency":"EUR","date":"2024-11-18 09:17:00","campaign":"32","city":"SAINT-\u00c9TIENNE","message":"","avatar":""},{"firstname":"MARIANNE","total":"6000","currency":"EUR","date":"2024-11-17 17:59:00","campaign":"32","city":"VILLENEUVE-L\u00e8S-AVIGNON","message":"","avatar":""},{"firstname":"Magnus","total":"25000","currency":"EUR","date":"2024-11-17 17:28:00","campaign":"32","city":"SOLA","message":"","avatar":""},{"firstname":"Bernadette","total":"10000","currency":"EUR","date":"2024-11-17 15:37:00","campaign":"32","city":"QUIMPER","message":"","avatar":""},{"firstname":"CATHERINE","total":"10000","currency":"EUR","date":"2024-11-17 14:51:00","campaign":"32","city":"CLAVETTE","message":"","avatar":""},{"firstname":"catherine","total":"10000","currency":"EUR","date":"2024-11-17 13:24:00","campaign":"32","city":"LANVOLLON","message":"","avatar":""},{"firstname":"Radwan","total":"3000","currency":"EUR","date":"2024-11-17 10:01:00","campaign":"32","city":"LES LILAS","message":"","avatar":""},{"firstname":"Tual","total":"4000","currency":"EUR","date":"2024-11-17 09:05:00","campaign":"32","city":"PARIS","message":"","avatar":""},{"firstname":"Jean-Marie","total":"5000","currency":"EUR","date":"2024-11-16 22:34:00","campaign":"32","city":"VITTEL","message":"","avatar":""},{"firstname":"catharina","total":"5000","currency":"EUR","date":"2024-11-16 14:33:00","campaign":"32","city":"CENON","message":"","avatar":""},{"firstname":"christian","total":"10000","currency":"EUR","date":"2024-11-16 11:23:00","campaign":"32","city":"TOULOUSE","message":"","avatar":""},{"firstname":"Jean-Pierre","total":"5000","currency":"EUR","date":"2024-11-16 09:26:00","campaign":"32","city":"ST AMAND MONTROND","message":"","avatar":""},{"firstname":"MICHEL","total":"150000","currency":"EUR","date":"2024-11-15 19:02:00","campaign":"32","city":"LES ESSARTS LE ROI","message":"","avatar":""},{"firstname":"Jean","total":"20000","currency":"EUR","date":"2024-11-15 16:31:00","campaign":"32","city":"JOINVILLE LE PONT","message":"","avatar":""},{"firstname":"v\u00e9ronique","total":"6000","currency":"EUR","date":"2024-11-16 04:18:00","campaign":"32","city":"SAINT MARTIN BOULOGNE","message":"","avatar":""}],"date_cache":"2024-11-23"}; campaign_stats_last_donators = [{"firstname":"Michel","total":"5000","currency":"EUR","date":"2024-11-22 20:35:00","campaign":"32","city":"BISCHHEIM","message":"","avatar":""},{"firstname":"Alain","total":"2500","currency":"EUR","date":"2024-11-22 20:25:00","campaign":"32","city":"GRENOBLE","message":"","avatar":""},{"firstname":"Aur\u00e9lie","total":"5000","currency":"EUR","date":"2024-11-22 19:03:00","campaign":"32","city":"PARIS","message":"","avatar":""},{"firstname":"Kenneth","total":"1000","currency":"GBP","date":"2024-11-22 18:46:00","campaign":"32","city":"TOWCESTER","message":"","avatar":""},{"firstname":"Val\u00e9rie","total":"15000","currency":"EUR","date":"2024-11-22 18:02:00","campaign":"32","city":"DONVILLE LES BAINS","message":"","avatar":""},{"firstname":"Alain","total":"5000","currency":"EUR","date":"2024-11-22 14:32:00","campaign":"32","city":"PARIS","message":"","avatar":""},{"firstname":"Lilian","total":"5000","currency":"EUR","date":"2024-11-22 13:32:00","campaign":"32","city":"ESSERTAUX","message":"","avatar":""},{"firstname":"Ass. loi 1901 en liquidation Les \u00c9ditions Num\u00e9riques Juridiques","total":"1290","currency":"EUR","date":"2024-11-22 11:19:00","campaign":"32","city":"PARIS","message":"","avatar":""},{"firstname":"Jean Fran\u00e7ois","total":"10000","currency":"EUR","date":"2024-11-22 09:56:00","campaign":"32","city":"BANYULS SUR MER","message":"","avatar":""},{"firstname":"GUERINEAU","total":"10000","currency":"EUR","date":"2024-11-22 08:58:00","campaign":"32","city":"SAURAIS","message":"","avatar":""},{"firstname":"Olivier","total":"15000","currency":"EUR","date":"2024-11-22 08:04:00","campaign":"32","city":"V\u00e9LINES","message":"","avatar":""},{"firstname":"Sylvain","total":"10000","currency":"EUR","date":"2024-11-22 07:49:00","campaign":"32","city":"VILLE-LA-GRAND","message":"","avatar":""},{"firstname":"Eli\u0161ka","total":"1600","currency":"EUR","date":"2024-11-22 07:08:00","campaign":"32","city":"HORN\u00ed BEZD\u011bKOV","message":"","avatar":""},{"firstname":"David","total":"10000","currency":"EUR","date":"2024-11-22 06:30:00","campaign":"32","city":"ST QUENTIN LA CHABANNE","message":"","avatar":""},{"firstname":"Laure","total":"4000","currency":"EUR","date":"2024-11-21 21:36:00","campaign":"32","city":"THYEZ","message":"","avatar":""},{"firstname":"Deborah","total":"6500","currency":"USD","date":"2024-11-21 21:14:00","campaign":"32","city":"VANCOUVER","message":"","avatar":""},{"firstname":"Monika","total":"2000","currency":"EUR","date":"2024-11-21 19:45:00","campaign":"32","city":"KREUZLINGEN","message":"","avatar":""},{"firstname":"Henri","total":"10000","currency":"EUR","date":"2024-11-21 18:30:00","campaign":"32","city":"VERSAILLES","message":"","avatar":""},{"firstname":"Asseline","total":"10000","currency":"EUR","date":"2024-11-21 17:32:00","campaign":"32","city":"BRETTEVILLE-SUR-ODON","message":"","avatar":""},{"firstname":"Paul","total":"6500","currency":"USD","date":"2024-11-21 17:05:00","campaign":"32","city":"MONTR\u00e9AL","message":"","avatar":""},{"firstname":"Bernhard","total":"10000","currency":"EUR","date":"2024-11-21 16:58:00","campaign":"32","city":"CHENE-BOUGERIES","message":"","avatar":""},{"firstname":"Jean-noel","total":"3000","currency":"EUR","date":"2024-11-21 16:36:00","campaign":"32","city":"VILLEJUIF","message":"","avatar":""},{"firstname":"Marie-Christine","total":"8000","currency":"EUR","date":"2024-11-21 15:20:00","campaign":"32","city":"VILLEMONTAIS","message":"","avatar":""},{"firstname":"Mathieu","total":"2000","currency":"EUR","date":"2024-11-21 12:57:00","campaign":"32","city":"NANTES","message":"","avatar":""},{"firstname":"Anne","total":"30000","currency":"EUR","date":"2024-11-21 12:13:00","campaign":"32","city":"CHANTELOUP EN BRIE","message":"","avatar":""},{"firstname":"MICHEL","total":"5000","currency":"EUR","date":"2024-11-21 10:24:00","campaign":"32","city":"CHERBOURG EN COTENTIN","message":"","avatar":""},{"firstname":"Philippe","total":"15000","currency":"EUR","date":"2024-11-20 23:21:00","campaign":"32","city":"LYON","message":"","avatar":""},{"firstname":"sophie","total":"20000","currency":"EUR","date":"2024-11-20 11:55:00","campaign":"32","city":"SAINT ALBAN LEYSSE","message":"","avatar":""},{"firstname":"Isabelle","total":"100000","currency":"EUR","date":"2024-11-19 20:47:00","campaign":"32","city":"RILLIEUX-LA-PAPE","message":"","avatar":""},{"firstname":"colette","total":"6000","currency":"EUR","date":"2024-11-19 14:44:00","campaign":"32","city":"ALES","message":"","avatar":""},{"firstname":"Joyce","total":"25000","currency":"EUR","date":"2024-11-19 14:30:00","campaign":"32","city":"AIX EN PROVENCE","message":"","avatar":""},{"firstname":"Agn\u00e8s","total":"3000","currency":"EUR","date":"2024-11-19 10:29:00","campaign":"32","city":"DUNKERQUE","message":"","avatar":""},{"firstname":"Dominique","total":"10000","currency":"EUR","date":"2024-11-18 21:33:00","campaign":"32","city":"LAVAL","message":"","avatar":""},{"firstname":"Claire","total":"3000","currency":"EUR","date":"2024-11-18 16:52:00","campaign":"32","city":"MAISONS ALFORT","message":"","avatar":""},{"firstname":"George Z. Georgiou & Associates LLC","total":"50000","currency":"EUR","date":"2024-11-18 10:53:00","campaign":"32","city":"NICOSIA","message":"","avatar":""},{"firstname":"Pierre","total":"10000","currency":"EUR","date":"2024-11-18 09:17:00","campaign":"32","city":"SAINT-\u00c9TIENNE","message":"","avatar":""},{"firstname":"MARIANNE","total":"6000","currency":"EUR","date":"2024-11-17 17:59:00","campaign":"32","city":"VILLENEUVE-L\u00e8S-AVIGNON","message":"","avatar":""},{"firstname":"Magnus","total":"25000","currency":"EUR","date":"2024-11-17 17:28:00","campaign":"32","city":"SOLA","message":"","avatar":""},{"firstname":"Bernadette","total":"10000","currency":"EUR","date":"2024-11-17 15:37:00","campaign":"32","city":"QUIMPER","message":"","avatar":""},{"firstname":"CATHERINE","total":"10000","currency":"EUR","date":"2024-11-17 14:51:00","campaign":"32","city":"CLAVETTE","message":"","avatar":""},{"firstname":"catherine","total":"10000","currency":"EUR","date":"2024-11-17 13:24:00","campaign":"32","city":"LANVOLLON","message":"","avatar":""},{"firstname":"Radwan","total":"3000","currency":"EUR","date":"2024-11-17 10:01:00","campaign":"32","city":"LES LILAS","message":"","avatar":""},{"firstname":"Tual","total":"4000","currency":"EUR","date":"2024-11-17 09:05:00","campaign":"32","city":"PARIS","message":"","avatar":""},{"firstname":"Jean-Marie","total":"5000","currency":"EUR","date":"2024-11-16 22:34:00","campaign":"32","city":"VITTEL","message":"","avatar":""},{"firstname":"catharina","total":"5000","currency":"EUR","date":"2024-11-16 14:33:00","campaign":"32","city":"CENON","message":"","avatar":""},{"firstname":"christian","total":"10000","currency":"EUR","date":"2024-11-16 11:23:00","campaign":"32","city":"TOULOUSE","message":"","avatar":""},{"firstname":"Jean-Pierre","total":"5000","currency":"EUR","date":"2024-11-16 09:26:00","campaign":"32","city":"ST AMAND MONTROND","message":"","avatar":""},{"firstname":"MICHEL","total":"150000","currency":"EUR","date":"2024-11-15 19:02:00","campaign":"32","city":"LES ESSARTS LE ROI","message":"","avatar":""},{"firstname":"Jean","total":"20000","currency":"EUR","date":"2024-11-15 16:31:00","campaign":"32","city":"JOINVILLE LE PONT","message":"","avatar":""},{"firstname":"v\u00e9ronique","total":"6000","currency":"EUR","date":"2024-11-16 04:18:00","campaign":"32","city":"SAINT MARTIN BOULOGNE","message":"","avatar":""}]; campaign_currency = "EUR"; iraiser_counter = ''; client_livecounter = "rsf"; bymonth = 'per month'; i18n = []; checkoutPage = ''; </script> <script id="javascript_arya" type="text/javascript" src="https://donate.rsf.org/themes/default/arya/dist/v3.14/arya.js?v=24070" ></script> <link type="text/css" href="https://donate.rsf.org/themes/default/arya/dist/v3.14/arya.css?v=24070" rel="stylesheet" /> <!-- TODO : confirmer le comportement souhaité car la custo ajoute aussi des champs de choix de currency --> <script> var currencies = {"GBP":{"symbol":"\u00a3","order":"3"},"EUR":{"symbol":"\u20ac","order":"2"},"USD":{"symbol":"$","order":"1"}}; var translations = {"en_EN":{"currency":"Currency","cardType":"Please select your card type"},"fr_FR":{"currency":"Devise","cardType":"S\u00e9lectionnez votre type de carte bancaire"},"es_ES":{"currency":"Moneda","cardType":"Seleccione el tipo de tarjeta"}}; var lang = 'en_EN'; var defaultCurrency = 'EUR'; var page = 'form'; </script> <script type="text/javascript" src="/libs.iraiser.eu/libs/themes/arya/js.cookie.js?v=5" ></script> <script type="text/javascript" src="/libs.iraiser.eu/users/reporters-sans-frontieres/script.js?v=1"></script> <style> #type-b.arya #c-currency { margin: 0 auto 20px; padding: 0 20px; } </style> <!-- --> <script> $( document ).ready(function() { const currencyElement = document.querySelector("#currency"); }) </script> <!-- recup <script type="text/javascript"> $(document).ready(function(){ $( "#header" ).wrap( "<div class='header-fixed'></div>" ); }); </script> <style type="text/css"> body, html { overflow-x: hidden; } body { font-family: 'Open Sans', sans-serif; } #logo a:after { font-weight: 800; vertical-align: middle; font-size: 24px; color: #999999; margin-left: 10px; } @media only screen and (max-width: 767px) { #logo a:after { display: inline-block; } } html[lang="fr_FR"] #type-b #logo a:after { content: "Nous soutenir"; } html[lang="en_EN"] #type-b #logo a:after { content: "Support us"; } html[lang="fr_FR"] #type-a #logo a:after { content: "Adhésion"; } html[lang="en_EN"] #type-a #logo a:after { content: "Membership"; } #container { overflow: initial; } .header-fixed { position: relative; top: 0; left: 0; width: 100%; background: #fff; } .header-fixed:before { content:""; background: #fff; position: absolute; top: 0; left: -200%; width: 400%; height: 100%; z-index: 1; } #header { position: relative; width: 940px; margin: 0 auto; z-index: 2; } @media only screen and (max-width: 959px) and (min-width: 768px) { #header { width: 768px; } } @media only screen and (max-width: 767px) and (min-width: 480px) { #header { width: 420px; } } @media only screen and (max-width: 767px) { #header { width: auto; } } #header .lastUnit { float: none; display: table-cell; width: 9999em; padding: 15px 0 0; } #type-a #header .lastUnit { padding: 25px 0 0; } @media only screen and (max-width: 767px) { #header .lastUnit { display: block; padding: 0; } } #logo { padding: 0; } #logo h1, #logo a, #logo img { padding: 5px 0; display: inline-block; float: none; vertical-align: middle; text-decoration :none; } #lang p { font-weight: 800; text-transform: uppercase; padding: 10px 0 5px; text-align: left; } #lang a { text-decoration: none; transition: all .3s; } #lang a:hover, #lang a:focus { color: #FC3433; } #lang a.current { color: #FC3433; } #type-a #navbar { margin: 30px 0; height: 47px; } #type-a #navbar #security-info { padding: 0; float: none; } @media only screen and (max-width: 959px) { #type-a #navbar #security-info { width: 40% !important; float: right !important; } } #step-nav { padding: 0; background: #fff; } @media only screen and (max-width: 959px) { #step-nav { width: 20% !important; } } @media only screen and (max-width: 767px) { #step-nav { width: 40% !important; } } #form-steps { padding: 50px 0 0; } #step-nav ul { padding: 0; font-size: 16px; display: -webkit-box; display: -ms-flexbox; display: -webkit-flex; display: flex; width: 100%; } #step-nav ul li { padding: 14px 0; flex-grow: 1; margin-right: 0; text-align: center; position: relative; } #step-nav ul li.current:after { content: ""; position: absolute; right: -20px; top: 0; width: 0; height: 0; border-style: solid; border-width: 24px 0 24px 20px; border-color: transparent transparent transparent #FC3433; } #step-nav li.current { background: #FC3433; font-weight: 800; } #step-nav li span { display: none; } #c-city { width: 50%; } #step-nav ul li.current a { color: #fff; } #type-a #main-container, #type-a #navbar { display: -webkit-box; display: -ms-flexbox; display: -webkit-flex; display: flex; } @media only screen and (max-width: 959px) { #type-a #main-container, #type-a #navbar { display: block; } } #main { } #type-a .bis { padding: 0; } .step-title h2 { font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 25px; color: #000; } .unit { box-sizing: border-box; padding: 0 10px; } @media only screen and (max-width: 959px) and (min-width: 768px) { .unit#logo { width: 75% !important; float: left !important; } .unit#lang { width: 25% !important; } } #form-info { background: none; border: none; font-weight: 800; font-size: 24px; text-align: center; color: #fff; padding: 0 20px; margin: 50px 0 30px; } @media only screen and (max-width: 959px) { #form-info { color: #000; font-size: 20px; } } #form-error { background: #fff; border-color: #FC3433; color: #FC3433; } #form-error h3 { font-weight: 800; font-size: 20px; color: #FC3433; } #form-error li { list-style: disc; color: #FC3433; } .step-container { background: #fff; } #type-a #content { background: #fff; } #type-a #sidebar { background: #f2f1f3; } #type-a #sidebar .step-info h4{ color: #000; font-size: 21px; font-weight: 800; font-weight: normal; } #once { border: 0; } #type-a #once { background: none; color: #000; float: none; width: 100%; padding: 0; height: auto !important; } #type-a #once h3 { font-weight: 800; font-size: 30px; text-transform: initial; } #type-b #once { background: #000; color: #fff; } #type-b #once .bloc-content h3 { color: #fff; } #type-a #or { display: none; } #type-a #regular { height: auto !important; float: none; width: 100%; } #type-b #regular { background: #FC3433; color: #fff; } #type-a #regular .bloc-content h3 { color: #000; font-size: 30px; font-weight: 800; text-transform: initial; margin-bottom: 20px; } #type-b #regular .bloc-content h3 { background: #FC3433; color: #fff; } #type-b #regular .radio-inline { color: #fff; } .step-container .step-info { background: #F2F1F3; color: #000; } .step-container .step-info h4 { color: #000; font-weight: 300; font-size: 21px; font-weight: normal; } #contact-info { background: #fff; border: 0; } .payment-submit input { width: auto; } @media only screen and (max-width: 959px) { .#type-a payment-submit input { width: auto; } } .lastUnit { float: left; display:block; width: 33.3333%; } #security-info { padding: 0 10px; } #security-info img { width: 100%; } #type-a .radio-desc { color: #000; } #type-a .radio-desc li { overflow: initial; } #type-a .radio-desc span { color: #FC3433; } #type-a #regular .tax-info strong, #type-a #regular .isf-info strong, #type-a #once .tax-info strong, #type-a #once .isf-info strong { color: #000; } #type-b #regular .tax-info strong, #type-b #regular .isf-info strong, #type-b #once .tax-info strong, #type-b #once .isf-info strong { color: #fff; } #type-b #step-2 input:not(.button), #type-b #step-3 input:not(.button) { width: 100%; padding: 10px 10px; border: 1px solid #8B8A89; box-sizing: border-box; } #step-3 .payment-submit input { border: 0; } .button { max-width: 100%; } .help { font-size: 10px; } #step-3 .help { width: 100%; box-sizing: border-box; padding: 0; } #type-a #cb-bloc { border: 0; } #type-a #cb-bloc h4 { color: #000; } #card-scode #scode { width: 25%; padding: 5px; } #greetings, #postmail-content { background: #fff; border: 0; margin: 60px auto 0; width: 60%; } @media only screen and (max-width: 767px) { #greetings, #postmail-content { width: 100%; } } #greetings .unit, #postmail-content .unit { float: none; width: 100%; margin: 0 auto; } #greetings-text h2, #postmail-content h3 { text-align: left; font-weight: 800; font-size: 24px; } #copyright { float: right; padding: 10px 0; } #copyright p { padding: 0; } #copyright a, #copyright span { color: #fff; } .dollar-payment { display:block; text-align: left; cursor: pointer, } .dollar-payment:hover:after { color: #FC3433; } .dollar-payment:after { content:""; font-weight: 800; vertical-align: middle; font-size: 14px; color: #000; transition : all .3s; } html[lang="fr_FR"] .dollar-payment:after { content: "Payer en dollars"; } html[lang="en_EN"] .dollar-payment:after { content: "Pay in dollars"; } </style> --> </head><body id="type-b" > <div id="container"> <div id="header" class="line"> <div class="container" id="header_wrapinner"> <div id="logo" class="unit size3of4"> <h1><a href="https://rsf.org/" title="Reporters Without Borders"><img src="/cdn.iraiser.eu/8u5I9gyQQatUmc/0NN6Fgg==/default/origin/RSFlogoENC-ConvertImage.png" alt="Reporters Without Borders"/></a></h1> </div> <!-- End Logo --> <div id="lang" class="unit size1of4 lastUnit"> <form action="/index.php" method="get" id="form_lang"> <fieldset> <p> <label> <span>Language:</span> <select name="lang"> <option data-value="en_EN" value="/b/my-donation?cid=32&context_form_id=form_3f90dd821a5633fd9a6b75c01996d212353c6a43_6741f8bab92e74.26507938" selected="selected">English</option> <option data-value="fr_FR" value="/b/mon-don?cid=32&context_form_id=form_3f90dd821a5633fd9a6b75c01996d212353c6a43_6741f8bab92e74.26507938">Français</option> <option data-value="es_ES" value="/b/mi-donativo?cid=32&context_form_id=form_3f90dd821a5633fd9a6b75c01996d212353c6a43_6741f8bab92e74.26507938">Español</option> </select> </label> </p> </fieldset> </form> <script> let searchParams = new URLSearchParams(window.location.search) if (searchParams.has('ns_ira_cr_arg')) { let param = encodeURIComponent(searchParams.get('ns_ira_cr_arg')) $('#form_lang select[name=lang]>option').each(function() { const newUrl = $(this).val() + '&ns_ira_cr_arg=' + param; $(this).val(newUrl); }); } $('#form_lang select[name=lang]').change(function(){ window.location.href = $(this).val(); }); </script> </div> <!-- End Lang --> </div> </div> <!-- End Header --> <div id="_wait"> <div id="floatingCirclesG"> <div class="f_circleG" id="frotateG_01"></div> <div class="f_circleG" id="frotateG_02"></div> <div class="f_circleG" id="frotateG_03"></div> <div class="f_circleG" id="frotateG_04"></div> <div class="f_circleG" id="frotateG_05"></div> <div class="f_circleG" id="frotateG_06"></div> <div class="f_circleG" id="frotateG_07"></div> <div class="f_circleG" id="frotateG_08"></div> </div> </div> <div id="main" class="line"> <div class="container" id="main_wrapinner"> <noscript> </noscript> <form action="/b/steps/save" method="post" id="form-steps" autocomplete="off"> <input type="hidden" name="context_form" value="YAgAMW9ep838TNUSj2Vrdz8Ts4GWTfsgYQ2KaIYgpOV3/GlWWTx8yHPsMsdj7EfmXA0+C/N1s2z6l4IHUoHbnRRycVVyeOieV3dZsHdu3NXVb5HO53/hJI5cpzVJU8POi6qmylvWiBMjMWNB+dKk3wfH6vpDbRGbud0oVvZFHpylNedWlK4dU//fxsxzIeMqfwb5qIqYAhchY18xux5AXIcoM1vukg7qkRQqZUdrVQBCSlsiedIU6PsDteACksUABLyIfnFn5jR9BbD6p0eRTz46abuHfdj3r0YAQsIe2EO60Cji2VrR6IVik3DZqjoMvW0oDDHQZXxjNp8OV0Y2Mx61ZwqyxP3W7E4kFHOe5WU7NB5MdmTpNuSbTFvCcizac5WVKdaNWG8beJGzou9/YTxL54d26e+fWjMMJmdi6Mf5evhewxx+JHD7WE1MkxSJwukR793G73qXEDYf64gHkFqdvrmJxra+pBaNH8zgpml1wXEWJhhMhY/LIjAUtG/jYjskqw5Y5avJ+umBP93F/uL2eDCpXYAx8CXkFlsnOLxiwUFlqRwntRhKhEiibucfoIvdJOtAC7WsJCKE7whxXFf/Q4WFenSfZd3PSJfXi6/GB343fQxCPVhjo4bf20p4d/S1MgRdBTAsswHHC2wnHZ+6EuD3+GiapqXnOkGUyRNWZIDTKQR9DoyZtk559yn28kxfaBpmYDdXO/pfduWbFNhEsCXlscyj1w87FON0nN5UznFhppM8Vud57PWdKz+8X5L7Zqp9RPEiaQyYoIMdMUj7CXa1r++OVyq0pk8+pgBxpcT/trJyjDusJvBEuBDCygqDqHr7zOcEVtL8151NLUdDKo0pA3eZHrZ1iCXNe7eGnPVTbRU/S6AgrqtSLw4vCJk2ukl8mUA7tLIObbuRABPPwoWWtRHv8PgOqGlcZJelaq8CXCQ7efJepu1V0MAGgA05lggRR02TrohdJDCqMPpVLSrMj0q8EpS3NtDCQxIdMLYQkSPRkM8u2BgR5m/MY/e/IwLjKMi8HBmvAuSXA+Hjd4fa16fFYsKwJkXZKpDvB4cBAfiP4jFpgoJJ6kNDsUohBuxSO2nNvUcFAjRjYh7gHc2IYR9vMuj2kCMCqeRaStrBelO91X/RhwOl3qQUqG4fJQzMlilMT8W02T41fibLGC+oUCqpCRArfEYrYtA=" /> <input type="hidden" name="context_form_id" value="form_3f90dd821a5633fd9a6b75c01996d212353c6a43_6741f8bab92e74.26507938" /> <input type="hidden" name="cid" value="32" /> <input type="hidden" name="lang" value="en_EN" /> <input type="hidden" name="scope" value="" id="scope"/> <input id="useragent_input_0" type="hidden" name="private_user_agent_cli" value=""/> <script type="text/javascript"> document.getElementById("useragent_input_0").value = navigator.userAgent; </script> <input id="referer_input_0" type="hidden" name="private_referer" value=""/> <script type="text/javascript"> document.getElementById("referer_input_0").value = document.referrer; </script> <input id="random_input_0" type="hidden" name="private_random" value=""/> <script type="text/javascript"> document.getElementById("random_input_0").value = Math.random(); setTimeout(function(){ document.getElementById("random_input_0").value = Math.random(); }, 3000); </script> <div id="step-1" class="unit size1of3"> <div class="step-container"> <div class="step-title"> <h2>My donation</h2> </div> <div class="step-content"> <div> </div> <div id="once" class="bloc"> <div class="bloc-content"> <h3>One-time gift</h3> <div id="bloc-amount-once"> <fieldset class="amount"> <ul class="radio-inline line" id="amount-list-once"> <li><label><span id="value_of_amount-once-6000"><data class='price_currency'>€</data><data class='price_amount'>60</data></span> <input autocomplete="false" name="amount-once" type="radio" value="6000" id="amount-once-6000" /></label></li> <li><label><span id="value_of_amount-once-10000"><data class='price_currency'>€</data><data class='price_amount'>100</data></span> <input autocomplete="false" name="amount-once" type="radio" value="10000" id="amount-once-10000" /></label></li> <li><label><span id="value_of_amount-once-20000"><data class='price_currency'>€</data><data class='price_amount'>200</data></span> <input autocomplete="false" name="amount-once" type="radio" value="20000" id="amount-once-20000" /></label></li> </ul> </fieldset> <div class="amount-equivalences"> <p class="amount-equivalences-img"></p> <p class="amount-equivalences-description"></p> </div> <fieldset class="free-amount"> <p><label>Choose your own amount <span class="price_currency">€</span> <input autocomplete="section-famount" name="famount-once" type="text" size="6" id="famount-once" /> </label></p> </fieldset> <p class="tax-info"></p> <!--<input type="hidden" value="" name="iraiser_analytics_session_id" id="iraiser_analytics_session_id"/>--> <input type="hidden" name="referrer" /> <script type="text/javascript"> try{ $("input[name=referrer]").val(document.referrer); if(document.location.search.indexOf('_cv')>1) { $('input[name=referrer]').after($('<input type="hidden" name="query_string" />').val(document.location.search.substring(1))); } }catch(e){} </script> </div> </div> </div> <!-- End Once --> <div class="onceblock"> </div> <div id="or"> <p>Or</p> </div> <div id="regular" class="bloc"> <div class="bloc-content"> <h3>Monthly gift</h3> <div id="bloc-amount-regular"> <fieldset class="amount"> <ul class="radio-inline line" id="amount-list-regular"> <li><label><span id="value_of_amount-regular-1500"><data class='price_currency'>€</data><data class='price_amount'>15</data></span> <input autocomplete="false" name="amount-regular" type="radio" value="1500" id="amount-regular-1500" /></label></li> <li><label><span id="value_of_amount-regular-2500"><data class='price_currency'>€</data><data class='price_amount'>25</data></span> <input autocomplete="false" name="amount-regular" type="radio" value="2500" id="amount-regular-2500" /></label></li> <li><label><span id="value_of_amount-regular-3500"><data class='price_currency'>€</data><data class='price_amount'>35</data></span> <input autocomplete="false" name="amount-regular" type="radio" value="3500" id="amount-regular-3500" /></label></li> </ul> </fieldset> <div class="amount-equivalences"> <p class="amount-equivalences-img"></p> <p class="amount-equivalences-description"></p> </div> <fieldset class="free-amount"> <p><label>Choose your own amount <span class="price_currency">€</span> <input autocomplete="section-famount" name="famount-regular" type="text" size="6" id="famount-regular" /> </label></p> </fieldset> <p class="tax-info"></p> <!--<input type="hidden" value="" name="iraiser_analytics_session_id" id="iraiser_analytics_session_id"/>--> <input type="hidden" name="referrer" /> <script type="text/javascript"> try{ $("input[name=referrer]").val(document.referrer); if(document.location.search.indexOf('_cv')>1) { $('input[name=referrer]').after($('<input type="hidden" name="query_string" />').val(document.location.search.substring(1))); } }catch(e){} </script> </div> </div> </div> <!-- End Each-month --> <div class="regularblock"> </div> <div> </div> </div> <!-- End Step-content --> <div class="step-info"> <h4>Why donate ?</h4> <div class="step-info-body"> <p>Reporters Without Borders:</p> <ul> <li>Defends journalists and other media workers who are imprisoned or persecuted for doing their job, and draws attention to the many cases throughout the world of journalists being harassed, mistreated or tortured.</li> <li>Campaigns against laws designed to restrict press freedom, and fights censorship.</li> <li>Provides around 300 grants a year to help journalists in need to pay legal fees or medical expenses or buy professional equipment, or to support the families of journalists in prison.</li> <li>Works to improve the safety of journalists, especially in war zones.</li> </ul> Unless stated otherwise to <a href="mailto:don@rsf.org" target="_blank">don@rsf.org</a>, you are considered as a member of Reporters Without Borders when making a donation that is above 100EUR. </div> </div> <!-- End Step-info --> </div> <!-- End Step-container --> </div> <!-- End Step-1 --> <div id="step-2" class="unit size1of3"> <div class="step-container"> <div class="step-title"> <h2>My information</h2> </div> <div class="step-content"> <fieldset id="fielset-step2-connect" class="step2_connect_block "> <h4 class="step2_head">Log in and donate with one click</h4> <fieldset id="paypal-connect" class=""> <div type="submit" class="button paypal_button" name="paypal_connect" data-scope="paypal" id="paypal_connect"> <div class="paypal_img"> <img style="height: 20px;" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAyNCAzMiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4gbWVldCIgeG1sbnM9Imh0dHA6JiN4MkY7JiN4MkY7d3d3LnczLm9yZyYjeDJGOzIwMDAmI3gyRjtzdmciPjxwYXRoIGZpbGw9IiMwMDljZGUiIG9wYWNpdHk9IjEiIGQ9Ik0gMjAuOTI0IDcuMTU3IEMgMjEuMjA0IDUuMDU3IDIwLjkyNCAzLjY1NyAxOS44MDEgMi4zNTcgQyAxOC41ODMgMC45NTcgMTYuNDMgMC4yNTcgMTMuNzE2IDAuMjU3IEwgNS43NTggMC4yNTcgQyA1LjI5IDAuMjU3IDQuNzI5IDAuNzU3IDQuNjM0IDEuMjU3IEwgMS4zNTggMjMuNDU3IEMgMS4zNTggMjMuODU3IDEuNjM5IDI0LjM1NyAyLjEwNyAyNC4zNTcgTCA2Ljk3NSAyNC4zNTcgTCA2LjY5NCAyNi41NTcgQyA2LjYgMjYuOTU3IDYuODgxIDI3LjI1NyA3LjI1NSAyNy4yNTcgTCAxMS4zNzUgMjcuMjU3IEMgMTEuODQ0IDI3LjI1NyAxMi4zMTEgMjYuOTU3IDEyLjQwNSAyNi40NTcgTCAxMi40MDUgMjYuMTU3IEwgMTMuMjQ3IDIwLjk1NyBMIDEzLjI0NyAyMC43NTcgQyAxMy4zNDEgMjAuMjU3IDEzLjgwOSAxOS44NTcgMTQuMjc3IDE5Ljg1NyBMIDE0Ljg0IDE5Ljg1NyBDIDE4Ljg2NCAxOS44NTcgMjEuOTU0IDE4LjE1NyAyMi44OSAxMy4xNTcgQyAyMy4zNTggMTEuMDU3IDIzLjE3MiA5LjM1NyAyMi4wNDggOC4xNTcgQyAyMS43NjcgNy43NTcgMjEuMjk4IDcuNDU3IDIwLjkyNCA3LjE1NyBMIDIwLjkyNCA3LjE1NyI+PC9wYXRoPjxwYXRoIGZpbGw9IiMwMTIxNjkiIG9wYWNpdHk9IjEiIGQ9Ik0gMjAuOTI0IDcuMTU3IEMgMjEuMjA0IDUuMDU3IDIwLjkyNCAzLjY1NyAxOS44MDEgMi4zNTcgQyAxOC41ODMgMC45NTcgMTYuNDMgMC4yNTcgMTMuNzE2IDAuMjU3IEwgNS43NTggMC4yNTcgQyA1LjI5IDAuMjU3IDQuNzI5IDAuNzU3IDQuNjM0IDEuMjU3IEwgMS4zNTggMjMuNDU3IEMgMS4zNTggMjMuODU3IDEuNjM5IDI0LjM1NyAyLjEwNyAyNC4zNTcgTCA2Ljk3NSAyNC4zNTcgTCA4LjI4NiAxNi4wNTcgTCA4LjE5MiAxNi4zNTcgQyA4LjI4NiAxNS43NTcgOC43NTQgMTUuMzU3IDkuMzE1IDE1LjM1NyBMIDExLjY1NSAxNS4zNTcgQyAxNi4yNDMgMTUuMzU3IDE5LjgwMSAxMy4zNTcgMjAuOTI0IDcuNzU3IEMgMjAuODMxIDcuNDU3IDIwLjkyNCA3LjM1NyAyMC45MjQgNy4xNTciPjwvcGF0aD48cGF0aCBmaWxsPSIjMDAzMDg3IiBvcGFjaXR5PSIxIiBkPSJNIDkuNTA0IDcuMTU3IEMgOS41OTYgNi44NTcgOS43ODQgNi41NTcgMTAuMDY1IDYuMzU3IEMgMTAuMjUxIDYuMzU3IDEwLjM0NSA2LjI1NyAxMC41MzIgNi4yNTcgTCAxNi43MTEgNi4yNTcgQyAxNy40NjEgNi4yNTcgMTguMjA4IDYuMzU3IDE4Ljc3MiA2LjQ1NyBDIDE4Ljk1OCA2LjQ1NyAxOS4xNDYgNi40NTcgMTkuMzMzIDYuNTU3IEMgMTkuNTIgNi42NTcgMTkuNzA3IDYuNjU3IDE5LjgwMSA2Ljc1NyBDIDE5Ljg5NCA2Ljc1NyAxOS45ODcgNi43NTcgMjAuMDgyIDYuNzU3IEMgMjAuMzYyIDYuODU3IDIwLjY0MyA3LjA1NyAyMC45MjQgNy4xNTcgQyAyMS4yMDQgNS4wNTcgMjAuOTI0IDMuNjU3IDE5LjgwMSAyLjI1NyBDIDE4LjY3NyAwLjg1NyAxNi41MjUgMC4yNTcgMTMuODA5IDAuMjU3IEwgNS43NTggMC4yNTcgQyA1LjI5IDAuMjU3IDQuNzI5IDAuNjU3IDQuNjM0IDEuMjU3IEwgMS4zNTggMjMuNDU3IEMgMS4zNTggMjMuODU3IDEuNjM5IDI0LjM1NyAyLjEwNyAyNC4zNTcgTCA2Ljk3NSAyNC4zNTcgTCA4LjI4NiAxNi4wNTcgTCA5LjUwNCA3LjE1NyBaIj48L3BhdGg+PC9zdmc+" alt="PP"> <img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTAwIDMyIiB4bWxucz0iaHR0cDomI3gyRjsmI3gyRjt3d3cudzMub3JnJiN4MkY7MjAwMCYjeDJGO3N2ZyIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4gbWVldCI+PHBhdGggZmlsbD0iIzAwMzA4NyIgZD0iTSAxMiA0LjkxNyBMIDQuMiA0LjkxNyBDIDMuNyA0LjkxNyAzLjIgNS4zMTcgMy4xIDUuODE3IEwgMCAyNS44MTcgQyAtMC4xIDI2LjIxNyAwLjIgMjYuNTE3IDAuNiAyNi41MTcgTCA0LjMgMjYuNTE3IEMgNC44IDI2LjUxNyA1LjMgMjYuMTE3IDUuNCAyNS42MTcgTCA2LjIgMjAuMjE3IEMgNi4zIDE5LjcxNyA2LjcgMTkuMzE3IDcuMyAxOS4zMTcgTCA5LjggMTkuMzE3IEMgMTQuOSAxOS4zMTcgMTcuOSAxNi44MTcgMTguNyAxMS45MTcgQyAxOSA5LjgxNyAxOC43IDguMTE3IDE3LjcgNi45MTcgQyAxNi42IDUuNjE3IDE0LjYgNC45MTcgMTIgNC45MTcgWiBNIDEyLjkgMTIuMjE3IEMgMTIuNSAxNS4wMTcgMTAuMyAxNS4wMTcgOC4zIDE1LjAxNyBMIDcuMSAxNS4wMTcgTCA3LjkgOS44MTcgQyA3LjkgOS41MTcgOC4yIDkuMzE3IDguNSA5LjMxNyBMIDkgOS4zMTcgQyAxMC40IDkuMzE3IDExLjcgOS4zMTcgMTIuNCAxMC4xMTcgQyAxMi45IDEwLjUxNyAxMy4xIDExLjIxNyAxMi45IDEyLjIxNyBaIj48L3BhdGg+PHBhdGggZmlsbD0iIzAwMzA4NyIgZD0iTSAzNS4yIDEyLjExNyBMIDMxLjUgMTIuMTE3IEMgMzEuMiAxMi4xMTcgMzAuOSAxMi4zMTcgMzAuOSAxMi42MTcgTCAzMC43IDEzLjYxNyBMIDMwLjQgMTMuMjE3IEMgMjkuNiAxMi4wMTcgMjcuOCAxMS42MTcgMjYgMTEuNjE3IEMgMjEuOSAxMS42MTcgMTguNCAxNC43MTcgMTcuNyAxOS4xMTcgQyAxNy4zIDIxLjMxNyAxNy44IDIzLjQxNyAxOS4xIDI0LjgxNyBDIDIwLjIgMjYuMTE3IDIxLjkgMjYuNzE3IDIzLjggMjYuNzE3IEMgMjcuMSAyNi43MTcgMjkgMjQuNjE3IDI5IDI0LjYxNyBMIDI4LjggMjUuNjE3IEMgMjguNyAyNi4wMTcgMjkgMjYuNDE3IDI5LjQgMjYuNDE3IEwgMzIuOCAyNi40MTcgQyAzMy4zIDI2LjQxNyAzMy44IDI2LjAxNyAzMy45IDI1LjUxNyBMIDM1LjkgMTIuNzE3IEMgMzYgMTIuNTE3IDM1LjYgMTIuMTE3IDM1LjIgMTIuMTE3IFogTSAzMC4xIDE5LjMxNyBDIDI5LjcgMjEuNDE3IDI4LjEgMjIuOTE3IDI1LjkgMjIuOTE3IEMgMjQuOCAyMi45MTcgMjQgMjIuNjE3IDIzLjQgMjEuOTE3IEMgMjIuOCAyMS4yMTcgMjIuNiAyMC4zMTcgMjIuOCAxOS4zMTcgQyAyMy4xIDE3LjIxNyAyNC45IDE1LjcxNyAyNyAxNS43MTcgQyAyOC4xIDE1LjcxNyAyOC45IDE2LjExNyAyOS41IDE2LjcxNyBDIDMwIDE3LjQxNyAzMC4yIDE4LjMxNyAzMC4xIDE5LjMxNyBaIj48L3BhdGg+PHBhdGggZmlsbD0iIzAwMzA4NyIgZD0iTSA1NS4xIDEyLjExNyBMIDUxLjQgMTIuMTE3IEMgNTEgMTIuMTE3IDUwLjcgMTIuMzE3IDUwLjUgMTIuNjE3IEwgNDUuMyAyMC4yMTcgTCA0My4xIDEyLjkxNyBDIDQzIDEyLjQxNyA0Mi41IDEyLjExNyA0Mi4xIDEyLjExNyBMIDM4LjQgMTIuMTE3IEMgMzggMTIuMTE3IDM3LjYgMTIuNTE3IDM3LjggMTMuMDE3IEwgNDEuOSAyNS4xMTcgTCAzOCAzMC41MTcgQyAzNy43IDMwLjkxNyAzOCAzMS41MTcgMzguNSAzMS41MTcgTCA0Mi4yIDMxLjUxNyBDIDQyLjYgMzEuNTE3IDQyLjkgMzEuMzE3IDQzLjEgMzEuMDE3IEwgNTUuNiAxMy4wMTcgQyA1NS45IDEyLjcxNyA1NS42IDEyLjExNyA1NS4xIDEyLjExNyBaIj48L3BhdGg+PHBhdGggZmlsbD0iIzAwOWNkZSIgZD0iTSA2Ny41IDQuOTE3IEwgNTkuNyA0LjkxNyBDIDU5LjIgNC45MTcgNTguNyA1LjMxNyA1OC42IDUuODE3IEwgNTUuNSAyNS43MTcgQyA1NS40IDI2LjExNyA1NS43IDI2LjQxNyA1Ni4xIDI2LjQxNyBMIDYwLjEgMjYuNDE3IEMgNjAuNSAyNi40MTcgNjAuOCAyNi4xMTcgNjAuOCAyNS44MTcgTCA2MS43IDIwLjExNyBDIDYxLjggMTkuNjE3IDYyLjIgMTkuMjE3IDYyLjggMTkuMjE3IEwgNjUuMyAxOS4yMTcgQyA3MC40IDE5LjIxNyA3My40IDE2LjcxNyA3NC4yIDExLjgxNyBDIDc0LjUgOS43MTcgNzQuMiA4LjAxNyA3My4yIDYuODE3IEMgNzIgNS42MTcgNzAuMSA0LjkxNyA2Ny41IDQuOTE3IFogTSA2OC40IDEyLjIxNyBDIDY4IDE1LjAxNyA2NS44IDE1LjAxNyA2My44IDE1LjAxNyBMIDYyLjYgMTUuMDE3IEwgNjMuNCA5LjgxNyBDIDYzLjQgOS41MTcgNjMuNyA5LjMxNyA2NCA5LjMxNyBMIDY0LjUgOS4zMTcgQyA2NS45IDkuMzE3IDY3LjIgOS4zMTcgNjcuOSAxMC4xMTcgQyA2OC40IDEwLjUxNyA2OC41IDExLjIxNyA2OC40IDEyLjIxNyBaIj48L3BhdGg+PHBhdGggZmlsbD0iIzAwOWNkZSIgZD0iTSA5MC43IDEyLjExNyBMIDg3IDEyLjExNyBDIDg2LjcgMTIuMTE3IDg2LjQgMTIuMzE3IDg2LjQgMTIuNjE3IEwgODYuMiAxMy42MTcgTCA4NS45IDEzLjIxNyBDIDg1LjEgMTIuMDE3IDgzLjMgMTEuNjE3IDgxLjUgMTEuNjE3IEMgNzcuNCAxMS42MTcgNzMuOSAxNC43MTcgNzMuMiAxOS4xMTcgQyA3Mi44IDIxLjMxNyA3My4zIDIzLjQxNyA3NC42IDI0LjgxNyBDIDc1LjcgMjYuMTE3IDc3LjQgMjYuNzE3IDc5LjMgMjYuNzE3IEMgODIuNiAyNi43MTcgODQuNSAyNC42MTcgODQuNSAyNC42MTcgTCA4NC4zIDI1LjYxNyBDIDg0LjIgMjYuMDE3IDg0LjUgMjYuNDE3IDg0LjkgMjYuNDE3IEwgODguMyAyNi40MTcgQyA4OC44IDI2LjQxNyA4OS4zIDI2LjAxNyA4OS40IDI1LjUxNyBMIDkxLjQgMTIuNzE3IEMgOTEuNCAxMi41MTcgOTEuMSAxMi4xMTcgOTAuNyAxMi4xMTcgWiBNIDg1LjUgMTkuMzE3IEMgODUuMSAyMS40MTcgODMuNSAyMi45MTcgODEuMyAyMi45MTcgQyA4MC4yIDIyLjkxNyA3OS40IDIyLjYxNyA3OC44IDIxLjkxNyBDIDc4LjIgMjEuMjE3IDc4IDIwLjMxNyA3OC4yIDE5LjMxNyBDIDc4LjUgMTcuMjE3IDgwLjMgMTUuNzE3IDgyLjQgMTUuNzE3IEMgODMuNSAxNS43MTcgODQuMyAxNi4xMTcgODQuOSAxNi43MTcgQyA4NS41IDE3LjQxNyA4NS43IDE4LjMxNyA4NS41IDE5LjMxNyBaIj48L3BhdGg+PHBhdGggZmlsbD0iIzAwOWNkZSIgZD0iTSA5NS4xIDUuNDE3IEwgOTEuOSAyNS43MTcgQyA5MS44IDI2LjExNyA5Mi4xIDI2LjQxNyA5Mi41IDI2LjQxNyBMIDk1LjcgMjYuNDE3IEMgOTYuMiAyNi40MTcgOTYuNyAyNi4wMTcgOTYuOCAyNS41MTcgTCAxMDAgNS42MTcgQyAxMDAuMSA1LjIxNyA5OS44IDQuOTE3IDk5LjQgNC45MTcgTCA5NS44IDQuOTE3IEMgOTUuNCA0LjkxNyA5NS4yIDUuMTE3IDk1LjEgNS40MTcgWiI+PC9wYXRoPjwvc3ZnPg==" alt="paypal"> </div> </div> <script> $('[name=paypal_connect]').click(function(){ $(this).after('<input data-scope="paypal" class="temp_field" type="hidden" name="private_paypal_connect" value="1"/>'); $(this).after('<input data-scope="paypal" class="temp_field" type="hidden" name="step2_pass" value="1"/>'); $('[name=paypal_submit]').click(); }); </script> </fieldset> <fieldset id="stripe-connect" class=""> <input type="button" class="button apple_pay_styled_button" id="StripePayButtonLogin" style="display: none;"> </button> <input type="hidden" name="private_stripe_connect_paymentMethod"/> <script type="text/javascript"> if (!window.stripeJsLoaded) { window.stripeJsLoaded = new Promise((resolve, reject) => { const s = document.createElement('script'); s.src = 'https://js.stripe.com/v3/'; s.type = 'text/javascript'; s.onerror = reject; s.onload = resolve; document.head.appendChild(s); }); } </script> <script type="text/javascript"> var Stripe_obj = { PayWithApple:true, PayWithWallet:true, StripeButtonPopulate: false, buttons: { Step2: false, Step3: false }, paymentRequest: false, populate: function (ev) { try { $('input[name=private_stripe_connect_paymentMethod]').val(JSON.stringify(ev)); if ((!$('input[name=lastname]').val() || !$('input[name=firstname]').val()) && ev.payerName) { var name = ev.payerName.split(' ').filter(function(x){ return x&&true;}); if (name.length) { $('input[name=firstname]').val(name[0]); $('input[name=lastname]').val(name.slice(1).join(' ')); }else{ $('input[name=firstname]').val('N/A'); $('input[name=lastname]').val(ev.payerName); } } if (ev.payerEmail) { $('input[name=email]').val(ev.payerEmail); } if (!$('select[name=civility] option:selected').val()) { // If no civility was selected, force a "0" civility value // for the step 2 validation not to fail if the civility was mandatory $('select[name=civility] option:first').prop('selected', 'selected').val("0"); } if ($('input[type=tel]').length && !$('input[type=tel]').val() && ev.payerPhone) { $('input[type=tel]').val(ev.payerPhone); } if (ev.paymentMethod && ev.paymentMethod.billing_details) { let evBillingDetails = ev.paymentMethod.billing_details; if ((!$('input[name=lastname]').val() || !$('input[name=firstname]').val()) && evBillingDetails.name) { var name = evBillingDetails.name.replace('').split(' ').filter(function(x){ return x&&true;}); if (name.length) { $('input[name=firstname]').val(name[0]); $('input[name=lastname]').val(name.slice(1).join(' ')); }else{ $('input[name=firstname]').val('N/A'); $('input[name=lastname]').val(evBillingDetails.name); } } if (evBillingDetails.address) { let evBillingAddress = evBillingDetails.address; if (!$('input[name=country]').val() && evBillingAddress.country) { $('select[name=country] option[value=' + evBillingAddress.country + ']').prop('selected', 'selected'); } if (!$('input[name=address1]').val() && evBillingAddress.line1) { $('input[name=address1]').val(evBillingAddress.line1); } if (!$('input[name=address2]').val() && evBillingAddress.line2) { $('input[name=address2]').val(evBillingAddress.line2); } if (!$('input[name=postcode]').val() && evBillingAddress.postal_code) { $('input[name=postcode]').val(evBillingAddress.postal_code); } if (!$('input[name=city]').val() && evBillingAddress.city) { $('input[name=city]').val(evBillingAddress.city); } } } } catch (err) { let msg = 'Stripe_obj.populate exception: ' + err; console.log(msg); window.onerror(msg); } }, createStripeButton: function (ev) { console.log('Stripe_obj.createStripeButton'); if(!Stripe_obj.buttons.Step3 && !Stripe_obj.buttons.Step2) return; var amount = parseInt(Common.getDonation().amount); var currency = (Common.getCurrency() || "EUR").toLowerCase(); var accountCountry = "SG"; var frequency = Step1.current_donation.frequency; // Some currencies are having an amount with three decimal cents, // We must write 12340 for 12.340 KWD for example (in those cases, last digit must always be a 0) const threeDecimalCurrencies = ["BHD","JOD","KWD","OMR","TND"]; if (threeDecimalCurrencies.includes(currency.toUpperCase())) { amount = amount * 10; } // Some currencies are having an amount with no decimal cents, const zeroDecimalCurrencies = ["BIF","CLP","DJF","GNF","JPY","KMF","KRW","MGA","PYG","RWF","UGX","VND","VUV","XAF","XOF","XPF"]; if (zeroDecimalCurrencies.includes(currency.toUpperCase())) { amount = amount / 100; } console.log({Step2: Stripe_obj.buttons.Step2 && true,Step3: Stripe_obj.buttons.Step3 && true}); console.log({amount: amount, currency: currency, accountCountry: accountCountry, frequency: frequency}); Stripe_obj.paymentRequest = false; try{ if (!Stripe_obj.stripe) { // Create a Stripe client. Stripe_obj.stripe = Stripe("pk_live_srqYyZqem3SpTx2GjUycaPjN", { apiVersion: "2020-08-27" }); } Stripe_obj.paymentRequest = Stripe_obj.stripe.paymentRequest({ country: accountCountry, currency: currency, total: { label: "Reporters Without Borders", amount: parseInt(amount) }, requestPayerName: true, requestPayerEmail: true //requestPayerPhone: true }); }catch(error){ console.log("paymentRequest creation failed"); console.log(error); } if(!Stripe_obj.paymentRequest){ // nothing available Stripe_obj.removeStripeConnect(); Stripe_obj.removeStripePay(); }else { Stripe_obj.paymentRequest.canMakePayment().then( function (result) { console.log('paymentRequest.canMakePayment() - promise fulfilled'); console.log(result); var fieldset = $('#payment_mode-apple_pay-'+frequency); // show / hide the appropriate blocks and mount the button if (result) { if (!result.applePay) { var txt = $("fieldset[data-scope='stripe_apple_pay'] .payment_mode_title").first().text(); var ua = window.navigator.userAgent; if (ua.indexOf('Edge/') > 0) { fieldset.attr('data-stripe-mode','microsoft'); txt = txt.replace('Apple Pay', 'Microsoft Pay'); } else if (ua.indexOf('Chrome') > 0) { txt = txt.replace('Apple Pay', 'Google Pay'); fieldset.attr('data-stripe-mode','google'); } else { txt = txt.replace('Apple Pay', 'Saved Credit Cards'); fieldset.attr('data-stripe-mode','other'); } if(txt) { Common.select("[data-scope='stripe_apple_pay'] .payment_mode_title").text(txt); } Stripe_obj.removeStripeConnect(); if (Stripe_obj.PayWithWallet) { Stripe_obj.mountStripePay(frequency); } else { Stripe_obj.removeStripePay(); } } else { fieldset.attr('data-stripe-mode','apple'); $('#stripe_apple_pay_submit.' + frequency).addClass('apple_pay_styled_button'); //Apple Pay OK if (Stripe_obj.buttons.Step2) { Stripe_obj.mountStripeConnect(frequency); } if (Stripe_obj.buttons.Step3) { if (Stripe_obj.PayWithApple) { // Mount the button with its value cleared // for it not to interfere with Apple Pay styling Stripe_obj.mountStripePay(frequency); } else { Stripe_obj.removeStripePay(); } } Stripe_obj.validatePaymentMethodIfExists(); } } else { // nothing available Stripe_obj.removeStripeConnect(); Stripe_obj.removeStripePay(); } }, function (reason) { console.log('paymentRequest.canMakePayment() - promise rejected'); console.log(reason); Stripe_obj.removeStripeConnect(); Stripe_obj.removeStripePay(); } ); Stripe_obj.paymentRequest.on('cancel', function (ev) { console.log('paymentRequest.on(cancel)'); $('.ira-processing').removeClass('ira-processing'); }); Stripe_obj.paymentRequest.on('paymentmethod', function (ev) { console.log('paymentRequest.on(paymentMethod)'); console.log(ev); if (Stripe_obj.StripeButtonPopulate) { Stripe_obj.populate(ev); Stripe_obj.StripeButtonPopulate = false; } // Send the paymentMethod to your server to charge it $('#stripe_apple_pay_paymentMethod.' + frequency).val(ev.paymentMethod.id); ev.complete('success'); $('#stripe_apple_pay_submit.' + frequency).prop('disabled', false).trigger('click'); //$('.ira-processing').removeClass('ira-processing'); }); } }, mountStripePay:function(frequency){ console.log(`mountStripePay(${frequency})`); $('#stripe_apple_pay_submit.' + frequency).prop('disabled', false).show(); }, validatePaymentMethodIfExists:function(){ }, removeStripePay: function(){ Stripe_obj.buttons.Step3 = false; console.log("removeStripePay"); Common.select("[data-scope='stripe_apple_pay']").hide(); }, mountStripeConnect:function(frequency){ console.log(`mountStripeConnect(${frequency})`); $('#StripePayButtonLogin').attr('data-frequency', frequency).show(); }, removeStripeConnect: function(){ console.log("removeStripeConnect"); Stripe_obj.buttons.Step2 = false; $("#stripe-connect").detach(); if(!$('#fielset-step2-connect fieldset').length){ // no connector available $('.step2_connect_block').detach(); // remove all blocks related to connectors }else{ var fieldsetlength = $('#fielset-step2-connect fieldset').length; if($("#fielset-step2-connect fieldset.regularblock").length == fieldsetlength){ $('.step2_connect_block').addClass('regularblock'); }else if($("#fielset-step2-connect fieldset.onceblock").length == fieldsetlength){ $('.step2_connect_block').addClass('onceblock'); } } }, stripe: false } window.stripeJsLoaded.then(() => { $('body').on('init_done tip_changed', Stripe_obj.createStripeButton); Stripe_obj.createStripeButton(); }); </script> <script> Stripe_obj.buttons.Step2 = true; $('#StripePayButtonLogin').click(function(event){ if (Stripe_obj.buttons.Step2 && Step1.check()) { Stripe_obj.StripeButtonPopulate = true; console.log('paymentRequest.show() -- stripeConnect'); Stripe_obj.paymentRequest.show(); } return false; }); </script> <style> #StripePayButtonLogin { -webkit-appearance: -apple-pay-button !important; } #StripePayButtonLogin[data-frequency='once'] { -apple-pay-button-type: donate; } #StripePayButtonLogin[data-frequency='regular'] { -apple-pay-button-type: subscribe; } </style> </fieldset> </fieldset> <fieldset id="fieldset-step2"> <h4 class="step2_head step2_connect_block ">or I enter my details</h4> <p id="c-email"> <label for="email">Email <span class="required">*</span> <span class="help">e.g. jo.bloggs@email.com</span></label> <input type="text" name="email" id="email" /> </p> <fieldset id="fielset-name"> <p id="c-isc"> <label><input type="checkbox" value="OK" name="iscompany" id="iscompany" /> I am making a donation on behalf of an organisation</label> </p> <p id="c-isc-inf" class="company-infos hidden"> <label for="company">Company <span class="help">e.g. Apple</span> </label> <input type="text" name="company" id="company" /> </p> <p id="c-civ"> <label for="civility">Title <span class="required">*</span></label> <select name="civility" id="civility"> <option value=""></option> <option value="1">Mr</option> <option value="2">Mrs</option> <option value="4">Ms</option> <option value="5">Mr & Mrs</option> <option value="11">Dr</option> <option value="18">n/a</option> </select> </p> <p id="c-fname"> <label for="firstname">First Name <span class="required">*</span> <span class="help">e.g. Joanna</span></label> <input type="text" name="firstname" id="firstname" /> </p> <p id="c-lname"> <label for="lastname">Last Name <span class="required">*</span> <span class="help">e.g. Bloggs</span></label> <input type="text" name="lastname" id="lastname" /> </p> </fieldset> <fieldset id="fielset-address"> <p id="c-addr1"> <label for="address1">Address 1 <span class="required">*</span> <span class="help">e.g. 123 Streetson Road</span></label> <input type="text" name="address1" id="address1" /> </p> <p id="c-addr2"> <label for="address2">Address 2 <span class="help">e.g. Greenwich</span></label> <input type="text" name="address2" id="address2" /> </p> <div class="line"> <p id="c-pcode" class="unit size1of2"> <label for="postcode">Postcode <span class="required">*</span><span class="help">e.g. W1K 1BE</span></label> <input type="text" name="postcode" id="postcode" /> </p> <p id="c-city" class="unit size2of2 lastUnit"> <label for="city">City <span class="required">*</span> <span class="help">e.g. London</span></label> <input type="text" name="city" id="city" /> </p> </div> <p id="c-country"> <label for="country">Country <span class="required">*</span> <span class="help">e.g. United Kingdom</span></label> <select name="country" id="country"> <option value="BE">BELGIUM</option> <option value="FR">FRANCE</option> <option value="NL">NETHERLANDS</option> <option value="GB">UNITED KINGDOM</option> <option value="US">UNITED STATES</option> <option value="">----------------------------------</option> <option value="AF">AFGHANISTAN</option> <option value="AX">ÅLAND ISLANDS</option> <option value="AL">ALBANIA</option> <option value="DZ">ALGERIA</option> <option value="AS">AMERICAN SAMOA</option> <option value="AD">ANDORRA</option> <option value="AO">ANGOLA</option> <option value="AI">ANGUILLA</option> <option value="AQ">ANTARCTICA</option> <option value="AG">ANTIGUA AND BARBUDA</option> <option value="AR">ARGENTINA</option> <option value="AM">ARMENIA</option> <option value="AW">ARUBA</option> <option value="AU">AUSTRALIA</option> <option value="AT">AUSTRIA</option> <option value="AZ">AZERBAIJAN</option> <option value="BS">BAHAMAS</option> <option value="BH">BAHRAIN</option> <option value="BD">BANGLADESH</option> <option value="BB">BARBADOS</option> <option value="BY">BELARUS</option> <option value="BE">BELGIUM</option> <option value="BZ">BELIZE</option> <option value="BJ">BENIN</option> <option value="BM">BERMUDA</option> <option value="BT">BHUTAN</option> <option value="BO">BOLIVIA, PLURINATIONAL STATE OF</option> <option value="BA">BOSNIA AND HERZEGOVINA</option> <option value="BW">BOTSWANA</option> <option value="BV">BOUVET ISLAND</option> <option value="BR">BRAZIL</option> <option value="IO">BRITISH INDIAN OCEAN TERRITORY</option> <option value="BN">BRUNEI DARUSSALAM</option> <option value="BG">BULGARIA</option> <option value="BF">BURKINA FASO</option> <option value="BI">BURUNDI</option> <option value="KH">CAMBODIA</option> <option value="CM">CAMEROON</option> <option value="CA">CANADA</option> <option value="CV">CAPE VERDE</option> <option value="KY">CAYMAN ISLANDS</option> <option value="CF">CENTRAL AFRICAN REPUBLIC</option> <option value="TD">CHAD</option> <option value="CL">CHILE</option> <option value="CN">CHINA</option> <option value="CX">CHRISTMAS ISLAND</option> <option value="CC">COCOS (KEELING) ISLANDS</option> <option value="CO">COLOMBIA</option> <option value="KM">COMOROS</option> <option value="CG">CONGO</option> <option value="CD">CONGO, THE DEMOCRATIC REPUBLIC OF THE</option> <option value="CK">COOK ISLANDS</option> <option value="CR">COSTA RICA</option> <option value="CI">CÔTE D'IVOIRE</option> <option value="HR">CROATIA</option> <option value="CU">CUBA</option> <option value="CY">CYPRUS</option> <option value="CZ">CZECH REPUBLIC</option> <option value="DK">DENMARK</option> <option value="DJ">DJIBOUTI</option> <option value="DM">DOMINICA</option> <option value="DO">DOMINICAN REPUBLIC</option> <option value="EC">ECUADOR</option> <option value="EG">EGYPT</option> <option value="SV">EL SALVADOR</option> <option value="GQ">EQUATORIAL GUINEA</option> <option value="ER">ERITREA</option> <option value="EE">ESTONIA</option> <option value="ET">ETHIOPIA</option> <option value="FK">FALKLAND ISLANDS (MALVINAS)</option> <option value="FO">FAROE ISLANDS</option> <option value="FJ">FIJI</option> <option value="FI">FINLAND</option> <option value="FR">FRANCE</option> <option value="GF">FRENCH GUIANA</option> <option value="PF">FRENCH POLYNESIA</option> <option value="TF">FRENCH SOUTHERN TERRITORIES</option> <option value="GA">GABON</option> <option value="GM">GAMBIA</option> <option value="GE">GEORGIA</option> <option value="DE">GERMANY</option> <option value="GH">GHANA</option> <option value="GI">GIBRALTAR</option> <option value="GR">GREECE</option> <option value="GL">GREENLAND</option> <option value="GD">GRENADA</option> <option value="GP">GUADELOUPE</option> <option value="GU">GUAM</option> <option value="GT">GUATEMALA</option> <option value="GG">GUERNSEY</option> <option value="GN">GUINEA</option> <option value="GW">GUINEA-BISSAU</option> <option value="GY">GUYANA</option> <option value="HT">HAITI</option> <option value="HM">HEARD ISLAND AND MCDONALD ISLANDS</option> <option value="VA">HOLY SEE (VATICAN CITY STATE)</option> <option value="HN">HONDURAS</option> <option value="HK">HONG KONG</option> <option value="HU">HUNGARY</option> <option value="IS">ICELAND</option> <option value="IN">INDIA</option> <option value="ID">INDONESIA</option> <option value="IR">IRAN, ISLAMIC REPUBLIC OF</option> <option value="IQ">IRAQ</option> <option value="IE">IRELAND</option> <option value="IM">ISLE OF MAN</option> <option value="IL">ISRAEL</option> <option value="IT">ITALY</option> <option value="JM">JAMAICA</option> <option value="JP">JAPAN</option> <option value="JE">JERSEY</option> <option value="JO">JORDAN</option> <option value="KZ">KAZAKHSTAN</option> <option value="KE">KENYA</option> <option value="KI">KIRIBATI</option> <option value="KP">KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF</option> <option value="KR">KOREA, REPUBLIC OF</option> <option value="KW">KUWAIT</option> <option value="KG">KYRGYZSTAN</option> <option value="LA">LAO PEOPLE'S DEMOCRATIC REPUBLIC</option> <option value="LV">LATVIA</option> <option value="LB">LEBANON</option> <option value="LS">LESOTHO</option> <option value="LR">LIBERIA</option> <option value="LY">LIBYAN ARAB JAMAHIRIYA</option> <option value="LI">LIECHTENSTEIN</option> <option value="LT">LITHUANIA</option> <option value="LU">LUXEMBOURG</option> <option value="MO">MACAO</option> <option value="MK">MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF</option> <option value="MG">MADAGASCAR</option> <option value="MW">MALAWI</option> <option value="MY">MALAYSIA</option> <option value="MV">MALDIVES</option> <option value="ML">MALI</option> <option value="MT">MALTA</option> <option value="MH">MARSHALL ISLANDS</option> <option value="MQ">MARTINIQUE</option> <option value="MR">MAURITANIA</option> <option value="MU">MAURITIUS</option> <option value="YT">MAYOTTE</option> <option value="MX">MEXICO</option> <option value="FM">MICRONESIA, FEDERATED STATES OF</option> <option value="MD">MOLDOVA, REPUBLIC OF</option> <option value="MC">MONACO</option> <option value="MN">MONGOLIA</option> <option value="ME">MONTENEGRO</option> <option value="MS">MONTSERRAT</option> <option value="MA">MOROCCO</option> <option value="MZ">MOZAMBIQUE</option> <option value="MM">MYANMAR</option> <option value="NA">NAMIBIA</option> <option value="NR">NAURU</option> <option value="NP">NEPAL</option> <option value="NL">NETHERLANDS</option> <option value="AN">NETHERLANDS ANTILLES</option> <option value="NC">NEW CALEDONIA</option> <option value="NZ">NEW ZEALAND</option> <option value="NI">NICARAGUA</option> <option value="NE">NIGER</option> <option value="NG">NIGERIA</option> <option value="NU">NIUE</option> <option value="NF">NORFOLK ISLAND</option> <option value="MP">NORTHERN MARIANA ISLANDS</option> <option value="NO">NORWAY</option> <option value="OM">OMAN</option> <option value="PK">PAKISTAN</option> <option value="PW">PALAU</option> <option value="PS">PALESTINIAN TERRITORY, OCCUPIED</option> <option value="PA">PANAMA</option> <option value="PG">PAPUA NEW GUINEA</option> <option value="PY">PARAGUAY</option> <option value="PE">PERU</option> <option value="PH">PHILIPPINES</option> <option value="PN">PITCAIRN</option> <option value="PL">POLAND</option> <option value="PT">PORTUGAL</option> <option value="PR">PUERTO RICO</option> <option value="QA">QATAR</option> <option value="RE">RÉUNION</option> <option value="RO">ROMANIA</option> <option value="RU">RUSSIAN FEDERATION</option> <option value="RW">RWANDA</option> <option value="BL">SAINT BARTHÉLEMY</option> <option value="SH">SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA</option> <option value="KN">SAINT KITTS AND NEVIS</option> <option value="LC">SAINT LUCIA</option> <option value="MF">SAINT MARTIN</option> <option value="PM">SAINT PIERRE AND MIQUELON</option> <option value="VC">SAINT VINCENT AND THE GRENADINES</option> <option value="WS">SAMOA</option> <option value="SM">SAN MARINO</option> <option value="ST">SAO TOME AND PRINCIPE</option> <option value="SA">SAUDI ARABIA</option> <option value="SN">SENEGAL</option> <option value="RS">SERBIA</option> <option value="SC">SEYCHELLES</option> <option value="SL">SIERRA LEONE</option> <option value="SG" selected="selected">SINGAPORE</option> <option value="SK">SLOVAKIA</option> <option value="SI">SLOVENIA</option> <option value="SB">SOLOMON ISLANDS</option> <option value="SO">SOMALIA</option> <option value="ZA">SOUTH AFRICA</option> <option value="GS">SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS</option> <option value="ES">SPAIN</option> <option value="LK">SRI LANKA</option> <option value="SD">SUDAN</option> <option value="SR">SURINAME</option> <option value="SJ">SVALBARD AND JAN MAYEN</option> <option value="SZ">SWAZILAND</option> <option value="SE">SWEDEN</option> <option value="CH">SWITZERLAND</option> <option value="SY">SYRIAN ARAB REPUBLIC</option> <option value="TW">TAIWAN</option> <option value="TJ">TAJIKISTAN</option> <option value="TZ">TANZANIA, UNITED REPUBLIC OF</option> <option value="TH">THAILAND</option> <option value="TL">TIMOR-LESTE</option> <option value="TG">TOGO</option> <option value="TK">TOKELAU</option> <option value="TO">TONGA</option> <option value="TT">TRINIDAD AND TOBAGO</option> <option value="TN">TUNISIA</option> <option value="TR">TURKEY</option> <option value="TM">TURKMENISTAN</option> <option value="TC">TURKS AND CAICOS ISLANDS</option> <option value="TV">TUVALU</option> <option value="UG">UGANDA</option> <option value="UA">UKRAINE</option> <option value="AE">UNITED ARAB EMIRATES</option> <option value="GB">UNITED KINGDOM</option> <option value="US">UNITED STATES</option> <option value="UM">UNITED STATES MINOR OUTLYING ISLANDS</option> <option value="UY">URUGUAY</option> <option value="UZ">UZBEKISTAN</option> <option value="VU">VANUATU</option> <option value="VE">VENEZUELA, BOLIVARIAN REPUBLIC OF</option> <option value="VN">VIET NAM</option> <option value="VG">VIRGIN ISLANDS, BRITISH</option> <option value="VI">VIRGIN ISLANDS, U.S.</option> <option value="WF">WALLIS AND FUTUNA</option> <option value="EH">WESTERN SAHARA</option> <option value="YE">YEMEN</option> <option value="ZM">ZAMBIA</option> <option value="ZW">ZIMBABWE</option> </select> </p> <!-- FindMyAddress not enabled on this campaign --> </fieldset> <p name="reserved_phone_number" id="reserved_phone_number_id_6741f8bad8488" data-type="phone" > <label for="reserved_phone_number"> <span class="reserved_title">Phone number</span> <span id="nameHelp_reserved_phone_number" class="help"></span> </label> <input id="reserved_phone_number" type="tel" aria-describedby="nameHelp_reserved_phone_number" name="reserved_phone_number" data-scope="step2" data-required="" value=""/> </p> <script type="text/javascript"> load_phone_input_reserved_phone_number_id_6741f8bad8488 = function(){ var reserved_phone_input_reserved_phone_number_id_6741f8bad8488 = $("#reserved_phone_number_id_6741f8bad8488 input[name=reserved_phone_number]"); var iti_reserved_phone_number_id_6741f8bad8488 = window.intlTelInput(document.querySelector("#reserved_phone_number_id_6741f8bad8488 input[name=reserved_phone_number]"),{ initialCountry: "auto", autoPlaceholder: "polite", preferredCountries: ['fr', 'gb', 'be', 'nl', 'de'], utilsScript: "/libs.iraiser.eu/libs/intl-tel-input-15.0.1/build/js/utils.js" }); $("form:has(#reserved_phone_number_id_6741f8bad8488)").submit(function() { const reserved_phone_input_reserved_phone_number_id_6741f8bad8488_tmp = reserved_phone_input_reserved_phone_number_id_6741f8bad8488.val(); reserved_phone_input_reserved_phone_number_id_6741f8bad8488.val(iti_reserved_phone_number_id_6741f8bad8488.getNumber()); if(reserved_phone_input_reserved_phone_number_id_6741f8bad8488.val() == ''){ reserved_phone_input_reserved_phone_number_id_6741f8bad8488.val(reserved_phone_input_reserved_phone_number_id_6741f8bad8488_tmp); } }); try { if (reserved_phone_input_reserved_phone_number_id_6741f8bad8488.val() == '') iti_reserved_phone_number_id_6741f8bad8488.setCountry('sg'); }catch(e){} $( document ).ready(function(){ $('select[name=country],input[name=country]').change(function(){ try { if(reserved_phone_input_reserved_phone_number_id_6741f8bad8488.val() == '') iti_reserved_phone_number_id_6741f8bad8488.setCountry($(this).val().toLowerCase()); }catch(e){} }); }); } $( document ).ready(function(){ if(typeof window.intlTelInput == "undefined"){ $('head').append('<link rel="stylesheet" type="text/css" href="/libs.iraiser.eu/libs/intl-tel-input-15.0.1/build/css/intlTelInput.min.css" />'); $.getScript('/libs.iraiser.eu/libs/intl-tel-input-15.0.1/build/js/intlTelInput.min.js',load_phone_input_reserved_phone_number_id_6741f8bad8488); }else{ load_phone_input_reserved_phone_number_id_6741f8bad8488(); } }); </script> <p name="reserved_optin_newsletter" id="reserved_optin_newsletter_id_6741f8bad84f4" data-type="checkbox" > <label for="reserved_optin_newsletter"> <input type="hidden" name="reserved_optin_newsletter" value="0" /> <input id="reserved_optin_newsletter" type="checkbox" aria-describedby="nameHelp_reserved_optin_newsletter" name="reserved_optin_newsletter" data-scope="step2" data-required="" value="1" /> <span class="reserved_title"> I wish to receive the newsletter</span> <span id="nameHelp_reserved_optin_newsletter" class="help"></span> </label> </p> <p id="required-info"><span class="required">*</span> <span class="help">Required Fields (this information is mandatory to issue your tax receipt)</span></p> </fieldset> </div> <!-- End Bloc --> <div class="step-info"> <h4>YOUR PRIVACY</h4> <div class="step-info-body"> <p>We use the details above in order to send you your tax receipt. Under the Data Protection Act of 6 January 1978, you have the right to access, change, amend and delete data concerning you. Please contact the address below:<br /> <br /> <strong>Donor relations office</strong><br /> <strong>Reporters Without Borders</strong><br /> CS 90247<br /> 75083 Paris Cedex 02 - France.<br /> Tél : 01 44 83 84 84<br /> Fax : 01 45 23 11 51<br /> www.rsf.org<br /> Email: don@rsf.org<br /> <br /> <span style="font-size:20px;"><strong>DONATE WITH THE UTMOST CONFIDENCE</strong></span><br /> <br /> This website is <strong>100% safe</strong>.<br /> No credit card information used to process the payment is stored on our systems, and your transaction is secured through SSL data encryption. If you are concerned, make sure that the URL at the top of the web page starts with '<strong>https</strong>'.<br /> Our staff are happy to answer any of your questions - just email don@rsf.org.</p> </div> </div> <!-- End Step-info --> </div> <!-- End Step-container --> </div> <!-- End Step-2 --> <div id="step-3" class="unit size1of3 lastUnit"> <div class="step-container"> <div class="step-title"> <h2>My payment</h2> </div> <div class="step-content"> <div id="security-info"> <p><img src="/medias/app/img-secure-payment_en.svg" alt="Highly secure payments using 256-bit SSL encryption method, the highest security standard." /></p> </div> <div class="payment"> <div id="payment_modes_once"> <input type="hidden" name="paymentNonce" id="paymentNonce" value="" autocomplete="off"/> <input type="hidden" name="stripeErrorCode" id="stripeErrorCode" value="" autocomplete="off"/> <input type="hidden" name="stripeError" id="stripeError" value="" autocomplete="off"/> <fieldset id="payment_mode-card" class="payment_mode"> <h4 class="payment_head"> <span class="payment_mode_title">Pay by credit card</span> </h4> <div class="payment_body" id="creditcard"> <p id="card-number"> <label for="stripe_creditcard_cardNumber_placeholder_once">Please enter your card number</label> <input type="text" id="stripe_creditcard_cardNumber_placeholder_once" autocomplete="off"/> </p> <div class="line"> <p id="card-expiry" class="unit size1of2"> <label for="stripe_creditcard_cardExpiry_placeholder_once">Expiry date</label> <input type="text" id="stripe_creditcard_cardExpiry_placeholder_once" autocomplete="off"/> </p> <p id="card-scode" class="unit size2of2 lastUnit"> <label for="stripe_creditcard_cardCvc_placeholder_once">Security Code</label> <input type="text" id="stripe_creditcard_cardCvc_placeholder_once" autocomplete="off"/> <span class="help">The 3 digit security code is located on the back of your card</span> <span class="help amex" style="display: none;">The security code consists of 4 digits written towards the top right on the front of your card</span> </p> </div> <script type="text/javascript"> if (!window.stripeJsLoaded) { window.stripeJsLoaded = new Promise((resolve, reject) => { const s = document.createElement('script'); s.src = 'https://js.stripe.com/v3/'; s.type = 'text/javascript'; s.onerror = reject; s.onload = resolve; document.head.appendChild(s); }); } </script> <input type="hidden" name="stripe_creditcard_paymentMethod" id="stripe_creditcard_paymentMethod_once" data-scope="stripe" data-required = "1" data-ira-check="window.stripe_creditcard.checkPaymentMethod('once')"/> <script> var stripeElementGetFrequency = () => Step1.current_donation.frequency; if (!window.stripe_creditcard) { const VAL_ERROR = 'error'; const VAL_NOT_SET = 'N/A'; const defaultCoords = {}; defaultCoords["firstname"] = null; defaultCoords["lastname"] = null; defaultCoords["email"] = null; const defaultPaymentMethodErrorMessage = "Your bank details are incorrect. Please verify and enter again."; const lang = "en_EN"; const cardCvcPlaceholder = "Use the value provided by Stripe"; const stripePublicApiKey = "pk_live_srqYyZqem3SpTx2GjUycaPjN"; const stripeApiVersion = "2020-08-27"; const coordNames = Object.keys(defaultCoords); const elementConf = { 'cardNumber': { defaultErrorMessage: DntErrors.errorMsg.cardnumber, options: {showIcon: true}, }, 'cardExpiry': { defaultErrorMessage: DntErrors.errorMsg.cardmonth, }, 'cardCvc': { defaultErrorMessage: DntErrors.errorMsg.cardscode, }, }; // only add a CVC placeholder for languages which have a short CVC provided if (cardCvcPlaceholder != 'Use the value provided by Stripe') { elementConf.cardCvc.options = {placeholder: cardCvcPlaceholder}; } const elementTypes = Object.keys(elementConf); window.stripe_creditcard = { complete: {}, elements: {}, error: {}, frequencies: {}, lastInitFrequency: '', stripe: false, checkElement: function(frequency, elementType) { this.log('checkElement', [frequency, elementType]); if (frequency !== this.lastInitFrequency) return false; const complete = this.complete[frequency][elementType]; const error = this.error[frequency][elementType]; const placeholder = $('#' + this.getPlaceholderId(frequency, elementType)); if (!complete || error) { placeholder.attr('data-ira-errormsg', error && error.message ? error.message : elementConf[elementType].defaultErrorMessage ); return false; } else { placeholder.removeAttr('data-ira-errormsg'); return true; } }, checkPaymentMethod: function(frequency) { this.log('checkPaymentMethod', [frequency]); if (frequency !== this.lastInitFrequency) return false; const paymentMethodInput = this.getPaymentMethodInput(frequency); if (paymentMethodInput.val() === VAL_ERROR) { paymentMethodInput.attr('data-ira-errormsg', this.error[frequency].paymentMethod || defaultPaymentMethodErrorMessage); return false; } else { paymentMethodInput.removeAttr('data-ira-errormsg'); return true; } }, createPaymentMethod: function (frequency) { if (frequency !== this.lastInitFrequency) return; this.log('createPaymentMethod', [frequency]); const paymentMethodInput = this.resetPaymentMethod(frequency); for (let elementType of elementTypes) { if (!this.complete[frequency][elementType]) return; } const coords = {}; for (let coordName of coordNames) { const coordInput = $('input[name="' + coordName + '"]'); coords[coordName] = coordInput.length ? coordInput.val() : defaultCoords[coordName]; if (!coords[coordName]) return; } // All other inputs we rely on are ok and won't trigger any error message display, // so until createPaymentMethod succeds, we must ensure paymentMethodInput does paymentMethodInput.val(VAL_ERROR); // Prevent form submission before createPaymentMethod answers $('#stripe_submit.' + frequency).prop('disabled', true); setTimeout(() => { try { this.stripe.createPaymentMethod({ type: 'card', card: this.elements[frequency].cardNumber, billing_details: { name: coords.firstname + ' ' + coords.lastname, email: coords.email, } }).then(result => { $('#stripe_submit.' + frequency).prop('disabled', false); console.log(result); if (result.paymentMethod && result.paymentMethod.id) { paymentMethodInput.val(result.paymentMethod.id); console.log('paymentMethod = ' + paymentMethodInput.val()); } else { this.error[frequency].paymentMethod = result.error.message; for (let prop of ['type', 'code', 'decline_code', 'message']) { window.onerror('createPaymentMethod error.' + prop + ' = ' + result.error[prop]); } } }); } catch (e) { console.log(e); $('#stripe_submit.' + frequency).prop('disabled', false); } }, 500); }, getContainerId: function(frequency, elementType) { return 'stripe_creditcard_' + elementType + '_container_' + frequency; }, getPaymentMethodInput: function(frequency) { return $('#stripe_creditcard_paymentMethod_' + frequency); }, getPlaceholderId: function(frequency, elementType) { return 'stripe_creditcard_' + elementType + '_placeholder_' + frequency; }, /** * Build an array of Stripe JS CssFontSource objects * from the fonts used by the specified elements. * * See https://stripe.com/docs/js/appendix/css_font_source_object * * Warning: works only for fonts loaded from a google-style stylesheet URL * with a family=xxx parameter (where xxx is the font-family) */ getStripeJsCssFontSources: function(ids) { try { const used = {}; for (let id of ids) { const computedStyle = window.getComputedStyle(document.getElementById(id)); const fontFamily = computedStyle.getPropertyValue('font-family'); used[fontFamily] = true; } const hrefs = []; for (let s of document.styleSheets) { if (!s.href) continue; const params = new URLSearchParams(new URL(s.href).search); const fontFamily = params.get('family'); if (used[fontFamily] && (hrefs.indexOf(s.href) === -1)) { hrefs.push(s.href); } } return hrefs.map(href => ({cssSrc: href})); } catch (error) { /** * Stripe Element implementation has javascript incompatibility with Opera browser. * We work around this problem by catching exceptions in getStripeJsCssFontSources and returning an empty list. * This fix will have an impact on the design of Stripe Elements, but it will not block the creation of donations. */ return []; } }, /** * Get the locale as expected by Stripe JS * * See https://stripe.com/docs/js/appendix/supported_locales */ getStripeJsLocale: function () { switch(lang) { case 'en_EN': return 'en-GB'; case 'se_SE': return 'sv'; case 'zh_TW': return lang.substring(0, 2) + '-' + lang.substring(3, 5); default: return lang.substring(0, 2); } }, /** * Build a Stripe JS Style object from the specified element's computed style * and copy all other styles to the provided container. * * See https://stripe.com/docs/js/appendix/style */ getStripeJsStyle: function(id, container) { const styleKeyMap = { // Stripe JS recommands setting background-color on the container //'background-color': 'backgroundColor', 'color': 'color', 'font-family': 'fontFamily', 'font-size': 'fontSize', 'font-smoothing': 'fontSmoothing', 'font-style': 'fontStyle', 'font-variant': 'fontVariant', 'font-weight': 'fontWeight', // Stripe JS doesn't like line-height and doesn't even take it into account //'line-height': 'lineHeight', 'letter-spacing': 'letterSpacing', 'text-align': 'textAlign', 'text-decoration': 'textDecoration', 'text-shadow': 'textShadow', 'text-transform': 'textTransform', }; const baseStyle = {}; const computedStyle = window.getComputedStyle(document.getElementById(id)); for (let cssProp of computedStyle) { const styleKey = styleKeyMap[cssProp]; const cssValue = computedStyle.getPropertyValue(cssProp); if (styleKey) { baseStyle[styleKey] = cssValue; } else { container.css(cssProp, cssValue); } } return {base: baseStyle}; }, init: function (reason) { const frequency = stripeElementGetFrequency(); if (!this.frequencies[frequency]) return; this.log('init', [frequency, reason]); // Stripe elements are reset at every init so we need to reset as well this.complete[frequency] = {}; this.error[frequency] = {}; this.resetPaymentMethod(frequency); this.lastInitFrequency = frequency; this.mount(frequency); }, isMounted: function(frequency) { return !!this.elements[frequency]; }, log: function (method, params = []) { console.log('stripe_creditcard.' + method + '(' + params.join(', ') + ')'); }, mount: function (frequency) { const wasAlreadyMounted = this.unmount(frequency); this.log('mount', [frequency]); if (!this.stripe) { this.stripe = Stripe(stripePublicApiKey, { locale: this.getStripeJsLocale(), apiVersion: stripeApiVersion }); } const stripeElements = this.stripe.elements({ fonts: this.getStripeJsCssFontSources( elementTypes.map(elementType => this.getPlaceholderId(frequency, elementType)) ), }); this.elements[frequency] = {}; for (let elementType of elementTypes) { const placeholderId = this.getPlaceholderId(frequency, elementType); const containerId = this.getContainerId(frequency, elementType); const container = $('<span/>').attr('id', containerId); const element = stripeElements.create(elementType, Object.assign( {style: this.getStripeJsStyle(placeholderId, container)}, elementConf[elementType].options )); this.elements[frequency][elementType] = element; $('#' + placeholderId) .attr('data-scope', 'stripe') .attr('data-required', '1') .attr('data-ira-check', "window.stripe_creditcard.checkElement('" + frequency + "', '" + elementType + "')") .val(VAL_NOT_SET) .hide() .after(container); element.mount('#' + containerId); // Stripe creates an intermediate div between the container and its iframe // Let's force this div's contents to be vertically centered inside the container $('#' + containerId + ' div').css({ display: 'flex', height: '100%', 'align-items': 'center', }); element.on('change', ev => this.onElementChanged(frequency, ev)); } if (!wasAlreadyMounted) { for (let coordName of coordNames) { $('input[name="' + coordName + '"]').on('change', () => this.createPaymentMethod(frequency)); } // Force a re-init if the payment mode was previously hidden // as Stripe does not mount well hidden fields const cvcPlaceholderId = this.getPlaceholderId(frequency, 'cardCvc'); $('#payment_mode-card:has(#' + cvcPlaceholderId + ')').on('payment_shown', () => this.init('payment_shown')); } }, unmount: function (frequency) { if (!this.isMounted(frequency)) return false; this.log('unmount', [frequency]); for (let elementType of elementTypes) { this.elements[frequency][elementType].destroy(); $('#' + this.getContainerId(frequency, elementType)).remove(); $('#' + this.getPlaceholderId(frequency, elementType)).show(); } return true; }, onElementChanged: function (frequency, ev) { this.log('onElementChanged', [ frequency, ev.elementType, ev.complete ? 'complete' : 'not complete', ev.error ? ev.error.message : 'no error', ]); this.complete[frequency][ev.elementType] = ev.complete; this.error[frequency][ev.elementType] = ev.error; this.createPaymentMethod(frequency); }, resetPaymentMethod: function (frequency) { const paymentMethodInput = this.getPaymentMethodInput(frequency); paymentMethodInput.val(VAL_NOT_SET); this.error[frequency].paymentMethod = false; return paymentMethodInput; }, }; window.stripeJsLoaded.then(() => { // Force a reinit when the donation amount or the style change for (let event of ['init_done', 'WebFont.fontactive']) { $('body').on(event, () => window.stripe_creditcard.init(event)); } }); } if (!window.stripe_creditcard.frequencies["once"]) { window.stripe_creditcard.frequencies["once"] = true; window.stripeJsLoaded.then(() => { // Ensure the 1st init is done only once, for the active frequency if (stripeElementGetFrequency() === "once") { window.stripe_creditcard.init("stripeJsLoaded"); } }); } </script> <p id="card-submit" class="payment-submit"> <input name="stripe_submit" type="submit" value="Validate" id="stripe_submit" class="button once" data-scope='stripe'/> </p> </div> </fieldset> <fieldset id="payment_mode-paypal" class="payment_mode " > <h4 class="payment_head"><span class="payment_mode_title">Paypal</span></h4> <div class="payment_body" id="paypal"> <p id="paypal-submit" class="payment-submit"> <input name="paypal_submit" type="submit" value="Validate" alt="Paypal" id="paypal_submit" class="button" data-scope='paypal' /> </p> </div> </fieldset> <fieldset id="payment_mode-fintecture_banktransfer" class="payment_mode" data-scope='fintecture_banktransfer'> <h4 class="payment_head"><span class="payment_mode_title">Payment by bank transfer</span></h4> <div class="payment_body" id="fintecture_banktransfer_body"> <p id="fintecture_banktransfer_provider" data-ira-errormsg="You must select your bank"> <label> <select name="fintecture_banktransfer_provider" id="fintecture_banktransfer_provider_select" data-scope='fintecture_banktransfer' data-required="1"> <option value="">Select your bank</option> <option value="agfbfr" data-logo="https://assets.fintecture.com/img/providers/svg/agfbfr.svg"> Allianz Banque </option> </optgroup> <optgroup label="Arkéa"> <option value="fegefr" data-logo="https://assets.fintecture.com/img/providers/svg/arkea-x.svg"> Arkéa Banque Privée </option> </optgroup> <option value="axabfr" data-logo="https://assets.fintecture.com/img/providers/svg/axabfr.svg"> AXA Banque </option> <option value="bpsmfr" data-logo="https://assets.fintecture.com/img/providers/svg/bpsmfr.svg"> Banque BCP </option> <option value="bchafr" data-logo="https://assets.fintecture.com/img/providers/svg/bchafr.svg"> Banque Chalus </option> <option value="bsavfr2c" data-logo="https://assets.fintecture.com/img/providers/svg/bsavfr2c.svg"> Banque de Savoie </option> <option value="cdcgfr" data-logo="https://assets.fintecture.com/img/providers/svg/cdcgfr.svg"> Banque des territoires </option> <option value="bspffr" data-logo="https://assets.fintecture.com/img/providers/svg/bspffr.svg"> Banque Palatine </option> </optgroup> <optgroup label="Banque Populaire"> <option value="ccbpfrppmtz" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Alsace Lorraine Champagne </option> <option value="ccbpfrppbdx" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Aquitaine Centre Atlantique </option> <option value="ccbpfrppgre" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Auvergne et Rhône-Alpes </option> <option value="ccbpfrppdjn" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Bourgogne Franche Comté </option> <option value="ccbpfrppna1" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Grand Ouest </option> <option value="ccbpfrppnce" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Méditerranée </option> <option value="ccbpfrpplil" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Nord </option> <option value="ccbpfrpptls" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Occitane </option> <option value="ccbpfrppmtg" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Rives de Paris </option> <option value="ccbpfrppppg" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Sud </option> <option value="ccbpfrppver" data-logo="https://assets.fintecture.com/img/providers/svg/ccbpfr.svg"> Banque Populaire Val de France </option> </optgroup> <option value="cmcifrp1" data-logo="https://assets.fintecture.com/img/providers/svg/cmcifrp1.svg"> Banque Transatlantique </option> </optgroup> <optgroup label="BNP Paribas"> <option value="bnpafr" data-logo="https://assets.fintecture.com/img/providers/svg/bnpafr-x.svg"> BNP Paribas Ma Banque </option> <option value="bnpafr-c" data-logo="https://assets.fintecture.com/img/providers/svg/bnpafr-x.svg"> BNP Paribas Ma Banque Entreprise </option> <option value="bnpafr-p" data-logo="https://assets.fintecture.com/img/providers/svg/bnpafr-x.svg"> BNP Paribas Ma Banque Pro </option> </optgroup> <option value="bousfr" data-logo="https://assets.fintecture.com/img/providers/svg/bousfr.svg"> BoursoBank </option> <option value="bredfr" data-logo="https://assets.fintecture.com/img/providers/svg/bredfr.svg"> BRED </option> <option value="batifr" data-logo="https://assets.fintecture.com/img/providers/svg/batifr.svg"> BTP Banque </option> </optgroup> <optgroup label="Caisse d'Epargne"> <option value="cepafrpp333" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Aquitaine Poitou-Charentes </option> <option value="cepafrpp871" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Auvergne et Limousin </option> <option value="cepafrpp213" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Bourgogne Franche-Comté </option> <option value="cepafrpp444" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Bretagne-Pays De Loire </option> <option value="cepafrpp831" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Côte d'Azur </option> <option value="cepafrpp513" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Grand Est Europe </option> <option value="cepafrpp627" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Hauts de France </option> <option value="cepafrpp751" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Ile De France </option> <option value="cepafrpp348" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Languedoc-Roussillon </option> <option value="cepafrpp426" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Loire Drôme Ardèche </option> <option value="cepafrpp450" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Loire-Centre </option> <option value="cepafrpp313" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Midi-Pyrénées </option> <option value="cepafrpp142" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Normandie </option> <option value="cepafrpp131" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Provence Alpes Corse </option> <option value="cepafrpp382" data-logo="https://assets.fintecture.com/img/providers/svg/cepafr.svg"> Caisse d'Epargne Rhône Alpes </option> </optgroup> <option value="cmcifrpp" data-logo="https://assets.fintecture.com/img/providers/svg/cmcifrpp.svg"> CIC </option> <option value="cmcifrpr" data-logo="https://assets.fintecture.com/img/providers/svg/cmcifrpr.svg"> CIC Privée </option> <option value="crtafr" data-logo="https://assets.fintecture.com/img/providers/svg/crtafr.svg"> Creatis </option> </optgroup> <optgroup label="Crédit Agricole"> <option value="agrifrpp813" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Alpes Provence </option> <option value="agrifrpp872" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Alsace Vosges </option> <option value="agrifrpp879" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Anjou Maine </option> <option value="agrifrpp833" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Aquitaine </option> <option value="agrifrpp847" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Atlantique Vendée </option> <option value="agrifrpp887" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Brie Picardie </option> <option value="agrifrpp878" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Centre Est </option> <option value="agrifrpp868" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Centre France </option> <option value="agrifrpp848" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Centre Loire </option> <option value="agrifrpp895" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Centre Ouest </option> <option value="agrifrpp810" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Champagne Bourgogne </option> <option value="agrifrpp817" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Charente Maritime Deux Sèvres </option> <option value="agrifrpp824" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Charente Périgord </option> <option value="agrifrpp820" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Corse </option> <option value="agrifrpp822" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Côtes-d'Armor </option> <option value="agrifrpp829" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Finistère </option> <option value="agrifrpp825" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Franche-Comté </option> <option value="agrigp" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Guadeloupe </option> <option value="agrifrpp836" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Ille et Vilaine </option> <option value="agrifrpp835" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Languedoc </option> <option value="agrifrpp845" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Loire Haute-Loire </option> <option value="agrifrpp861" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Lorraine </option> <option value="agrimq" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Martinique </option> <option value="agrifrcc860" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Morbihan </option> <option value="agrifrpp867" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Nord de France </option> <option value="agrifrpp802" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Nord Est </option> <option value="agrifrpp812" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Nord Midi-Pyrénées </option> <option value="agrifrpp866" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Normandie </option> <option value="agrifrpp883" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Normandie Seine </option> <option value="agrifrpp882" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Paris </option> <option value="agrifrpp891" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Provence Côte d'Azur </option> <option value="agrifrcc869" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Pyrénées Gascogne </option> <option value="agrire" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Reunion </option> <option value="agrifrpp881" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Savoie </option> <option value="agrifrpp871" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Sud Méditerranée </option> <option value="agrifrpp839" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Sud Rhône Alpes </option> <option value="agrifrpp831" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Toulouse 31 </option> <option value="agrifrpp894" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Touraine Poitou </option> <option value="agrifrpp844" data-logo="https://assets.fintecture.com/img/providers/svg/agrifr.svg"> Crédit Agricole Val de France </option> </optgroup> <option value="ccfrfr-r" data-logo="https://assets.fintecture.com/img/providers/svg/ccfrfr-r.svg"> Crédit Commercial de France CCF </option> <option value="ccopfr" data-logo="https://assets.fintecture.com/img/providers/svg/ccopfr.svg"> Crédit Coopératif </option> </optgroup> <optgroup label="Crédit Maritime"> <option value="ccbpfrppna2" data-logo="https://assets.fintecture.com/img/providers/svg/cmmufr.svg"> Crédit Maritime Grand Ouest </option> <option value="ccbpfrpp169" data-logo="https://assets.fintecture.com/img/providers/svg/cmmufr.svg"> Crédit Maritime Littoral du Sud Ouest </option> </optgroup> <option value="cmcifr2a" data-logo="https://assets.fintecture.com/img/providers/svg/cmcifr2a.svg"> Crédit Mutuel </option> <option value="cmcifrpa" data-logo="https://assets.fintecture.com/img/providers/svg/cmcifrpa.svg"> Crédit Mutuel Banque Européenne </option> <option value="cmbrfr" data-logo="https://assets.fintecture.com/img/providers/svg/cmbrfr.svg"> Crédit Mutuel de Bretagne </option> <option value="cmsofr" data-logo="https://assets.fintecture.com/img/providers/svg/cmsofr.svg"> Crédit Mutuel du Sud Ouest </option> <option value="ftnofr" data-logo="https://assets.fintecture.com/img/providers/svg/ftnofr.svg"> Fortuneo </option> <option value="bnpafrhb" data-logo="https://assets.fintecture.com/img/providers/svg/bnpafrhb.svg"> Hello Bank! </option> </optgroup> <optgroup label="La Banque Postale"> <option value="psstfr" data-logo="https://assets.fintecture.com/img/providers/svg/psstfr-x.svg"> La Banque Postale Particulier </option> <option value="psstfr-p" data-logo="https://assets.fintecture.com/img/providers/svg/psstfr-x.svg"> La Banque Postale Professionnel </option> </optgroup> <optgroup label="Le Crédit Lyonnais LCL"> <option value="crlyfr" data-logo="https://assets.fintecture.com/img/providers/svg/crlyfr-x.svg"> Le Crédit Lyonnais LCL Particulier </option> <option value="crlyfr-p1" data-logo="https://assets.fintecture.com/img/providers/svg/crlyfr-x.svg"> Le Crédit Lyonnais LCL Professionnel </option> </optgroup> <option value="preufr" data-logo="https://assets.fintecture.com/img/providers/svg/preufr.svg"> Louvre Banque Privée </option> <option value="monnfr" data-logo="https://assets.fintecture.com/img/providers/svg/monnfr.svg"> Mona Banq </option> <option value="qntofr" data-logo="https://assets.fintecture.com/img/providers/svg/qntofr.svg"> Qonto </option> <option value="revogb" data-logo="https://assets.fintecture.com/img/providers/svg/revogb.svg"> Revolut </option> <option value="snnnfr" data-logo="https://assets.fintecture.com/img/providers/svg/snnnfr.svg"> Shine </option> </optgroup> <optgroup label="Société Générale"> <option value="sogefr-c" data-logo="https://assets.fintecture.com/img/providers/svg/sogefr-x.svg"> Société Générale Entreprise </option> <option value="sogefr" data-logo="https://assets.fintecture.com/img/providers/svg/sogefr-x.svg"> Société Générale Particulier </option> <option value="sogefr-p" data-logo="https://assets.fintecture.com/img/providers/svg/sogefr-x.svg"> Société Générale Professionnel </option> </optgroup> <option value="trwigb" data-logo="https://assets.fintecture.com/img/providers/svg/trwigb.svg"> Wise </option> </select> </label> </p> <div class="help">Simple and quick: <ol><li>select your bank,</li> <li>enter your online banking credentials </li><li>and confirm</li></ol></div> <div id="fintecture_banktransfer-submit" class="payment-submit"> <input name="fintecture_banktransfer_submit" type="submit" value="Validate" alt="Bank transfer" id="fintecture_banktransfer_submit" class="button once" data-scope='fintecture_banktransfer' /> </div> </div> </fieldset> <fieldset id="payment_mode-apple_pay-once" class="payment_mode" data-scope='stripe_apple_pay'> <h4 class="payment_head"><span class="payment_mode_title">Apple Pay</span></h4> <div class="payment_body" id="apple_pay"> <div id="apple_pay-submit" class="payment-submit"> <input name="stripe_apple_pay_submit" type="submit" value="Validate" alt="Apple Pay" id="stripe_apple_pay_submit" class="button once" data-scope='stripe_apple_pay' style="display:none;" disabled/> </div> <input type="hidden" name="stripe_apple_pay_paymentMethod" id="stripe_apple_pay_paymentMethod" class="once" value=""/> </div> </fieldset> <script> Stripe_obj.buttons.Step3 = true; $('#stripe_apple_pay_submit.once').click(function(event){ // Submit the form if called after receiving the paymentMethod if ( (Stripe_obj.buttons.Step2 || Stripe_obj.buttons.Step3) && $('#stripe_apple_pay_paymentMethod.once').val() ) { console.log('stripe_apple_pay_submit -- submitting form'); return true; } else if (Stripe_obj.buttons.Step3) { // Or show the Apple/Google/Microsoft popup if called in step 3 and the form is valid if (Step1.check() && Step2.check() && Step3.check()) { console.log('paymentRequest.show() -- stripePay'); Stripe_obj.paymentRequest.show(); return false; } else { DntErrors.displayErrors(); } } // Or stay on the form setTimeout(() => $('.ira-processing').removeClass('ira-processing'), 500); return false; }); </script> <style> #stripe_apple_pay_submit.apple_pay_styled_button { -webkit-appearance: -apple-pay-button !important; -apple-pay-button-type: donate; color: transparent !important; } </style> <fieldset id="payment_mode-bancontact" class="payment_mode"> <h4 class="payment_head"><span class="payment_mode_title">Bancontact</span></h4> <div class="payment_body" id="bancontact"> <p id="bancontact-submit" class="payment-submit"> <input name="stripe_bancontact_submit" type="submit" value="Validate" alt="Bancontact" id="stripe_bancontact_submit" class="button" data-scope='stripe_bancontact' /> </p> </div> </fieldset> <fieldset id="payment_mode-check" class="payment_mode"> <h4 class="payment_head"> <span class="payment_mode_title">Pay by check</span> </h4> <div class="payment_body" id="check"> <p id="check-submit" class="payment-submit"> <input name="check_submit" type="submit" value="Validate" id="check_submit" class="button" data-scope='check' /> </p> </div> </fieldset> </div> <div id="payment_modes_regular" style="display:none"> <input type="hidden" name="paymentNonce" id="paymentNonce" value="" autocomplete="off"/> <input type="hidden" name="stripeErrorCode" id="stripeErrorCode" value="" autocomplete="off"/> <input type="hidden" name="stripeError" id="stripeError" value="" autocomplete="off"/> <fieldset id="payment_mode-card" class="payment_mode"> <h4 class="payment_head"> <span class="payment_mode_title">Pay by credit card</span> </h4> <div class="payment_body" id="creditcard"> <p id="card-number"> <label for="stripe_creditcard_cardNumber_placeholder_regular">Please enter your card number</label> <input type="text" id="stripe_creditcard_cardNumber_placeholder_regular" autocomplete="off"/> </p> <div class="line"> <p id="card-expiry" class="unit size1of2"> <label for="stripe_creditcard_cardExpiry_placeholder_regular">Expiry date</label> <input type="text" id="stripe_creditcard_cardExpiry_placeholder_regular" autocomplete="off"/> </p> <p id="card-scode" class="unit size2of2 lastUnit"> <label for="stripe_creditcard_cardCvc_placeholder_regular">Security Code</label> <input type="text" id="stripe_creditcard_cardCvc_placeholder_regular" autocomplete="off"/> <span class="help">The 3 digit security code is located on the back of your card</span> <span class="help amex" style="display: none;">The security code consists of 4 digits written towards the top right on the front of your card</span> </p> </div> <script type="text/javascript"> if (!window.stripeJsLoaded) { window.stripeJsLoaded = new Promise((resolve, reject) => { const s = document.createElement('script'); s.src = 'https://js.stripe.com/v3/'; s.type = 'text/javascript'; s.onerror = reject; s.onload = resolve; document.head.appendChild(s); }); } </script> <input type="hidden" name="stripe_creditcard_paymentMethod" id="stripe_creditcard_paymentMethod_regular" data-scope="stripe" data-required = "1" data-ira-check="window.stripe_creditcard.checkPaymentMethod('regular')"/> <script> var stripeElementGetFrequency = () => Step1.current_donation.frequency; if (!window.stripe_creditcard) { const VAL_ERROR = 'error'; const VAL_NOT_SET = 'N/A'; const defaultCoords = {}; defaultCoords["firstname"] = null; defaultCoords["lastname"] = null; defaultCoords["email"] = null; const defaultPaymentMethodErrorMessage = "Your bank details are incorrect. Please verify and enter again."; const lang = "en_EN"; const cardCvcPlaceholder = "Use the value provided by Stripe"; const stripePublicApiKey = "pk_live_srqYyZqem3SpTx2GjUycaPjN"; const stripeApiVersion = "2020-08-27"; const coordNames = Object.keys(defaultCoords); const elementConf = { 'cardNumber': { defaultErrorMessage: DntErrors.errorMsg.cardnumber, options: {showIcon: true}, }, 'cardExpiry': { defaultErrorMessage: DntErrors.errorMsg.cardmonth, }, 'cardCvc': { defaultErrorMessage: DntErrors.errorMsg.cardscode, }, }; // only add a CVC placeholder for languages which have a short CVC provided if (cardCvcPlaceholder != 'Use the value provided by Stripe') { elementConf.cardCvc.options = {placeholder: cardCvcPlaceholder}; } const elementTypes = Object.keys(elementConf); window.stripe_creditcard = { complete: {}, elements: {}, error: {}, frequencies: {}, lastInitFrequency: '', stripe: false, checkElement: function(frequency, elementType) { this.log('checkElement', [frequency, elementType]); if (frequency !== this.lastInitFrequency) return false; const complete = this.complete[frequency][elementType]; const error = this.error[frequency][elementType]; const placeholder = $('#' + this.getPlaceholderId(frequency, elementType)); if (!complete || error) { placeholder.attr('data-ira-errormsg', error && error.message ? error.message : elementConf[elementType].defaultErrorMessage ); return false; } else { placeholder.removeAttr('data-ira-errormsg'); return true; } }, checkPaymentMethod: function(frequency) { this.log('checkPaymentMethod', [frequency]); if (frequency !== this.lastInitFrequency) return false; const paymentMethodInput = this.getPaymentMethodInput(frequency); if (paymentMethodInput.val() === VAL_ERROR) { paymentMethodInput.attr('data-ira-errormsg', this.error[frequency].paymentMethod || defaultPaymentMethodErrorMessage); return false; } else { paymentMethodInput.removeAttr('data-ira-errormsg'); return true; } }, createPaymentMethod: function (frequency) { if (frequency !== this.lastInitFrequency) return; this.log('createPaymentMethod', [frequency]); const paymentMethodInput = this.resetPaymentMethod(frequency); for (let elementType of elementTypes) { if (!this.complete[frequency][elementType]) return; } const coords = {}; for (let coordName of coordNames) { const coordInput = $('input[name="' + coordName + '"]'); coords[coordName] = coordInput.length ? coordInput.val() : defaultCoords[coordName]; if (!coords[coordName]) return; } // All other inputs we rely on are ok and won't trigger any error message display, // so until createPaymentMethod succeds, we must ensure paymentMethodInput does paymentMethodInput.val(VAL_ERROR); // Prevent form submission before createPaymentMethod answers $('#stripe_submit.' + frequency).prop('disabled', true); setTimeout(() => { try { this.stripe.createPaymentMethod({ type: 'card', card: this.elements[frequency].cardNumber, billing_details: { name: coords.firstname + ' ' + coords.lastname, email: coords.email, } }).then(result => { $('#stripe_submit.' + frequency).prop('disabled', false); console.log(result); if (result.paymentMethod && result.paymentMethod.id) { paymentMethodInput.val(result.paymentMethod.id); console.log('paymentMethod = ' + paymentMethodInput.val()); } else { this.error[frequency].paymentMethod = result.error.message; for (let prop of ['type', 'code', 'decline_code', 'message']) { window.onerror('createPaymentMethod error.' + prop + ' = ' + result.error[prop]); } } }); } catch (e) { console.log(e); $('#stripe_submit.' + frequency).prop('disabled', false); } }, 500); }, getContainerId: function(frequency, elementType) { return 'stripe_creditcard_' + elementType + '_container_' + frequency; }, getPaymentMethodInput: function(frequency) { return $('#stripe_creditcard_paymentMethod_' + frequency); }, getPlaceholderId: function(frequency, elementType) { return 'stripe_creditcard_' + elementType + '_placeholder_' + frequency; }, /** * Build an array of Stripe JS CssFontSource objects * from the fonts used by the specified elements. * * See https://stripe.com/docs/js/appendix/css_font_source_object * * Warning: works only for fonts loaded from a google-style stylesheet URL * with a family=xxx parameter (where xxx is the font-family) */ getStripeJsCssFontSources: function(ids) { try { const used = {}; for (let id of ids) { const computedStyle = window.getComputedStyle(document.getElementById(id)); const fontFamily = computedStyle.getPropertyValue('font-family'); used[fontFamily] = true; } const hrefs = []; for (let s of document.styleSheets) { if (!s.href) continue; const params = new URLSearchParams(new URL(s.href).search); const fontFamily = params.get('family'); if (used[fontFamily] && (hrefs.indexOf(s.href) === -1)) { hrefs.push(s.href); } } return hrefs.map(href => ({cssSrc: href})); } catch (error) { /** * Stripe Element implementation has javascript incompatibility with Opera browser. * We work around this problem by catching exceptions in getStripeJsCssFontSources and returning an empty list. * This fix will have an impact on the design of Stripe Elements, but it will not block the creation of donations. */ return []; } }, /** * Get the locale as expected by Stripe JS * * See https://stripe.com/docs/js/appendix/supported_locales */ getStripeJsLocale: function () { switch(lang) { case 'en_EN': return 'en-GB'; case 'se_SE': return 'sv'; case 'zh_TW': return lang.substring(0, 2) + '-' + lang.substring(3, 5); default: return lang.substring(0, 2); } }, /** * Build a Stripe JS Style object from the specified element's computed style * and copy all other styles to the provided container. * * See https://stripe.com/docs/js/appendix/style */ getStripeJsStyle: function(id, container) { const styleKeyMap = { // Stripe JS recommands setting background-color on the container //'background-color': 'backgroundColor', 'color': 'color', 'font-family': 'fontFamily', 'font-size': 'fontSize', 'font-smoothing': 'fontSmoothing', 'font-style': 'fontStyle', 'font-variant': 'fontVariant', 'font-weight': 'fontWeight', // Stripe JS doesn't like line-height and doesn't even take it into account //'line-height': 'lineHeight', 'letter-spacing': 'letterSpacing', 'text-align': 'textAlign', 'text-decoration': 'textDecoration', 'text-shadow': 'textShadow', 'text-transform': 'textTransform', }; const baseStyle = {}; const computedStyle = window.getComputedStyle(document.getElementById(id)); for (let cssProp of computedStyle) { const styleKey = styleKeyMap[cssProp]; const cssValue = computedStyle.getPropertyValue(cssProp); if (styleKey) { baseStyle[styleKey] = cssValue; } else { container.css(cssProp, cssValue); } } return {base: baseStyle}; }, init: function (reason) { const frequency = stripeElementGetFrequency(); if (!this.frequencies[frequency]) return; this.log('init', [frequency, reason]); // Stripe elements are reset at every init so we need to reset as well this.complete[frequency] = {}; this.error[frequency] = {}; this.resetPaymentMethod(frequency); this.lastInitFrequency = frequency; this.mount(frequency); }, isMounted: function(frequency) { return !!this.elements[frequency]; }, log: function (method, params = []) { console.log('stripe_creditcard.' + method + '(' + params.join(', ') + ')'); }, mount: function (frequency) { const wasAlreadyMounted = this.unmount(frequency); this.log('mount', [frequency]); if (!this.stripe) { this.stripe = Stripe(stripePublicApiKey, { locale: this.getStripeJsLocale(), apiVersion: stripeApiVersion }); } const stripeElements = this.stripe.elements({ fonts: this.getStripeJsCssFontSources( elementTypes.map(elementType => this.getPlaceholderId(frequency, elementType)) ), }); this.elements[frequency] = {}; for (let elementType of elementTypes) { const placeholderId = this.getPlaceholderId(frequency, elementType); const containerId = this.getContainerId(frequency, elementType); const container = $('<span/>').attr('id', containerId); const element = stripeElements.create(elementType, Object.assign( {style: this.getStripeJsStyle(placeholderId, container)}, elementConf[elementType].options )); this.elements[frequency][elementType] = element; $('#' + placeholderId) .attr('data-scope', 'stripe') .attr('data-required', '1') .attr('data-ira-check', "window.stripe_creditcard.checkElement('" + frequency + "', '" + elementType + "')") .val(VAL_NOT_SET) .hide() .after(container); element.mount('#' + containerId); // Stripe creates an intermediate div between the container and its iframe // Let's force this div's contents to be vertically centered inside the container $('#' + containerId + ' div').css({ display: 'flex', height: '100%', 'align-items': 'center', }); element.on('change', ev => this.onElementChanged(frequency, ev)); } if (!wasAlreadyMounted) { for (let coordName of coordNames) { $('input[name="' + coordName + '"]').on('change', () => this.createPaymentMethod(frequency)); } // Force a re-init if the payment mode was previously hidden // as Stripe does not mount well hidden fields const cvcPlaceholderId = this.getPlaceholderId(frequency, 'cardCvc'); $('#payment_mode-card:has(#' + cvcPlaceholderId + ')').on('payment_shown', () => this.init('payment_shown')); } }, unmount: function (frequency) { if (!this.isMounted(frequency)) return false; this.log('unmount', [frequency]); for (let elementType of elementTypes) { this.elements[frequency][elementType].destroy(); $('#' + this.getContainerId(frequency, elementType)).remove(); $('#' + this.getPlaceholderId(frequency, elementType)).show(); } return true; }, onElementChanged: function (frequency, ev) { this.log('onElementChanged', [ frequency, ev.elementType, ev.complete ? 'complete' : 'not complete', ev.error ? ev.error.message : 'no error', ]); this.complete[frequency][ev.elementType] = ev.complete; this.error[frequency][ev.elementType] = ev.error; this.createPaymentMethod(frequency); }, resetPaymentMethod: function (frequency) { const paymentMethodInput = this.getPaymentMethodInput(frequency); paymentMethodInput.val(VAL_NOT_SET); this.error[frequency].paymentMethod = false; return paymentMethodInput; }, }; window.stripeJsLoaded.then(() => { // Force a reinit when the donation amount or the style change for (let event of ['init_done', 'WebFont.fontactive']) { $('body').on(event, () => window.stripe_creditcard.init(event)); } }); } if (!window.stripe_creditcard.frequencies["regular"]) { window.stripe_creditcard.frequencies["regular"] = true; window.stripeJsLoaded.then(() => { // Ensure the 1st init is done only once, for the active frequency if (stripeElementGetFrequency() === "regular") { window.stripe_creditcard.init("stripeJsLoaded"); } }); } </script> <p id="card-submit" class="payment-submit"> <input name="stripe_submit" type="submit" value="Validate" id="stripe_submit" class="button regular" data-scope='stripe'/> </p> </div> </fieldset> <fieldset id="payment_mode-apple_pay-regular" class="payment_mode" data-scope='stripe_apple_pay'> <h4 class="payment_head"><span class="payment_mode_title">Apple Pay</span></h4> <div class="payment_body" id="apple_pay"> <div id="apple_pay-submit" class="payment-submit"> <input name="stripe_apple_pay_submit" type="submit" value="Validate" alt="Apple Pay" id="stripe_apple_pay_submit" class="button regular" data-scope='stripe_apple_pay' style="display:none;" disabled/> </div> <input type="hidden" name="stripe_apple_pay_paymentMethod" id="stripe_apple_pay_paymentMethod" class="regular" value=""/> </div> </fieldset> <script> Stripe_obj.buttons.Step3 = true; $('#stripe_apple_pay_submit.regular').click(function(event){ // Submit the form if called after receiving the paymentMethod if ( (Stripe_obj.buttons.Step2 || Stripe_obj.buttons.Step3) && $('#stripe_apple_pay_paymentMethod.regular').val() ) { console.log('stripe_apple_pay_submit -- submitting form'); return true; } else if (Stripe_obj.buttons.Step3) { // Or show the Apple/Google/Microsoft popup if called in step 3 and the form is valid if (Step1.check() && Step2.check() && Step3.check()) { console.log('paymentRequest.show() -- stripePay'); Stripe_obj.paymentRequest.show(); return false; } else { DntErrors.displayErrors(); } } // Or stay on the form setTimeout(() => $('.ira-processing').removeClass('ira-processing'), 500); return false; }); </script> <style> #stripe_apple_pay_submit.apple_pay_styled_button { -webkit-appearance: -apple-pay-button !important; -apple-pay-button-type: subscribe; color: transparent !important; } </style> <fieldset id="payment_mode-iban" class="payment_mode"> <h4 class="payment_head"> <span class="payment_mode_title">Pay with my IBAN</span> </h4> <div class="payment_body" id="iban"> <p id="iban-input"> <label for="iban-number">Please enter your IBAN number</label> <input type="text" name="iban-number" id="iban-number" maxlength="34" autocomplete="off" /> </p> <p id="iban-submit" class="payment-submit"> <input name="stripe_sepa_debit_submit" type="submit" value="Validate" id="iban_submit" class="button" data-scope='stripe_sepa_debit'/> </p> </div> </fieldset> </div> </div> <!-- End Payment --> </div> <!-- End Bloc --> <div class="step-info"> <h4>MAKE A CRYPTO DONATION</h4> <div class="step-info-body"> <script id="tgb-widget-script"> !function(t,e,i,n,o,c,d,s){t.tgbWidgetOptions={id:o,domain:n},(d=e.createElement(i)).src=[n,"widget/script.js"].join(""),d.async=1,(s=e.getElementById(c)).parentNode.insertBefore(d,s)}(window,document,"script","https://tgbwidget.com/","200708028","tgb-widget-script"); </script> </div> </div> <!-- End Step-info --> </div> <!-- End Step-container --> </div> <!-- End Step 3 --> </form> </div> </div> <!-- End Main --> <div id="footer" class="line"> <div class="container" id="footer_wrapinner"> <div id="powered" class="unit size1of3" style="display:block !important;"> <p style="display:block !important;"><a style="display:block !important;" href="https://www.iraiser.eu/en/" title="Powered by iRaiser"><img style="display:block !important; min-width: 100px!important;min-height: 15px!important;" src="/libs.iraiser.eu/design/powered-by/v1/powered-by-iraiser.png" alt="Powered by iRaiser" width="120" height="18"/></a></p> </div> <div id="copyright" class="unit size2of3 lastUnit"> <p> <a href="https://donate.rsf.org/our-credits" title="Credits">Credits</a> <span>|</span> <a href="https://donate.rsf.org/legals" title="Legal Information">Legal Information</a> <span>|</span> <a href="https://donate.rsf.org/contact-us" title="Contact">Contact</a> </p> </div> </div> </div> <!-- End Footer --> </div> <!-- End Container --> </body></html>