1// -------------------------------------------------------------------------------------------------------------------------------------------- 2// POSTCODES4U JavaScript 3// ====================================================================================== 4// Updated 06/02/2019 5// GF Issue Fixed 18/02/19 6// CF7 Single Line Address Issue Fixed 7// New 'No County' option 8// Modified to work with Material Design Framework & 9// with-woocommerce-checkout-manager 10// Version 9. (1.5.9) 30/03/2020 11// 12// Version 10. (1.5.10) - 18/05/2020 13// Modified for work with Select2 JQuery select boxes 14// 15// Version 1.111. (1.5.11) - 06/01/2021 16// Modified for work CF7 Conditional Fields - repeating fields 17// 18// Version 1.112+13 - Internal Test Versions 19// 20// Version 14. (1.5.14) - 22/03/2021 21// Tided up Error Handling 22// 23// Version 15. (1.5.15) Jquery not available enhancements 25/04/2021 24// 25// Version 16. (1.5.16) Added Show Postcode Lookup Warning Messages Option 20/07/2021 26// 27// Version 17. (1.5.17) Updated GF Form Show Hidden Address Option and Custom Button Labels 30/07/2021 28// 29// Version 18. (1.5.18) Updated CF for Multiple Addresses (CF7 5.8 Issue) - Add AdHoc AddressLine and Address Block Fields 14/08/2023 30// 31// Version 19. (1.5.19) Updated CF for Multiple Addresses (CF7 5.8 Issue) - Add AdHoc AddressLine and Address Block Fields 14/08/2023 32 33// Version 20 (1.6.0) Use Ajax Calls to Postcodes4u Webservice - No Postcodes4u Username and Key on Form Integrations 2026.07.24 34// 35// Version 21 (1.6.1) Updated to Ajax Call changes, Fix/Enhance Ajax Call Error Handling and Alerts, Tidy Up Code. 2026.07.26 36// 37// Version 22 (1.6.2) Updated to Ajax Call changes, Fix Outstanding WooCommerce issues and Tidy Ajax Calls/Paths (lower case). 2026.07.27 38// -------------------------------------------------------------------------------------------------------------------------------------------- 39 40// Public Variables 41var pc4uCallingFormCode = ""; 42var pc4uFormPostcodeFieldId = ""; 43var pc4uFormPostcodeFieldName = ""; 44var pc4uFieldObjectForPostcode = null; 45// General Field Data for 'AdHoc' Lookup Call 46var pc4uFormAddressCompanyFieldId = ""; 47var pc4uFormAddressLine1FieldId = ""; 48var pc4uFormAddressLine2FieldId = ""; 49var pc4uFormAddressLine3FieldId = ""; 50var pc4uFormAddressTownFieldId = ""; 51var pc4uFormAddressCountyFieldId = ""; 52// Address Line and Block KRF 2023.08.14 53var pc4uFormAddressLineFieldId = ""; 54var pc4uFormAddressBlockFieldId = ""; 55 56// New Option To Show Postcode Lookup Warnings. - KRF 2021.07.20 57var pc4uShowLookupWarnings = '0'; 58 59// New Option For custom Postcode dropdown message - KRF 2021.07.29 60var pc4uSelectAddressText = 'Select an address:'; 61 62// Address Summary Fields 63var pc4uFormAddressSummaryLineId = ""; 64var pc4uFormAddressSummaryBlockId = ""; 65 66// Address Country and Country Type 67var pc4uFormAddressNationCountryFieldId = ""; 68var pc4uFormAddressNationCountryType = "text"; // Defaults to text - other options are 'dropdown' and 'wp_dropdown' 69// Address Select Dropdown 70var pc4uFormAddressDropdownFieldId = ""; 71// Lookup Code - Source of Lookup 'CF7, 'WooCommerce' etc 72var pc4uLookupFormCode = ""; 73 74// =============================================== 75// Pc4uSearchBegin 76// =============== 77// Postcodes4u Lookup Called From Basic 'Blog' Form 78// Alert Messages Improved - KRF 2026-07-26 79// ================================================== 80function Pc4uSearchBegin() { 81 82 pc4uCallingFormCode = ""; 83 pc4uFormPostcodeFieldId = "pc4uPostcode"; 84 pc4uFormAddressDropdownFieldId = "pc4uDropdown"; 85 pc4uFormPostcodeFieldName = ""; 86 pc4uFieldObjectForPostcode = null; 87 var oPostcodeField = document.getElementById(pc4uFormPostcodeFieldId); 88 89 if(oPostcodeField) { 90 oPostcodeField.value.toUpperCase(); 91 92 pc4uPostcodeSearchBegin(oPostcodeField.value); 93 } else { 94 // Cannot Find Postcode Field 95 alert("POSTCODES4u FORM ERROR\n\nPostcode Search Call Invalid\n - No Postc
95ode Field Specified."); 96 97 // Ensure No Address Lookups are displayed 98 pc4uCallingFormCode = ""; 99 100 // Clear Advanced Form (CF7) Values 101 pc4uFormPostcodeFieldId = ""; 102 pc4uFormPostcodeFieldName =""; 103 pc4uFieldObjectForPostcode = null; 104 } 105} 106 107// =============================================== 108// Pc4uAdHocSearchBegin 109// ==================== 110// Postcodes4u Lookup Called From Gravity Form 111// Alert Messages Improved - KRF 2026-07-26 112// =============================================== 113function Pc4uAdHocSearchBegin(adhoc_postcode_fieldId, adhoc_dropdown_fieldId) { 114 115 pc4uCallingFormCode = "pc4uAdHocPostcode"; 116 pc4uFormPostcodeFieldId = adhoc_postcode_fieldId; 117 pc4uFormPostcodeFieldName = ""; 118 pc4uFieldObjectForPostcode = null; 119 pc4uFormAddressDropdownFieldId = adhoc_dropdown_fieldId; 120 // 121 var oPostcodeField = document.getElementById(pc4uFormPostcodeFieldId); 122 var oDropdownField = document.getElementById(pc4uFormAddressDropdownFieldId); 123 124 if(oPostcodeField && oDropdownField) { 125 pc4uPostcodeSearchBegin(oPostcodeField.value); 126 } else { 127 if(!oPostcodeField) { 128 // Cannot Find Postcode Field 129 alert("POSTCODES4u FORM ERROR\n\nPostcode Search Call Invalid\n - No Postcode Field Specified."); 130 } else { 131 alert("POSTCODES4u FORM ERROR\n\nPostcode Search Call Invalid\n - No Postcode Address 'Dropdown' Specified."); 132 } 133 // Ensure No Address Lookups are displayed 134 pc4uCallingFormCode = ""; 135 136 // Clear Advanced Form (CF7 & GF) Values 137 pc4uFormPostcodeFieldId = ""; 138 pc4uFormPostcodeFieldName =""; 139 pc4uFieldObjectForPostcode = null; 140 } 141} 142 143// =============================================== 144// Pc4uGfSearchBegin 145// ================= 146// Postcodes4u Lookup Called From Gravity Form 147// Alert Messages Improved - KRF 2026-07-26 148// =============================================== 149function Pc4uGfSearchBegin(grav_fieldId) { 150 151pc4uCallingFormCode = ""; 152 pc4uFormPostcodeFieldId = "pc4uPostcode"; 153 pc4uFormAddressDropdownFieldId = pc4uFormPostcodeFieldId + '_' + "pc4uGfDropdown"; 154 155 pc4uCallingFormCode = "pc4uGravPostcode"; 156 pc4uFormPostcodeFieldId = grav_fieldId; 157 pc4uFormPostcodeFieldName = ""; 158 pc4uFieldObjectForPostcode = null; 159 var oPostcodeField = document.getElementById(grav_fieldId + '_5'); 160 161 if(oPostcodeField) { 162 oPostcodeField.value.toUpperCase(); 163 164 pc4uPostcodeSearchBegin(oPostcodeField.value); 165 } else { 166 // Cannot Find Postcode Field 167 alert("POSTCODES4u GRAVITY FORM ERROR\n\nPostcode Search Call Invalid - No Postcode Field Specified."); 168 169 // Ensure No Address Lookups are displayed 170 pc4uCallingFormCode = ""; 171 172 // Clear Advanced Form (CF7 & GF) Values 173 pc4uFormPostcodeFieldId = ""; 174 pc4uFormPostcodeFieldName =""; 175 pc4uFieldObjectForPostcode = null; 176 } 177} 178 179// ===================================================== 180// Pc4uWooSearchBillingBegin 181// ========================= 182// Postcodes4u Lookup Called From WooCommerce Checkout 183// - Billing Address 184// Alert Messages Improved - KRF 2026-07-26 185// ===================================================== 186function Pc4uWooSearchBillingBegin() { 187 // Ensure Billing county is set to UK 188 var dCountry = document.getElementById("billing_country"); 189 if (dCountry == null || dCountry.value == "GB" || dCountry.value == null || dCountry.value == "") { 190 // Process WooCommerce Billing Postcode 191 pc4uCallingFormCode = "pc4uWooBilling"; 192 // Clear Advanced Form (CF7) Values 193 pc4uFormPostcodeFieldId = "billing_postcode"; 194 pc4uFormPostcodeFieldName =""; 195 pc4uFieldObjectForPostcode = null; 196 pc4uFormAddressDropdownFieldId ="pc4uWooBillingDropdown"; 197 198 var oPostcodeField = document.getElementById(pc4uFormPostcodeFieldId); 199 if(oPostcodeField) { 200 oPostcodeField.value.toUpperCase(); 201 pc4uPostcodeSearchBegin(oPostcodeField.value); 202 } else { 203 // Cannot Find Postcode Field 204 alert("POSTCODES4u WOOCOMMERCE BILLING FORM ERROR\n\nPostcode Search Call Invalid\n - No Postc
204ode Field Specified."); 205 206 // Ensure No Address Lookups are displayed 207 pc4uCallingFormCode = ""; 208 209 // Clear Advanced Form (CF7 & GF) Values 210 pc4uFormPostcodeFieldId = ""; 211 pc4uFormPostcodeFieldName =""; 212 pc4uFieldObjectForPostcode = null; 213 } 214 } else { 215 // Invalid Country 216 alert("POSTCODES4u WOOCOMMERCE BILLING FORM ERROR\n\nPostcode Search is only valid when the country is set as the UK."); 217 218 pc4uCallingFormCode = ""; 219 220 // Clear Advanced Form (CF7 & GF) Values 221 pc4uFormPostcodeFieldId = ""; 222 pc4uFormPostcodeFieldName =""; 223 pc4uFieldObjectForPostcode = null; 224 225 // Ensure No Address Lookups are displayed 226 var lookupDropdown = document.getElementById("pc4uWooBillingDropdown"); 227 228 // Use New 'Hide' Function KRF 2020.04.30 229 // -- Do Not Clear Dropdown 230 hidePc4uAddressDropdown(lookupDropdown, false); 231 } 232} 233 234// ==================================================== 235// Pc4uWooSearchShippingBegin 236// ========================== 237// Postcodes4u Lookup Called From WooCommerce Checkout 238// - Shipping Address 239// Alert Messages Improved - KRF 2026-07-26 240// ==================================================== 241function Pc4uWooSearchShippingBegin() { 242 // Ensure Shipping county is set to UK 243 var dCountry = document.getElementById("shipping_country"); 244 if (dCountry == null || dCountry.value == "GB" || dCountry.value == null || dCountry.value == "") { 245 // Process WooCommerce Shipping Postcode 246 pc4uCallingFormCode = "pc4uWooShipping"; 247 248 // Clear Advanced Form (CF7 & GF) Values 249 pc4uFormPostcodeFieldId = "shipping_postcode"; 250 pc4uFormPostcodeFieldName =""; 251 pc4uFieldObjectForPostcode = null; 252 pc4uFormAddressDropdownFieldId = "pc4uWooShippingDropdown"; 253 254 var oPostcodeField = document.getElementById(pc4uFormPostcodeFieldId); 255 if(oPostcodeField) { 256 oPostcodeField.value.toUpperCase(); 257 pc4uPostcodeSearchBegin(oPostcodeField.value); 258 } else { 259 // Cannot Find Postcode Field 260 alert("POSTCODES4u WOOCOMMERCE SHIPPING FORM ERROR\n\nPostcode Search Call Invalid - No Postcode Field Specified."); 261 262 // Ensure No Address Lookups are displayed 263 pc4uCallingFormCode = ""; 264 265 // Clear Advanced Form (CF7 & GF) Values 266 pc4uFormPostcodeFieldId = ""; 267 pc4uFormPostcodeFieldName =""; 268 pc4uFieldObjectForPostcode = null; 269 } 270 } else { 271 // Invalid Country 272 alert("POSTCODES4u WOOCOMMERCE SHIPPING FORM ERROR\n\nPostcode Search is only valid when the country is set as the UK."); 273 pc4uCallingFormCode = ""; 274 275 // Clear Advanced Form (CF7 && GF) Values 276 pc4uFormPostcodeFieldId = ""; 277 pc4uFormPostcodeFieldName =""; 278 pc4uFieldObjectForPostcode = null; 279 280 // Ensure No Address Lookups are displayed 281 var lookupDropdown = document.getElementById("pc4uWooShippingDropdown"); 282 if (lookupDropdown !== null) { 283 // Use New 'Hide' Function KRF 2020.04.30 284 // -- Do Not Clear Dropdown 285 hidePc4uAddressDropdown(lookupDropdown, false); 286 } 287 } 288} 289 290// =============================================== 291// Pc4uCF7SearchBegin 292// ================== 293// Postcodes4u Lookup Called From Contact Form 7
294// Added support for Multi Forms 295// Alert Messages Improved - KRF 2026-07-26 296// =============================================== 297function Pc4uCF7SearchBegin(cf7PostCodeFieldDiv, cf7PostCodeFieldSet, cf7PostCodeForm, cf7PostCodeTagName, cf7TagField) { 298 pc4uFieldObjectForPostcode = null; 299 var postcodeSearchValue = "" ; 300 301 // Process Contact Form 7 Postcode 302 pc4uCallingFormCode = "pc4uCF7Postcode"; 303 pc4uFormPostcodeFieldId = ""; 304 pc4uFormPostcodeFieldName = ""; 305 pc4uFormPostcodeDropdownFieldName = ""; 306 307 // Ensure Contact Form 7 Field Set 308 // Decode Postcode Field Id 309 if(cf7TagField) { 310 if(cf7TagField.id) { 311 pc4uFormPostcodeFieldId = cf7TagField.id; 312 pc4uFormPostcodeFieldName = cf7PostCodeTagName; 313 pc4uFieldObjectForPostcode = null; 314 cf7TagField.value.toUpperCase(); 315 postcodeSearchValue = cf7TagField.value; 316 } else { 317 // Check For Single Entry Array 318 if(cf7TagField.length == 1) { 319 pc4uFormPostcodeFieldId = cf7TagField["0"].id; 320 pc4uFormPostcodeFieldName = cf7TagField["0"].name; 321 pc4uFieldObjectForPostcode = null; 322 cf7TagField["0"].value.toUpperCase(); 323 postcodeSearchValue = cf7TagField["0"].value; 324 } 325 } 326 } 327 328 // Decode Postcode DropdownID 329 pc4uFormAddressDropdownFieldId = "pc4uCF7Dropdown"; 330 if(cf7PostCodeTagName) { 331 pc4uFormAddressDropdownFieldId = pc4uFormAddressDropdownFieldId + "_" + cf7PostCodeTagName; 332 } 333 334 // Check For Div Group 335 if(cf7PostCodeFieldDiv || cf7PostCodeFieldSet) { 336 if(cf7PostCodeFieldDiv) { 337 pc4uFieldObjectForPostcode = cf7PostCodeFieldDiv; 338 } else { 339 // Process Form/Fieldsets 340 pc4uFieldObjectForPostcode = cf7PostCodeFieldSet; 341 } 342 343 var oChildField = pc4uFieldObjectForPostcode.querySelectorAll("[id*='pc4upostcode']"); // Search for fields containing 344 if(oChildField && oChildField.length > 0) { 345 pc4uFormPostcodeFieldId = oChildField.id; 346 //pc4uFormPostcodeFieldId = "pc4upostcode" 347 pc4uFormPostcodeFieldName = "pc4upostcode"; 348 oChildField[0].value.toUpperCase(); 349 postcodeSearchValue = oChildField[0].value 350 } 351 352 // Get Dropdown 353 oChildField = pc4uFieldObjectForPostcode.querySelectorAll("[id*='pc4uCF7Dropdown']"); // Search for fields containing 354 if(oChildField && oChildField.length > 0) { 355 pc4uFormAddressDropdownFieldId = oChildField[0].id; 356 } 357 } 358 359 if(pc4uFormPostcodeFieldName === "") { 360 if(cf7PostCodeForm) { 361 oFieldElements = cf7PostCodeForm.elements; 362 if(oFieldElements && oFieldElements.length > 0) { 363 for (var i = 0; i < oFieldElements.length; i++) { 364 if(oFieldElements[i].id.indexOf("pc4upostcode") !== -1) { 365 pc4uFormPostcodeFieldId = oFieldElements[i].id; 366 pc4uFormPostcodeFieldName = "pc4upostcode"; 367 pc4uFieldObjectForPostcode = cf7PostCodeForm; 368 // 369 oFieldElements[i].value.toUpperCase(); 370 postcodeSearchValue = oFieldElements[i].value 371 break ; 372 } 373 } 374 } else { 375 // IE Compatability - Use QuerySelect 376 // 377 var oChildForm = cf7PostCodeForm.querySelectorAll("[id*='pc4upostcode']"); // Search for 'Includes' 378 if(oChildForm && oChildForm.length > 0) { 379 pc4uFormPostcodeFieldId = oChildForm[0].id; 380 // pc4uFormPostcodeFieldId = "pc4upostcode" 381 pc4uFormPostcodeFieldName = "pc4upostcode"; 382 pc4uFieldObjectForPostcode = cf7PostCodeForm; 383 384 oChildForm[0].value.toUpperCase(); 385 postcodeSearchValue = oChildForm[0].value 386 } 387 } 388 } 389 } 390 391 if(pc4uFormPostcodeFieldId || pc4uFormPostcodeFieldName) { 392 393 pc4uPostcodeSearchBegin(postcodeSearchValue); 394 } else { 395 // Invalid Field Tag 396 alert("POSTCODES4u CONTACT FORM 7 ERROR\n\nPostcode Search Call Invalid\n - No Postc
396ode Field Specified."); 397 398 // Ensure No Address Lookups are displayed 399 var lookupDropdown = null; 400 if(pc4uCf7PostcodeForm.elements && pc4uCf7PostcodeForm.elements.length > 0) { 401 lookupDropdown = pc4uCf7PostcodeForm.elements[pc4uFormAddressDropdownFieldId]; 402 } else { 403 // IE Compatability - Use QuerySelect 404 var oChildDrop = cf7PostCodeFieldSet.querySelectorAll("[id*='" + pc4uCF7Dropdown + "']"); // Search For 'Includes' 405 if(oChildDrop && oChildDrop.length > 0) { 406 lookupDropdown = oChildDrop[0]; 407 } 408 } 409 410 if(lookupDropdown) { 411 // Use New 'Hide' Function KRF 2020.04.30 412 // -- Do Not Clear Dropdown 413 hidePc4uAddressDropdown(lookupDropdown, false); 414 } 415 pc4uCallingFormCode = ""; 416 417 // Clear Advanced Form (CF7 & GF) Values 418 pc4uFormPostcodeFieldId = ""; 419 pc4uFormPostcodeFieldName =""; 420 pc4uFieldObjectForPostcode = null; 421 } 422} 423 424// =============================================== 425// pc4uPostcodeSearchBegin 426// Postcodes4u Lookup Common 'Start Search Process' 427// Generate Postcodes4u Search Request 428// Updated 2020.01.30 To Suppress Lookups 429// when no address selected 430// Updated 2026.07.24 - New Ajax Calls with 431// Hidden Key and Username 432// =============================================== 433function pc4uPostcodeSearchBegin( searchPostcode) { 434 var scriptTag = document.getElementById("postcodes4youelement"); 435 var headTag = document.getElementsByTagName("head").item(0); 436 var strUrl = ""; 437 438 var pc4uShowWarnings = '0'; 439 var pc4uSelectAddressDropdownText = "Select an address:"; 440 var searchError = false ; 441 442 443 // Get 'Show Warnings' Option 444 var oField = document.getElementById("pc4ushow_warnings"); 445 if(oField) { 446 pc4uShowWarnings = (oField.textContent).trim(); 447 } else { 448 oField = document.querySelector("[id^='pc4ushow_warnings']"); 449 //oField = document.querySelector("[data-orig_id='pc4ushow_warnings']"); 450 if(oField) { 451 pc4uShowWarnings = (oField.textContent).trim(); 452 } 453 } 454 pc4uShowLookupWarnings = pc4uShowWarnings; 455 456 // Get 'Select Address Dropdown' Text 457 var oField = document.getElementById("pc4uselect_text"); 458 if(oField) { 459 pc4uSelectAddressDropdownText = (oField.textContent).trim(); 460 } else { 461 oField = document.querySelector("[id^='pc4uselect_text']"); 462 //oField = document.querySelector("[data-orig_id='pc4ushow_warnings']"); 463 if(oField) { 464 pc4uSelectAddressDropdownText = (oField.textContent).trim(); 465 } 466 if(pc4uSelectAddressDropdownText == '') { 467 pc4uSelectAddressDropdownText = "Select an address:"; 468 } 469 } 470 471 pc4uSelectAddressText = pc4uSelectAddressDropdownText; 472 473 474 // Ensure Postcode is specified 475 if (searchPostcode !== null && searchPostcode != "" && searchPostcode.trim() != "") { 476 searchPostcode = searchPostcode.trim(); 477 478 // CALL AJAX - KRF 2026-07-06 479 jQuery.ajax({ 480 type : "POST", 481 // dataType : "json", 482 url : my_ajax_obj.ajax_url, 483 484 data : { 485 action: 'pc4u_searchpostcode', 486 nonce: my_ajax_obj.nonce, 487 security: my_ajax_obj.nonce, 488 postcode: searchPostcode 489 }, 490 success : function(response) { 491 Pc4uSearchEnd(response); 492 }, 493 494 error: function (xhr, ajaxOptions, thrownError) { 495 alert(xhr.status); 496 alert(thrownError); 497 }, 498 complete: function(){ 499 // alert("Complete"); 500 } 501 }); 502 } else { 503 // NO POSTCODE SPECIFIED 504 if(pc4uShowWarnings === '1') { 505 alert("POSTCODES4u SEARCH ERROR\n\n NO POSTCODE SPECIFIED"); 506 } 507 searchError = true; 508 } 509 510 // Display Hidden Gravity Form If Error 511 if(searchError) { 512 if (pc4uCallingFormCode == "pc4uGravPostcode") { 513 // If Gravity Form Ensure NOT Hidden 514 showPc4uGFHiddenAddress(pc4uFormPostcodeFieldId) 515 } 516 } 517} 518 519// ================================================================= 520// Pc4uSearchEnd 521// =============
522// Postcodes4u Lookup 'Return 'Callback' Function 523// Show matching Postcode Addresses Postcodes4u Search Request 524// Modified for 1.4.2 For Multiple CF7 Forms 525// Modified for 1.4.3 For Gravity Form 526// Modified for 1.6.0 New Ajax Calls - For Hidden Postcodes4u Key 527// and Username - Updated 2026.07.24 528// Modified for 1.6.1 Fix Error Checking/Reporting Issues 529// Updated 2026.07.26 530// ================================================================= 531function Pc4uSearchEnd(oResponse) { 532 var pc4uDropdownFieldID = "pc4uDropdown"; 533 var pc4uDropdownFieldName = ""; 534 var oForm = null; 535 var lookupDropdown; 536 var oResponseData ; 537 var noSearchResuts = false ; 538 var ajaxError = false ; 539 540 var errorMsg = ''; 541 542 // Decode Calling Form Code - Dropdown List Field 543 if (pc4uCallingFormCode == "pc4uWooBilling") { 544 pc4uDropdownFieldID = "pc4uWooBillingDropdown" 545 546 } else { 547 if (pc4uCallingFormCode == "pc4uWooShipping") { 548 pc4uDropdownFieldID = "pc4uWooShippingDropdown" 549 } else { 550 if(pc4uCallingFormCode == "pc4uCF7Postcode") { 551 pc4uDropdownFieldID = pc4uFormAddressDropdownFieldId 552 pc4uDropdownFieldName = "pc4uCF7Dropdown"; 553 oForm = pc4uFieldObjectForPostcode; 554 } else { 555 if (pc4uCallingFormCode == "pc4uGravPostcode") { 556 pc4uDropdownFieldID = pc4uFormPostcodeFieldId + '_' + "pc4uGfDropdown"; 557 } else { 558 if (pc4uCallingFormCode == "pc4uAdHocPostcode") { 559 pc4uDropdownFieldID = pc4uFormAddressDropdownFieldId; 560 561 } else { 562 if (pc4uCallingFormCode == "" ||pc4uCallingFormCode == "pc4u") { 563 pc4uDropdownFieldID = "pc4uDropdown"; 564 } 565 } 566 } 567 } 568 } 569 } 570 571 // Get Dropdown - Use Form Object If Provides (Initially for CF7) 572 if(oForm ) { 573 // Check Elements Object Exists (Modern Browser) 574 if(oForm.elements && oForm.elements.length > 0) { 575 lookupDropdown = oForm.elements[pc4uFormAddressDropdownFieldId]; 576 } else { 577 // Legacy Browser (IE) 578 var oLegacyObj = oForm.querySelectorAll("[id*='"+pc4uDropdownFieldID+"']"); 579 if(oLegacyObj && oLegacyObj.length > 0) { 580 lookupDropdown = oLegacyObj[0]; 581 } 582 } 583 } else { 584 lookupDropdown = document.getElementById(pc4uDropdownFieldID); 585 } 586 587 // Check For Error - Updated/Improved for V1.6+ Ajax Calls 588 if(CheckForAjaxError(oResponse, "POSTCODES4u SEARCH POSTCODE ERROR") === true ) { 589 590 // ERROR DETECTED 591 // Clear DropDown List 592 if(lookupDropdown) { 593 // Use New 'Hide' Function KRF 2020.04.30 594 // -- Clear Dropdown 595 hidePc4uAddressDropdown(lookupDropdown, true); 596 } 597 } else { 598 // NO ERROR DETECTED 599 oResponseData = oResponse.data; 600 601 // --- PROCESS VALID POSTCODE SEARCH RESPONSE -------- 602 // Return Address List 603 var addresslist = oResponse.data["Summaries"]; 604 605 //Check if there were any items found 606 if (addresslist.length == 0) { 607 // Clear DropDown List - ID HardCoded in Plugin 608 if(lookupDropdown) { 609 610 // Use New 'Hide' Function KRF 2020.04.30 611 // -- Clear Dropdown 612 hidePc4uAddressDropdown(lookupDropdown, true); 613 } 614 if(pc4uShowLookupWarnings === '1') { 615 alert("POSTCODES4u WARNING\n\n ** INVALID POSTCODE **\n\nNo matching items (addresses) found for postcode"); 616 } 617 noSearchResuts = true ; 618 } else { 619 try{ 620 lookupDropdown.innerHTML = ""; 621 lookupDropdown.options.add(new Option(pc4uSelectAddressText, "", true, true)); 622 for (var j = 0; j < addresslist.length; j++) { 623 lookupDropdown.options.add(new Option(addresslist[j].StreetAddress + ", " + addresslist[j].Place, addresslist[j].Id)); 624 } 625 626 // Use New 'Show' Pc4u Address Dropdown Function KRF 2020.04.30 627 showPc4uAddressDropdown(lookupDropdown); 628 } 629 catch (e) { 630 //Ignore unless Warnings On 631 if(pc4uShowLookupWarnings === '1') { 632 alert("POSTCODES4u WARNING\n\nSearchEnd Dropdown Error:"+ e.message); 633 } 634 } 635 } 636 } 637 638 if(noSearchResuts) {
639 var showAddressWhenComplete; 640 if (pc4uCallingFormCode == "pc4uGravPostcode") { 641 // Gravity Forms 642 showAddressWhenComplete = document.getElementById(pc4uFormPostcodeFieldId+"_pc4uGfPostcodeLookupAddress"); 643 644 // If Gravity Form Ensure NOT Hidden 645 if(showAddressWhenComplete) { 646 showAddressWhenComplete.style.display = ''; 647 } 648 } 649 } 650 // Clear Calling Form Details 651 pc4uCallingFormCode = ""; 652} 653 654// =========================================================== 655// Pc4uSearchIdGfBegin 656// =================== 657// Postcodes4u Lookup Contact Form 7 'Select Address Process' 658// Return Selected Address Details 659// =========================================================== 660function Pc4uSearchIdGfBegin() { 661 return Pc4uSearchIdBegin("pc4uGravPostcode"); 662} 663 664// =========================================================== 665// Pc4uSearchIdCf7Begin 666// ==================== 667// Postcodes4u Lookup Contact Form 7 'Select Address Process' 668// Return Selected Address Details 669// - Modified for 1.4.2 to work with Multiple Forms 670// =========================================================== 671function Pc4uSearchIdCf7Begin(cf7PostCodeFieldDiv, cf7PostCodeFieldSet, cf7PostCodeForm) { 672 return Pc4uFormSearchIdBegin(cf7PostCodeFieldDiv, cf7PostCodeFieldSet, cf7PostCodeForm,"pc4uCF7Postcode"); 673} 674 675// ============================================================== 676// Pc4uSearchIdAdHocBegin 677// ====================== 678// Postcodes4u Lookup Contact Form 7 'Select Address Process' 679// Return Selected Address Details 680// All Fields are Optional - Esp Country COuntry Type, 681// AddressLIne & AddressBlock 682// Updated KRF 23.08.14 Include Optional AddressLine and Block 683// Fields. 684// ============================================================== 685function Pc4uSearchIdAdHocBegin(addCompanyId, addAddress1Id, addAddress2Id, addAddress3Id, addAddressTownId, addAddressCountyId, addressNationCountryId, addressNationCountryType, addAddressLineId, addAddressBlockId) { 686 pc4uFormAddressCompanyFieldId = addCompanyId; 687 pc4uFormAddressLine1FieldId = addAddress1Id; 688 pc4uFormAddressLine2FieldId = addAddress2Id; 689 pc4uFormAddressLine3FieldId = addAddress3Id; 690 pc4uFormAddressTownFieldId = addAddressTownId; 691 pc4uFormAddressCountyFieldId = addAddressCountyId; 692 // Optional Country Display Options 693 pc4uFormAddressNationCountryFieldId = addressNationCountryId; 694 pc4uFormAddressNationCountryType = ""; 695 696 // Optional Address Line and Block Display Options 697 pc4uFormAddressLineFieldId = ""; 698 pc4uFormAddressBlockFieldId = ""; 699 // Country 700 if(pc4uFormAddressNationCountryFieldId){ 701 if(addressNationCountryType) { 702 pc4uFormAddressNationCountryType = addressNationCountryType; 703 } else { 704 pc4uFormAddressNationCountryType = "text"; 705 } 706 } 707 // Address Line 708 if(addAddressLineId) { 709 pc4uFormAddressLineFieldId = addAddressLineId; 710 } 711 712 // Address Block 713 if(addAddressBlockId) { 714 pc4uFormAddressBlockFieldId = addAddressBlockId; 715 } 716 717 return Pc4uSearchIdBegin("pc4uAdHocPostcode"); 718} 719 720// ==================================================== 721// Pc4uSearchIdBegin 722// ================= 723// Postcodes4u Lookup Common 'Select Address Process' 724// Return Selected Address Details 725// Updated 2020.01.30 TO Suppress Lookups 726// when no address selected 727// Updated 2026.07.24 - New Ajax Calls 728// - Hidden Pc4u Username and Key 729// Updated 2026.07.26 - New Ajax Calls Error Handling 730// updates. Plus Copy tidy up 731// ==================================================== 732function Pc4uSearchIdBegin(lookupcode) { 733 var pc4uDropdownFieldID = "pc4uDropdown"; 734 pc4uLookupFormCode = lookupcode; 735 736 if (pc4uLookupFormCode == "pc4uWooBilling") { 737 pc4uDropdownFieldID = "pc4uWooBillingDropdown"; 738 } else { 739 if (pc4uLookupFormCode == "pc4uWooShipping") { 740 pc4uDropdownFieldID = "pc4uWooShippingDropdown"; 741 } else { 742 if (pc4uLookupFormCode == "pc4uCF7Postcode") { 743 pc4uDropdownFieldID = "pc4uCF7Dropdown"; 744 }else { 745 if (pc4uLookupFormCode == "pc4uGravPostcode") { 746 pc4uDropdownFieldID = pc4uFormPostcodeFieldId + '_' + "pc4uGfDropdown"; 747 }else { 748 if (pc4uLookupFormCode == "pc4uAdHocPostcode") { 749 pc4uDropdownFieldID = pc4uFormAddressDropdownFieldId; 750 } else { 751 if (pc4uLookupFormCode == "" || (pc4uLookupFormCode == "pc4u")) { 752 pc4uDropdownFieldID = "pc4uDropdown"; 753 } 754 } 755 } 756 } 757 } 758 } 759 760 var AddrId = ""; 761 var pc4uShowWarnings = '0'; 762 763 var oField = document.getElementById(pc4uDropdownFieldID); 764 if(oField) { 765 AddrId = oField.value; 766 } 767 768 // Ensure Value id an Address ID 769 if(AddrId && !isNaN(AddrId)) { 770 771 // CALL AJAX - KRF 2026-07-24 772 jQuery.ajax({ 773 type : "POST", 774 // dataType : "json", 775 url : my_ajax_obj.ajax_url, 776 777 data : { 778 action: 'pc4u_selectaddress', 779 nonce: my_ajax_obj.nonce, 780 security: my_ajax_obj.nonce, 781 addressid: AddrId 782 }, 783 success : function(response) { 784 Pc4uSearchIdEnd(response); 785 }, 786 787 error: function (xhr, ajaxOptions, thrownError) { 788 alert(xhr.status); 789 alert(thrownError); 790 }, 791 complete: function(){ 792 // alert("Complete"); 793 } 794 }); 795 796 } else { 797 // NO ID - Assume Form Not Displayed - Ignore 798 } 799} 800 801 802 803// ==================================================== 804// Pc4uFormSearchIdBegin 805// =====================
806// Postcodes4u Lookup Common 'Select Address Process' 807// Return Selected Address Details 808// - Modified for 1.4.2 to work with Multiple Forms 809// Updated 2026.07.24 - New Ajax Calls 810// - Hidden Pc4u Username and Key 811// ==================================================== 812function Pc4uFormSearchIdBegin(cf7PostCodeFieldDiv, cf7PostCodeFieldSet, cf7PostCodeForm, lookupcode) { 813 var pc4uDropdownFieldID = "pc4uDropdown"; 814 var pc4uDropdownFieldName = ""; 815 var pc4ObjElements = null; 816 pc4uLookupFormCode = lookupcode; 817 818 var lookupDropdown; 819 820 if (pc4uLookupFormCode == "pc4uWooBilling") { 821 pc4uDropdownFieldID = "pc4uWooBillingDropdown"; 822 pc4uFieldObjectForPostcode = null; 823 lookupDropdown = document.getElementById(pc4uDropdownFieldID); 824 } else { 825 if (pc4uLookupFormCode == "pc4uWooShipping") { 826 pc4uDropdownFieldID = "pc4uWooShippingDropdown"; 827 pc4uFieldObjectForPostcode = null; 828 lookupDropdown = document.getElementById(pc4uDropdownFieldID); 829 } else { 830 if (pc4uLookupFormCode == "pc4uCF7Postcode") { 831 pc4uDropdownFieldID = pc4uFormAddressDropdownFieldId 832 pc4uDropdownFieldName = "pc4uCF7Dropdown"; 833 834 if(cf7PostCodeFieldDiv || cf7PostCodeFieldSet || cf7PostCodeForm) { 835 if(cf7PostCodeFieldDiv) { 836 pc4ObjElements = cf7PostCodeFieldDiv.querySelectorAll("*") 837 if(pc4ObjElements && pc4ObjElements.length > 0) { 838 //Legacy (IE) Browser Code - Use QuerySelect 839 var oFieldSetDrop = cf7PostCodeFieldDiv.querySelectorAll("[id*='"+pc4uDropdownFieldID+"']"); 840 if(oFieldSetDrop && oFieldSetDrop.length > 0) { 841 lookupDropdown = oFieldSetDrop[0]; 842 pc4uFieldObjectForPostcode = cf7PostCodeFieldDiv; 843 } 844 } 845 } 846 if(!lookupDropdown) { 847 if(cf7PostCodeFieldSet) { 848 //Legacy (IE) Browser Code - Use QuerySelect 849 var oFieldSetDrop = cf7PostCodeFieldSet.querySelectorAll("[id*='"+pc4uDropdownFieldID+"']"); 850 if(oFieldSetDrop && oFieldSetDrop.length > 0) { 851 lookupDropdown = oFieldSetDrop[0]; 852 pc4uFieldObjectForPostcode = cf7PostCodeFieldSet; 853 } 854 } 855 } 856 if(!lookupDropdown) { 857 if(cf7PostCodeForm) { 858 if(cf7PostCodeForm.elements && cf7PostCodeForm.elements.length > 0) { 859 // Modern Browser Code 860 lookupDropdown = cf7PostCodeForm.elements[pc4uDropdownFieldName]; 861 pc4uFieldObjectForPostcode = cf7PostCodeForm; 862 } else { 863 //Legacy (IE) Browser Code - Use QuerySelect 864 var oFormDrop = cf7PostCodeForm.querySelectorAll("[id*='"+pc4uDropdownFieldID+"']"); 865 if(oFormDrop && oFormDrop.length > 0) { 866 lookupDropdown = oFormDrop[0]; 867 pc4uFieldObjectForPostcode = cf7PostCodeForm; 868 } 869 } 870 } 871 } 872 } else { 873 pc4uFieldObjectForPostcode = null; 874 } 875 876 if(!lookupDropdown) { 877 // Last Change - Check Document 878 if(document.elements && document.elements.length > 0) { 879 lookupDropdown = document.elements(pc4uDropdownFieldName); 880 } else { 881 //Legacy (IE) Browser Code - Use QuerySelect 882 var oFormDrop = cf7PostCodeForm.querySelectorAll("[id*='"+pc4uDropdownFieldID+"']"); 883 if(oFormDrop && oFormDrop.length > 0) { 884 lookupDropdown = oFormDrop[0]; 885 } 886 } 887 } 888 } 889 } 890 } 891 892 var AddrId = lookupDropdown.value; 893 var pc4uShowWarnings = '0'; 894 895 // Ensure Value id an Address ID 896 if(AddrId && !isNaN(AddrId)) { 897 898 // CALL AJAX - KRF 2026-07-24 899 jQuery.ajax({ 900 type : "POST", 901 // dataType : "json", 902 url : my_ajax_obj.ajax_url, 903 904 data : { 905 action: 'pc4u_selectaddress', 906 nonce: my_ajax_obj.nonce, 907 security: my_ajax_obj.nonce, 908 addressid: AddrId 909 }, 910 success : function(response) { 911 Pc4uSearchIdEnd(response); 912 }, 913 914 error: function (xhr, ajaxOptions, thrownError) { 915 alert(xhr.status); 916 alert(thrownError); 917 }, 918 complete: function(){ 919 // alert("Complete"); 920 } 921 }); 922 } else { 923 // NO ID - Assume Form Not Displayed - Ignore 924 } 925} 926 927// ==================================================================== 928// Pc4uSearchIdEnd 929// ===============
930// Postcodes4u Lookup 'Single Address Select Return 'Callback' Function 931// Populate Relavant Address Form with Returned Details 932// Modified for 1.6.0 New Ajax Calls - For Hidden Postcodes4u Key 933// and Username - Updated 2026.07.24 934// Modified for 1.6.1 Fix Error Checking/Reporting Issues 935// Updated 2026.07.25 936// Updated 2026.07.26 - New Ajax Calls Error Handling 937// updates. Plus Copy tidy up 938// ==================================================================== 939function Pc4uSearchIdEnd(oResponse) { 940 941 var showGfAddressWhenComplete = document.getElementById(pc4uFormPostcodeFieldId+"_pc4uGfPostcodeLookupAddress"); 942 943 var oResponseData; 944 var ajaxError = false; 945 var errorMsg = ''; 946 947 // Check For Error - Updated/Improved for V1.6+ Ajax Calls 948 if(CheckForAjaxError(oResponse, "POSTCODES4u SELECT ADDRESS ERROR") === true ) { 949 950 // If Gravity Form Ensure NOT Hidden 951 if(showGfAddressWhenComplete) { 952 // 953 showGfAddressWhenComplete.style.display = "inline"; 954 } 955 } else { 956 // NO ERROR DETECTED - 957 // Decode Address Response 958 var oResponseData = oResponse.data; 959 if(oResponseData === null || oResponseData.length ===0) { 960 // Error 961 } else { 962 //Check if there were any items found 963 var pc4uAddressObg = oResponseData["Address"]; 964 } 965 966 if(pc4uAddressObg === null) { 967 968 // If Gravity Form Ensure NOT Hidden 969 if(showGfAddressWhenComplete) { 970 // 971 showGfAddressWhenComplete.style.display = "inline"; 972 } 973 } else { 974 // Decode Address 975 976 // Get Alt Address Format Setting 977 var altAddressFmt = ""; 978 var altAddressFmtElement = document.getElementById('pc4ualt_address_disp'); 979 if (altAddressFmtElement != null && altAddressFmtElement.value != '') { 980 altAddressFmt = altAddressFmtElement.textContent; 981 } 982 // Get County Value Setting 983 var countyDisp = ""; 984 var countyNameElement = document.getElementById('pc4ucounty_disp'); 985 if (countyNameElement != null && countyNameElement.value != '') { 986 countyDisp = countyNameElement.textContent; 987 } 988 989 // Decode Calling Form Code - Dropdown List Field 990 if (pc4uLookupFormCode == "pc4uWooBilling") { 991 // Woo Commerce Billing 992 Pc4uProcessWooBillingAddress(pc4uAddressObg, altAddressFmt, countyDisp); 993 994 } else { 995 if (pc4uLookupFormCode == "pc4uWooShipping") { 996 // Woo Commerce Shipping 997 Pc4uProcessWooShippingAddress(pc4uAddressObg, altAddressFmt, countyDisp); 998 999 } else { 1000 if (pc4uLookupFormCode == "pc4uCF7Postcode") { 1001 // Contact Form 7 1002 Pc4uProcessCf7Address(pc4uAddressObg, altAddressFmt, countyDisp); 1003 1004 } else { 1005 if (pc4uLookupFormCode == "pc4uGravPostcode") { 1006 // Gravity Form 1007 Pc4uProcessGravAddress(pc4uAddressObg, altAddressFmt, countyDisp); 1008 } else { 1009 if (pc4uLookupFormCode == "pc4uAdHocPostcode") { 1010 // 'AdHoc' Postcode - Fields Specified 1011 Pc4uProcessAdHocAddress(pc4uAddressObg, altAddressFmt, countyDisp); 1012 } else { 1013 // Default Form (3x) 1014 Pc4uProcess3xAddress( pc4uAddressObg, altAddressFmt, countyDisp); 1015 } 1016 } 1017 } 1018 } 1019 } 1020 } 1021 } 1022} 1023 1024// ==================================================================== 1025// Pc4uProcessWooBillingAddress 1026// ============================ 1027// Populate #WooCommerce Billing Address 1028// with Returned Address Details 1029// ==================================================================== 1030function Pc4uProcessWooBillingAddress( respAddress, addressFmt, countyDisp) { 1031 // Woo Commerce Billing Form 1032 var companyFieldFound = false ; 1033 var townFieldFound = false ; 1034 1035 // Address Components 1036 var addressCompany = ""; 1037 var addressLine1 = ""; 1038 var addressLine2 = ""; 1039 var addressLine3 = ""; 1040 var addressTown = ""; 1041 var addressCounty = ""; 1042 var addressPostcode = ""; 1043 1044 // WooCommerce Billing Form - Fields 1045 var addresssCompanyField ; 1046 var addressLine1Field ; 1047 var addressLine2Field ; 1048 var addressLine3Field ; 1049 var addressTownField ; 1050 var addressCountyField ; 1051 var addressPostcodeField ; 1052 var addressCountryField ; 1053 1054 // Get Company & Town Fields 1055 addresssCompanyField = document.getElementById("billing_company"); 1056 if(addresssCompanyField) { 1057 companyFieldFound = true ; 1058 } 1059 addressTownField = document.getElementById("billing_city"); 1060 if(addressTownField) { 1061 townFieldFound = true ; 1062 } 1063 1064 // Get Remaining Address Fields 1065 addressLine1Field = document.getElementById("billing_address_1"); 1066 addressLine2Field = document.getElementById("billing_address_2"); 1067 addressLine3Field = document.getElementById("billing_address_3"); 1068 addressCountyField = document.getElementById("billing_state"); 1069 addressPostcodeField = document.getElementById("billing_postcode"); 1070 addressCountryField = document.getElementById("billing_country"); 1071 1072 1073 var fmtAddress ; 1074 1075 if( addressFmt.trim() == '1') { 1076 // Alternative Address Format 1077 // Decode 1078 fmtAddress = Pc4uDecodeAddressFormat1( respAddress, companyFieldFound, townFieldFound, countyDisp); 1079 } else { 1080 // NORMAL ADDRESS - RAW RETURNED DATA 1081 fmtAddress = Pc4uReturnRawAddress(respAddress, companyFieldFound, townFieldFound, countyDisp); 1082 } 1083 1084 addressCompany = fmtAddress.AddCompany; 1085 addressLine1 = fmtAddress.AddLine1; 1086 addressLine2 = fmtAddress.AddLine2; 1087 addressLine3 = fmtAddress.AddLine3; 1088 addressTown = fmtAddress.AddTown; 1089 addressCounty = fmtAddress.AddCounty; 1090 addressPostcode = fmtAddress.AddPostcode.toUpperCase(); 1091 1092 //Populate Address Fields 1093 if(addresssCompanyField) { 1094 addresssCompanyField.value = addressCompany; 1095 } 1096 if(addressLine1Field){ 1097 addressLine1Field.value = addressLine1; 1098 } 1099 1100 //Pack Line 3 Details onto Line 2 If 3 Not Found 1101 if(addressLine2Field){ 1102 addressLine2Field.value = addressLine2; 1103 1104 if(!addressLine3Field) { 1105 if(addressLine3 !== "") { 1106 if(addressLine2Field.value !== "") { 1107 addressLine2Field.value = addressLine2Field.value.trim() + ", "; 1108 } 1109 addressLine2Field.value += addressLine3; 1110 addressLine3 = ""; 1111 } 1112 } 1113 } 1114 if(addressLine3Field){ 1115 addressLine3Field.value = addressLine3; 1116 } 1117 1118 if(addressTownField){ 1119 addressTownField.value = addressTown; 1120 } 1121 if(addressCountyField) { 1122 addressCountyField.value = addressCounty; 1123 } 1124 if(addressPostcodeField) { 1125 addressPostcodeField.value = addressPostcode; 1126 } 1127 // Set Country to UK (GB) 1128 if(addressCountryField){ 1129 addressCountryField.value = "GB"; 1130 } 1131 1132 // Clear/Reset Dropdown 1133 var lookupDropdown = document.getElementById("pc4uWooBillingDropdown"); 1134 1135 // Use New 'Hide' Pc4u Address Dropdown Function KRF 2020.04.30 1136 // -- Clear Dropdown 1137 hidePc4uAddressDropdown(lookupDropdown, true); 1138} 1139 1140// ====================================================================== 1141// Pc4uProcessWooShippingAddress 1142// ============================= 1143// Populate WooCommerce Shipping Address 1144// with Returned Address Details 1145// ====================================================================== 1146function Pc4uProcessWooShippingAddress( respAddress, addressFmt, countyDisp) { 1147 // Woo Commerce Shipping Form 1148 var companyFieldFound = false ; 1149 var townFieldFound = false ; 1150 1151 // Address Components 1152 var addressCompany = ""; 1153 var addressLine1 = ""; 1154 var addressLine2 = ""; 1155 var addressLine3 = ""; 1156 var addressTown = ""; 1157 var addressCounty = ""; 1158 var addressPostcode = ""; 1159 1160 // WooCommerce Shipping Form - Fields 1161 var addresssCompanyField ; 1162 var addressLine1Field ; 1163 var addressLine2Field ; 1164 var addressLine3Field ; 1165 var addressTownField ; 1166 var addressCountyField ; 1167 var addressPostcodeField ; 1168 var addressCountryField ; 1169 1170 // Get Company & Town Fields 1171 addresssCompanyField= document.getElementById("shipping_company"); 1172 if(addresssCompanyField){ 1173 companyFieldFound = true ; 1174 } 1175 addressTownField = document.getElementById("shipping_city"); 1176 if(addressTownField){ 1177 townFieldFound = true ; 1178 } 1179 // Get Remaining Address Fields 1180 addressLine1Field = document.getElementById("shipping_address_1"); 1181 addressLine2Field = document.getElementById("shipping_address_2"); 1182 addressLine3Field = document.getElementById("shipping_address_3"); 1183 addressCountyField = document.getElementById("shipping_state"); 1184 addressPostcodeField = document.getElementById("shipping_postcode"); 1185 addressCountryField = document.getElementById("shipping_country"); 1186 1187 var fmtAddress; 1188 1189 if( addressFmt.trim() == '1') { 1190 // ALTERNATE 'PACKED' FORMAT 1191 fmtAddress = Pc4uDecodeAddressFormat1( respAddress, companyFieldFound, townFieldFound, countyDisp); 1192 } else { 1193 // NORMAL ADDRESS - RAW RETURNED DATA 1194 fmtAddress = Pc4uReturnRawAddress(respAddress, companyFieldFound, townFieldFound, countyDisp); 1195 } 1196 1197 addressCompany = fmtAddress.AddCompany; 1198 addressLine1 = fmtAddress.AddLine1; 1199 addressLine2 = fmtAddress.AddLine2; 1200 addressLine3 = fmtAddress.AddLine3; 1201 addressTown = fmtAddress.AddTown; 1202 addressCounty = fmtAddress.AddCounty; 1203 addressPostcode = fmtAddress.AddPostcode.toUpperCase(); 1204 1205 // Populate Company Details 1206 if(addresssCompanyField) { 1207 addresssCompanyField.value = addressCompany; 1208 } 1209 1210 //Populate Address Line 1-3 Fields 1211 if(addressLine1Field){ 1212 addressLine1Field.value = addressLine1; 1213 } 1214 1215 //..Pack Line 3 Details onto Line 2 If 3 Not Found 1216 if(addressLine2Field){ 1217 addressLine2Field.value = addressLine2; 1218 1219 if(!addressLine3Field) { 1220 if(addressLine3 !== "") { 1221 if(addressLine2Field.value !== "") { 1222 addressLine2Field.value = addressLine2Field.value.trim() + ", "; 1223 } 1224 addressLine2Field.value += addressLine3; 1225 addressLine3 = ""; 1226 } 1227 } 1228 } 1229 // Address 3 (If Present) 1230 if(addressLine3Field){ 1231 addressLine3Field.value = addressLine3; 1232 } 1233 1234 // Town Field 1235 if(addressTownField){ 1236 addressTownField.value = addressTown; 1237 } 1238 1239 // County Field 1240 if(addressCountyField) { 1241 addressCountyField.value = addressCounty; 1242 } 1243 1244 // Postcode Field 1245 if(addressPostcodeField) { 1246 addressPostcodeField.value = addressPostcode; 1247 } 1248 // Set Country to UK (GB) 1249 if(addressCountryField){ 1250 addressCountryField.value = "GB"; 1251 } 1252 1253 // Clear/Reset Dropdown 1254 var lookupDropdown = document.getElementById("pc4uWooShippingDropdown"); 1255 1256 // Use New 'Hide' Pc4u Address Dropdown Function KRF 2020.04.30 1257 // -- Clear Pc4u Dropdown 1258 hidePc4uAddressDropdown(lookupDropdown, true); 1259} 1260 1261 1262// ==================================================================== 1263// Pc4uProcessCf7Address 1264// ===================== 1265// Populate Contact Form 7 Address 1266// with Returned Address Details 1267// - Modified in 1.4.2 for multiple CF7 Forms 1268// ==================================================================== 1269function Pc4uProcessCf7Address( respAddress, addressFmt, countyDisp) { 1270 1271 var oCf7Form = pc4uFieldObjectForPostcode; 1272 1273 var fillEmptyFields = true ; 1274 1275 // Contact Form7 Form - Fields 1276 var addresssCompanyField ; 1277 var addressLine1Field ; 1278 var addressLine2Field ; 1279 var addressLine3Field ; 1280 var addressTownField ; 1281 var addressCountyField ; 1282 var addressPostcodeField ; 1283 var addressSelectField ; 1284 1285 var addressSummaryLineField ; 1286 var addressSummaryBlockField ; 1287 1288 var addressHiddenField ; 1289 1290 // Needed for Address Decode 1291 var companyFieldFound = false ; 1292 var townFieldFound = false ; 1293 1294 // Address Components 1295 var addressCompany = ""; 1296 var addressLine1 = ""; 1297 var addressLine2 = ""; 1298 var addressLine3 = ""; 1299 var addressTown = ""; 1300 var addressCounty = ""; 1301 var addressPostcode = ""; 1302 1303 var addressSummaryLine = ""; 1304 var addressSummaryBlock = ""; 1305 1306 var addressSummaryBlock = ""; 1307 1308 // Decode Address Fields 1309 var cf7Fields = Pc4uExtractCF7FormFields( oCf7Form); 1310 1311 addresssCompanyField = cf7Fields.FormCompany; 1312 addressLine1Field = cf7Fields.FormAddLine1; 1313 addressLine2Field = cf7Fields.FormAddLine2; 1314 addressLine3Field = cf7Fields.FormAddLine3; 1315 addressTownField = cf7Fields.FormTown; 1316 addressCountyField = cf7Fields.FormCounty; 1317 addressSelectField = cf7Fields.FormSelectAddress; 1318 1319 addressSummaryLineField = cf7Fields.FormAddressSummaryLine; 1320 addressSummaryBlockField = cf7Fields.FormAddressSummaryBlock; 1321 1322 addressHiddenField = cf7Fields.FormAddressHiddenArea; 1323 1324 //Ensure Postcode Is Upper Case 1325 addressPostcodeField = cf7Fields.FormPostcode 1326 1327 1328 if( addresssCompanyField) { 1329 companyFieldFound = true ; 1330 } 1331 if(addressTownField) { 1332 townFieldFound = true ; 1333 } 1334 1335 // Process Address Data IAW Format 1336 var fmtAddress ; 1337 if( addressFmt.trim() === '1') { 1338 // ALTERNATE 'PACKED' FORMAT 1339 1340 // Decode 1341 fmtAddress = Pc4uDecodeAddressFormat1( respAddress, companyFieldFound, townFieldFound, countyDisp); 1342 } else { 1343 fmtAddress = Pc4uReturnRawAddress(respAddress, companyFieldFound, townFieldFound, countyDisp); 1344 } 1345 addressCompany = fmtAddress.AddCompany; 1346 addressLine1 = fmtAddress.AddLine1; 1347 addressLine2 = fmtAddress.AddLine2; 1348 addressLine3 = fmtAddress.AddLine3; 1349 addressTown = fmtAddress.AddTown; 1350 addressCounty = fmtAddress.AddCounty; 1351 addressPostcode = fmtAddress.AddPostcode.toUpperCase(); 1352 1353 addressSummaryLine = fmtAddress.AddDetailsLine; 1354 addressSummaryBlock = fmtAddress.AddDetailsBlock; 1355 1356 // Populate Address Fields 1357 // - Note - All Fields Are 'Optional' 1358 1359 // Company 1360 if(addresssCompanyField) { 1361 addresssCompanyField.value = addressCompany; 1362 addresssCompanyField.focus(); 1363 } 1364 // ADDRESS LINE1 1365 if(addressLine1Field) { 1366 addressLine1Field.value = addressLine1; 1367 addressLine1Field.focus(); 1368 } 1369 // ADDRESS LINE2 1370 if(addressLine2Field) { 1371 addressLine2Field.value = addressLine2; 1372 addressLine2Field.focus(); 1373 1374 if(!addressLine3Field) { 1375 if(addressLine3 !== "") { 1376 if(addressLine2Field.value !== "") { 1377 addressLine2Field.value = addressLine2Field.value.trim() + ", "; 1378 } 1379 addressLine2Field.value += addressLine3; 1380 addressLine3 = ""; 1381 1382 addressLine2Field.focus(); 1383 } 1384 } 1385 } 1386 // Address 3 (If Present) 1387 if(addressLine3Field){ 1388 addressLine3Field.value = addressLine3; 1389 addressLine3Field.focus(); 1390 } 1391 1392 // Town/City 1393 if(addressTownField) { 1394 addressTownField.value = addressTown; 1395 addressTownField.focus(); 1396 } 1397 // County 1398 if(addressCountyField) { 1399 addressCountyField.value = addressCounty; 1400 addressCountyField.focus(); 1401 } 1402 // Postcode 1403 if(addressPostcodeField) { 1404 addressPostcodeField.value = addressPostcode; 1405 add
1405ressPostcodeField.focus(); 1406 } 1407 1408 // Address Line (If Present) 1409 if(addressSummaryLineField) { 1410 addressSummaryLineField.value = addressSummaryLine; 1411 addressSummaryLineField.focus(); 1412 } 1413 1414 // Address Block (If Present) 1415 if(addressSummaryBlockField) { 1416 addressSummaryBlockField.value = addressSummaryBlock; 1417 addressSummaryBlockField.focus(); 1418 } 1419 1420 // Clear Address Select DropDown List 1421 if(addressSelectField) { 1422 // Use New 'Hide' Pc4u Address Dropdown Function KRF 2020.04.30 1423 // -- Clear Pc4u Dropdown 1424 hidePc4uAddressDropdown(addressSelectField, true ); 1425 } 1426 1427 // If Ensure 'Fields Populated' is required - do not allow empty Address Fie;ds 1428 if(fillEmptyFields) { 1429 1430 if(addresssCompanyField && !addresssCompanyField.value){ 1431 addresssCompanyField.value = " "; 1432 } 1433 1434 if(addressLine1Field && !addressLine1Field.value){ 1435 addressLine1Field.value = " "; 1436 } 1437 if(addressLine2Field && !addressLine2Field.value){ 1438 addressLine2Field.value = " "; 1439 } 1440 1441 if(addressLine3Field && !addressLine3Field.value){ 1442 addressLine3Field.value = " "; 1443 } 1444 if(addressTownField && !addressTownField.value){ 1445 addressTownField.value = " "; 1446 } 1447 if(addressCountyField && !addressCountyField.value){ 1448 addressCountyField.value = " "; 1449 } 1450 if(addressPostcodeField && !addressPostcodeField.value){ 1451 addressPostcodeField.value = " "; 1452 } 1453 } 1454 1455 // If Display When Complete Div Available than Display It 1456 Pc4uShowHiddenCf7Address(addressHiddenField); 1457} 1458 1459 1460// ==================================================================== 1461// Pc4uShowHiddenCf7Address 1462// ======================== 1463// - Unhide Contact Form 7 Address 1464// ==================================================================== 1465function Pc4uShowHiddenCf7Address( cf7addressHiddenField) { 1466 if(cf7addressHiddenField) { 1467 // If Display When Complete Div Available than Display It 1468 if(cf7addressHiddenField) { 1469 // 1470 cf7addressHiddenField.style.display = ''; 1471 } 1472 } 1473} 1474 1475 1476// ==================================================================== 1477// Pc4uProcessGravAddress 1478// ====================== 1479// Populate Gravity Form Address 1480// with Returned Address Details 1481// ==================================================================== 1482function Pc4uProcessGravAddress( respAddress, addressFmt, countyDisp) { 1483 var companyFieldFound = false ; 1484 var townFieldFound = false ; 1485 var separateNameNumberFieldFound = false ; 1486 1487 var fillEmptyFields = true ; 1488 1489 // Ensure 1490 var populateEmpty = true ; 1491 1492 // Address Components 1493 var addressCompany = ""; 1494 var addressLine1 = ""; // Complete Address Line 1 1495 var addressLine2 = ""; 1496 var addressLine3 = ""; 1497 var addressTown = ""; 1498 var addressCounty = ""; 1499 var addressPostcode = ""; 1500 1501 // Used when separate House Name/No and Street 1502 var addressLine1_NameNumberOnly = ""; // Optional 1503 var addressLine1_StreetOnly = ""; // Optional 1504 var addressLine2_StreetOnly = ""; // Optional 1505 1506 // Gravity Form - Fields 1507 var addresssCompanyField ; 1508 var addressLine1_NameNumberField ; //Optional 1509 var addressLine1Field ; 1510 var addressLine2Field ; 1511 var addressLine3Field ; 1512 var addressTownField ; 1513 var addressCountyField ; 1514 var addressPostcodeField ; 1515 1516 // Get Company & Town Fields 1517 // // GF No Company Field 1518 //addresssCompanyField= document.getElementById("pc4uCompany"); 1519 //if(addresssCompanyField){ 1520 // companyFieldFound = true ; 1521 //} 1522 addressTownField = document.getElementById(pc4uFormPostcodeFieldId + '_3'); 1523 if(addressTownField){ 1524 townFieldFound = true ; 1525 } 1526 // Get Remaining Address Fields 1527 1528 // Look For Optional Address Line 1 Name/Number Field 1529 addressLine1_NameNumberField = document.getElementById(pc4uFormPostcodeFieldId + '_7'); 1530 if(addressLine1_NameNumberField) { 1531 separateNameNumberFieldFound = true; 1532 } 1533 1534 addressLine1Field = document.getElementById(pc4uFormPostcodeFieldId + '_1'); 1535 addressLine2Field = document.getElementById(pc4uFormPostcodeFieldId + '_2'); 1536 //addressLine3Field = document.getElementById("pc4uAddress3"); 1537 1538 addressCountyField = document.getElementById(pc4uFormPostcodeFieldId + '_4'); 1539 addressPostcodeField = document.getElementById(pc4uFormPostcodeFieldId + '_5'); 1540 1541 var fmtAddress; 1542 if( addressFmt.trim() == '1') { 1543 // Alternative Address Format 1544 // Decode 1545 fmtAddress = Pc4uDecodeAddressFormat1( respAddress, companyFieldFound, townFieldFound, countyDisp, populateEmpty); 1546 } else { 1547 // NORMAL ADDRESS - RAW RETURNED DATA 1548 fmtAddress = Pc4uReturnRawAddress(respAddress, companyFieldFound, townFieldFound, countyDisp, populateEmpty); 1549 } 1550 1551 addressCompany = fmtAddress.AddCompany; 1552 1553 addressLine1 = fmtAddress.AddLine1; 1554 addressLine2 = fmtAddress.AddLine2; 1555 addressLine3 = fmtAddress.AddLine3; 1556 addressTown = fmtAddress.AddTown; 1557 addressCounty = fmtAddress.AddCounty; 1558 addressPostcode = fmtAddress.AddPostcode.toUpperCase(); 1559 1560 // Used when separate House Name/No and Street 1561 addressLine1_NameNumberOnly = fmtAddress.AddLine1_NameNumOnly; 1562 addressLine1_StreetOnly = fmtAddress.AddLine1_StreetOnly; 1563 addressLine2_StreetOnly = fmtAddress.AddLine2_StreetOnly; 1564 1565 1566 //Populate Address Fields 1567 if(addresssCompanyField && addressCompany) { 1568 addresssCompanyField.value = addressCompany; 1569 } 1570 1571 // Check For Separate Name/Number and Street Name 1572 if(separateNameNumberFieldFound){ 1573 if(addressLine1_NameNumberField) { 1574 addressLine1_NameNumberField.value = addressLine1_NameNumberOnly; 1575 } 1576 if(addressLine1Field) { 1577 addressLine1Field.value = ""; 1578 if(addressCompany) { 1579 addressLine1Field.value += addressCompany ; 1580 1581 if(addressLine2_StreetOnly) { 1582 addressLine1Field.value += ", " +addressLine1_StreetOnly; 1583 if(addressLine2Field){ 1584 addressLine2Field.value = addressLine2_StreetOnly; 1585 } 1586 } else { 1587 // No Street 2 1588 addressLine2Field.value = addressLine1_StreetOnly; 1589 } 1590 } else { 1591 // No Company - Just Populate Street Address 1 & 2 1592 addressLine1Field.value = addressLine1_StreetOnly; 1593 addressLine2Field.value = addressLine2_StreetOnly; 1594 } 1595 } else { 1596 if(addressLine2Field){ 1597 addressLine2Field.value = addressLine2_StreetOnly; 1598 } 1599 } 1600 } else { 1601 // No Separate Street Name - Normal Processing 1602 if(addressLine1Field){ 1603 addressLine1Field.value = addressLine1; 1604 } 1605 1606 if(addressLine2Field){ 1607 addressLine2Field.value = addressLine2; 1608 1609 if(!addressLine3Field) { 1610 if(addressLine3 !== "") { 1611 if(addressLine2Field.value !== "") { 1612 addressLine2Field.value = addressLine2Field.value.trim() + ", "; 1613 } 1614 addressLine2Field.value += addressLine3; 1615 addressLine3 = ""; 1616 } 1617 } 1618 } 1619 } 1620 1621 // Address 3 (If Present) 1622 if(addressLine3Field){ 1623 addressLine3Field.value = addressLine3; 1624 } 1625 1626 if(addressTownField){ 1627 addressTownField.value = addressTown; 1628 } 1629 if(addressCountyField) { 1630 addressCountyField.value = addressCounty; 1631 } 1632 if(addressPostcodeField) { 1633 addressPostcodeField.value = addressPostcode; 1634 } 1635 1636 // If Ensure 'Fields Populated' is required - do not allow empty Address Fie;ds 1637 if(fillEmptyFields) { 1638 if(addresssCompanyField && !addresssCompanyField.value){ 1639 addresssCompanyField.value = " "; 1640 } 1641 1642 if(addressLine1Field && !addressLine1Field.value){ 1643 addressLine1Field.value = " "; 1644 } 1645 if(addressLine2Field && !addressLine2Field.value){ 1646 addressLine2Field.value = " "; 1647 } 1648 1649 if(addressLine3Field && !addressLine3Field.value){ 1650 addressLine3Field.value = " "; 1651 } 1652 if(addressTownField && !addressTownField.value){ 1653 addressTownField.value = " "; 1654 } 1655 if(addressCountyField && !addressCountyField.value){ 1656 addressCountyField.value = " "; 1657 } 1658 if(addressPostcodeField && !addressPostcodeField.value){ 1659 addressPostcodeField.value = " "; 1660 } 1661 } 1662 1663 // Clear DropDown List - 1664 var dropdown = document.getElementById(pc4uFormPostcodeFieldId +"_pc4uGfDropdown"); 1665 1666 // Use New 'Hide' Pc4u Address Dropdown Function KRF 2020.04.30 1667 // -- Clear Pc4u Dropdown 1668 hidePc4uAddressDropdown(dropdown, true); 1669 1670 1671 // If Display When Complete Div Available than Display It 1672 showPc4uGFHiddenAddress(pc4uFormPostcodeFieldId);
1673 //var showAddressWhenComplete = document.getElementById(pc4uFormPostcodeFieldId+"_pc4uGfPostcodeLookupAddress"); 1674 //if(showAddressWhenComplete) { 1675 // // 1676 // showAddressWhenComplete.style.display = ''; 1677 //} 1678} 1679 1680 1681// ==================================================================== 1682// Pc4uProcessAdHocAddress 1683// ======================= 1684// Populate 'AdHoc' address with specified 1685// address fields with Returned Address Details 1686// KRF 23.08.14 - Add AddressLine and Block 1687// ==================================================================== 1688function Pc4uProcessAdHocAddress ( respAddress, addressFmt, countyDisp) { 1689 // AdHoc Address - Specified Fields 1690 var companyFieldFound = false ; 1691 var townFieldFound = false ; 1692 1693 // Address Components 1694 var addressCompany = ""; 1695 var addressLine1 = ""; 1696 var addressLine2 = ""; 1697 var addressLine3 = ""; 1698 var addressTown = ""; 1699 var addressCounty = ""; 1700 var addressPostcode = ""; 1701 // Address Summary Line and Block Values 1702 var addressSummaryLine = ""; 1703 var addressSummaryBlock = ""; 1704 1705 // 'AdHoc Form - Fields 1706 var addresssCompanyField ; 1707 var addressLine1Field ; 1708 var addressLine2Field ; 1709 var addressLine3Field ; 1710 var addressTownField ; 1711 var addressCountyField ; 1712 var addressPostcodeField ; 1713 1714 var addressCountryField ; 1715 // Address Summary Line and Block Field IDs 1716 var addressSummaryLineField ; 1717 var addressSummaryBlockField ; 1718 1719 // Get Company & Town Fields 1720 addresssCompanyField= document.getElementById(pc4uFormAddressCompanyFieldId); 1721 if(addresssCompanyField){ 1722 companyFieldFound = true ; 1723 } 1724 addressTownField = document.getElementById(pc4uFormAddressTownFieldId); 1725 if(addressTownField){ 1726 townFieldFound = true ; 1727 } 1728 // Get Remaining Address Fields 1729 addressLine1Field = document.getElementById(pc4uFormAddressLine1FieldId); 1730 addressLine2Field = document.getElementById(pc4uFormAddressLine2FieldId); 1731 addressLine3Field = document.getElementById(pc4uFormAddressLine3FieldId); 1732 1733 addressCountyField = document.getElementById(pc4uFormAddressCountyFieldId); 1734 addressPostcodeField = document.getElementById(pc4uFormPostcodeFieldId); 1735 1736 addressCountryField = document.getElementById(pc4uFormAddressNationCountryFieldId); 1737 1738 // Try For Summary Line and Block 1739 addressSummaryLineField = document.getElementById(pc4uFormAddressLineFieldId); 1740 addressSummaryBlockField = document.getElementById(pc4uFormAddressBlockFieldId); 1741 1742 var fmtAddress ; 1743 if( addressFmt.trim() == '1') { 1744 // Alternative Address Format 1745 // Decode 1746 fmtAddress = Pc4uDecodeAddressFormat1( respAddress, companyFieldFound, townFieldFound, countyDisp); 1747 } else { 1748 fmtAddress = Pc4uReturnRawAddress(respAddress, companyFieldFound, townFieldFound, countyDisp); 1749 } 1750 1751 addressCompany = fmtAddress.AddCompany; 1752 addressLine1 = fmtAddress.AddLine1; 1753 addressLine2 = fmtAddress.AddLine2; 1754 addressLine3 = fmtAddress.AddLine3; 1755 addressTown = fmtAddress.AddTown; 1756 addressCounty = fmtAddress.AddCounty; 1757 addressPostcode = fmtAddress.AddPostcode.toUpperCase(); 1758 addressSummaryLine = fmtAddress.AddDetailsLine; 1759 addressSummaryBlock = fmtAddress.AddDetailsBlock; 1760 1761 //Populate Address Fields 1762 if(addresssCompanyField) { 1763 addresssCompanyField.value = addressCompany; 1764 } 1765 if(addressLine1Field){ 1766 addressLine1Field.value = addressLine1; 1767 } 1768 if(addressLine2Field){ 1769 addressLine2Field.value = addressLine2; 1770 1771 if(!addressLine3Field) { 1772 if(addressLine3 !== "") { 1773 if(addressLine2Field.value !== "") { 1774 addressLine2Field.value = addressLine2Field.value.trim() + ", "; 1775 } 1776 addressLine2Field.value += addressLine3; 1777 addressLine3 = ""; 1778 } 1779 } 1780 } 1781 // Address 3 (If Present) 1782 if(addressLine3Field){ 1783 addressLine3Field.value = addressLine3; 1784 } 1785 1786 if(addressTownField){ 1787 addressTownField.value = addressTown; 1788 } 1789 if(addressCountyField) { 1790 addressCountyField.value = addressCounty; 1791 } 1792 if(addressPostcodeField) { 1793 addressPostcodeField.value = addressPostcode; 1794 } 1795 1796 // Optionally Process Country - FORCE UK/GB 1797 if(addressCountryField) { 1798 var AddressType = "text"; 1799 if(pc4uFormAddressNationCountryType) { 1800 if(pc4uFormAddressNationCountryType = "wp_dropdown") { 1801 // WordPress Country Field 1802 addressCountryField.value = "GB"; 1803 } else { 1804 if(pc4uFormAddressNationCountryType = "dropdown") { 1805 // General Dropdown Field 1806 addressCountryField.value = "United Kingdom"; 1807 addressCountryField.selected = true; 1808 } else { 1809 // Default Text Field 1810 addressCountryField.value = "United Kingdom"; 1811 } 1812 } 1813 } 1814 } 1815 1816 // Summary (Single Line) Address 1817 if(addressSummaryLineField) { 1818 addressSummaryLineField.value = addressSummaryLine; 1819 } 1820 1821 // Summary (Block) Address 1822 if(addressSummaryBlockField) { 1823 addressSummaryBlockField.value = addressSummaryBlock; 1824 } 1825 1826 1827 // Clear DropDown List - 1828 var dropdown = document.getElementById(pc4uFormAddressDropdownFieldId); 1829 1830 // Use New 'Hide' Pc4u Address Dropdown Function KRF 2020.04.30 1831 // -- Clear Pc4u Dropdown 1832 hidePc4uAddressDropdown(dropdown, true); 1833} 1834 1835// ==================================================================== 1836// Pc4uProcess3xAddress 1837// ==================== 1838// Populate 3X Basic Contact Form Address 1839// with Returned Address Details 1840// ==================================================================== 1841function Pc4uProcess3xAddress( respAddress, addressFmt, countyDisp) { 1842 // Default Form (3x) 1843 1844 var companyFieldFound = false ; 1845 var townFieldFound = false ; 1846 1847 // Address Components 1848 var addressCompany = ""; 1849 var addressLine1 = ""; 1850 var addressLine2 = ""; 1851 var addressLine3 = ""; 1852 var addressTown = ""; 1853 var addressCounty = ""; 1854 var addressPostcode = ""; 1855 1856 // 3X Contact Form - Fields 1857 var addresssCompanyField ; 1858 var addressLine1Field ; 1859 var addressLine2Field ; 1860 var addressLine3Field ; 1861 var addressTownField ; 1862 var addressCountyField ; 1863 var addressPostcodeField ; 1864 1865 // Get Company & Town Fields 1866 addresssCompanyField= document.getElementById("pc4uCompany"); 1867 if(addresssCompanyField){ 1868 companyFieldFound = true ; 1869 } 1870 addressTownField = document.getElementById("pc4uTown"); 1871 if(addressTownField){ 1872 townFieldFound = true ; 1873 } 1874 // Get Remaining Address Fields 1875 addressLine1Field = document.getElementById("pc4uAddress1"); 1876 addressLine2Field = document.getElementById("pc4uAddress2"); 1877 addressLine3Field = document.getElementById("pc4uAddress3"); 1878 1879 addressCountyField = document.getElementById("pc4uCounty"); 1880 addressPostcodeField = document.getElementById("pc4uPostcode"); 1881 1882 var fmtAddress ; 1883 if( addressFmt.trim() == '1') { 1884 // Alternative Address Format 1885 // Decode 1886 fmtAddress = Pc4uDecodeAddressFormat1( respAddress, companyFieldFound, townFieldFound, countyDisp); 1887 } else { 1888 fmtAddress = Pc4uReturnRawAddress(respAddress, companyFieldFound, townFieldFound, countyDisp); 1889 } 1890 1891 addressCompany = fmtAddress.AddCompany; 1892 addressLine1 = fmtAddress.AddLine1; 1893 addressLine2 = fmtAddress.AddLine2; 1894 addressLine3 = fmtAddress.AddLine3; 1895 addressTown = fmtAddress.AddTown; 1896 addressCounty = fmtAddress.AddCounty; 1897 addressPostcode = fmtAddress.AddPostcode.toUpperCase(); 1898 1899 //Populate Address Fields 1900 if(addresssCompanyField) { 1901 addresssCompanyField.value = addressCompany; 1902 } 1903 if(addressLine1Field){ 1904 addressLine1Field.value = addressLine1; 1905 } 1906 if(addressLine2Field){ 1907 addressLine2Field.value = addressLine2; 1908 1909 if(!addressLine3Field) { 1910 if(addressLine3 !== "") { 1911 if(addressLine2Field.value !== "") { 1912 addressLine2Field.value = addressLine2Field.value.trim() + ", "; 1913 } 1914 addressLine2Field.value += addressLine3; 1915 addressLine3 = ""; 1916 } 1917 } 1918 } 1919 // Address 3 (If Present) 1920 if(addressLine3Field){ 1921 addressLine3Field.value = addressLine3; 1922 } 1923 1924 if(addressTownField){ 1925 addressTownField.value = addressTown; 1926 } 1927 if(addressCountyField) { 1928 addressCountyField.value = addressCounty; 1929 } 1930 if(addressPostcodeField) { 1931 addressPostcodeField.value = addressPostcode; 1932 } 1933 1934 // Clear DropDown List - ID HardCoded in Plugin 1935 var dropdown = document.getElementById("pc4uDropdown"); 1936 1937 // Use New 'Hide' Pc4u Address Dropdown Function KRF 2020.04.30 1938 // -- Clear Pc4u Dropdown 1939 hidePc4uAddressDropdown(dropdown, true); 1940} 1941 1942 1943// ==================================================================== 1944// Pc4uDecodeAddressFormat1 1945// ======================== 1946// - Return Address in an array using 1947// Address Format 1 - 'Alternative' Or No Duplicate Address Format 1948// ==================================================================== 1949function Pc4uDecodeAddressFormat1( procAddress, companyFieldPresent, townFieldPresent, countyDisp, populateEmpty) { 1950 1951 var companyFieldFound = false ; 1952 var townFieldFound = false ; 1953 1954 var addressCompany = ""; 1955 1956 var addressLine1 = ""; 1957 var addressLine2 = ""; 1958 var addressLine3 = ""; 1959 var addressTown = ""; 1960 var addressCounty = ""; 1961 var addressPostcode = ""; 1962 1963 // Address Details As Line or Text Block
1964 var addressDetailsLine = ""; 1965 var addressDetailsBlock = ""; 1966 1967 // Separate Building No/Street 1968 var addressLine1_NameNum_Only = ""; 1969 var addressLine1_Street_Only = ""; 1970 var addressLine2_Street_Only = ""; 1971 1972 // Process Company and Town Fields 1973 addressCompany = procAddress.Company; 1974 if(companyFieldPresent && companyFieldPresent === true) { 1975 companyFieldFound = true ; 1976 } 1977 1978 if(townFieldPresent && townFieldPresent === true) { 1979 townFieldFound = true ; 1980 addressTown = procAddress.PostTown; 1981 } 1982 1983 // Process Address Lines 1, 2, 3 and 4 1984 // Check Address Line1 1985 if((companyFieldFound === true && procAddress.Line1 === procAddress.Company) || 1986 (townFieldFound === true && procAddress.Line1 === procAddress.PostTown) || 1987 (procAddress.Line1 === procAddress.County) || 1988 (procAddress.Line1 === procAddress.Postcode)) { 1989 // Company, Town, County or Postcode on address Line1 1990 } else { 1991 addressLine1 = procAddress.Line1; 1992 } 1993 // Check Address Line2 1994 if((companyFieldFound === true && procAddress.Line2 === procAddress.Company) || 1995 (townFieldFound === true && procAddress.Line2 === procAddress.PostTown) || 1996 (procAddress.Line2 === procAddress.County) || 1997 (procAddress.Line2 === procAddress.Postcode)) { 1998 // Company, Town, County or Postcode on address Line2 1999 } else { 2000 if(addressLine1 === "") { 2001 addressLine1 = procAddress.Line2; 2002 } else { 2003 addressLine2 = procAddress.Line2; 2004 } 2005 } 2006 // Check Address Line3 2007 if(addressLine2 === "" && (companyFieldFound === true && procAddress.Line3 === procAddress.Company) || 2008 (townFieldFound === true && procAddress.Line3 === procAddress.PostTown) || 2009 (procAddress.Line3 === procAddress.County) || 2010 (procAddress.Line3 === procAddress.Postcode)) { 2011 // Company, Town, County or Postcode on address Line3 2012 } else { 2013 if(addressLine1 === "") { 2014 addressLine1 = procAddress.Line3; 2015 } else { 2016 if(addressLine2 === "") { 2017 addressLine2 = procAddress.Line3; 2018 } else { 2019 addressLine3 = procAddress.Line3; 2020 } 2021 } 2022 } 2023 2024 // Process Separate Address Line1 Details 2025 if(procAddress.SubBuilding) { 2026 addressLine1_NameNum_Only = procAddress.SubBuilding + ", " ; 2027 } 2028 if(procAddress.BuildingName) { 2029 addressLine1_NameNum_Only += procAddress.BuildingName; 2030 } else { 2031 addressLine1_NameNum_Only += procAddress.BuildingNumber; 2032 } 2033 2034 addressLine1_Street_Only = procAddress.PrimaryStreet; 2035 addressLine2_Street_Only = procAddress.SecondaryStreet; 2036 2037 // Process County 2038 if(countyDisp === '1') { 2039 // Administrative County 2040 addressCounty = procAddress.AdministrativeCounty 2041 } else{ 2042 if(countyDisp === '2') { 2043 // Postal County 2044 addressCounty = procAddress.PostalCounty; 2045 } else { 2046 if(countyDisp === '3') { 2047 // Traditional County 2048 addressCounty = procAddress.TraditionalCounty; 2049 } else { 2050 if(countyDisp === '4') { 2051 addressCounty = "" 2052 } else { 2053 // Default County 2054 addressCounty = procAddress.County; 2055 } 2056 } 2057 } 2058 } 2059 2060 // Process Postcode 2061 addressPostcode = procAddress.Postcode.toUpperCase(); 2062 2063 // ---------------------------------------- 2064 // Populate Address Details Line & Block 2065 // Assume ALL Fields - Ensure No Duplication 2066 2067 // Company 2068 if(addressCompany) { 2069 if(addressDetailsLine) { 2070 addressDetailsLine = addressDetailsLine + ', '; 2071 addressDetailsBlock = addressDetailsBlock + '\n'; 2072 } 2073 addressDetailsLine = addressDetailsLine + addressCompany 2074 addressDetailsBlock = addressDetailsBlock + addressCompany 2075 } 2076 2077 // Check Address Line1 2078 if((procAddress.Line1 === procAddress.Company) || 2079 (procAddress.Line1 === procAddress.PostTown) || 2080 (procAddress.Line1 === procAddress.County) || 2081 (procAddress.Line1 === procAddress.Postcode)) { 2082 // Company, Town, County or Postcode on address Line1 2083 } else { 2084 if(procAddress.Line1) {
2085 if(addressDetailsLine) { 2086 addressDetailsLine = addressDetailsLine + ', '; 2087 addressDetailsBlock = addressDetailsBlock + '\n'; 2088 } 2089 addressDetailsLine = addressDetailsLine + procAddress.Line1 2090 addressDetailsBlock = addressDetailsBlock + procAddress.Line1 2091 } 2092 } 2093 2094 // Check Address Line2 2095 if((procAddress.Line2 === procAddress.Company) || 2096 (procAddress.Line2 === procAddress.PostTown) || 2097 (procAddress.Line2 === procAddress.County) || 2098 (procAddress.Line2 === procAddress.Postcode)) { 2099 // Company, Town, County or Postcode on address Line2 2100 } else { 2101 if(procAddress.Line2) { 2102 if(addressDetailsLine) { 2103 addressDetailsLine = addressDetailsLine + ', '; 2104 addressDetailsBlock = addressDetailsBlock + '\n'; 2105 } 2106 addressDetailsLine = addressDetailsLine + procAddress.Line2 2107 addressDetailsBlock = addressDetailsBlock + procAddress.Line2 2108 } 2109 } 2110 // Check Address Line3 2111 if((procAddress.Line3 === procAddress.Company) || 2112 (procAddress.Line3 === procAddress.PostTown) || 2113 (procAddress.Line3 === procAddress.County) || 2114 (procAddress.Line3 === procAddress.Postcode)) { 2115 // Company, Town, County or Postcode on address Line3 2116 } else { 2117 if(procAddress.Line3) { 2118 if(addressDetailsLine) { 2119 addressDetailsLine = addressDetailsLine + ', '; 2120 addressDetailsBlock = addressDetailsBlock + '\n'; 2121 } 2122 addressDetailsLine = addressDetailsLine + procAddress.Line3 2123 addressDetailsBlock = addressDetailsBlock + procAddress.Line3 2124 } 2125 } 2126 2127 if(procAddress.PostTown) { 2128 if(addressDetailsLine) { 2129 addressDetailsLine = addressDetailsLine + ', ' ; 2130 addressDetailsBlock = addressDetailsBlock + '\n' ; 2131 } 2132 addressDetailsLine = addressDetailsLine + procAddress.PostTown; 2133 addressDetailsBlock = addressDetailsBlock + procAddress.PostTown; 2134 } 2135 if(addressCounty) { 2136 if(addressDetailsLine) { 2137 addressDetailsLine = addressDetailsLine + ', ' ; 2138 addressDetailsBlock = addressDetailsBlock + '\n' ; 2139 } 2140 addressDetailsLine = addressDetailsLine + addressCounty; 2141 addressDetailsBlock = addressDetailsBlock + addressCounty; 2142 } 2143 2144 if(procAddress.Postcode) { 2145 if(addressDetailsLine) { 2146 addressDetailsLine = addressDetailsLine + ', ' ; 2147 addressDetailsBlock = addressDetailsBlock + '\n' ; 2148 } 2149 addressDetailsLine = addressDetailsLine + procAddress.Postcode; 2150 addressDetailsBlock = addressDetailsBlock + procAddress.Postcode; 2151 } 2152 2153 // Return Address Details as string array 2154 return { 2155 AddCompany: addressCompany, 2156 AddLine1: addressLine1, 2157 AddLine2: addressLine2, 2158 AddLine3: addressLine3, 2159 AddTown: addressTown, 2160 AddCounty: addressCounty, 2161 AddPostcode: addressPostcode, 2162 2163 AddLine1_NameNumOnly: addressLine1_NameNum_Only, 2164 AddLine1_StreetOnly: addressLine1_Street_Only, 2165 AddLine2_StreetOnly: addressLine2_Street_Only, 2166 2167 AddDetailsLine: addressDetailsLine, 2168 AddDetailsBlock: addressDetailsBlock 2169 2170 }; 2171} 2172 2173 2174// ==================================================================== 2175// Pc4uReturnRawAddress 2176// ==================== 2177// - Return Address in an array using 2178// Address Format 0 - 'RAW' Format 2179// ==================================================================== 2180function Pc4uReturnRawAddress( procAddress, companyFieldPresent, townFieldPresent, countyDisp, populateEmpty) { 2181 2182 var addressCompany = ""; 2183 var addressLine1 = ""; 2184 var addressLine2 = ""; 2185 var addressLine3 = ""; 2186 var addressTown = ""; 2187 var addressCounty = ""; 2188 var addressPostcode = ""; 2189 var addressDetailsLine = ""; 2190 var addressDetailsBlock = ""; 2191 2192 // Separate Building No/Street 2193 var addressLine1_NameNum_Only = ""; 2194 var addressLine1_Street_Only = ""; 2195 var addressLine2_Street_Only = ""; 2196 2197 // Set Company - PostTown and Postcode 2198 addressCompany = procAddress.Company; 2199 addressTown = procAddress.PostTown; 2200 addressPostcode = procAddress.Postcode.toUpperCase(); 2201 2202 //Process Address Lines 1 and 2 2203 addressLine1 = procAddress.Line1; 2204 addressLine2 = procAddress.Line2; 2205 addressLine3 = procAddress.Line3; 2206 2207 // Process Separate Address Line Details 2208 if(procAddress.SubBuilding) { 2209 addressLine1_NameNum_Only = procAddress.SubBuilding + ", " ; 2210 } 2211 if(procAddress.BuildingName) { 2212 addressLine1_NameNum_Only += procAddress.BuildingName; 2213 } else { 2214 addressLine1_NameNum_Only += procAddress.BuildingNumber; 2215 } 2216 addressLine1_Street_Only = procAddress.PrimaryStreet; 2217 addressLine2_Street_Only = procAddress.SecondaryStreet; 2218 2219 // Process County 2220 if(countyDisp === '1') { 2221 // Administrative County 2222 addressCounty = procAddress.AdministrativeCounty; 2223 } else{ 2224 if(countyDisp === '2') { 2225 // Postal County 2226 addressCounty = procAddress.PostalCounty; 2227 } else { 2228 if(countyDisp === '3') { 2229 // Traditional County 2230 addressCounty = procAddress.TraditionalCounty; 2231 if(countyDisp === '4') { 2232 addressCounty = "" 2233 } else { 2234 // Default County 2235 addressCounty = procAddress.County; 2236 } 2237 } 2238 } 2239 } 2240 2241 // --------------------------------------- 2242 // Populate Address Details Line & Block 2243 // No Duplicate Check 2244 if(addressCompany) {
2245 if(addressDetailsLine) { 2246 addressDetailsLine = addressDetailsLine + ', '; 2247 addressDetailsBlock = addressDetailsBlock + '\n'; 2248 } 2249 addressDetailsLine = addressDetailsLine + addressCompany 2250 addressDetailsBlock = addressDetailsBlock + addressCompany 2251 } 2252 2253 if(addressLine1) { 2254 if(addressDetailsLine) { 2255 addressDetailsLine = addressDetailsLine + ', ' ; 2256 addressDetailsBlock = addressDetailsBlock + '\n' ; 2257 } 2258 addressDetailsLine = addressDetailsLine + addressLine1; 2259 addressDetailsBlock = addressDetailsBlock + addressLine1; 2260 } 2261 2262 if(addressLine2) { 2263 if(addressDetailsLine) { 2264 addressDetailsLine = addressDetailsLine + ', ' ; 2265 addressDetailsBlock = addressDetailsBlock + '\n' ; 2266 } 2267 addressDetailsLine = addressDetailsLine + addressLine2; 2268 addressDetailsBlock = addressDetailsBlock + addressLine2; 2269 } 2270 if(addressLine3) { 2271 if(addressDetailsLine) { 2272 addressDetailsLine = addressDetailsLine + ', ' ; 2273 addressDetailsBlock = addressDetailsBlock + '\n' ; 2274 } 2275 addressDetailsLine = addressDetailsLine + addressLine3; 2276 addressDetailsBlock = addressDetailsBlock + addressLine3; 2277 } 2278 if(addressTown) { 2279 if(addressDetailsLine) { 2280 addressDetailsLine = addressDetailsLine + ', ' ; 2281 addressDetailsBlock = addressDetailsBlock + '\n' ; 2282 } 2283 addressDetailsLine = addressDetailsLine + addressTown; 2284 addressDetailsBlock = addressDetailsBlock + addressTown; 2285 } 2286 if(addressCounty) { 2287 if(addressDetailsLine) { 2288 addressDetailsLine = addressDetailsLine + ', ' ; 2289 addressDetailsBlock = addressDetailsBlock + '\n' ; 2290 } 2291 addressDetailsLine = addressDetailsLine + addressCounty; 2292 addressDetailsBlock = addressDetailsBlock + addressCounty; 2293 } 2294 2295 if(addressPostcode) { 2296 if(addressDetailsLine) { 2297 addressDetailsLine = addressDetailsLine + ', ' ; 2298 addressDetailsBlock = addressDetailsBlock + '\n' ; 2299 } 2300 addressDetailsLine = addressDetailsLine + addressPostcode; 2301 addressDetailsBlock = addressDetailsBlock + addressPostcode; 2302 } 2303 2304 // Return Address Details as string array 2305 return { 2306 AddCompany: addressCompany, 2307 AddLine1: addressLine1, 2308 AddLine2: addressLine2, 2309 AddLine3: addressLine3, 2310 AddTown: addressTown, 2311 AddCounty: addressCounty, 2312 AddPostcode: addressPostcode, 2313 2314 AddLine1_NameNumOnly: addressLine1_NameNum_Only, 2315 AddLine1_StreetOnly: addressLine1_Street_Only, 2316 AddLine2_StreetOnly: addressLine2_Street_Only, 2317 2318 AddDetailsLine: addressDetailsLine, 2319 AddDetailsBlock: addressDetailsBlock 2320 }; 2321} 2322 2323// ==================================================================== 2324// Pc4uExtractCF7FormFields 2325// ======================== 2326// - Return Address Form Fields in an array 2327// ==================================================================== 2328function Pc4uExtractCF7FormFields( oformObject) { 2329 2330 var formObjectValid = false ; 2331 var oFormElements ; 2332 2333 var oFormLegacyDropDownElements ; 2334 var oNonFormAddressElements; 2335 var testAddressFields ; 2336 2337 var addressCompany = null; 2338 var addressLine1 = null; 2339 var addressLine2 = null; 2340 var addressLine3 = null; 2341 var addressTown = null; 2342 var addressCounty = null; 2343 var addressPostcode = null; 2344 var addressSummaryLine = null; 2345 var addressSummaryBlock = null; 2346 2347 var addressSelectDropdown = null; 2348 2349 var addressHiddenDiv = null; 2350 2351 if(oformObject) { 2352 // Legacy Browser (IE) Get All Input and Select Objects 2353 oFormElements = oformObject.querySelectorAll("*"); 2354 2355 if(oFormElements && oFormElements.length > 0) { 2356 formObjectValid = true; 2357 } 2358 2359 if(formObjectValid){ 2360 for (var i = 0; i < oFormElements.length; i++) { 2361 // Note Not Using 'includes' of Legacy Browser Compatability 2362 if(oFormElements[i].id.indexOf("pc4uCf7Company") !== -1 || 2363 oFormElements[i].classList.contains("pc4uCf7Company")) { 2364 addressCompany = oFormElements[i]; 2365 } else { 2366 if(oFormElements[i].id.indexOf("pc4uCF7Address1") !== -1 || 2367 oFormElements[i].classList.contains("pc4uCF7Address1") ) { 2368 addressLine1 = oFormElements[i]; 2369 } else { 2370 if(oFormElements[i].id.indexOf("pc4uCF7Address2") !== -1 || 2371 oFormElements[i].classList.contains("pc4uCF7Address2") ) { 2372 addressLine2 = oFormElements[i]; 2373 } else { 2374 if(oFormElements[i].id.indexOf("pc4uCF7Address3") !== -1 || 2375 oFormElements[i].classList.contains("pc4uCF7Address3") ) { 2376 addressLine3 = oFormElements[i]; 2377 } else { 2378 if(oFormElements[i].id.indexOf("pc4uCF7City") !== -1 || 2379 oFormElements[i].classList.contains("pc4uCF7City")) { 2380 addressTown = oFormElements[i]; 2381 } else { 2382 if(oFormElements[i].id.indexOf("pc4uCF7County") !== -1 || 2383 oFormElements[i].classList.contains("pc4uCF7County") ) { 2384 addressCounty = oFormElements[i]; 2385 } else { 2386 if(oFormElements[i].id.indexOf("pc4upostcode") !== -1 || 2387 oFormElements[i].classList.contains("pc4upostcode")) { 2388 addressPostcode = oFormElements[i]; 2389 }else { 2390 if(oFormElements[i].id.indexOf("pc4uCF7Dropdown") !== -1 || 2391 oFormElements[i].classList.contains("pc4uCF7Dropdown") ) { 2392 addressSelectDropdown = oFormElements[i]; 2393 } else { 2394 if(oFormElements[i].id.indexOf("pc4uCF7AddressLine") !== -1 || 2395 oFormElements[i].classList.contains("pc4uCF7AddressLine")) { 2396 addressSummaryLine = oFormElements[i]; 2397 } else { 2398 if(oFormElements[i].id.indexOf("pc4uCF7AddressBlock") !== -1 || 2399 oFormElements[i].classList.contains("pc4uCF7AddressBlock")) { 2400 addressSummaryBlock = oFormElements[i]; 2401 } 2402 } 2403 } 2404 } 2405 } 2406 } 2407 } 2408 } 2409 } 2410 } 2411 } 2412 2413 // Get Any 'Hidden Address Fields' Form Div 2414 if(addressHiddenDiv == null) { 2415 oNonFormAddressElements = oformObject.querySelectorAll("[id*='pc4uCF7AddressHidden']"); 2416 if(oFormLegacyDropDownElements && oFormLegacyDropDownElements.length > 0) { 2417 addressHiddenDiv = oFormLegacyDropDownElements[0]; 2418 } 2419 } 2420 2421 // Legacy Browser (IE) Postcode Dropdown Test 2422 if(addressSelectDropdown == null) { 2423 oFormLegacyDropDownElements = oformObject.querySelectorAll("[id*='pc4uCF7Dropdown']"); 2424 if(oFormLegacyDropDownElements && oFormLegacyDropDownElements.length > 0) { 2425 addressSelectDropdown = oFormLegacyDropDownElements[0]; 2426 } 2427 } 2428 } 2429 } 2430 2431 // If Form Valid and Has Elements - Try to Use It
2432 if(formObjectValid) { 2433 // If No 'ID' Matched - then try for field names 2434 if(addressCompany == null) { 2435 testAddressFields = oFormElements["Company"]; 2436 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2437 // Single Entry Found 2438 addressCompany = testAddressFields[0]; 2439 } 2440 } 2441 if(addressLine1 == null) { 2442 testAddressFields = oFormElements["Street"]; 2443 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2444 // Single Entry Found 2445 addressLine1 = testAddressFields[0]; 2446 } 2447 if(addressLine1 == null) { 2448 testAddressFields = oFormElements["Address1"]; 2449 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2450 // Single Entry Found 2451 addressLine1 = testAddressFields[0]; 2452 } 2453 } 2454 } 2455 if(addressLine2 == null) { 2456 testAddressFields = oFormElements["Address2"]; 2457 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2458 // Single Entry Found 2459 addressLine2 = testAddressFields[0]; 2460 } 2461 } 2462 if(addressLine3 == null) { 2463 testAddressFields = oFormElements["Address3"]; 2464 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2465 // Single Entry Found 2466 addressLine3 = testAddressFields[0]; 2467 } 2468 } 2469 if(addressTown == null) { 2470 testAddressFields = oFormElements["City"]; 2471 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2472 // Single Entry Found 2473 addressTown = testAddressFields[0]; 2474 } 2475 if(addressTown == null) { 2476 testAddressFields = oFormElements["Town"]; 2477 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2478 // Single Entry Found 2479 addressTown = testAddressFields[0]; 2480 } 2481 } 2482 } 2483 2484 if(addressCounty == null) { 2485 testAddressFields = oFormElements["County"]; 2486 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2487 // Single Entry Found 2488 addressCounty = testAddressFields[0]; 2489 } 2490 } 2491 if(addressPostcode == null) { 2492 testAddressFields = oFormElements["Postcode"]; 2493 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2494 // Single Entry Found 2495 addressPostcode = testAddressFields[0]; 2496 } 2497 } 2498 if(addressSelectDropdown == null) { 2499 testAddressFields = oFormElements["pc4uCF7Dropdown"]; 2500 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2501 // Single Entry Found 2502 addressSelectDropdown = testAddressFields[0]; 2503 } 2504 } 2505 if(addressSummaryLine == null) { 2506 testAddressFields = oFormElements["pc4uCF7AddressLine"]; 2507 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2508 // Single Entry Found 2509 addressSummaryLine = testAddressFields[0]; 2510 } 2511 } 2512 if(addressSummaryBlock == null) { 2513 testAddressFields = oFormElements["pc4uCF7AddressBlock"]; 2514 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2515 // Single Entry Found 2516 addressSummaryBlock = testAddressFields[0]; 2517 } 2518 } 2519 2520 // Single 'Hidden Address' Area 2521 oNonFormAddressElements = oformObject.querySelectorAll("[id*='pc4uCF7AddressHidden']"); 2522 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2523 addressHiddenDiv = oNonFormAddressElements[0]; 2524 } 2525 } 2526 2527 // Check If No Form or No Address Found 2528 if(!formObjectValid || 2529 (!(addressCompany)&& !(addressPostcode) &&!(addressLine1)&&!(addressLine2)&&!(addressLine3)&&!(addressTown)&&!(addressCounty))){ 2530 2531 // DECODE FIELDS FROM ENTIRE DOCUMENT 2532 // -------------------------------------------- 2533 2534 // - Use 'Legacy' Methods to ensure all browser compatability 2535 2536 // Postcode Field 2537 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCf7Postcode']"); 2538 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2539 addressPostcodeField = oFormLegacyDropDownElements[0]; 2540 } 2541 2542 // Company Field 2543 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCf7Company']"); 2544 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2545 addresssCompanyField = oNonFormAddressElements[0]; 2546 } 2547 if(addresssCompanyField) { 2548 companyFieldFound = true ; 2549 } else { 2550 // ID Not Found - Try for Fields named 'Company 2551 testAddressFields = document.getElementsByName("Company"); 2552 if(testAddressFields && testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2553 // Single Entry Found 2554 addresssCompanyField = testAddressFields[0]; 2555 companyFieldFound = true ; 2556 } 2557 } 2558 2559 // 'Town' / 'City' Field 2560 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7City']"); 2561 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2562 addressTownField = oNonFormAddressElements[0]; 2563 } 2564 if(addressTownField) { 2565 townFieldFound = true ; 2566 } else { 2567 // ID Not Found - Try for Fields named 'City' or 'Town' 2568 testAddressFields = document.getElementsByName("City"); 2569 if(testAddressFields){ 2570 if(testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2571 // Single Entry Found 2572 addressTownField = testAddressFields[0]; 2573 townFieldFound = true ; 2574 } 2575 } 2576 if(!townFieldFound) { 2577 testAddressFields = document.getElementsByName("Town"); 2578 if(testAddressFields){ 2579 if(testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2580 // Single Entry Found 2581 addressTownField = testAddressFields[0]; 2582 townFieldFound = true ; 2583 } 2584 } 2585 } 2586 if(testField.length == 1 && testField[0].type == "text") { 2587 // Single Entry Found 2588 addresssCompanyField = testField[0]; 2589 townFieldFound = true ; 2590 } 2591 } 2592 2593 // Address Line 1 - 'Street' or 'Address1' 2594 addressFieldFound = false ; 2595 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7Address1']"); 2596 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2597 addressLine1Field = oNonFormAddressElements[0]; 2598 } 2599 if(addressLine1Field) { 2600 addressFieldFound = true ; 2601 } else { 2602 // ID Not Found - Try for Fields named 'Street' or 'Address1' 2603 testAddressFields = document.getElementsByName("Street"); 2604 if(testAddressFields){ 2605 if(testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2606 // Single Entry Found 2607 addressLine1Field = testAddressFields[0]; 2608 addressFieldFound = true ; 2609 } 2610 } 2611 if(!addressFieldFound) { 2612 testAddressFields = document.getElementsByName("Address1"); 2613 if(testAddressFields){ 2614 if(testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2615 // Single Entry Found 2616 addressLine1Field = testAddressFields[0]; 2617 addressFieldFound = true ; 2618 } 2619 } 2620 } 2621 } 2622 2623 // Address Line 2 - 'Address2' 2624 addressFieldFound = false ; 2625 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7Address2']"); 2626 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2627 addressLine2Field = oNonFormAddressElements[0]; 2628 } 2629 if(addressLine2Field) { 2630 addressFieldFound = true ; 2631 } else { 2632 // ID Not Found - Try for Fields named 'Address2' 2633 testAddressFields = document.getElementsByName("Address2"); 2634 if(testAddressFields){ 2635 if(testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2636 // Single Entry Found 2637 addressLine2Field = testAddressFields[0]; 2638 addressFieldFound = true ; 2639 } 2640 } 2641 } 2642 2643 // Address Line 3 - 'Address3' 2644 addressFieldFound = false ; 2645 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7Address3']"); 2646 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2647 addressLine3Field = oNonFormAddressElements[0]; 2648 } 2649 if(addressLine3Field) { 2650 addressFieldFound = true ; 2651 } else { 2652 // ID Not Found - Try for Fields named 'Address3' 2653 testAddressFields = document.getElementsByName("Address3"); 2654 if(testAddressFields){ 2655 if(testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2656 // Single Entry Found 2657 addressLine3Field = testAddressFields[0]; 2658 addressFieldFound = true ; 2659 } 2660 } 2661 } 2662 2663 // Address 'County' Line - 'County' 2664 addressFieldFound = false ; 2665 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7County']"); 2666 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2667 addressCountyField = oNonFormAddressElements[0]; 2668 } 2669 if(addressCountyField) { 2670 addressFieldFound = true ; 2671 } else { 2672 // ID Not Found - Try for Fields named 'County' 2673 testAddressFields = document.getElementsByName("County"); 2674 if(testAddressFields){ 2675 if(testAddressFields.length === 1 && testAddressFields[0].type === "text") { 2676 // Single Entry Found 2677 addressCountyField = testAddressFields[0]; 2678 addressFieldFound = true ; 2679 } 2680 } 2681 } 2682 2683 // Single 'Summary' Address Line 2684 addressFieldFound = false ; 2685 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7AddressLine']"); 2686 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2687 addressSummaryLine = oNonFormAddressElements[0]; 2688 } 2689 // Single 'Summary' Address Block 2690 addressFieldFound = false ; 2691 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7AddressBlock']"); 2692 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2693 addressSummaryBlock = oNonFormAddressElements[0]; 2694 } 2695 2696 // Postcode AddressSelect Dropdown 2697 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7Dropdown']"); 2698 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2699 addressSelectDropdown = oFormLegacyDropDownElements[0]; 2700 } 2701 2702 // Single 'Hidden Address' Area 2703 addressFieldFound = false ; 2704 oNonFormAddressElements = document.querySelectorAll("[id*='pc4uCF7AddressHidden']"); 2705 if(oNonFormAddressElements && oNonFormAddressElements.length > 0) { 2706 addressHiddenDiv = oNonFormAddressElements[0]; 2707 } 2708 } 2709 2710 2711 // Return Address Details as Control array 2712 return { 2713 FormCompany: addressCompany, 2714 FormAddLine1: addressLine1, 2715 FormAddLine2: addressLine2, 2716 FormAddLine3: addressLine3, 2717 FormTown: addressTown, 2718 FormCounty: addressCounty, 2719 FormPostcode: addressPostcode, 2720 FormSelectAddress: addressSelectDropdown, 2721 2722 FormAddressSummaryLine: addressSummaryLine, 2723 FormAddressSummaryBlock: addressSummaryBlock, 2724 FormAddressHiddenArea: addressHiddenDiv 2725 2726 }; 2727} 2728 2729// -------------------------------------------------------------------------- 2730// legacyHtmlObjectSearch 2731// ======================= 2732// Seaach for Object on Form. 2733// -------------------------------------------------------------------------- 2734function legacyHtmlObjectSearch(searchObj, searchID){ 2735 //Early return 2736 if( searchObj.id === searchID ){ 2737 return searchObj; 2738 } 2739 var result, p; 2740 for (p in searchObj) { 2741 if( searchObj.hasOwnProperty(p) && typeof searchObj[p] === 'object' ) { 2742 result = legacyHtmlObjectSearch(searchObj[p], searchID); 2743 if(result){ 2744 return result; 2745 } 2746 } 2747 } 2748 return result; 2749 2750} 2751 2752 2753// -------------------------------------------------------------------------- 2754// showPc4uAddressDropdown 2755// ======================= 2756// Function to SHOW PC4u Address Selection Dropdown 2757// Added KRF 2020.04.30 2758// -------------------------------------------------------------------------- 2759function showPc4uAddressDropdown(dropdownObj){ 2760 if(dropdownObj) { 2761 // Use JQuery Show if available - 2021.04.25 2762 try { 2763 jQuery(dropdownObj).show(); 2764 2765 // Check If Show Worked - 2766 if (jQuery(dropdownObj).css('display') === 'none') { 2767 dropdownObj.style.display = ''; 2768 } else { 2769 dropdownObj.style.display = ''; 2770 } 2771 } 2772 catch(err){ 2773 dropdownObj.style.display = ''; 2774 } 2775 2776 // Check for Select2 Container - Needs Showing Too - KRF 2020.04.29 2777 try { 2778 var ddPrev = jQuery(dropdownObj).prev(); 2779 if(ddPrev && ddPrev.hasClass('select2-container')){ 2780 2781 try { 2782 ddPrev.show(); 2783 } 2784 catch(err){ 2785 ddPrev.style.display = ''; 2786 } 2787 ddPrev.css('display','block'); 2788 } 2789 } 2790 catch(error) { 2791 // Do Nothing 2792 } 2793 // Fix for IOS - For CF7 Mostly 2794 setTimeout(function(){ 2795 dropdownObj.focus(); 2796 // lookupDropdown.options[0].selected = true; 2797 },500); 2798 //lookupDropdown.focus(); 2799 } 2800} 2801 2802// ---------------------------------------------------------------- 2803// hidePc4uAddressDropdown 2804// ======================= 2805// Function to HIDE PC4u Address Selection Dropdown 2806// Added KRF 2020.04.30 2807// ---------------------------------------------------------------- 2808function hidePc4uAddressDropdown(dropdownObj, bClearDropdown){ 2809 if(dropdownObj) { 2810 // Use JQuery Hide if available - 2021.04.25 2811 try { 2812 jQuery(dropdownObj).hide(); 2813 if (jQuery(dropdownObj).css('display') !== 'none') { 2814 dropdownObj.style.display = 'none'; 2815 } else { 2816 dropdownObj.style.display = 'none'; 2817 } 2818 } 2819 catch(err){ 2820 dropdownObj.style.display = 'none'; 2821 } 2822 2823 // Check for Select2 Container - Needs Hiding Too - KRF 2020.04.29 2824 try { 2825 var ddPrev = jQuery(dropdownObj).pre
2825v(); 2826 if(ddPrev && ddPrev.hasClass('select2-container')){ 2827 try { 2828 ddPrev.hide(); 2829 } 2830 catch(err){ 2831 ddPrev.style.display = 'none'; 2832 } 2833 } 2834 } 2835 catch(error) { 2836 // Do Nothing 2837 } 2838 2839 // Clear Dropdown list if required 2840 if(bClearDropdown && bClearDropdown === true){ 2841 dropdownObj.options.length = 0; 2842 try { 2843 jQuery(dropdownObj).empty(); 2844 2845 if(ddPrev && ddPrev.hasClass('select2-container')){ 2846 ddPrev.select2('val', '0'); 2847 ddPrev.select2({placeholder: "Select an address:", 2848 allowClear: true }); 2849 } 2850 } 2851 catch(error) { 2852 // Do Nothing 2853 } 2854 } 2855 } 2856} 2857 2858// ---------------------------------------------------------------- 2859// showPc4uGFHiddenAddress 2860// ======================= 2861// Function to Show GravityForms 'Hidden Address Fields 2862// Used to display Address when selected - or when Manual 2863// Address is required for a Hidden GravityForms Address 2864// Added KRF 2021.07.29 2865// ---------------------------------------------------------------- 2866function showPc4uGFHiddenAddress(gfPc4uAddressFieldID){ 2867 2868 var showHiddenGfAddress = document.getElementById(gfPc4uAddressFieldID+"_pc4uGfPostcodeLookupAddress"); 2869 if(showHiddenGfAddress) { 2870 // 2871 showHiddenGfAddress.style.display = ''; 2872 } 2873 var showHiddenGfManualAddressButton = document.getElementById(gfPc4uAddressFieldID+"_pc4uGFManualAddress"); 2874 if(showHiddenGfManualAddressButton) { // 2875 showHiddenGfManualAddressButton.style.display = 'none'; 2876 } 2877} 2878 2879 2880// ------------------------------------------------------------------------ 2881// CheckForAjaxError 2882// ================= 2883// Function to Check If Ajax Response is an Error 2884// PARAMETERS - Full Message Response 'oResponse' and Error Msg Title 2885// RETURN If Error is found it is displayed and the function returns 'True' 2886// .. a return of 'False' mean no error is detected 2887// 2888 2889// Added KRF 2026.07.26 2890function CheckForAjaxError(oResponse, sErrorMsgTitle = "Error Detected"){ 2891 $errorMessage = ''; 2892 $ajaxErrorFound = false; 2893 $oResponseData = null; 2894 $oResponseDataError = null; 2895 // Check For Error - Updated/Omproved for V1.6+ Ajax Calls 2896 try { 2897 if(oResponse === null || typeof oResponse == "undefined" ) { 2898 $ajaxErrorFound = true ; 2899 $errorMessage = 'No Response To Postcodes4u Call'; 2900 } else { 2901 // Valid Response - Get Response Data 2902 $oResponseData = oResponse.data; 2903 if($oResponseData !== null && typeof $oResponseData != "undefined") { 2904 $oResponseDataError = $oResponseData["Error"]; 2905 } 2906 // Check Success State 2907 if(oResponse.success === true) { 2908 // Response Data Valid - Success True 2909 // Check for Error in 'Data' 2910 2911 if(typeof $oResponseDataError != "undefined") { 2912 // Get Error Message 2913 $ajaxErrorFound = true ; 2914 $errorMessage = $oResponseDataError.Description; 2915 } 2916 } else { 2917 // Response = Not Success 2918 // Get Error Message 2919 if(typeof $oResponseDataError == "undefined") { 2920 $ajaxErrorFound = true 2921 $errorMessage = "Unknown Error Detected"; 2922 2923 } else { 2924 $ajaxErrorFound = true 2925 $errorMessage = $oResponseDataError.Description; 2926 } 2927 } 2928 } 2929 } catch(e) { 2930 $ajaxErrorFound = true; 2931 $errorMessage = e.message; 2932 } 2933 2934 // IF ERROR FOUND THEN DISPLAY IT 2935 if($ajaxErrorFound === true) { 2936 // Error Message Clarifyer for the WordPress Plugin 2937 if($errorMessage === 'The specified product key is invali
2937d') { 2938 $errorMessage = 'The Postcodes4u product key is not valid. \n\n' + 2939 'Please check that your Postcodes4u Key is properly setup in the Postcodes4u Plugin settings.'; 2940 } else { 2941 if($errorMessage === 'The specified username was not found') { 2942 $errorMessage = 'The Postcodes4u Username is not valid. \n\n' + 2943 'Please check that your Postcodes4u Username is properly setup in the Postcodes4u Plugin settings.'; 2944 } 2945 } 2946 2947 // DISPLAY ERROR MESSAGE 2948 $errorMessage = sErrorMsgTitle + '\n\n' + $errorMessage; 2949 alert($errorMessage); 2950 console.log($errorMessage); 2951 } 2952 2953 return $ajaxErrorFound; 2954}
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.