PageSourceSearch

https://www.greatnorthairambulance.co.uk/app/plugins/ed-add-produc…asket-from-gravity-form-public.js?ver=1.4.1

js greatnorthairambulance.co.uk collected 2026-09-24 21:51:54 UTC 15,772 bytes, 323 lines download raw bytes

1(function( $ ) {
2	'use strict';
3
4    function BankAccountValidation_Interactive_Validate_v2_00(Key, AccountNumber, SortCode, directDebitSortCodeField, directDebitAccountNumberField, directDebitBankField, directDebitBranchField) {
5
6        let enteredBankName = directDebitBankField.find('input').val();
7        let enteredBranchName = directDebitBranchField.find('input').val();
8        let submitButton = $('.gform_button[value="Submit"]');
9
10        if(window.location.pathname === "/direct-debit/" && (enteredBankName === '' && enteredBranchName === '')){
11            $(submitButton).prop("disabled", true);
12            $(submitButton).css("opacity", "0.2");
13        }
14
15        let errorMessage = "" +
16            "<p class='ed-direct-debit-error-message'>" +
17            "We were unable to correctly verify your bank details - please contact us <a href='/our-work/contact/'>here</a> for assistance." +
18            "</p>";
19        let toAppendErrorMessage = $('#field_5_13');
20
21        $.getJSON("https://api.addressy.com/BankAccountValidation/Interactive/Validate/v2.00/json3.ws?callback=?", {
22                Key: Key,
23                AccountNumber: AccountNumber,
24                SortCode: SortCode
25            },
26            function (data) {
27                // Test for an error
28                if (data.Items.length === 1 && typeof(data.Items[0].Error) !== "undefined") {
29                    showErrorMessageAndScrollTo(toAppendErrorMessage, errorMessage);
30                    return false;
31                }
32                else {
33                    // Check if there were any items found
34                    if (data.Items.length === 0) {
35                        showErrorMessageAndScrollTo(toAppendErrorMessage, errorMessage);
36                        return false;
37                    }
38                    else {
39                        if(data.Items[0].IsDirectDebitCapable){
40                            $(submitButton).removeAttr('disabled');
41                            $(submitButton).css("opacity", "1");
42                            $('.ed-direct-debit-error-message').hide();
43                            directDebitSortCodeField.find('input').val(data.Items[0].CorrectedSortCode);
44                            directDebitAccountNumberField.find('input').val(data.Items[0].CorrectedAccountNumber);
45                            directDebitBankField.find('input').val(data.Items[0].Bank);
46                            directDebitBranchField.find('input').val(data.Items[0].Branch);
47                        } else {
48                            showErrorMessageAndScrollTo(toAppendErrorMessage, errorMessage);
49                            return false;
50                        }
51                    }
52                }
53            });
54
55        $(submitButton).click(function(){
56            setTimeout(function(){
57                $(submitButton).prop("disabled", true);
58                $(submitButton).css("opacity", "0.2");
59            }, 200);
60        });
61    }
62
63    function showErrorMessageAndScrollTo(toAppendErrorMessage, errorMessage){
64        let errorMessageParagraph = $('.ed-direct-debit-error-message');
65        let scrollToElement = '';
66
67        if(errorMessageParagraph.length > 0){
68            errorMessageParagraph.show();
69            scrollToElement = errorMessageParagraph;
70        } else {
71            $(toAppendErrorMessage).append(errorMessage);
72            scrollToElement = toAppendErrorMessage;
73        }
74
75        $('html, body').animate({
76            scrollTop: (scrollToElement.offset().top - 200)
77        }, 500);
78    }
79
80    function checkDirectDebitDetails(directDebitSortCodeField, directDebitAccountNumberField, directDebitBankField, directDebitBranchField){
81        let enteredSortCode = directDebitSortCodeField.find('input').val();
82        let enteredAccountNumber = directDebitAccountNumberField.find('input').val();
83        let enteredBankName = directDebitBankField.find('input').val();
84        let enteredBranchName = directDebitBranchField.find('input').val();
85        let errorMessage = $('.ed-direct-debit-error-message');
86
87        if(window.location.pathname === "/direct-debit/" && (enteredBankName === '' && enteredBranchName === '')){
88            let submitButton = $('.gform_button[value="Submit"]');
89            $(submitButton).prop("disabled", true);
90            $(submitButton).css("opacity", "0.2");
91        }
92
93        if(window.location.pathname === "/direct-debit/" && enteredSortCode !== '' && enteredAccountNumber !== '' && enteredBankName === '' && enteredBranchName === '' && !errorMessage.length) {
94            if((enteredSortCode.length === 6 || enteredSortCode.length === 8) && (enteredAccountNumber.length === 8)){
95                $(directDebitSortCodeField).attr('data-enteredSortCode', enteredSortCode);
96                $(directDebitAccountNumberField).attr('data-enteredAccNum', enteredAccountNumber);
97                BankAccountValidation_Interactive_Validate_v2_00("AD89-DP54-TY49-AP68", enteredAccountNumber, enteredSortCode, directDebitSortCodeField, directDebitAccountNumberField, directDebitBankField, directDebitBranchField);
98            }
99        }
100    }
101
102    function checkIfErrorMessageCanBeRemoved(directDebitSortCodeField, directDebitAccountNumberField){
103        let enteredSortCode = directDebitSortCodeField.find('input').val();
104        let enteredAccountNumber = directDebitAccountNumberField.find('input').val();
105
106        if(window.location.pathname === "/direct-debit/" && enteredSortCode !== '' && enteredAccountNumber !== '') {
107            if(enteredSortCode !== $(directDebitSortCodeField).attr('data-enteredSortCode') ||
108                enteredAccountNumber !== $(directDebitAccountNumberField).attr('data-enteredAccNum')) {
109                $('.ed-direct-debit-error-message').remove();
110            }
111        }
112    }
113
114    function checkPostCodeLocation(postCodeToCheck, collectionBoxPostCodeFieldInput, homePostCodeFieldInput, validPostCodes, collectionTinServiceFieldOptionToToggle){
115        postCodeToCheck = collectionBoxPostCodeFieldInput.val();
116
117        if(postCodeToCheck === '')
118            postCodeToCheck = homePostCodeFieldInput.val();
119
120        if(typeof postCodeToCheck !== 'undefined' && postCodeToCheck !== ''){
121            let match = false;
122            validPostCodes.forEach(function(element){
123                if(match === false){
124                    if(postCodeToCheck.toUpperCase().startsWith(element)){
125                        match = true;
126                    }
127                }
128            });
129
130            if(match === false) {
131                if(collectionTinServiceFieldOptionToToggle.val() === collectionTinServiceFieldOptionToToggle.parent().val()){
132                    collectionTinServiceFieldOptionToToggle.parent().val('');
133                }
134
135                collectionTinServiceFieldOptionToToggle.prop('disabled', true);
136                collectionTinServiceFieldOptionToToggle.parent().selectric("refresh");
137            } else {
138                collectionTinServiceFieldOptionToToggle.removeAttr('disabled');
139                collectionTinServiceFieldOptionToToggle.parent().selectric("refresh");
140            }
141        }
142
143    }
144
145	$(document).ready(function(){
146        let directDebitSortCodeField = $('.ed-direct-debit-sort-code-field');
147        let directDebitAccountNumberField = $('.ed-direct-debit-account-number-field');
148        let directDebitBankField = $('.ed-direct-debit-bank-field');
149        let directDebitBranchField = $('.ed-direct-debit-branch-field');
150
151        let collectionBoxPostCodeField = $('.ed-collection-box-post-code-field');
152        let collectionBoxPostCodeFieldInput = collectionBoxPostCodeField.find('.address_zip').find('input');
153        let homePostCodeField = $('.ed-home-post-code-field');
154        let homePostCodeFieldInput = homePostCodeField.find('.address_zip').find('input');
155        let collectionTinServiceField = $('.ed-collection-box-service-options-field');
156        let collectionTinServiceFieldInput = collectionTinServiceField.find('.ginput_container').find('select');
157        let collectionTinServiceFieldOptionToToggle = collectionTinServiceFieldInput.find('option[value="Serviced by charity (a charity representative will service your tin regularly throughout the year)"]');
158        let postCodeToCheck = '';
159
160        let isAdminUserFieldWrapper = $('.ed-is-admin-user-wrapper');
161
162        collectionTinServiceFieldOptionToToggle.prop('disabled', true);
163        let validPostCodes = ["CA1","CA10","CA11","CA12","CA13","CA14","CA15","CA16","CA17","CA18","CA19","CA2","CA20","CA21","CA22","CA23","CA24","CA25","CA26","CA27","CA28","CA3","CA4","CA5","CA6","CA7","CA8","CA9","CA95","DG16","DH1","DH2","DH3","DH4","DH5","DH6","DH7","DH8","DH9","DH97","DH98","DH99","DL1","DL10","DL11","DL12","DL13","DL14","DL15","DL16","DL17","DL2","DL3","DL4","DL5","DL6","DL7","DL8","DL9","LA10","LA11","LA12","LA13","LA14","LA15","LA16","LA17","LA18","LA19","LA20","LA21","LA22","LA23","LA5","LA6","LA7","LA8","LA9","NE1","NE10","NE11","NE12","NE13","NE15","NE16","NE17","NE18","NE19","NE2","NE20","NE21","NE22","NE23","NE24","NE25","NE26","NE27","NE28","NE29","NE3","NE30","NE31","NE32","NE33","NE34","NE35","NE36","NE37","NE38","NE39","NE4","NE40","NE41","NE42","NE43","NE44","NE45","NE46","NE47","NE48","NE49","NE5","NE6","NE61","NE62","NE63","NE64","NE65","NE66","NE67","NE7","NE70","NE71","NE8","NE82","NE83","NE85","NE88","NE9","NE92","NE98","NE99","SR1","SR2","SR3","SR4","SR5","SR6","SR7","SR8","SR9","TD12","TD15","TS1","TS10","TS11","TS12","TS13","TS14","TS15","TS16","TS17","TS18","TS19","TS2","TS20","TS21","TS22","TS23","TS24","TS25","TS26","TS27","TS28","TS29","TS3","TS4","TS5","TS6","TS7","TS8","TS9","YO21","YO22"];
164
165        $(document).on('change', directDebitSortCodeField, function(){
166            checkIfErrorMessageCanBeRemoved(directDebitSortCodeField, directDebitAccountNumberField);
167            checkDirectDebitDetails(directDebitSortCodeField, directDebitAccountNumberField, directDebitBankField, directDebitBranchField);
168        });
169
170        $(document).on('change', directDebitAccountNumberField, function(){
171            checkIfErrorMessageCanBeRemoved(directDebitSortCodeField, directDebitAccountNumberField);
172            checkDirectDebitDetails(directDebitSortCodeField, directDebitAccountNumberField, directDebitBankField, directDebitBranchField);
173        });
174
175        $(document).on('change', collectionBoxPostCodeFieldInput, function(){
176            checkPostCodeLocation(postCodeToCheck, collectionBoxPostCodeFieldInput, homePostCodeFieldInput, validPostCodes, collectionTinServiceFieldOptionToToggle);
177        });
178
179        $(document).on('change', homePostCodeFieldInput, function(){
180            checkPostCodeLocation(postCodeToCheck, collectionBoxPostCodeFieldInput, homePostCodeFieldInput, validPostCodes, collectionTinServiceFieldOptionToToggle);
181        });
182
183        setInterval(function(){
184            checkIfErrorMessageCanBeRemoved(directDebitSortCodeField, directDebitAccountNumberField);
185            checkDirectDebitDetails(directDebitSortCodeField, directDebitAccountNumberField, directDebitBankField, directDebitBranchField);
186        }, 1000);
187
188        let bankHolidays = '';
189        let dateCustom = new Date();
190
191        $.ajax({
192            dataType: "json",
193            url: "https://www.gov.uk/bank-holidays.json",
194            async: false,
195            success: function(data){
196                bankHolidays = data;
197            }
198        });
199        let englandHolidays = bankHolidays["england-and-wales"];
200        let thisYearHolidays = [];
201
202        $.each(englandHolidays["events"], function(key, value){
203            if(value["date"].indexOf(dateCustom.getFullYear()) !== -1) {
204                thisYearHolidays.push(englandHolidays["events"][key]);
205            }
206        });
207
208        let alterDatePickerInputsTwoWeekBlock = [
209            $('#input_17_12'),
210            $('#input_18_15')
211        ];
212
213        let alterDatePickerInputs3Days = [
214            $('#input_27_10'),
215            $('#input_28_30'),
216            $('#input_66_18')
217        ];
218
219        $.each(alterDatePickerInputsTwoWeekBlock, function(key, value){
220            if(value.length && !$('body').hasClass('staff-logged-in')) {
221                let minDateVal = 14;
222                value.datepicker({
223                    minDate: minDateVal,
224                    beforeShowDay: nonWorkingDatesAllowBHAndWeekends,
225                    dateFormat: 'dd/mm/yy'
226                });
227            }
228
229        });
230
231        $.each(alterDatePickerInputs3Days, function(key, value){
232            if(value.length && !$('body').hasClass('staff-logged-in')) {
233                let minDateVal = 3;
234                value.datepicker({
235                    minDate: minDateVal,
236                    beforeShowDay: nonWorkingDatesAllowBHAndWeekends,
237                    dateFormat: 'dd/mm/yy'
238                });
239            }
240
241        });
242
243        function nonWorkingDates(date){
244
245            var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
246            var closedDates = [];
247            $.each(thisYearHolidays, function(key, value){
248                let valueDate = new Date(value["date"]);
249                closedDates.push([valueDate.getMonth() + 1, valueDate.getDate(), valueDate.getFullYear()]);
250            });
251            //var closedDays = [[Sunday], [Saturday]];
252            var closedDays = [];
253            for (var i = 0; i < closedDays.length; i++) {
254                if (day === closedDays[i][0]) {
255                    return [false];
256                }
257
258            }
259
260            for (i = 0; i < closedDates.length; i++) {
261                if (date.getMonth() === closedDates[i][0] - 1 &&
262                    date.getDate() === closedDates[i][1] &&
263                    date.getFullYear() === closedDates[i][2]) {
264                    return [false];
265                }
266            }
267
268            return [true];
269        }
270
271        function nonWorkingDatesNoWeekends(date){
272
273            var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
274            var closedDates = [];
275            $.each(thisYearHolidays, function(key, value){
276                let valueDate = new Date(value["date"]);
277                closedDates.push([valueDate.getMonth() + 1, valueDate.getDate(), valueDate.getFullYear()]);
278            });
279            var closedDays = [[Sunday], [Saturday]];
280            for (var i = 0; i < closedDays.length; i++) {
281                if (day === closedDays[i][0]) {
282                    return [false];
283                }
284
285            }
286
287            for (i = 0; i < closedDates.length; i++) {
288                if (date.getMonth() === closedDates[i][0] - 1 &&
289                    date.getDate() === closedDates[i][1] &&
290                    date.getFullYear() === closedDates[i][2]) {
291                    return [false];
292                }
293            }
294
295            return [true];
296        }
297
298        function nonWorkingDatesAllowBHAndWeekends(date){
299
300            var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
301            var closedDates = [];
302            var closedDays = [];
303            for (var i = 0; i < closedDays.length; i++) {
304                if (day === closedDays[i][0]) {
305                    return [false];
306                }
307
308            }
309
310            for (i = 0; i < closedDates.length; i++) {
311                if (date.getMonth() === closedDates[i][0] - 1 &&
312                    date.getDate() === closedDates[i][1] &&
313                    date.getFullYear() === closedDates[i][2]) {
314                    return [false];
315                }
316            }
317
318            return [true];
319        }
320
321	});
322
323})( 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.