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.