1(function( $ ) { 2 'use strict'; 3 4 $(document).ready(function(){ 5 6 let lotteryDateOfBirthField = $('.ed-lottery-date-of-birth-field'); 7 let lotteryTopUpDonationFieldWrapper = $('.ed-lottery-top-up-donation-field'); 8 let lotteryTopUpDonationField = lotteryTopUpDonationFieldWrapper.find('input'); 9 let lotteryHiddenTopUpDonationField = $('.ed-lottery-hidden-top-up-donation-amount-field').find('input'); 10 let lotteryTopUpDonationAmountField = $('.ed-lottery-top-up-donation-amount-field').find('input'); 11 let lotterySelectPaymentFrequencyField = $('.ed-lottery-payment-frequency-field').find('select'); 12 let lotteryAmountField = $('.ed-lottery-amount-field'); // 3 fields, one calculates monthly, annual and the other for one off payments 13 let formWrapper = $('.gform_wrapper'); 14 let allTextInputs = formWrapper.find('input[type="text"]'); 15 let allSelects = formWrapper.find('select'); 16 let frequency = null; 17 18 if(lotteryTopUpDonationField.length) { 19 lotteryTopUpDonationField.change(function(){ 20 callTopUpDonation(); 21 }); 22 23 allTextInputs.change(function(){ 24 callTopUpDonation(); 25 }); 26 27 allSelects.change(function(){ 28 callTopUpDonation(); 29 }); 30 31 callTopUpDonation(); 32 } 33 34 function callTopUpDonation(){ 35 if( lotteryTopUpDonationFieldWrapper.closest( '.gform_page' ).length && ! lotteryTopUpDonationFieldWrapper.closest( '.gform_page' ).is( ':visible' ) ) { 36 return; 37 } 38 39 if(lotteryTopUpDonationFieldWrapper.find('input:checked').val() !== "Top-up my donation automatically") { 40 calcTopUpDonation(true); 41 } else { 42 calcTopUpDonation(); 43 } 44 } 45 46 if(lotteryDateOfBirthField.length) { 47 let datePickerField = lotteryDateOfBirthField.find('.datepicker'); 48 let userOverEighteen = false; 49 50 let raffleOrLottery = "lottery"; 51 if(lotteryDateOfBirthField.hasClass('ed-raffle-date-of-birth-field')) { 52 raffleOrLottery = "raffle"; 53 } 54 55 let firstNameField = $('.name_first'); 56 let lastNameField = $('.name_last'); 57 58 let errorParagraph = "" + 59 "<p class='ed-lottery-error-paragraph'>" + 60 "Sorry, but you must be at least 18 years old to sign up to the " + raffleOrLottery + "." + 61 "</p>"; 62 63 $(document).on('keyup', firstNameField, function(){ 64 validateLengthOfNameFields(firstNameField, lastNameField); 65 }); 66 67 $(document).on('keyup', lastNameField, function(){ 68 validateLengthOfNameFields(firstNameField, lastNameField); 69 }); 70 71 // $(document).on('change', datePickerField, function(){ 72 // validateDateField(userOverEighteen, datePickerField, errorParagraph); 73 // }); 74 75 // setInterval(function() { 76 // validateDateField(userOverEighteen, datePickerField, errorParagraph); 77 // }, 2000); 78 } 79 80 function validateDateField(userOverEighteen, datePickerField, errorParagraph) { 81 if(lotteryDateOfBirthField.is(':visible')) { 82 let birthDate = new Date(datePickerField.val()); 83 let submitButton = $('.gform_button'); 84 submitButton.prop("disabled", true); 85 submitButton.css('opacity', "0.2"); 86 87 if(isValidDate(birthDate)) { 88 let now = new Date(); 89 90 if(birthDate.getFullYear() < (now.getFullYear() - 18)){ 91 userOverEighteen = true; 92 } else if(birthDate.getFullYear() === (now.getFullYear() - 18)){ 93 if(birthDate.getMonth() < now.getMonth()){ 94 userOverEighteen = true; 95 } else if(birthDate.getMonth() === now.getMonth()) { 96 if(birthDate.getDate() <= now.getDate()) { 97 userOverEighteen = true; 98 } else { 99 userOverEighteen = false;
100 } 101 } else { 102 userOverEighteen = false; 103 } 104 } else { 105 userOverEighteen = false; 106 } 107 108 let displayedError = $('.ed-lottery-error-paragraph'); 109 if(!userOverEighteen && !displayedError.length) { 110 datePickerField.parent().append(errorParagraph); 111 submitButton.prop("disabled", true); 112 submitButton.css('opacity', "0.2"); 113 } else if(userOverEighteen) { 114 displayedError.remove(); 115 submitButton.removeAttr("disabled"); 116 submitButton.css('opacity', "1"); 117 } 118 } 119 } 120 } 121 122 if(lotterySelectPaymentFrequencyField.length) { 123 lotterySelectPaymentFrequencyField.on('change', function(){ 124 $('.ed-lottery-frequency-text-field').find('input').val($(this).val()); 125 frequency = $(this).val(); 126 127 //updatePlayValue(lotteryAmountField); 128 }); 129 } 130 131 if(lotteryTopUpDonationAmountField.length) { 132 lotteryTopUpDonationAmountField.keyup(function(){ 133 lotteryHiddenTopUpDonationField.val(lotteryTopUpDonationAmountField.val()); 134 }); 135 } 136 137 if(lotteryAmountField.length) { 138 lotteryAmountField.find('input').on('change', function(){ 139 140 $.each(lotteryAmountField, function(i, field){ 141 let parentField = $(field); 142 143 if( frequency == 'Monthly' && $(parentField).hasClass('total-monthly') ) 144 updatePlayValue(parentField); 145 else if( frequency == 'Annually' && $(parentField).hasClass('total-annual') ) 146 updatePlayValue(parentField); 147 }); 148 }); 149 } 150 151 function updatePlayValue(lottoField) { 152 let amount = $(lottoField).find('input').val(); 153 let amountParagraph = "" + 154 "<p class='ed-lottery-amount-display-paragraph'>" + 155 "Value of plays: " + amount + 156 "</p>"; 157 let amountParagraphDisplay = $('.ed-lottery-amount-display-paragraph'); 158 let insertAt = $('.ed-lottery-top-up-donation-field'); 159 160 let giftAidPaymentAmountField = $('.ed-gift-aid-purchase-amount'); 161 if(giftAidPaymentAmountField.length) { 162 giftAidPaymentAmountField.html('£' + amount); 163 giftAidPaymentAmountField.attr('data-amount', amount); 164 } 165 166 amountParagraphDisplay.remove(); 167 if(amount !== "£ 0.00" && amount !== "") { 168 $(amountParagraph).insertBefore(insertAt); 169 } 170 } 171 172 function isValidDate(d) { 173 return d instanceof Date && !isNaN(d); 174 } 175 176 function validateLengthOfNameFields(field1, field2){ 177 let field1Value = field1.find('input').val(); 178 let field2Value = field2.find('input').val(); 179 180 let displayedError = $('.ed-name-error-paragraph'); 181 let nameErrorParagraph = "" + 182 "<p class='ed-name-error-paragraph'>" + 183 "You must enter at least 2 characters for the first and last name fields." + 184 "</p>"; 185 186 let submitButton = $('.gform_button'); 187 submitButton.prop("disabled", true); 188 submitButton.css('opacity', "0.2"); 189 190 if((field1Value.length > 0 && field1Value.length < 2) || (field2Value.length > 0 && field2Value.length < 2)) { 191 if(!displayedError.length) { 192 field1.parent().append(nameErrorParagraph); 193 submitButton.prop("disabled", true); 194 submitButton.css('opacity', "0.2"); 195 } 196 } else { 197 displayedError.remove(); 198 submitButton.removeAttr("disabled"); 199 submitButton.css('opacity', "1"); 200 } 201 } 202 203 function roundupBy(x, by) { 204 if(x % by === 0) { 205 return x + by; 206 } 207 208 return Math.ceil(x/by)*by; 209 } 210 211 function calcTopUpDonation(preSelectedCalc = false){ 212 let topUpDonationType = lotteryTopUpDonationField.parent().find("input:checked").val(); 213 if(topUpDonationType === "Top-up my donation automatically" || preSelectedCalc) { 214 let lotteryAmount = false;
215 let amount = 0; 216 217 $.each(lotteryAmountField, function(key, value){ 218 if($(value).css("display") !== "none") { 219 amount = $(value).find('input').val(); 220 lotteryAmount = true; 221 } 222 }); 223 224 if(lotteryAmount) { 225 let formattedAmount = parseFloat(amount.substring(1, amount.length)); 226 227 // Monthly DD payment 228 let roundBy = 1; 229 let paymentFrequencyField = $('.ed-lottery-payment-frequency-field').find('select'); 230 let howManyNumbersField = $('.ed-lottery-how-many-numbers-field').find('select'); 231 let topUpAmount = 0; 232 233 if ((formattedAmount/howManyNumbersField.val()) === 2.17) { 234 topUpAmount = howManyNumbersField.val() * 0.33; 235 } else { 236 topUpAmount = howManyNumbersField.val() * 0.66; 237 } 238 239 if(paymentFrequencyField.val() === "Annually") { 240 // Annual DD payment 241 let howManyNumbers = howManyNumbersField.val(); 242 if ((formattedAmount/howManyNumbersField.val()) === 26) { 243 topUpAmount = howManyNumbers * 4; 244 } else { 245 topUpAmount = howManyNumbers * 8; 246 } 247 //alert(formattedAmount); 248 //alert(howManyNumbersField.val()); 249 // topUpAmount = howManyNumbers * 4; 250 } else if(paymentFrequencyField.val() === "") { 251 // One off payment 252 roundBy = 5; 253 let toppedUpAmount = roundupBy(formattedAmount, roundBy); 254 topUpAmount = toppedUpAmount - formattedAmount; 255 } 256 257 if(topUpAmount === 0) { 258 topUpAmount = topUpAmount + 0.5; 259 } 260 261 let topUpParagraph = "" + 262 "<p class='ed-top-up-donation-confirmation'>" + 263 "An automatic top-up donation of £" + 264 topUpAmount.toFixed(2) + 265 " will be applied." + 266 "</p>"; 267 268 let topUpParagraphPreSelect = "" + 269 "<p class='ed-top-up-donation-confirmation'>" + 270 "If selected, an automatic top-up donation of £" + 271 topUpAmount.toFixed(2) + 272 " will be applied." + 273 "</p>"; 274 275 lotteryHiddenTopUpDonationField.val('0.00'); 276 277 $('.ed-top-up-donation-confirmation').remove(); 278 279 if(!preSelectedCalc) { 280 // If top-up donation question is 'Top up automatically' 281 lotteryTopUpDonationField.closest('.gfield').append(topUpParagraph); 282 lotteryHiddenTopUpDonationField.val(topUpAmount.toFixed(2)); 283 } else if(topUpDonationType === "Enter a manual top-up donation") { 284 // If top-up donation question is 'Enter manually' 285 let manualAmount = parseFloat(lotteryTopUpDonationAmountField.val()); 286 lotteryHiddenTopUpDonationField.val(manualAmount.toFixed(2)); 287 } else { 288 // If top-up donation question is 'No' 289 $(topUpParagraphPreSelect).insertAfter(lotteryTopUpDonationFieldWrapper.find('.gfield_description')); 290 } 291 } 292 } else if(topUpDonationType === "No") { 293 lotteryHiddenTopUpDonationField.val('0.00'); 294 $('.ed-top-up-donation-confirmation').remove(); 295 } else { 296 $('.ed-top-up-donation-confirmation').remove(); 297 } 298 } 299 300 }); 301 302})( jQuery );
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.