Template:Validation.js: Difference between revisions

From Donate
Jump to navigation Jump to search
Content deleted Content added
minor formatting
Line 2: Line 2:
<script>
<script>
function validateForm(form){
function validateForm(form){
var amount = null;
var minimums = {
/* From https://github.com/wikimedia/wikimedia-fundraising-SmashPig/blob/master/PaymentData/ReferenceData/CurrencyRates.php */
'ADF' : 5.65,
'ADP' : 143,
'AED' : 3.67,
'AFA' : 73,
'AFN' : 73,
'ALL' : 109,
'AMD' : 477,
'ANG' : 1.79,
'AOA' : 278,
'AON' : 278,
'ATS' : 12,
'AUD' : 1.39,
'AWG' : 1.78,
'AZM' : 8486,
'AZN' : 1.7,
'BAM' : 1.69,
'BBD' : 2,
'BDT' : 83,
'BEF' : 35,
'BGL' : 1.69,
'BGN' : 1.69,
'BHD' : 0.38,
'BIF' : 1748,
'BMD' : 1,
'BND' : 1.38,
'BOB' : 6.8,
'BRL' : 4.15,
'BSD' : 1,
'BTN' : 72,
'BWP' : 11,
'BYR' : 21035,
'BZD' : 1.98,
'CAD' : 1.32,
'CDF' : 1573,
'CHF' : 0.98,
'CNY' : 6.83,
'CRC' : 572,
'CUC' : 1,
'CUP' : 25,
'CVE' : 95,
'CYP' : 0.51,
'CZK' : 22,
'DEM' : 1.69,
'DJF' : 178,
'DKK' : 6.42,
'DOP' : 50,
'DZD' : 118,
'ECS' : 24094,
'EEK' : 13,
'EGP' : 18,
'ESP' : 143,
'ETB' : 27,
'EUR' : 0.87,
'FIM' : 5.12,
'FJD' : 2.1,
'FKP' : 0.78,
'FRF' : 5.65,
'GBP' : 0.78,
'GEL' : 2.52,
'GHC' : 47467,
'GHS' : 4.75,
'GIP' : 0.78,
'GMD' : 48,
'GNF' : 8983,
'GRD' : 294,
'GTQ' : 7.5,
'GYD' : 204,
'HKD' : 7.85,
'HNL' : 24,
'HRK' : 6.4,
'HTG' : 68,
'HUF' : 282,
'IDR' : 14966,
'IEP' : 0.68,
'ILS' : 3.61,
'INR' : 72,
'IQD' : 1178,
'IRR' : 42000,
'ISK' : 109,
'ITL' : 1669,
'JMD' : 136,
'JOD' : 0.71,
'JPY' : 112,
'KES' : 100,
'KGS' : 69,
'KHR' : 4025,
'KMF' : 424,
'KPW' : 135,
'KRW' : 1120,
'KWD' : 0.31,
'KYD' : 0.84,
'KZT' : 369,
'LAK' : 8393,
'LBP' : 1508,
'LKR' : 162,
'LRD' : 154,
'LSL' : 15,
'LTL' : 2.98,
'LUF' : 35,
'LVL' : 0.61,
'LYD' : 1.37,
'MAD' : 9.39,
'MDL' : 17,
'MGA' : 3311,
'MGF' : 9150,
'MKD' : 53,
'MMK' : 1529,
'MNT' : 2460,
'MOP' : 8.08,
'MRO' : 357,
'MTL' : 0.37,
'MUR' : 33,
'MVR' : 15,
'MWK' : 717,
'MYR' : 4.15,
'MZM' : 59754,
'MZN' : 60,
'NAD' : 15,
'NGN' : 359,
'NIO' : 32,
'NLG' : 1.9,
'NOK' : 8.4,
'NPR' : 114,
'NZD' : 1.52,
'OMR' : 0.39,
'PAB' : 1,
'PEN' : 3.3,
'PGK' : 3.26,
'PHP' : 54,
'PKR' : 123,
'PLN' : 3.72,
'PTE' : 173,
'PYG' : 5763,
'QAR' : 3.57,
'ROL' : 39889,
'RON' : 3.99,
'RSD' : 101,
'RUB' : 68,
'RWF' : 862,
'SAR' : 3.75,
'SBD' : 7.6,
'SCR' : 13,
'SDD' : 1795,
'SDG' : 18,
'SDP' : 2261,
'SEK' : 9.08,
'SGD' : 1.38,
'SHP' : 0.78,
'SIT' : 207,
'SKK' : 26,
'SLL' : 8430,
'SOS' : 542,
'SRD' : 7.41,
'SRG' : 7408,
'STD' : 21070,
'SVC' : 8.75,
'SYP' : 215,
'SZL' : 15,
'THB' : 33,
'TJS' : 9.36,
'TMM' : 17050,
'TMT' : 3.41,
'TND' : 2.76,
'TOP' : 2.29,
'TRL' : 6629223,
'TRY' : 6.63,
'TTD' : 6.64,
'TWD' : 31,
'TZS' : 2281,
'UAH' : 28,
'UGX' : 3749,
'USD' : 1,
'UZS' : 7780,
'VEB' : 6050841136,
'VEF' : 6050841,
'VND' : 23150,
'VUV' : 111,
'WST' : 2.64,
'XAF' : 565,
'XCD' : 2.7,
'XOF' : 565,
'XPF' : 103,
'YER' : 250,
'YUN' : 101,
'ZAR' : 15,
'ZMK' : 5176,
'ZWD' : 373,
/* Astropay currencies have higher minimums - 1.50 USD */
'ARS' : 58.5,
'BRL' : 6.23,
'CLP' : 1035,
'COP' : 4640,
'MXN' : 28.5
};


var error = true;
var amount = null;
var minimums = {
/* From https://github.com/wikimedia/wikimedia-fundraising-SmashPig/blob/master/PaymentData/ReferenceData/CurrencyRates.php */
'ADF' : 5.65,
'ADP' : 143,
'AED' : 3.67,
'AFA' : 73,
'AFN' : 73,
'ALL' : 109,
'AMD' : 477,
'ANG' : 1.79,
'AOA' : 278,
'AON' : 278,
'ATS' : 12,
'AUD' : 1.39,
'AWG' : 1.78,
'AZM' : 8486,
'AZN' : 1.7,
'BAM' : 1.69,
'BBD' : 2,
'BDT' : 83,
'BEF' : 35,
'BGL' : 1.69,
'BGN' : 1.69,
'BHD' : 0.38,
'BIF' : 1748,
'BMD' : 1,
'BND' : 1.38,
'BOB' : 6.8,
'BRL' : 4.15,
'BSD' : 1,
'BTN' : 72,
'BWP' : 11,
'BYR' : 21035,
'BZD' : 1.98,
'CAD' : 1.32,
'CDF' : 1573,
'CHF' : 0.98,
'CNY' : 6.83,
'CRC' : 572,
'CUC' : 1,
'CUP' : 25,
'CVE' : 95,
'CYP' : 0.51,
'CZK' : 22,
'DEM' : 1.69,
'DJF' : 178,
'DKK' : 6.42,
'DOP' : 50,
'DZD' : 118,
'ECS' : 24094,
'EEK' : 13,
'EGP' : 18,
'ESP' : 143,
'ETB' : 27,
'EUR' : 0.87,
'FIM' : 5.12,
'FJD' : 2.1,
'FKP' : 0.78,
'FRF' : 5.65,
'GBP' : 0.78,
'GEL' : 2.52,
'GHC' : 47467,
'GHS' : 4.75,
'GIP' : 0.78,
'GMD' : 48,
'GNF' : 8983,
'GRD' : 294,
'GTQ' : 7.5,
'GYD' : 204,
'HKD' : 7.85,
'HNL' : 24,
'HRK' : 6.4,
'HTG' : 68,
'HUF' : 282,
'IDR' : 14966,
'IEP' : 0.68,
'ILS' : 3.61,
'INR' : 72,
'IQD' : 1178,
'IRR' : 42000,
'ISK' : 109,
'ITL' : 1669,
'JMD' : 136,
'JOD' : 0.71,
'JPY' : 112,
'KES' : 100,
'KGS' : 69,
'KHR' : 4025,
'KMF' : 424,
'KPW' : 135,
'KRW' : 1120,
'KWD' : 0.31,
'KYD' : 0.84,
'KZT' : 369,
'LAK' : 8393,
'LBP' : 1508,
'LKR' : 162,
'LRD' : 154,
'LSL' : 15,
'LTL' : 2.98,
'LUF' : 35,
'LVL' : 0.61,
'LYD' : 1.37,
'MAD' : 9.39,
'MDL' : 17,
'MGA' : 3311,
'MGF' : 9150,
'MKD' : 53,
'MMK' : 1529,
'MNT' : 2460,
'MOP' : 8.08,
'MRO' : 357,
'MTL' : 0.37,
'MUR' : 33,
'MVR' : 15,
'MWK' : 717,
'MYR' : 4.15,
'MZM' : 59754,
'MZN' : 60,
'NAD' : 15,
'NGN' : 359,
'NIO' : 32,
'NLG' : 1.9,
'NOK' : 8.4,
'NPR' : 114,
'NZD' : 1.52,
'OMR' : 0.39,
'PAB' : 1,
'PEN' : 3.3,
'PGK' : 3.26,
'PHP' : 54,
'PKR' : 123,
'PLN' : 3.72,
'PTE' : 173,
'PYG' : 5763,
'QAR' : 3.57,
'ROL' : 39889,
'RON' : 3.99,
'RSD' : 101,
'RUB' : 68,
'RWF' : 862,
'SAR' : 3.75,
'SBD' : 7.6,
'SCR' : 13,
'SDD' : 1795,
'SDG' : 18,
'SDP' : 2261,
'SEK' : 9.08,
'SGD' : 1.38,
'SHP' : 0.78,
'SIT' : 207,
'SKK' : 26,
'SLL' : 8430,
'SOS' : 542,
'SRD' : 7.41,
'SRG' : 7408,
'STD' : 21070,
'SVC' : 8.75,
'SYP' : 215,
'SZL' : 15,
'THB' : 33,
'TJS' : 9.36,
'TMM' : 17050,
'TMT' : 3.41,
'TND' : 2.76,
'TOP' : 2.29,
'TRL' : 6629223,
'TRY' : 6.63,
'TTD' : 6.64,
'TWD' : 31,
'TZS' : 2281,
'UAH' : 28,
'UGX' : 3749,
'USD' : 1,
'UZS' : 7780,
'VEB' : 6050841136,
'VEF' : 6050841,
'VND' : 23150,
'VUV' : 111,
'WST' : 2.64,
'XAF' : 565,
'XCD' : 2.7,
'XOF' : 565,
'XPF' : 103,
'YER' : 250,
'YUN' : 101,
'ZAR' : 15,
'ZMK' : 5176,
'ZWD' : 373,
/* Astropay currencies have higher minimums - 1.50 USD */
'ARS' : 58.5,
'BRL' : 6.23,
'CLP' : 1035,
'COP' : 4640,
'MXN' : 28.5
};


var error = true;
// Get amount selection

for ( var i = 0; i < form.amount.length; i++ ) {
if ( form.amount[i].checked ) {
// Get amount selection
amount = form.amount[i].value;
for ( var i = 0; i < form.amount.length; i++ ) {
if ( form.amount[i].checked ) {
amount = form.amount[i].value;
}
}
}
}


if ( form.input_amount_other_box.value != "" ) {
if ( form.input_amount_other_box.value != "" ) {
var otherAmount = form.input_amount_other_box.value;
var otherAmount = form.input_amount_other_box.value;
otherAmount = otherAmount.replace(/[,.](\d)$/, '\:$10');
otherAmount = otherAmount.replace(/[,.](\d)$/, '\:$10');
otherAmount = otherAmount.replace(/[,.](\d)(\d)$/, '\:$1$2');
otherAmount = otherAmount.replace(/[,.](\d)(\d)$/, '\:$1$2');
otherAmount = otherAmount.replace(/[\$£€¥,.]/g, '');
otherAmount = otherAmount.replace(/[\$£€¥,.]/g, '');
otherAmount = otherAmount.replace(/:/, '.');
otherAmount = otherAmount.replace(/:/, '.');
form.input_amount_other_box.value = otherAmount;
form.input_amount_other_box.value = otherAmount;
form.amountGiven.value = otherAmount;
form.amountGiven.value = otherAmount;
amount = otherAmount;
amount = otherAmount;
}
}


// Check amount is a real number
// Check amount is a real number
error = ( amount == null || isNaN( amount ) || amount.value <= 0 );
error = ( amount == null || isNaN( amount ) || amount.value <= 0 );
// Check amount is at least the minimum
// Check amount is at least the minimum
var currency = form.currency_code.value;
var currency = form.currency_code.value;
if ( typeof( minimums[currency] ) == 'undefined' ) {
if ( typeof( minimums[currency] ) == 'undefined' ) {
minimums[currency] = 1;
minimums[currency] = 1;
}
}
if ( error ) {
if ( error ) {
alert( "</html>{{int:donate_interface-amount-error}}<html>" );
alert( "</html>{{int:donate_interface-amount-error}}<html>" );
} else if ( amount < minimums[currency] ) {
} else if ( amount < minimums[currency] ) {
$( "#input_amount_other_box" ).val( '' );
$( "#input_amount_other_box" ).val( '' );
alert( "</html>{{int:donate_interface-smallamount-error}}<html>".replace('$1', (minimums[currency] + ' ' + currency) ) );
alert( "</html>{{int:donate_interface-smallamount-error}}<html>".replace('$1', (minimums[currency] + ' ' + currency) ) );
error = true;
error = true;
}
}

if ( amount > 10000*minimums[currency]) {
if ( amount > 10000*minimums[currency]) {
$( "#input_amount_other_box" ).val( '' );
$( "#input_amount_other_box" ).val( '' );
errorMessageLarge = "</html>{{int:Donate interface-bigamount-error}}<html>";
errorMessageLarge = "</html>{{int:Donate interface-bigamount-error}}<html>";
errorMessageLarge = errorMessageLarge.replace('$1',10000*minimums[currency]);
errorMessageLarge = errorMessageLarge.replace('$1',10000*minimums[currency]);
errorMessageLarge = errorMessageLarge.replace('$2',currency);
errorMessageLarge = errorMessageLarge.replace('$2',currency);
errorMessageLarge = errorMessageLarge.replace('$3','benefactors@wikimedia.org');
errorMessageLarge = errorMessageLarge.replace('$3','benefactors@wikimedia.org');
alert(errorMessageLarge);
alert(errorMessageLarge);
error = true;
error = true;
}
}


if ( form.opt_in ) {
if ( form.opt_in ) {
if ( $("input[name='opt_in']:checked").val() === undefined ) {
if ( $("input[name='opt_in']:checked").val() === undefined ) {
$('#error-optin').show();
$('#error-optin').show();
error = true;
error = true;
} else {
} else {
$('#error-optin').hide();
$('#error-optin').hide();
form.variant.value = 'emailExplain';
form.variant.value = 'emailExplain';
}
}
}
}


return !error;
return !error;
}
}
</script>
</script>

