class AdWidget{constructor(e,t,a,n){this.showCarrier="true"===e.dataset.showcarrier,this.carrierId=e.dataset.carrierid,this.ctaUrl=e.dataset.ctaurl,this.direction=e.dataset.direction||"column",this.category=e.dataset.category,this.lob=e.dataset.lob,this.naics=e.dataset.naic,this.naicsDisplay=e.dataset.naicsdisplay,this.getRecommendations({category:e.dataset.category,businessLine:e.dataset.lob,naicsIndustry:e.dataset.naics,pagePath:e.dataset.pagepath||"/",carrierId:e.dataset.carrierid,sourceContent:e.dataset.sourcecontent}).then(i=>{i.json().then(i=>{if(i.carrier||i.faraEligibleAgencies&&i.faraEligibleAgencies.length>0){t.classList.remove("d-none"),t.classList.add("d-block"),this.carrierId=i.carrier&&i.carrier.id?i.carrier.id.toString():void 0,this.renderCarrier(i.carrier,a),this.renderAgencies(i.faraEligibleAgencies,n),this.recordCarrierImpression(i.carrier),this.recordAgencyImpressions(i.faraEligibleAgencies);const s=new CustomEvent("recommendation",{detail:i});e.dispatchEvent(s)}})})}getRecommendations(e){this.removeEmptyValues(e);let t=new URLSearchParams(e).toString();return fetch("/api/v1/recommendations?"+t)}removeEmptyValues(e){let t=Object.getOwnPropertyNames(e);for(let a=0;a\n
\n Recommended insurance companies are highly valued by their partnering Trusted Choice insurance agents.\n
\n Recommended Insurance Company\n
\n
\n \n \n \n \n \n \n \n Locate Agents \n \n `;let a=t.getElementsByClassName("carrier-link");if(a)for(let t of a)t.addEventListener("click",()=>{this.recordCarrierClick(e)})}}getCtaUrlForCarrier(e){const t=this.getSearchContextParams();e.id&&t.set("c",e.id.toString());const a=new URL("/find-an-agent",window.location.toString());return a.search=t.toString(),a.toString()}recordCarrierImpression(e){null!=e&&this.pushAnalytics({event:"impressionPush",ecommerce:{impressions:[{name:e.name,id:e.id.toString(),list:"Sponsored Content Ad",position:1,category:"Carrier"}]}})}recordCarrierClick(e){null!=e&&this.pushAnalytics({event:"clickPush",ecommerce:{click:{actionField:{list:"Sponsored Content Ad"},products:[{name:e.name,id:e.id.toString(),list:"Sponsored Content Ad",position:1,category:"Carrier"}]}}})}renderAgencies(e,t){if(e){let a="";for(let t of e)a+=`
\n
\n
\n ${t.features.includes("agency_dark_badge")?'\n
\n Recommended elite-level agency with higher expertise to match insurance coverage.\n
':""}\n ${t.features.includes("agency_light_badge")?'\n
\n Expert agency specializing in writing niches insurance with higher degree of expertise than other agencies in the area.\n
':""}\n ${t.features.includes("agency_shield_badge")?'\n
\n Recommended agency writing a variety of insurance policies.\n
':""}\n
\n \n ${t.features.includes("agency_tagline")&&t.tagline?t.tagline:"Recommended Local Agency"}\n \n
\n
\n\n
\n
\n \n ${t.name}\n \n
\n ${t.reviewCount?`\n
\n ${this.renderRating(t.averageRating,t.reviewCount)}\n
`:""}\n
\n \n ${t.address.city+", "+t.address.regionCode}\n
\n
\n\n \n
\n
`;t.innerHTML=a}}getCtaUrlForAgency(e){const t=this.getSearchContextParams();e.iiabaId&&t.set("a",e.iiabaId),null!=this.carrierId&&t.set("c",this.carrierId);const a=new URL("/find-an-agent",window.location.toString());return a.search=t.toString(),a.toString()}recordAgencyImpressions(e){if(e.length<1)return;const t=e.map(e=>{let t="";return this.hasFeature("advantage",e)?t="Advantage":this.hasFeature("basic",e)&&(t="Basic"),{list:"Sponsored Content Ad - Agency",name:e.name,id:e.iiabaId,brand:t,variant:null!=e.address?e.address.zipCode:"",category:"Agency"}});this.pushAnalytics({event:"impressionPush",ecommerce:{impressions:t}})}renderRating(e,t){let a="";return a+='',a+='',a+='',a+="",a+=`(${t})`,a}getSearchContextParams(){const e=new URLSearchParams;return e.set("tc","sponsoredClick"),this.category&&e.set("category",this.category),this.lob&&e.set("businessLines",this.lob),this.naics&&e.set("naics",this.naics),this.naicsDisplay&&e.set("naics-display",this.naicsDisplay),e}pushAnalytics(e){window.dataLayer.push(e)}hasFeature(e,t){return t&&t.features&&t.features.includes(e)||!1}}let adWidgets=document.getElementsByClassName("ad-widget");if(adWidgets&&adWidgets.length>0)for(let e of adWidgets){let t=(e.getElementsByClassName("ad-widget-container")||[null])[0],a=(e.getElementsByClassName("ad-widget-carrier")||[null])[0],n=(e.getElementsByClassName("ad-widget-agencies")||[null])[0];if(t&&a&&n){new AdWidget(e,t,a,n)}}