MediaWiki:DonationForm.js: Difference between revisions

Content deleted Content added
add venmo browser check and bypassing form chooser
No edit summary
 
(15 intermediate revisions by the same user not shown)
Line 7:
 
donationForm.loadedTime = Date.now();
donationForm.extraData = {};
'vw' : window.innerWidth,
'vh' : window.innerHeight
};
 
// Don't offer recurring at all in these countries
if ( navigator.brave !== undefined ) { // T283367
donationForm.extraData.bravenoRecurringCountries = [ '1AR' ]; // is this still needed?
}
 
donationForm.noRecurringPaypalCountries = [ 'CL', 'CO', 'PE', 'UY', 'BR' ];
// Don't offer recurring at all in these countries
donationForm.noRecurringCountries = [ 'AR', 'CL', 'CO', 'MX', 'PE', 'UY', 'BR' ];
 
donationForm.maxUSD = 25000;
Line 23 ⟶ 18:
donationForm.minimums = {
// From https://github.com/wikimedia/wikimedia-fundraising-SmashPig/blob/master/PaymentData/ReferenceData/CurrencyRates.php
// Updated 20232024-01-19
'ADF' : 6.0708,
'ADP' : 154,
'AED' : 3.67,
'AFA' : 8868,
'AFN' : 8868,
'ALL' : 10794,
'AMD' : 375388,
'ANG' : 1.79,
'AOA' : 504828,
'AON' : 504828,
'ARS' : 183366,
'ATS' : 13,
'AUD' : 1.4552,
'AWG' : 1.79,
'AZM' : 8500,
Line 42 ⟶ 37:
'BAM' : 1.81,
'BBD' : 2,
'BDT' : 103109,
'BEF' : 37,
'BGL' : 1.81,
'BGN' : 1.81,
'BHD' : 0.3746496454688837452802080547,
'BIF' : 20502826,
'BMD' : 1,
'BND' : 1.3234,
'BOB' : 6.73,
'BRL' : 54.1995,
'BSD' : 1,
'BTN' : 8183,
'BWP' : 1314,
'BYR' : 2522332900,
'BZD' : 1.97,
'CAD' : 1.3536,
'CDF' : 20122611,
'CHF' : 0.9161771071419287620362389075,
'CLP' : 825880,
'CNY' : 67.7817,
'COP' : 46843970,
'CRC' : 556520,
'CUC' : 1,
'CUP' : 25,
'CVE' : 102,
'CYP' : 0.5412788462502654264835979874,
'CZK' : 2223,
'DEM' : 1.81,
'DJF' : 178,
'DKK' : 6.8891,
'DOP' : 56,
'DZD' : 136134,
'ECS' : 24094,
'EEK' : 1415,
'EGP' : 3031,
'ESP' : 154,
'ETB' : 5356,
'EUR' : 0.9248298168896592716976971251,
'FIM' : 5.551,
'FJD' : 2.1722,
'FKP' : 0.8095157781732879581971718638,
'FRF' : 6.0708,
'GBP' : 0.8095157781732879581971718638,
'GEL' : 2.6364,
'GHC' : 120475120114,
'GHS' : 12,
'GIP' : 0.8095157781732879581971718638,
'GMD' : 6167,
'GNF' : 86188522,
'GRD' : 315316,
'GTQ' : 7.6764,
'GYD' : 200,
'HKD' : 7.8381,
'HNL' : 24,
'HRK' : 6.9799,
'HTG' : 148131,
'HUF' : 365355,
'IDR' : 1513815593,
'IEP' : 0.7283626699088673020553251391,
'ILS' : 3.471,
'INR' : 10, // T309818
'IQD' : 14441292,
'IRR' : 4138942000,
'ISK' : 143140,
'ITL' : 17911795,
'JMD' : 151154,
'JOD' : 0.70900000000001,
'JPY' : 128146,
'KES' : 123153,
'KGS' : 8689,
'KHR' : 40664051,
'KMF' : 455456,
'KPW' : 135,
'KRW' : 12351313,
'KWD' : 0.3045852986289330762164728865,
'KYD' : 0.83333299999999,
'KZT' : 462456,
'LAK' : 1671920577,
'LBP' : 150815000,
'LKR' : 363325,
'LRD' : 155187,
'LSL' : 1719,
'LTL' : 3.192,
'LUF' : 37,
'LVL' : 0.6499740946293265161862283304,
'LYD' : 4.758,
'MAD' : 10,
'MDL' : 1918,
'MGA' : 43154549,
'MGF' : 9150,
'MKD' : 57,
'MMK' : 20812080,
'MNT' : 2620,
'MOP' : 8.0604,
'MRO' : 358392,
'MTL' : 0.3970294403907239803398213759,
'MUR' : 43,
'MVR' : 15,
'MWK' : 10071674,
'MXN' : 1917,
'MYR' : 4.3168,
'MZM' : 63200,
'MZN' : 63,
'NAD' : 1719,
'NGN' : 456791,
'NIO' : 36,
'NLG' : 2.04,
'NOK' : 9.9211,
'NPR' : 129132,
'NZD' : 1.5663,
'OMR' : 0.3836124484366338381212511836,
'PAB' : 1,
'PEN' : 3.874,
'PGK' : 3.4464,
'PHP' : 5556,
'PKR' : 229283,
'PLN' : 4.3602,
'PTE' : 185186,
'PYG' : 72917244,
'QAR' : 3.6264,
'ROL' : 4554246063,
'RON' : 4.5561,
'RSD' : 108,
'RUB' : 6990,
'RWF' : 10641237,
'SAR' : 3.75,
'SBD' : 8.2135,
'SCR' : 13,
'SDD' : 5755959800,
'SDG' : 576598,
'SDP' : 2261,
'SEK' : 10,
'SGD' : 1.3234,
'SHP' : 0.8095157781732879581971718638,
'SIT' : 222,
'SKK' : 28,
'SLL' : 1917019750,
'SOS' : 560562,
'SRD' : 3237,
'SRG' : 3153537356,
'STD' : 2263822552,
'SVC' : 8.75,
'SYP' : 513,
'SZL' : 1719,
'THB' : 3336,
'TJS' : 1011,
'TMM' : 1679016750,
'TMT' : 3.3635,
'TND' : 3.0911,
'TOP' : 2.2732,
'TRL' : 1878706929009007,
'TRY' : 1929,
'TTD' : 6.65,
'TWD' : 3031,
'TZS' : 23282498,
'UAH' : 37,
'UGX' : 36613784,
'USD' : 1,
'UYU' : 39,
'UZS' : 1127512302,
'VEB' : 19945668923553825326,
'VEF' : 19945673553825,
'VND' : 2344124259,
'VUV' : 112,
'WST' : 2.6268,
'XAF' : 607608,
'XAG' : 0.042455323695749043725386677957,
'XAU' : 0.00052193528164699000504038919286,
'XCD' : 2.7,
'XEU' : 0.9248298168896592716976971251,
'XOF' : 607608,
'XPD' : 0.00058093239109499001025937507186,
'XPF' : 110111,
'XPT' : 0.00096625574498098001084078572954,
'YER' : 250,
'YUN' : 108,
'ZAR' : 1719,
'ZMK' : 5176,
'ZWD' : 373
Line 228 ⟶ 223:
minAmount = donationForm.minimums[ currency ],
locale = donationForm.getLocale( mw.config.get('wgPageContentLanguage'), donationForm.country );
 
// Round up
minAmount = Math.ceil( minAmount * 100 ) / 100;
Line 274 ⟶ 269:
// If changing, please update https://docs.google.com/spreadsheets/d/1e02TsZ_bKDAS1BMVBCdyo9D7RGln_wCGnkg7IF5kU5s/edit
var radioAmountsData = {
"USD" : { // also used for CAD, AUD, NZD, GBP, EUR"
"default" : [
[ 0, [ 2.75, 5, 10, 20, 25, 35, 50 ] ],
Line 291 ⟶ 286:
[ 1000, [ 1000, 2000, 3000, 4000, 5000, 7500, 10000 ] ],
[ 3000, [ 3000, 4000, 5000, 6000, 7500, 10000, 12000 ] ]
],
"2incvar" : [
[ 0, [ 1, 5, 10, 15, 20, 30, 50 ] ],
[ 3, [ 3, 5, 10, 20, 35, 50, 75 ] ],
[ 6, [ 6, 10, 20, 35, 50, 75, 100 ] ],
[ 10, [ 10, 15, 25, 50, 75, 100, 125 ] ],
[ 13, [ 13, 20, 35, 50, 75, 100, 125 ] ],
[ 16, [ 16, 25, 50, 75, 100, 150, 200 ] ],
[ 20, [ 20, 35, 50, 75, 125, 150, 200 ] ],
[ 23, [ 23, 35, 50, 75, 125, 175, 250 ] ],
[ 26, [ 26, 35, 50, 75, 125, 175, 250 ] ],
[ 30, [ 30, 40, 50, 75, 125, 175, 250 ] ],
[ 35, [ 35, 45, 50, 100, 125, 175, 250 ] ],
[ 40, [ 40, 50, 75, 100, 150, 250, 300 ] ],
[ 45, [ 45, 50, 75, 100, 150, 250, 500 ] ],
[ 50, [ 50, 60, 100, 125, 175, 250, 500 ] ],
[ 60, [ 60, 75, 100, 125, 175, 250, 500 ] ],
[ 70, [ 70, 85, 100, 125, 175, 250, 500 ] ],
[ 80, [ 80, 100, 125, 150, 200, 300, 500 ] ],
[ 90, [ 90, 100, 125, 150, 200, 300, 500 ] ],
[ 100, [ 100, 125, 175, 250, 350, 500, 750 ] ],
[ 125, [ 125, 150, 200, 300, 500, 750, 1000 ] ],
[ 150, [ 150, 175, 250, 400, 500, 750, 1000 ] ],
[ 175, [ 175, 200, 300, 400, 500, 750, 1000 ] ],
[ 200, [ 200, 250, 300, 400, 500, 750, 1000 ] ]
],
"3incvarsv" : [
[ 0, [ 1, 5, 7.50, 10, 15, 20, 30 ] ],
[ 3, [ 3, 5, 10, 15, 20, 25, 40 ] ],
[ 6, [ 6, 10, 15, 20, 30, 40, 50 ] ],
[ 10, [ 10, 15, 20, 25, 30, 40, 50 ] ],
[ 13, [ 13, 20, 25, 35, 45, 55, 75 ] ],
[ 16, [ 16, 20, 25, 35, 45, 55, 75 ] ],
[ 20, [ 20, 25, 35, 45, 55, 75, 100 ] ],
[ 23, [ 23, 30, 37, 45, 55, 75, 100 ] ],
[ 26, [ 26, 30, 37, 45, 55, 75, 100 ] ],
[ 30, [ 30, 35, 40, 45, 55, 75, 100 ] ],
[ 35, [ 35, 40, 45, 50, 65, 75, 100 ] ],
[ 40, [ 40, 45, 50, 65, 75, 100, 125 ] ],
[ 45, [ 45, 50, 55, 65, 75, 100, 125 ] ],
[ 50, [ 50, 60, 75, 100, 125, 150, 200 ] ],
[ 60, [ 60, 70, 80, 100, 125, 150, 200 ] ],
[ 70, [ 70, 80, 100, 125, 150, 200, 250 ] ],
[ 80, [ 80, 90, 100, 125, 150, 200, 250 ] ],
[ 90, [ 90, 100, 125, 150, 200, 250, 300 ] ],
[ 100, [ 100, 110, 150, 200, 250, 300, 350 ] ],
[ 125, [ 125, 150, 200, 250, 300, 400, 500 ] ],
[ 150, [ 150, 175, 200, 250, 300, 400, 500 ] ],
[ 175, [ 175, 200, 250, 300, 400, 500, 750 ] ],
[ 200, [ 200, 250, 300, 350, 400, 500, 750 ] ]
],
"4HA7" : [
[ 0, [ 2.75, 5, 10, 20, 25, 35, 100 ] ],
[ 5, [ 5, 10, 15, 20, 35, 50, 200 ] ],
[ 10, [ 10, 15, 20, 25, 35, 50, 250 ] ],
[ 15, [ 15, 20, 25, 35, 50, 75, 300 ] ],
[ 20, [ 20, 25, 35, 50, 75, 100, 500 ] ],
[ 25, [ 25, 30, 40, 50, 75, 100, 500 ] ],
[ 35, [ 35, 50, 75, 100, 200, 300, 1000 ] ],
[ 75, [ 75, 100, 150, 250, 500, 750, 2000 ] ],
[ 100, [ 100, 150, 250, 500, 750, 1000, 5000 ] ],
[ 150, [ 150, 200, 300, 500, 750, 1000, 7500 ] ],
[ 200, [ 200, 300, 500, 750, 1000, 2500, 10000 ] ],
[ 500, [ 500, 750, 1000, 2500, 5000, 7500, 12000 ] ],
[ 1000, [ 1000, 2000, 3000, 4000, 5000, 7500, 12000 ] ]
],
"5LA1" : [
[ 0, [ 1, 5, 10, 15, 20, 30, 50 ] ],
[ 3, [ 3, 5, 10, 20, 35, 50, 75 ] ],
[ 6, [ 5, 10, 20, 35, 50, 75, 100 ] ],
[ 10, [ 10, 15, 25, 50, 75, 100, 125 ] ],
[ 13, [ 10, 20, 35, 50, 75, 100, 125 ] ],
[ 16, [ 15, 25, 50, 75, 100, 150, 200 ] ],
[ 20, [ 20, 35, 50, 75, 125, 150, 200 ] ],
[ 23, [ 20, 35, 50, 75, 125, 175, 250 ] ],
[ 26, [ 25, 35, 50, 75, 125, 175, 250 ] ],
[ 30, [ 30, 40, 50, 75, 125, 175, 250 ] ],
[ 35, [ 35, 45, 50, 100, 125, 175, 300 ] ],
[ 40, [ 40, 50, 75, 100, 150, 200, 300 ] ],
[ 45, [ 45, 50, 75, 100, 150, 250, 500 ] ],
[ 50, [ 50, 75, 100, 125, 175, 250, 500 ] ],
[ 60, [ 60, 75, 100, 125, 175, 250, 500 ] ],
[ 70, [ 70, 85, 100, 125, 175, 250, 500 ] ],
[ 80, [ 80, 100, 125, 150, 200, 300, 500 ] ],
[ 90, [ 90, 100, 125, 150, 200, 300, 500 ] ],
[ 100, [ 100, 125, 175, 250, 350, 500, 750 ] ],
[ 125, [ 125, 150, 200, 300, 500, 750, 1000 ] ],
[ 150, [ 150, 200, 300, 400, 500, 750, 1000 ] ],
[ 175, [ 175, 200, 300, 400, 500, 750, 1000 ] ],
[ 200, [ 200, 225, 300, 400, 500, 750, 1000 ] ]
],
"2018control" : [
[ 0, [ 5, 10, 20, 25, 35, 50, 100 ] ],
[ 5, [ 10, 15, 20, 35, 50, 100, 150 ] ],
[ 10, [ 15, 20, 25, 35, 50, 100, 150 ] ],
[ 15, [ 20, 25, 35, 50, 75, 100, 250 ] ],
[ 20, [ 25, 35, 50, 75, 100, 150, 250 ] ],
[ 25, [ 30, 40, 50, 75, 100, 150, 250 ] ],
[ 35, [ 25, 50, 75, 100, 200, 250, 300 ] ],
[ 75, [ 25, 50, 75, 100, 200, 300, 500 ] ],
[ 100, [ 25, 50, 100, 150, 250, 500, 1000 ] ],
[ 150, [ 50, 100, 150, 200, 350, 500, 1000 ] ],
[ 200, [ 100, 150, 200, 300, 400, 500, 1000 ] ],
[ 500, [ 100, 250, 500, 750, 1000, 1500, 2000 ] ],
[ 1000, [ 500, 1000, 2000, 2500, 3000, 4000, 5000 ] ]
],
"LTLA" : [
[ 0, [ 3, 10, 15, 20, 35, 50, 100 ] ],
[ 5, [ 5, 10, 20, 35, 50, 100, 150 ] ],
[ 10, [ 10, 20, 35, 50, 75, 100, 150 ] ],
[ 15, [ 15, 25, 35, 50, 75, 100, 250 ] ],
[ 20, [ 20, 30, 50, 75, 100, 150, 250 ] ],
[ 25, [ 25, 35, 50, 75, 100, 150, 250 ] ],
[ 35, [ 25, 50, 75, 100, 200, 250, 300 ] ],
[ 75, [ 25, 50, 75, 100, 200, 300, 500 ] ],
[ 100, [ 25, 50, 100, 150, 250, 500, 1000 ] ],
[ 150, [ 50, 100, 150, 200, 350, 500, 1000 ] ],
[ 200, [ 100, 150, 200, 300, 400, 500, 1000 ] ],
[ 500, [ 100, 250, 500, 750, 1000, 1500, 2000 ] ],
[ 1000, [ 500, 1000, 2000, 2500, 3000, 4000, 5000 ] ]
],
"midtier2018" : [
Line 429 ⟶ 304:
]
},
"EUR" : [ // also used for GBP
[ 0, [ 2, 5, 10, 20, 25, 35, 50 ] ],
[ 5, [ 5, 10, 15, 20, 35, 50, 100 ] ],
[ 10, [ 10, 15, 20, 25, 35, 50, 100 ] ],
[ 15, [ 15, 20, 25, 35, 50, 75, 100 ] ],
[ 20, [ 20, 25, 35, 50, 75, 100, 150 ] ],
[ 25, [ 25, 30, 40, 50, 75, 100, 150 ] ],
[ 35, [ 35, 50, 75, 100, 200, 300, 500 ] ],
[ 50, [ 50, 75, 100, 200, 300, 500, 750 ] ],
[ 75, [ 75, 100, 150, 250, 500, 750, 1000 ] ],
[ 100, [ 100, 150, 250, 500, 750, 1000, 2500 ] ],
[ 150, [ 150, 200, 300, 500, 750, 1000, 2000 ] ],
[ 200, [ 200, 300, 500, 750, 1000, 2500, 5000 ] ],
[ 500, [ 500, 750, 1000, 2500, 5000, 7500, 10000 ] ],
[ 1000, [ 1000, 2000, 3000, 4000, 5000, 7500, 10000 ] ],
[ 3000, [ 3000, 4000, 5000, 6000, 7500, 10000, 12000 ] ]
],
"JPY" : [
[ 0, [ 500, 1000, 2000, 2500, 4000, 5000, 10000 ] ],
Line 442 ⟶ 334:
],
"SEK" : [
[ 0, [ 2030, 50100, 100150, 200, 300500, 500750, 1000 ] ],
[ 3050, [ 30, 50, 100, 150, 200, 300, 500750, 1000 ] ],
[ 50, [ 50, 100, 150, 200, 300, 500, 1000 ] ],
[ 200, [ 50, 100, 200, 300, 500, 750, 1000 ] ]
]
Line 450 ⟶ 341:
radioAmountsData.AUD = radioAmountsData.USD;
radioAmountsData.CAD = radioAmountsData.USD;
radioAmountsData.GBP = radioAmountsData.USD;
radioAmountsData.NZD = radioAmountsData.USD;
 
radioAmountsData.EUR = radioAmountsData.USD;
radioAmountsData.GBP = radioAmountsData.EUR;
 
var appealAmountsData = {
"USD" : [ // also used for CAD, AUD, NZD, GBP, EUR
Line 632 ⟶ 523:
'PT' : 'vmaj',
'SK' : 'vmaj',
'GR' : 'vma',
// Others
'CZ' : 'vmad',
Line 680 ⟶ 572:
 
var params = {};
 
params.currency = donationForm.currency;
params.country = donationForm.country;
Line 694 ⟶ 586:
params.payment_method = paymentMethod;
}
 
if ( params.payment_method === 'cc' && params.country === 'ZA' ) {
params.gateway = 'astropay';
Line 776 ⟶ 668:
uri = new mw.Uri('https://payments.wikimedia.org/index.php/Special:AdyenCheckoutGateway');
}
 
// Skip form chooser for Venmo
if ( params.payment_method === 'venmo' ) {
Line 785 ⟶ 677:
 
// Tracking data
params.utm_mediumwmf_medium = mw.util.getParamValue( 'wmf_medium' ) || mw.util.getParamValue( 'utm_medium' );
params.utm_campaignwmf_campaign = mw.util.getParamValue( 'wmf_campaign' ) || mw.util.getParamValue( 'utm_campaign' );
params.utm_sourcewmf_source = donationForm.buildUtmSourcebuildTrackingSource( params );
params.utm_keywmf_key = donationForm.buildUtmKeybuildTrackingKey( donationForm.extraData );
if ( document.referrer ) { // TODO: do we need this?
// Strip protocol to stop firewall complaining
Line 805 ⟶ 697:
 
/**
* Build a utm_sourcewmf_source value, including the landing page info.
*
* Own function so it can be overriden for weird tests
*
* @param {Object} params
* @return {string} utm_sourcewmf_source
*/
donationForm.buildUtmSourcebuildTrackingSource = function( params ) {
 
var utm_sourcewmf_source = mw.util.getParamValue( 'utm_sourcewmf_source' ) +|| 'mw.util.getParamValue( 'utm_source' );
wmf_source += '.';
 
var fullDottedPaymentMethod = params.payment_method;
Line 834 ⟶ 727:
 
/* The landing page info, separated by ~. This mostly exists for legacy reasons */
utm_sourcewmf_source += getParam( 'template' , 'Lp-layout' , 'default' ) + '~';
utm_sourcewmf_source += getParam( 'appeal-template' , 'Appeal-template-' , 'default' ) + '~';
utm_sourcewmf_source += getParam( 'appeal' , 'Appeal-' , 'default' ) + '~';
utm_sourcewmf_source += getParam( 'form-template' , 'Form-template-' , 'default' ) + '~';
utm_sourcewmf_source += getParam( 'form-countryspecific', 'Form-countryspecific-', 'control' );
 
utm_sourcewmf_source += '.' + fullDottedPaymentMethod;
 
return utm_sourcewmf_source;
 
};
 
/**
* Build a string for utm_keywmf_key from extra tracking data
*
* @param {Object} data
* @return {string} utm_keywmf_key
*/
donationForm.buildUtmKeybuildTrackingKey = function(data) {
var existingUtmKeyexistingKey = mw.util.getParamValue( 'wmf_key' ) || mw.util.getParamValue( 'utm_key' ),
dataArray = [];
 
if ( existingUtmKeyexistingKey ) {
dataArray.push( existingUtmKeyexistingKey );
}
for (var key in data) {
Line 1,017 ⟶ 910:
'UAH' : 10,
'ZAR' : 5,
// Latin America // Updated 2023-01-17 to approx 0.35 USD equivalent
'BRL' : 21.75,
'ARS' : 32,
'CLP' : 255322,
'COP' : 13001385,
'MXN' : 7.46,
'PEN' : 1.3,
'UYU' : 1513.57
};
 
Line 1,124 ⟶ 1,017:
/**
* Format an amount for a given locale
*
* 2 decimal places if it has a fractional part, 0 if not
* Note this doesn't include any currency symbol
*
* @param {number} amount
* @param {string} locale To determine correct separators
Line 1,367 ⟶ 1,260:
$('#frequency_onetime').prop('checked', true);
$('.frequency-options, #cancel-monthly, #donate-recurring-smallprint').hide();
}
 
if ( donationForm.noRecurringPaypalCountries.indexOf( donationForm.country ) !== -1 ) {
$( '.paymentmethod-pp, .paymentmethod-pp-usd' ).addClass( 'not-monthly-capable' );
}
 
Line 1,372 ⟶ 1,269:
 
// Only show Amazon for links from Ways to give
// TODO: remove utm_source when Ways to give has been updated
if (
if (
mw.util.getParamValue( 'utm_source' ) === 'Waystogive' ||
mw.util.getParamValue( 'utm_sourcewmf_source' ) === 'Ways_to_GiveWaystogive' ||
mw.util.getParamValue( 'wmf_source' ) === 'Ways_to_Give'
) {
$('.paymentmethod-amazon').show();
}
 
Line 1,385 ⟶ 1,283:
}
}
 
// Venmo browser check
if ( $('.paymentmethod-venmo').length > 0 ) {
if ( !donationForm.isVenmoSupported() || donationForm.country !== 'US' ) {
$('.paymentmethod-venmo').remove();
}
Line 1,408 ⟶ 1,306:
 
// Allow preselecting monthly
if (
mw.util.getParamValue('monthly')
&& mw.util.getParamValue('monthly') !== '0'
&& donationForm.noRecurringCountries.indexOf( donationForm.country ) === -1 ) {
&& donationForm.noRecurringCountries.indexOf( donationForm.country ) === -1
) {
$('#frequency_monthly').click();
}
Line 1,421 ⟶ 1,322:
}
finally {
$('.frb-monthly-pitch, .frb-monthly-pitch-thanks').appendTo('.frequency-options');
$('.ptf').appendTo('.amount-options');
$('.optin-options').insertAfter('.amount-options');