Revision as of 15:17, 28 March 2019

<html>
<script>
function validateForm(form){

    var amount = null;
    var minimums = {
        /* From https://github.com/wikimedia/wikimedia-fundraising-SmashPig/blob/master/PaymentData/ReferenceData/CurrencyRates.php */
        'ADF' : 5.65,
        'ADP' : 143,
        'AED' : 3.67,
        'AFA' : 73,
        'AFN' : 73,
        'ALL' : 109,
        'AMD' : 477,
        'ANG' : 1.79,
        'AOA' : 278,
        'AON' : 278,
        'ATS' : 12,
        'AUD' : 1.39,
        'AWG' : 1.78,
        'AZM' : 8486,
        'AZN' : 1.7,
        'BAM' : 1.69,
        'BBD' : 2,
        'BDT' : 83,
        'BEF' : 35,
        'BGL' : 1.69,
        'BGN' : 1.69,
        'BHD' : 0.38,
        'BIF' : 1748,
        'BMD' : 1,
        'BND' : 1.38,
        'BOB' : 6.8,
        'BRL' : 4.15,
        'BSD' : 1,
        'BTN' : 72,
        'BWP' : 11,
        'BYR' : 21035,
        'BZD' : 1.98,
        'CAD' : 1.32,
        'CDF' : 1573,
        'CHF' : 0.98,
        'CNY' : 6.83,
        'CRC' : 572,
        'CUC' : 1,
        'CUP' : 25,
        'CVE' : 95,
        'CYP' : 0.51,
        'CZK' : 22,
        'DEM' : 1.69,
        'DJF' : 178,
        'DKK' : 6.42,
        'DOP' : 50,
        'DZD' : 118,
        'ECS' : 24094,
        'EEK' : 13,
        'EGP' : 18,
        'ESP' : 143,
        'ETB' : 27,
        'EUR' : 0.87,
        'FIM' : 5.12,
        'FJD' : 2.1,
        'FKP' : 0.78,
        'FRF' : 5.65,
        'GBP' : 0.78,
        'GEL' : 2.52,
        'GHC' : 47467,
        'GHS' : 4.75,
        'GIP' : 0.78,
        'GMD' : 48,
        'GNF' : 8983,
        'GRD' : 294,
        'GTQ' : 7.5,
        'GYD' : 204,
        'HKD' : 7.85,
        'HNL' : 24,
        'HRK' : 6.4,
        'HTG' : 68,
        'HUF' : 282,
        'IDR' : 14966,
        'IEP' : 0.68,
        'ILS' : 3.61,
        'INR' : 72,
        'IQD' : 1178,
        'IRR' : 42000,
        'ISK' : 109,
        'ITL' : 1669,
        'JMD' : 136,
        'JOD' : 0.71,
        'JPY' : 112,
        'KES' : 100,
        'KGS' : 69,
        'KHR' : 4025,
        'KMF' : 424,
        'KPW' : 135,
        'KRW' : 1120,
        'KWD' : 0.31,
        'KYD' : 0.84,
        'KZT' : 369,
        'LAK' : 8393,
        'LBP' : 1508,
        'LKR' : 162,
        'LRD' : 154,
        'LSL' : 15,
        'LTL' : 2.98,
        'LUF' : 35,
        'LVL' : 0.61,
        'LYD' : 1.37,
        'MAD' : 9.39,
        'MDL' : 17,
        'MGA' : 3311,
        'MGF' : 9150,
        'MKD' : 53,
        'MMK' : 1529,
        'MNT' : 2460,
        'MOP' : 8.08,
        'MRO' : 357,
        'MTL' : 0.37,
        'MUR' : 33,
        'MVR' : 15,
        'MWK' : 717,
        'MYR' : 4.15,
        'MZM' : 59754,
        'MZN' : 60,
        'NAD' : 15,
        'NGN' : 359,
        'NIO' : 32,
        'NLG' : 1.9,
        'NOK' : 8.4,
        'NPR' : 114,
        'NZD' : 1.52,
        'OMR' : 0.39,
        'PAB' : 1,
        'PEN' : 3.3,
        'PGK' : 3.26,
        'PHP' : 54,
        'PKR' : 123,
        'PLN' : 3.72,
        'PTE' : 173,
        'PYG' : 5763,
        'QAR' : 3.57,
        'ROL' : 39889,
        'RON' : 3.99,
        'RSD' : 101,
        'RUB' : 68,
        'RWF' : 862,
        'SAR' : 3.75,
        'SBD' : 7.6,
        'SCR' : 13,
        'SDD' : 1795,
        'SDG' : 18,
        'SDP' : 2261,
        'SEK' : 9.08,
        'SGD' : 1.38,
        'SHP' : 0.78,
        'SIT' : 207,
        'SKK' : 26,
        'SLL' : 8430,
        'SOS' : 542,
        'SRD' : 7.41,
        'SRG' : 7408,
        'STD' : 21070,
        'SVC' : 8.75,
        'SYP' : 215,
        'SZL' : 15,
        'THB' : 33,
        'TJS' : 9.36,
        'TMM' : 17050,
        'TMT' : 3.41,
        'TND' : 2.76,
        'TOP' : 2.29,
        'TRL' : 6629223,
        'TRY' : 6.63,
        'TTD' : 6.64,
        'TWD' : 31,
        'TZS' : 2281,
        'UAH' : 28,
        'UGX' : 3749,
        'USD' : 1,
        'UZS' : 7780,
        'VEB' : 6050841136,
        'VEF' : 6050841,
        'VND' : 23150,
        'VUV' : 111,
        'WST' : 2.64,
        'XAF' : 565,
        'XCD' : 2.7,
        'XOF' : 565,
        'XPF' : 103,
        'YER' : 250,
        'YUN' : 101,
        'ZAR' : 15,
        'ZMK' : 5176,
        'ZWD' : 373,
        /* Astropay currencies have higher minimums - 1.50 USD */
        'ARS' : 58.5,
        'BRL' : 6.23,
        'CLP' : 1035,
        'COP' : 4640,
        'MXN' : 28.5
    };

    var error = true;

    // Get amount selection
    for ( var i = 0; i < form.amount.length; i++ ) {
        if ( form.amount[i].checked ) {
            amount = form.amount[i].value;
        }
    }

    if ( form.input_amount_other_box.value != "" ) {
        var otherAmount = form.input_amount_other_box.value;
        otherAmount = otherAmount.replace(/[,.](\d)$/, '\:$10');
        otherAmount = otherAmount.replace(/[,.](\d)(\d)$/, '\:$1$2');
        otherAmount = otherAmount.replace(/[\$£€¥,.]/g, '');
        otherAmount = otherAmount.replace(/:/, '.');
        form.input_amount_other_box.value = otherAmount;
        form.amountGiven.value = otherAmount;
        amount = otherAmount;
    }

    // Check amount is a real number
    error = ( amount == null || isNaN( amount ) || amount.value <= 0 );
    // Check amount is at least the minimum
    var currency = form.currency_code.value;
    if ( typeof( minimums[currency] ) == 'undefined' ) {
        minimums[currency] = 1;
    }
    if ( error ) {
        alert( "</html>{{int:donate_interface-amount-error}}<html>" );
    } else if ( amount < minimums[currency] ) {
        $( "#input_amount_other_box" ).val( '' );
        alert( "</html>{{int:donate_interface-smallamount-error}}<html>".replace('$1', (minimums[currency] + ' ' + currency) ) );
        error = true;
    }

    if ( amount > 10000*minimums[currency]) {
        $( "#input_amount_other_box" ).val( '' );
        errorMessageLarge = "</html>{{int:Donate interface-bigamount-error}}<html>";
        errorMessageLarge = errorMessageLarge.replace('$1',10000*minimums[currency]);
        errorMessageLarge = errorMessageLarge.replace('$2',currency);
        errorMessageLarge = errorMessageLarge.replace('$3','benefactors@wikimedia.org');
        alert(errorMessageLarge);
        error = true;
    }

    if ( form.opt_in ) {
        if ( $("input[name='opt_in']:checked").val() === undefined ) {
            $('#error-optin').show();
            error = true;
        } else {
            $('#error-optin').hide();
            form.variant.value = 'emailExplain';
        }
    }

    return !error;
}
</script>
</html>