document.addEventListener('alpine:init',()=>{Alpine.data('postcodeSearch',()=>({showSpinner:false,showWaitingSpinner:false,postcodeInput:"",errorText:"",addressList:[],selectedAddress:"",init(){this.postcodeInput=this.$root.querySelector(".postcode-input").value;},searchPostcode(){this.postcodeInput=this.$root.querySelector(".postcode-input").value;this.showSpinner=true;this.showWaitingSpinner=false;this.errorText="";if(this.checkPostcode()==false){this.showSpinner=false;return;}
this.getAddressList();},async getAddressList(){var searchData={key:this.postcodeNoSpaces()};this.addressList=await fetch('/umbraco/Api/Address/GetAddressList',{method:'POST',headers:{'Content-Type':'application/json','RequestVerificationToken':document.getElementsByName('__RequestVerificationToken')[0].value},body:JSON.stringify(searchData)}).then(function(response){if(response.status===200){return response.json();}
return null;}).then(function(data){if(!data||data.length==0){return[];}
if(data[0].address==null&&data[0].LandingPage!=""){window.location.replace(data[0].LandingPage);}
return data;});this.showSpinner=false;},checkPostcode(){if(this.postcodeNoSpaces()===''){return false;}
var regex=new RegExp("([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9][A-Za-z]?))))\s?[0-9][A-Za-z]{2})");if(!regex.test(this.postcodeNoSpaces())){this.errorText="You must input a valid postcode to proceed. If you do not input a proper postcode we will not be able to match your address";return false;}},postcodeNoSpaces(){var postcodeEnteredNoSpaces=this.postcodeInput.trim().replace(/\s/g,'');return postcodeEnteredNoSpaces;},getAddressLabel(address){var splitAddress=address.address.split(", ");var line1=this.titleCase(address.addressLine1);if(!line1){line1=this.titleCase(splitAddress[0]);}
var line2=this.titleCase(address.addressLine2);if(!line2&&splitAddress.length>3){line2=this.titleCase(splitAddress[1]);}
var line3=this.titleCase(address.addressLine3);if(!line3&&splitAddress.length>4){line3=this.titleCase(splitAddress[2]);}
var city=this.titleCase(address.city);if(!city){city=this.titleCase(splitAddress[splitAddress.length-2]);}
var lines=[line1,line2,line3,city,address.postcode];var text=lines.filter(Boolean).join(", ");return text;},getAddressValue(address){let addressJson={"uprn":address.uprn??address.ref,"address":address.address,"locationId":address.locationId,"addressLine1":address.addressLine1,"addressLine2":address.addressLine2,"addressLine3":address.addressLine3,"city":address.city,"postcode":this.postcodeNoSpaces()}
return JSON.stringify(addressJson);},titleCase(str){if(!str)return str;str=str.toLowerCase().split(' ');for(var i=0;i<str.length;i++){str[i]=str[i].charAt(0).toUpperCase()+str[i].slice(1);}
return str.join(' ');}}));});;;
