CINXE.COM

Donate now

<!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>Donate now</title> <meta name="description" content="Support the CERN &amp; Society Foundation now" /> <meta name="keywords" content="donation, CERN, gift, support" /> <link type="text/css" href="https://donate.cernandsocietyfoundation.cern/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.cernandsocietyfoundation.cern"; 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.cernandsocietyfoundation.cern\/"+gamonitoring_session_id,dl:"https:\/\/donate.cernandsocietyfoundation.cern\/CERN\/b:steps\/cid=21",sc:gamonitoring_sc,dr:gamonitoring_previous_page,cd:"2024-11-23:07.59.29-67417d5110d08",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.cernandsocietyfoundation.cern\/"+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.cernandsocietyfoundation.cern\/"+gamonitoring_session_id,t:"event",ec:"JSError",ev:1,ea:"\/CERN\/b:steps\/cid=21\/",}; 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.cernandsocietyfoundation.cern/themes/default/js/jquery-1.11.2.min.js?hash=5790ead7ad3ba27397aedfa3d263b867" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/js/jquery.cookie-1.0.min.js?hash=6f6ed3cd5486dbf3bb9143eea287a6a5" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/js/dnterrors.min.js?hash=af6b6c3691e205792b5ad49d7fa92b5a" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/js/jquery.config.min.js?hash=aae7bb01c8a0e6da615dd41aaafab4b5" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/js/step1.min.js?hash=ddb0461c6ec36bc51449a0f8bbafad7b" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/js/step2.min.js?hash=52f2b25c91cfb4ff1b559c7b186e6da6" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/js/step3.min.js?hash=1cbc70ae6688f4df94453feb30066dcd" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/js/steps.min.js?hash=0b3621bd88c488f4f53f841cb640a269" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/js/jquery.ir-priceinput.min.js?hash=07482ff72021c2c53278074abe52347f" ></script> <script type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/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 = "CHF" Common.price_campaign_currency = "CHF" 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":"I donate once","regular":"I donate every month"} Common.campaign_default_frequency = "regular" Step1.tax_reduction_rates = {"ir":[66],"isf":[75,0],"corp":[60],"custom1":[],"custom2":[]}; Step1.tax_reduction_ceils = {"ir":[],"isf":[50000],"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 = 0; Step1.adapt_tax_bloc = false; Step1.tax_info = "The real cost of your donation is <strong><span class='price'><data class='price_currency'>CHF<\/data><data class='price_amount'>%s<\/data><\/span><\/strong> (tax exemption of <span class='price'><data class='price_currency'>CHF<\/data><data class='price_amount'>%d<\/data><\/span>[notice])."; Step1.is_french_isf = 0; Step1.is_tipping_campaign = 0; Step1.amount_equivalences = {"once":[],"regular":[]} Step1.decimal_sep = "."; Step1.min_once_amount = 5; Step1.max_once_amount = 10000; Step1.min_regular_amount = 5; 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 = "21"; 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_cached_2024-11-23.07:59:29_67417d51109654.70382768&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; $(document).ready(function() { Step1.init(); Step2.init(); Steps.init(); Steps.submit(); }); organisation_name = "CERN & Society Foundation"; try{ var ira_context_infos = {"form_id":"form_cached_2024-11-23.07:59:29_67417d51109654.70382768","campaign":"21","version":"b","lang":"en_EN","amount":{"amount":"0","amount_donation":0,"frequency":"once","free_amount":false,"currency":"CHF"},"reserved":"[]","affectation":null,"_cpn_name_":"zenodo"}; console.warn(ira_context_infos); }catch(err){} try{ $.cookie('dnt_coords',null,{'path':'/','domain':'.donate.cernandsocietyfoundation.cern'}); }catch(err){} $(document).ready(function() { try{ var context_form_input = $("input[name='context_form_id']"); if(context_form_input){ var context_form_val = context_form_input.val(); if(!context_form_val || context_form_val == 'form_cached'){ context_form_input.val("form_cached_"+Math.floor(Math.random() * 1000000000)); } } if(typeof ira_form_version != 'undefined'){ $('input[name=lang]').after( $('<input type="hidden" name="form_version" />').val(ira_form_version) ); } var dnt_amount = {"amount":"0","amount_donation":0,"frequency":"once","free_amount":false,"currency":"CHF"}; if(typeof Step1 != 'undefined' && dnt_amount){ Step1.initValues(dnt_amount); } }catch(err){} }); // ]]> </script><meta name="viewport" content="width=device-width" /> <link rel="canonical" href="https://donate.cernandsocietyfoundation.cern/~share?cid=21&lang=en_EN" /> <style type="text/css"> .regularblock { display:none; } body { background: url(/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/origin/zenodo.jpg); } #header { } </style> <script type='text/javascript'> optionsGlobal = ""; optionsCampaign = {"theme":"arya","active_theme":"1","last_version":"1","version":"2","font":"","font_title":"","fontsize":"","wedge":"5","--body-background-color":"#FFFFFF","donation_grid":"1","layout":"2","1_column_direction":"2","widgets_footer":"1","hide_reassurance_1":"1","hide_reassurance_2":"0","hide_reassurance_3":"0","hide_mobile_reassurance_1":"1","hide_mobile_reassurance_2":"1","hide_mobile_reassurance_3":"1","widgets_header":"1","live_counter_map_sum":"","live_counter_map_count":"","widgets_progress_bar_currency":"","widgets_color_progress_bar_goal":"#000002CC","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_last_donors":"true","widgets_color_last_donors":"#000002CC","widgets_last_donors_filter":"500","widgets_last_donors_text":"","widgets_last_donors_text_en_EN":"","widgets_cookies_banner":"false","widgets_color_cookies_banner":"#000002CC","widgets_cookies_banner_text":"","widgets_cookies_banner_text_en_EN":"","widgets_cookies_banner_button":"","widgets_cookies_banner_button_en_EN":"","widgets_most_popular_once_amount":"","widgets_most_popular_once_title":"","widgets_most_popular_once_title_en_EN":"","widgets_most_popular_once_text":"","widgets_most_popular_once_text_en_EN":"","widgets_most_popular_regular_amount":"","widgets_most_popular_regular_title":"","widgets_most_popular_regular_title_en_EN":"","widgets_most_popular_regular_text":"","widgets_most_popular_regular_text_en_EN":"","--main-action-color":"","--main-action-color-lighter":"","--description-color":"","--information-color":"#000002CC","--column-background-color":"","--banner-color":"#000002CC","--banner-color-darker":"#000000cc"}; campaign_id = "21"; context_lang = "en_EN"; campaign_stats = {"count":"25","sum":"2016300","min":"500","max":"640000","avg":"806.52","progress":"100","last_donators":[{"firstname":"Anonymous","total":"3600","currency":"USD","date":"2024-11-07 16:24:00","campaign":"21","city":"MERION STATION","message":"","avatar":""},{"firstname":"The Michael J. Fox Foundation for Parkinson's Research","total":"640000","currency":"CHF","date":"2024-10-02 15:29:00","campaign":"21","city":"NEW YORK","message":"","avatar":""},{"firstname":"Russell","total":"500","currency":"GBP","date":"2024-09-19 19:00:00","campaign":"21","city":"SHEFFIELD","message":"","avatar":""},{"firstname":"Frederick Edward","total":"5000","currency":"USD","date":"2024-09-09 11:01:00","campaign":"21","city":"RIZAL","message":"","avatar":""},{"firstname":"Anonymous","total":"512000","currency":"CHF","date":"2024-08-28 08:31:00","campaign":"21","city":"MARTIGNY","message":"","avatar":""},{"firstname":"Anonymous","total":"10000","currency":"EUR","date":"2024-07-19 14:07:00","campaign":"21","city":"UTRECHT","message":"","avatar":""},{"firstname":"Giuseppe","total":"25000","currency":"EUR","date":"2024-06-24 15:16:00","campaign":"21","city":"TORINO","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-06-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-05-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-04-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-03-05 03:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"The Michael J. Fox Foundation for Parkinson's Research","total":"6400","currency":"CHF","date":"2024-02-27 20:54:00","campaign":"21","city":"NEW YORK","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-02-05 03:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-01-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"University of St Andrews","total":"156000","currency":"CHF","date":"2023-12-15 17:11:00","campaign":"21","city":"ST ANDREWS","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-12-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Janet","total":"102400","currency":"CHF","date":"2023-12-02 08:53:00","campaign":"21","city":"ZURICH","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-11-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Anonymous","total":"10000","currency":"USD","date":"2023-10-28 14:16:00","campaign":"21","city":"PALM HARBOR","message":"","avatar":""},{"firstname":"Rayference SRL","total":"12000","currency":"EUR","date":"2023-10-10 11:42:00","campaign":"21","city":"BRUSSELS","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-10-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-09-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Hedwig","total":"12000","currency":"EUR","date":"2023-08-13 02:31:00","campaign":"21","city":"WELLINGTON","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-08-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Stanford University","total":"12800","currency":"CHF","date":"2023-07-11 06:25:00","campaign":"21","city":"STANFORD","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-07-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Mark","total":"2000","currency":"USD","date":"2023-06-22 15:51:00","campaign":"21","city":"STERLING","message":"","avatar":""},{"firstname":"john","total":"12800","currency":"CHF","date":"2023-06-15 12:24:00","campaign":"21","city":"CASTLE DOUGLAS","message":"","avatar":""},{"firstname":"Nicolaus","total":"24100","currency":"EUR","date":"2023-06-15 12:17:00","campaign":"21","city":"MUENCHEN","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-06-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"ETH Zurich","total":"70000","currency":"CHF","date":"2023-06-01 15:56:00","campaign":"21","city":"ZURICH","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-05-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-04-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-03-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-02-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-01-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Katrina","total":"6500","currency":"USD","date":"2022-12-24 02:07:00","campaign":"21","city":"ISSAQUAH","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-12-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-11-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-10-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Jim","total":"50000","currency":"CHF","date":"2022-10-01 18:45:00","campaign":"21","city":"PHOENIX, ARIZONA","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-09-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Francis","total":"800","currency":"EUR","date":"2022-08-25 17:13:00","campaign":"21","city":"LONDON","message":"","avatar":""},{"firstname":"Yunjun","total":"6400","currency":"CHF","date":"2022-08-16 20:18:00","campaign":"21","city":"PASADENA","message":"","avatar":""},{"firstname":"The Michael J. Fox Foundation","total":"235000","currency":"CHF","date":"2022-08-05 20:32:00","campaign":"21","city":"NEW YORK","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-08-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"The Michael J Fox Foundation","total":"100000","currency":"CHF","date":"2022-08-01 22:24:00","campaign":"21","city":"NEW YORK","message":"","avatar":""},{"firstname":"Anonymous","total":"1000","currency":"EUR","date":"2022-07-30 20:40:00","campaign":"21","city":"BRESSANA BOTTARONE","message":"","avatar":""}],"date_cache":"2024-11-23"}; campaign_stats_last_donators = [{"firstname":"Anonymous","total":"3600","currency":"USD","date":"2024-11-07 16:24:00","campaign":"21","city":"MERION STATION","message":"","avatar":""},{"firstname":"The Michael J. Fox Foundation for Parkinson's Research","total":"640000","currency":"CHF","date":"2024-10-02 15:29:00","campaign":"21","city":"NEW YORK","message":"","avatar":""},{"firstname":"Russell","total":"500","currency":"GBP","date":"2024-09-19 19:00:00","campaign":"21","city":"SHEFFIELD","message":"","avatar":""},{"firstname":"Frederick Edward","total":"5000","currency":"USD","date":"2024-09-09 11:01:00","campaign":"21","city":"RIZAL","message":"","avatar":""},{"firstname":"Anonymous","total":"512000","currency":"CHF","date":"2024-08-28 08:31:00","campaign":"21","city":"MARTIGNY","message":"","avatar":""},{"firstname":"Anonymous","total":"10000","currency":"EUR","date":"2024-07-19 14:07:00","campaign":"21","city":"UTRECHT","message":"","avatar":""},{"firstname":"Giuseppe","total":"25000","currency":"EUR","date":"2024-06-24 15:16:00","campaign":"21","city":"TORINO","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-06-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-05-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-04-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-03-05 03:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"The Michael J. Fox Foundation for Parkinson's Research","total":"6400","currency":"CHF","date":"2024-02-27 20:54:00","campaign":"21","city":"NEW YORK","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-02-05 03:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2024-01-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"University of St Andrews","total":"156000","currency":"CHF","date":"2023-12-15 17:11:00","campaign":"21","city":"ST ANDREWS","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-12-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Janet","total":"102400","currency":"CHF","date":"2023-12-02 08:53:00","campaign":"21","city":"ZURICH","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-11-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Anonymous","total":"10000","currency":"USD","date":"2023-10-28 14:16:00","campaign":"21","city":"PALM HARBOR","message":"","avatar":""},{"firstname":"Rayference SRL","total":"12000","currency":"EUR","date":"2023-10-10 11:42:00","campaign":"21","city":"BRUSSELS","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-10-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-09-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Hedwig","total":"12000","currency":"EUR","date":"2023-08-13 02:31:00","campaign":"21","city":"WELLINGTON","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-08-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Stanford University","total":"12800","currency":"CHF","date":"2023-07-11 06:25:00","campaign":"21","city":"STANFORD","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-07-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Mark","total":"2000","currency":"USD","date":"2023-06-22 15:51:00","campaign":"21","city":"STERLING","message":"","avatar":""},{"firstname":"john","total":"12800","currency":"CHF","date":"2023-06-15 12:24:00","campaign":"21","city":"CASTLE DOUGLAS","message":"","avatar":""},{"firstname":"Nicolaus","total":"24100","currency":"EUR","date":"2023-06-15 12:17:00","campaign":"21","city":"MUENCHEN","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-06-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"ETH Zurich","total":"70000","currency":"CHF","date":"2023-06-01 15:56:00","campaign":"21","city":"ZURICH","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-05-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-04-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-03-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-02-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2023-01-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Katrina","total":"6500","currency":"USD","date":"2022-12-24 02:07:00","campaign":"21","city":"ISSAQUAH","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-12-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-11-05 03:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-10-05 04:30:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Jim","total":"50000","currency":"CHF","date":"2022-10-01 18:45:00","campaign":"21","city":"PHOENIX, ARIZONA","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-09-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"Francis","total":"800","currency":"EUR","date":"2022-08-25 17:13:00","campaign":"21","city":"LONDON","message":"","avatar":""},{"firstname":"Yunjun","total":"6400","currency":"CHF","date":"2022-08-16 20:18:00","campaign":"21","city":"PASADENA","message":"","avatar":""},{"firstname":"The Michael J. Fox Foundation","total":"235000","currency":"CHF","date":"2022-08-05 20:32:00","campaign":"21","city":"NEW YORK","message":"","avatar":""},{"firstname":"Research Consulting","total":"6000","currency":"EUR","date":"2022-08-05 04:31:00","campaign":"21","city":"NOTTINGHAM","message":"","avatar":""},{"firstname":"The Michael J Fox Foundation","total":"100000","currency":"CHF","date":"2022-08-01 22:24:00","campaign":"21","city":"NEW YORK","message":"","avatar":""},{"firstname":"Anonymous","total":"1000","currency":"EUR","date":"2022-07-30 20:40:00","campaign":"21","city":"BRESSANA BOTTARONE","message":"","avatar":""}]; campaign_currency = "CHF"; iraiser_counter = ''; client_livecounter = "cern"; bymonth = 'per month'; i18n = []; checkoutPage = ''; </script> <script id="javascript_arya" type="text/javascript" src="https://donate.cernandsocietyfoundation.cern/themes/default/arya/dist/v2.7/arya.js?v=24070" ></script> <link type="text/css" href="https://donate.cernandsocietyfoundation.cern/themes/default/arya/dist/v2.7/arya.css?v=24070" rel="stylesheet" /> <!-- Disable the standard multi-currency feature incompatible with old multi-currency customizations - Multi-currency support - Release Payment V19 - https://portal.iraiser.eu/web#id=1240&action=730&model=knowsystem.article&view_type=form&menu_id=516 --> <script> $(document).on('ira_step1_init_before', () => { Common.allowCurrencyChange = () => false; Common.getCurrency = () => (Common.get_value('currency') || Common.price_default_currency); }); </script> <script> var currencies = {"DKK":{"symbol":"kr.","rate":"7.77","order":"4"},"CHF":{"symbol":"CHF","rate":"1","order":"1"},"GBP":{"symbol":"\u00a3","rate":"0.87","order":"3"},"EUR":{"symbol":"\u20ac","rate":"0.94","order":"2"},"USD":{"symbol":"$","rate":"1.03","order":"6"}}; var defaultCurrency = 'CHF'; var customCurrency = ''; </script> <script type="text/javascript" src="//libs.iraiser.eu/libs/multi_currency/script.js" ></script> <style> #type-b.arya p#c-currency { margin: 0 20px 0; clear: both; padding: 0 0 20px 0; min-height: 50px; } </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://cernandsocietyfoundation.cern" title="CERN &amp; Society Foundation"><img src="/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/origin/Logotesto290-2.png" alt="CERN &amp; Society Foundation"/></a></h1> </div> <!-- End Logo --> </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"> <div id="form-info" class="line"> <strong>Zenodo is today the world's largest general-purpose research repository</strong> enabling any researcher around the world to participate in Open Science through a seamless user experience that allows them to <strong>share and preserve any research output</strong>. It was born in 2013 out of the partnership between CERN and OpenAIRE, a European Commission (EC) project whose mission is to foster the open science dialogue in Europe and beyond.<br /> <br /> Past and present contributions from the EC and CERN allow Zenodo to offer a reliable and transparent service for its users. However, as Zenodo鈥檚 popularity increases, so grows the need for new features and expanded data storage. In order to meet the demands of our ever-growing community, Zenodo needs more contributions on top of those periodically received by the EC and CERN.<br /> <br /> Since 2016, the CERN & Society Foundation has included Zenodo in its portfolio of projects and has helped us raise extra funds from additional partners. <strong>Thanks to these contributions, we are able to improve our service, provide more storage space, support the user experience and add more and more features</strong>.<br /> <br /> The mission and policies adopted by CERN <u>do not allow us to accept funds in exchange for a service.</u> We can, however, accept donations, which will benefit the entire community. <a href="mailto:partnerships.fundraising@cern.ch">Contact us</a> for more information. </div> <noscript> </noscript> <form action="/b/steps/save" method="post" id="form-steps" autocomplete="off"> <input type="hidden" name="context_form" value="" /> <input type="hidden" name="context_form_id" value="" /> <input type="hidden" name="cid" value="21" /> <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="regular" class="bloc"> <div class="bloc-content"> <h3>I donate every month</h3> <p class="content-desc">Make a bigger impact with a smaller monthly gift.</p> <div id="bloc-amount-regular"> <fieldset class="amount type2ct"> <ul class="radio-desc line" id="amount-list-regular"> <li> <div class="unit size1of2"><img src="/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/pricelist_item/zenodo3.jpg" width="120" height="90" alt="" /></div> <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-regular" value="6400" id="amount-regular-6400" type="radio" /> <span id="value_of_amount-regular-6400"><data class='price_currency'>CHF</data><data class='price_amount'>64</data></span></label><p>Over one year, could pay for 300 GB more of data storage for 10 years</p></div> </li> <li> <div class="unit size1of2"><img src="/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/pricelist_item/summerstudents-3.jpg" width="120" height="90" alt="" /></div> <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-regular" value="12800" id="amount-regular-12800" type="radio" /> <span id="value_of_amount-regular-12800"><data class='price_currency'>CHF</data><data class='price_amount'>128</data></span></label><p>Over one year, could pay for 3 days of features development</p></div> </li> <li> <div class="unit size1of2"><img src="/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/pricelist_item/zenodo4.jpg" width="120" height="90" alt="" /></div> <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-regular" value="25600" id="amount-regular-25600" type="radio" /> <span id="value_of_amount-regular-25600"><data class='price_currency'>CHF</data><data class='price_amount'>256</data></span></label><p>Over one year, could pay for 1.2 TB of data storage for 10 years</p></div> </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">CHF</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 id="or"> <p>Or</p> </div> <div id="once" class="bloc"> <div class="bloc-content"> <h3>I donate once</h3> <p class="content-desc">Make a one-off donation to where the need is greatest.</p> <div id="bloc-amount-once"> <fieldset class="amount type2ct"> <ul class="radio-desc line" id="amount-list-once"> <li> <div class="unit size1of2"><img src="/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/pricelist_item/Zenodo2.jpg" width="120" height="90" alt="" /></div> <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-once" value="12800" id="amount-once-12800" type="radio" /> <span id="value_of_amount-once-12800"><data class='price_currency'>CHF</data><data class='price_amount'>128</data></span></label><p>Could pay for 50 GB more of data storage for ten years</p></div> </li> <li> <div class="unit size1of2"><img src="/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/pricelist_item/Zenodo1.jpg" width="120" height="90" alt="" /></div> <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-once" value="25600" id="amount-once-25600" type="radio" /> <span id="value_of_amount-once-25600"><data class='price_currency'>CHF</data><data class='price_amount'>256</data></span></label><p>Could pay for 100 GB more of data storage for ten years</p></div> </li> <li> <div class="unit size1of2"><img src="/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/pricelist_item/130923201-A4-at-144-dpi.jpg" width="120" height="90" alt="" /></div> <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-once" value="51600" id="amount-once-51600" type="radio" /> <span id="value_of_amount-once-51600"><data class='price_currency'>CHF</data><data class='price_amount'>516</data></span></label><p>Could pay for one day of features development </p></div> </li> <li> <div class="unit size1of2"><img src="/cdn.iraiser.eu/PGuj96KzjINl+5CiMeJw9A==/default/pricelist_item/zenodo2.jpg" width="120" height="90" alt="" /></div> <div class="unit size1of2 lastUnit"><label><input autocomplete="false" name="amount-once" value="102400" id="amount-once-102400" type="radio" /> <span id="value_of_amount-once-102400"><data class='price_currency'>CHF</data><data class='price_amount'>1,024</data></span></label><p>Could pay for one week of overall service management</p></div> </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">CHF</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> </div> </div> <!-- End Step-content --> <div class="step-info"> <h4>Why donate?</h4> <div class="step-info-body"> <p>The CERN & Society Foundation is a Swiss private non-profit, whose mission is聽to spread the spirit of CERN scientific curiosity, for the inspiration and benefit of society.<br /> <br /> The Foundation operates nationally and internationally to pursue its mission, across three main areas: Education & Outreach, Innovation & Knowledge Exchange, and Culture & Creativity.聽</p> </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 coordinates</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="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() || "CHF").toLowerCase(); var accountCountry = "CH"; 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: "CERN & Society Foundation", 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="3">Miss</option> <option value="4">Ms</option> <option value="25">Mx</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="FR">FRANCE</option> <option value="CH" selected="selected">SWITZERLAND</option> <option value="GB">UNITED KINGDOM</option> <option value="US">UNITED STATES</option> <option value="ZW">ZIMBABWE</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">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, PROVINCE OF CHINA</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 id="required-info"><span class="required">*</span> <span class="help">Required Fields </span></p> </fieldset> </div> <!-- End Bloc --> <div class="step-info"> <h4>Respect of your privacy</h4> <div class="step-info-body"> Your personal information will be kept private and held securely. By submitting information you are agreeing to be kept informed about campaigns and agree to the use of cookies in accordance with our <a href="https://cern.service-now.com/service-portal/privacy-policy.do?se=Fundraising-Service&amp;notice=online">privacy notice</a>. <p>聽</p> <hr /> <p><span style="font-size:20px;">YOUR GIFT</span></p> <br /> We want to be transparent and accountable about how we spend your donations. CERN provides the necessary operating resources for fundraising. Nevertheless, a small fraction of the unrestricted donations is used to cover processing fees applying to contributions received online, and other operating expenditures.<br /> <br /> <br /> 聽 </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>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">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> <!-- STANDARD BUTTONS --> <fieldset id="payment_mode-gw_paypal_paypal" class="payment_mode " > <h4 class="payment_head"> <span class="payment_mode_title">PayPaL</span> </h4> <div class="payment_body" id="gw_paypal_paypal"> <!-- GOCARDLESS BACS SPECIFIC TEXT & CHECKBOX (must be checked to submit payment) --> <!-- LEGAL UK REQUIREMENTS FOR BANK MANDATES --> <input name="type" type="hidden" value="" data-scope="gw_paypal_paypal"/> <input name="mode" type="hidden" value="gw_paypal_paypal" data-scope="gw_paypal_paypal"/> <p id="gw_paypal_paypal-submit" class="payment-submit gateway"> <input name="gw_paypal_paypal_submit" type="submit" value="Validate" id="gw_paypal_paypal_submit" class="button gateway" data-scope="gw_paypal_paypal"/> </p> </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> </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">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> <!-- STANDARD BUTTONS --> <fieldset id="payment_mode-gw_paypal_paypal" class="payment_mode " > <h4 class="payment_head"> <span class="payment_mode_title">PayPaL</span> </h4> <div class="payment_body" id="gw_paypal_paypal"> <!-- GOCARDLESS BACS SPECIFIC TEXT & CHECKBOX (must be checked to submit payment) --> <!-- LEGAL UK REQUIREMENTS FOR BANK MANDATES --> <input name="type" type="hidden" value="" data-scope="gw_paypal_paypal"/> <input name="mode" type="hidden" value="gw_paypal_paypal" data-scope="gw_paypal_paypal"/> <p id="gw_paypal_paypal-submit" class="payment-submit gateway"> <input name="gw_paypal_paypal_submit" type="submit" value="Validate" id="gw_paypal_paypal_submit" class="button gateway" data-scope="gw_paypal_paypal"/> </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> </div> </div> <!-- End Payment --> </div> <!-- End Bloc --> <div class="step-info"> <h4>Help us in total confidence</h4> <div class="step-info-body"> <p style="text-align: justify;">This website is 100% secure.<br /> All bank information to process the payment is encrypted using the SSL protocol. They are never stored on our computer systems.<br /> <br /> For donors based in Switzerland, your donation is tax deductible. If you are giving from other countries, learn about聽<a href="https://cernandsocietyfoundation.web.cern.ch/page/tax-efficient-giving" rel="noopener noreferrer" target="_blank">tax efficient gift</a>聽options.<br /> <br /> Our donor service is available to answer all your questions. Do not hesitate to contact us by e-mail: <a href="mailto:partnerships.fundraising@cern.ch">donorcare@csf.cern.ch</a></p> <p><br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> 聽</p> <a href="https://home.cern" target="_parent"><img alt="" src="https://design-guidelines.web.cern.ch/themes/custom/cernclean/logo.svg" style="width: 95px; float: right;" /></a> </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.cernandsocietyfoundation.cern/our-credits" title="Credits">Credits</a> <span>|</span> <a href="https://donate.cernandsocietyfoundation.cern/legals" title="Legal Information">Legal Information</a> <span>|</span> <a href="https://donate.cernandsocietyfoundation.cern/contact-us" title="Contact">Contact</a> </p> </div> </div> </div> <!-- End Footer --> </div> <!-- End Container --> </body></html>

Pages: 1 2 3 4 5 6 7 8 9 10