PageSourceSearch

https://www.greatnorthairambulance.co.uk/app/plugins/ed-lottery-sy…/js/ed-lottery-system-public.js?ver=1.3.5

js greatnorthairambulance.co.uk collected 2026-10-02 10:07:18 UTC 12,862 bytes, 302 lines download raw bytes

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.