
    const IDX_thisScript = document.currentScript;
    ! function() {
        IDX_insertWidgetHtml();
    }()

    function IDX_insertWidgetHtml() {
        const cities = [{"id":24137,"name":"Stoddard"},{"id":24139,"name":"Suring"},{"id":39485,"name":"Van Dyne"},{"id":26799,"name":"Bonduel"},{"id":22094,"name":"Clyman"},{"id":22218,"name":"Lowell"},{"id":40860,"name":"Amherst Jct"},{"id":28782,"name":"De Pere"},{"id":24143,"name":"Twin Lakes"},{"id":24036,"name":"Fontana"},{"id":25598,"name":"Algoma"},{"id":33472,"name":"Luxemburg"},{"id":22223,"name":"Madison"},{"id":40639,"name":"Wrightstown"},{"id":24163,"name":"Whitelaw"},{"id":24012,"name":"Campbellsport"},{"id":35660,"name":"Oneida"},{"id":27622,"name":"Cecil"},{"id":28251,"name":"Combined Locks"},{"id":24074,"name":"Lyons"},{"id":36485,"name":"Porterfield"},{"id":22225,"name":"Manchester"},{"id":24015,"name":"Cedar Grove"},{"id":24160,"name":"West Milwaukee"},{"id":24019,"name":"Cleveland"},{"id":22076,"name":"Byron"},{"id":24121,"name":"Saukville"},{"id":22029,"name":"Adams"},{"id":8990,"name":"Iron River"},{"id":30023,"name":"Fish Creek"},{"id":24133,"name":"South Milwaukee"},{"id":24154,"name":"Waukesha"},{"id":24022,"name":"Cudahy"},{"id":24055,"name":"Hokah"},{"id":22048,"name":"Beaver Dam"},{"id":22054,"name":"Berlin"},{"id":28464,"name":"Crandon"},{"id":24098,"name":"Oconomowoc"},{"id":27519,"name":"Caroline"},{"id":23993,"name":"Bangor"},{"id":11246,"name":"De Soto"},{"id":22307,"name":"Princeton"},{"id":24162,"name":"Whitefish Bay"},{"id":34899,"name":"Nadeau"},{"id":24009,"name":"Butler"},{"id":24166,"name":"Wind Point"},{"id":22162,"name":"Greenfield"},{"id":25400,"name":"Wautoma"},{"id":24043,"name":"Genoa"},{"id":22178,"name":"Iron Ridge"},{"id":22069,"name":"Bristol"},{"id":22083,"name":"Cashton"},{"id":37733,"name":"Scandinavia"},{"id":5161,"name":"Wilson"},{"id":26627,"name":"Black Creek"},{"id":46651,"name":"Stiles"},{"id":22271,"name":"North Fond Du Lac"},{"id":37996,"name":"Shiocton"},{"id":39905,"name":"Waupaca"},{"id":24082,"name":"Merton"},{"id":24028,"name":"Eagle"},{"id":24146,"name":"Union Grove"},{"id":4804,"name":"Hayward"},{"id":32452,"name":"Kewaunee"},{"id":22230,"name":"Markesan"},{"id":23997,"name":"Belgium"},{"id":24131,"name":"Slinger"},{"id":24130,"name":"Sister Bay"},{"id":22128,"name":"Edgerton"},{"id":44480,"name":"Middle Inlet"},{"id":24030,"name":"Elkhart Lake"},{"id":22161,"name":"Green Lake"},{"id":24108,"name":"Port Washington"},{"id":27008,"name":"Brillion"},{"id":21448,"name":"Black River Falls"},{"id":29475,"name":"Egg Harbor"},{"id":22294,"name":"Plainfield"},{"id":35062,"name":"New Franken"},{"id":24060,"name":"Kewaskum"},{"id":22211,"name":"Lisbon"},{"id":54627,"name":"Sevastopol"},{"id":22164,"name":"Hancock"},{"id":36517,"name":"Potter"},{"id":32484,"name":"Kimberly"},{"id":27651,"name":"Cedarville"},{"id":28084,"name":"Clintonville"},{"id":22273,"name":"Norwalk"},{"id":24141,"name":"Thiensville"},{"id":22183,"name":"Janesville"},{"id":33607,"name":"Malone"},{"id":40268,"name":"White Lake"},{"id":17323,"name":"Goodview"},{"id":25452,"name":"Abrams"},{"id":17311,"name":"Caledonia"},{"id":9331,"name":"Stephenson"},{"id":22081,"name":"Cambridge"},{"id":29718,"name":"Ephraim"},{"id":24161,"name":"Westby"},{"id":24969,"name":"Brownsville"},{"id":22124,"name":"East Troy"},{"id":28890,"name":"Denmark"},{"id":39908,"name":"Wausau"},{"id":24062,"name":"Kohler"},{"id":22244,"name":"Milton"},{"id":22187,"name":"Juneau"},{"id":25656,"name":"Almond"},{"id":24156,"name":"Wauwatosa"},{"id":40931,"name":"Ashwaubenon"},{"id":22308,"name":"Pulaski"},{"id":24087,"name":"Mukwonago"},{"id":22247,"name":"Monroe"},{"id":36529,"name":"Pound"},{"id":22098,"name":"Coloma"},{"id":36039,"name":"Pembine"},{"id":22384,"name":"Waupun"},{"id":27775,"name":"Chaseburg"},{"id":24023,"name":"Delafield"},{"id":25220,"name":"Mountain"},{"id":31783,"name":"Hortonville"},{"id":22359,"name":"Sullivan"},{"id":25990,"name":"Athelstane"},{"id":24092,"name":"New Holstein"},{"id":35210,"name":"Niagara"},{"id":33023,"name":"Lena"},{"id":22261,"name":"Neosho"},{"id":32439,"name":"Keshena"},{"id":24089,"name":"Nashotah"},{"id":28193,"name":"Colgate"},{"id":24049,"name":"Greenbush"},{"id":24120,"name":"Salem"},{"id":22258,"name":"Mount Pleasant"},{"id":4915,"name":"Webster"},{"id":24031,"name":"Elkhorn"},{"id":25814,"name":"Antigo"},{"id":39068,"name":"Tilleda"},{"id":27276,"name":"Butte Des Morts"},{"id":22116,"name":"Delavan"},{"id":5297,"name":"Winona"},{"id":24046,"name":"Glenbeulah"},{"id":24000,"name":"Blair"},{"id":35096,"name":"New London"},{"id":24020,"name":"Coon Valley"},{"id":22167,"name":"Hebron"},{"id":40490,"name":"Winneconne"},{"id":24007,"name":"Burlington"},{"id":29507,"name":"Elcho"},{"id":22202,"name":"Lebanon"},{"id":37985,"name":"Sherwood"},{"id":36175,"name":"Pickerel"},{"id":46367,"name":"Silver Cliff"},{"id":25353,"name":"Stockbridge"},{"id":39060,"name":"Tigerton"},{"id":24032,"name":"Elm Grove"},{"id":5099,"name":"Beaver"},{"id":24119,"name":"Saint Cloud"},{"id":24138,"name":"Sturtevant"},{"id":54628,"name":"Town Of Egg Harbor"},{"id":24144,"name":"Two Rivers"},{"id":34408,"name":"Mindoro"},{"id":22322,"name":"Ripon"},{"id":24073,"name":"Little Suamico"},{"id":54631,"name":"Town Of Liberty Grove"},{"id":24006,"name":"Brown Deer"},{"id":26117,"name":"Baileys Harbor"},{"id":32880,"name":"Larsen"},{"id":11121,"name":"Soldiers Grove"},{"id":30153,"name":"Forestville"},{"id":24150,"name":"Wales"},{"id":25919,"name":"Armstrong Creek"},{"id":10961,"name":"Jackson"},{"id":35647,"name":"Omro"},{"id":22311,"name":"Redgranite"},{"id":22340,"name":"Seymour"},{"id":22270,"name":"Newton"},{"id":4720,"name":"Alma"},{"id":24001,"name":"Bowler"},{"id":24111,"name":"Random Lake"},{"id":22079,"name":"Caledonia"},{"id":34980,"name":"Nekoosa"},{"id":37242,"name":"Rosholt"},{"id":24051,"name":"Hales Corners"},{"id":24140,"name":"Sussex"},{"id":22151,"name":"Franklin"},{"id":24115,"name":"River Hills"},{"id":22391,"name":"Westfield"},{"id":24053,"name":"Hartford"},{"id":24109,"name":"Racine"},{"id":5159,"name":"Clayton"},{"id":22341,"name":"Sharon"},{"id":22075,"name":"Burnett"},{"id":31582,"name":"Hilbert"},{"id":34719,"name":"Mount Calvary"},{"id":24048,"name":"Green Bay"},{"id":24128,"name":"Shorewood"},{"id":24132,"name":"Somers"},{"id":30790,"name":"Goodman"},{"id":24079,"name":"Melrose"},{"id":24026,"name":"Dousman"},{"id":31830,"name":"Hubertus"},{"id":28181,"name":"Coleman"},{"id":38674,"name":"Sturgeon Bay"},{"id":54626,"name":"Jacksonport"},{"id":22139,"name":"Fall River"},{"id":40220,"name":"Weyauwega"},{"id":28665,"name":"Dale"},{"id":24067,"name":"Lake Geneva"},{"id":26157,"name":"Bancroft"},{"id":22336,"name":"Saxeville"},{"id":32331,"name":"Kaukauna"},{"id":24059,"name":"Kenosha"},{"id":24088,"name":"Muskego"},{"id":24016,"name":"Cedarburg"},{"id":22314,"name":"Richfield"},{"id":25897,"name":"Arkdale"},{"id":24033,"name":"Elmwood Park"},{"id":22197,"name":"Lake Mills"},{"id":22041,"name":"Ashippun"},{"id":24044,"name":"Genoa City"},{"id":24069,"name":"Lannon"},{"id":22331,"name":"Rosendale"},{"id":24148,"name":"Vernon"},{"id":24118,"name":"Rockland"},{"id":24047,"name":"Grafton"},{"id":22363,"name":"Sun Prairie"},{"id":22381,"name":"Watertown"},{"id":32017,"name":"Iola"},{"id":34972,"name":"Neenah"},{"id":22172,"name":"Hillsboro"},{"id":17319,"name":"Ettrick"},{"id":4758,"name":"Osceola"},{"id":22177,"name":"Hustisford"},{"id":39672,"name":"Wabeno"},{"id":24054,"name":"Hartland"},{"id":24113,"name":"Reedsville"},{"id":24083,"name":"Milwaukee"},{"id":24100,"name":"Oostburg"},{"id":39639,"name":"Viola"},{"id":24093,"name":"Newburg"},{"id":24123,"name":"Shawano"},{"id":22305,"name":"Preston"},{"id":24107,"name":"Pleasant Prairie"},{"id":4172,"name":"Waukegan"},{"id":8845,"name":"Escanaba"},{"id":54625,"name":"Gills Rock"},{"id":43427,"name":"Hobart"},{"id":40531,"name":"Wittenberg"},{"id":11231,"name":"Houston"},{"id":22310,"name":"Randolph"},{"id":22289,"name":"Palmyra"},{"id":5268,"name":"Spring Grove"},{"id":24151,"name":"Walworth"},{"id":46109,"name":"Saint Francis"},{"id":24075,"name":"Manitowoc"},{"id":22150,"name":"Fox Lake"},{"id":24149,"name":"Waldo"},{"id":24152,"name":"Waterford"},{"id":24155,"name":"Wausaukee"},{"id":11381,"name":"Town Of Union"},{"id":22175,"name":"Horicon"},{"id":22181,"name":"Ixonia"},{"id":22154,"name":"Friendship"},{"id":22113,"name":"Deerfield"},{"id":24037,"name":"Fox Point"},{"id":22144,"name":"Fond Du Lac"},{"id":24014,"name":"Cato"},{"id":23991,"name":"Adell"},{"id":24110,"name":"Randall"},{"id":30958,"name":"Green Valley"},{"id":33743,"name":"Marinette"},{"id":22286,"name":"Oxford"},{"id":22297,"name":"Plymouth"},{"id":22380,"name":"Waterloo"},{"id":54629,"name":"Town Of Gibraltar"},{"id":24061,"name":"Kiel"},{"id":22233,"name":"Marshfield"},{"id":24117,"name":"Rochester"},{"id":24129,"name":"Silver Lake"},{"id":40360,"name":"Wild Rose"},{"id":43491,"name":"Howard"},{"id":10949,"name":"Ashland"},{"id":31453,"name":"Helenville"},{"id":24095,"name":"North Prairie"},{"id":36031,"name":"Pelican Lake"},{"id":22366,"name":"Taycheedah"},{"id":24164,"name":"Williams Bay"},{"id":35576,"name":"Okauchee"},{"id":24105,"name":"Pewaukee"},{"id":24159,"name":"West Bend"},{"id":22395,"name":"Whitewater"},{"id":30974,"name":"Greenleaf"},{"id":22157,"name":"Germantown"},{"id":22260,"name":"Necedah"},{"id":35554,"name":"Ogdensburg"},{"id":30348,"name":"Fremont"},{"id":8730,"name":"Carney"},{"id":22338,"name":"Seneca"},{"id":22235,"name":"Mayville"},{"id":17324,"name":"Holmen"},{"id":47615,"name":"Wind Lake"},{"id":25625,"name":"Allenton"},{"id":22047,"name":"Bear Creek"},{"id":53974,"name":"Fair Water"},{"id":25720,"name":"Amberg"},{"id":36549,"name":"Poy Sippi"},{"id":39848,"name":"Washington Island"},{"id":29181,"name":"Dunbar"},{"id":22067,"name":"Brandon"},{"id":24039,"name":"Fredonia"},{"id":22184,"name":"Jefferson"},{"id":22360,"name":"Summit"},{"id":32611,"name":"Krakow"},{"id":24035,"name":"Ferryville"},{"id":22278,"name":"Ontario"},{"id":24124,"name":"Sheboygan"},{"id":22333,"name":"Rubicon"},{"id":36233,"name":"Pine River"},{"id":22146,"name":"Fort Atkinson"},{"id":36109,"name":"Peshtigo"},{"id":24158,"name":"West Allis"},{"id":23999,"name":"Big Bend"},{"id":11376,"name":"Fountain City"},{"id":29605,"name":"Ellison Bay"},{"id":34153,"name":"Menasha"},{"id":29518,"name":"Eldorado"},{"id":5350,"name":"Whitehall"},{"id":27137,"name":"Brussels"},{"id":22152,"name":"Freedom"},{"id":24021,"name":"Crivitz"},{"id":25372,"name":"Trevor"},{"id":4777,"name":"Richmond"},{"id":11101,"name":"Wisconsin Dells"},{"id":17350,"name":"West Salem"},{"id":22109,"name":"Darien"},{"id":22275,"name":"Oakfield"},{"id":38681,"name":"Suamico"},{"id":24068,"name":"Lakewood"},{"id":24065,"name":"La Farge"},{"id":36966,"name":"Rhinelander"},{"id":24125,"name":"Sheboygan Falls"},{"id":17321,"name":"Galesville"},{"id":22313,"name":"Reeseville"},{"id":22367,"name":"Theresa"},{"id":22185,"name":"Johnson Creek"},{"id":22299,"name":"Portage"},{"id":22032,"name":"Albany"},{"id":25247,"name":"Oconto"},{"id":30305,"name":"Franksville"},{"id":27557,"name":"Casco"},{"id":30621,"name":"Gillett"},{"id":17339,"name":"Onalaska"},{"id":5464,"name":"Arcadia"},{"id":24080,"name":"Menomonee Falls"},{"id":36177,"name":"Pickett"},{"id":35524,"name":"Oconto Falls"},{"id":38553,"name":"Stevens Point"},{"id":10995,"name":"Trempealeau"},{"id":22368,"name":"Tomah"},{"id":24142,"name":"Townsend"},{"id":24004,"name":"Brookfield"},{"id":25832,"name":"Appleton"},{"id":33619,"name":"Manawa"},{"id":17326,"name":"La Crescent"},{"id":22376,"name":"Viroqua"},{"id":31002,"name":"Greenville"},{"id":22274,"name":"Oakdale"},{"id":33214,"name":"Little Chute"},{"id":22092,"name":"Clinton"},{"id":24097,"name":"Oak Creek"},{"id":25741,"name":"Amherst"},{"id":24050,"name":"Greendale"},{"id":22399,"name":"Wilton"},{"id":38217,"name":"Sobieski"},{"id":44020,"name":"Lily"},{"id":24018,"name":"Chilton"},{"id":24084,"name":"Mishicot"},{"id":23996,"name":"Bayside"},{"id":24081,"name":"Mequon"},{"id":22127,"name":"Eden"},{"id":9095,"name":"Menominee"},{"id":22099,"name":"Columbus"},{"id":22229,"name":"Marion"},{"id":31025,"name":"Gresham"},{"id":22348,"name":"Sparta"},{"id":22216,"name":"Lomira"},{"id":17310,"name":"Brownsville"},{"id":33052,"name":"Leopolis"},{"id":24057,"name":"Howards Grove"},{"id":32864,"name":"Laona"},{"id":22051,"name":"Beloit"},{"id":24013,"name":"Cascade"},{"id":24101,"name":"Oshkosh"},{"id":33732,"name":"Maribel"},{"id":22262,"name":"Neshkoro"},{"id":32312,"name":"Kansasville"},{"id":36829,"name":"Readstown"},{"id":22158,"name":"Glendale"},{"id":24145,"name":"Underhill"},{"id":14312,"name":"Lake"},{"id":22231,"name":"Marquette"},{"id":11438,"name":"Buffalo City"},{"id":24038,"name":"Francis Creek"},{"id":22248,"name":"Montello"},{"id":24064,"name":"La Crosse"},{"id":24090,"name":"New Berlin"},{"id":24147,"name":"Valders"}];
        const url = "https:\/\/exitelitewi.com\/properties";
        console.log(cities, url)
        const settings = {"city":null,"sort":"priceDesc","fields":[],"styles":[],"new_tab":false,"criteria":[],"search_url":"https:\/\/exitelitewi.com\/properties"};
        const {
            criteria
        } = settings;
        const generateCities = () => {
            let html = '';

            if (cities !== null) {
                // Sort alphabetically by name
                const sorted = [...cities].sort((a, b) =>
                    a.name.localeCompare(b.name)
                );

                sorted.forEach(city => {
                    html += `<li>${city.name}</li>`;
                });
            }

            return html;
        };
        const generatePrice = (from, to, interval = 50000) => {
            from = Number(from);
            to = Number(to);
            interval = Number(interval);

            if (!interval || interval <= 0) return '';

            let html = '';
            for (let i = from; i <= to; i += interval) {
                html += `<li>$${i.toLocaleString()}</li>`;
            }
            return html;
        };
        let html = ` 
        <style>.omnisearch-wrapper *,
.omnisearch-wrapper {
    box-sizing: border-box;
    font-family: inherit;
    padding: 0;
    margin: 0;
}

.omnisearch-wrapper {
    --font-size: 16px;
    --wrapper-bg-color: #f8f8f8;
    --wrapper-padding-y: 20px;
    --wrapper-padding-x: 20px;
    --wrapper-border-size: 1px;
    --wrapper-border-color: #f8f8f8;
    --wrapper-border-radius: 5px;
    --input-bg-color: #fff;
    --input-padding-y: 5px;
    --input-padding-x: 5px;
    --input-border-size: 1px;
    --input-border-color: #cccccc;
    --input-border-radius: 5px;
    --input-color: #000;
    --button-bg-color: rgb(30 64 175);
    --button-padding-y: 5px;
    --button-padding-x: 5px;
    --button-border-size: 1px;
    --button-border-color: rgb(30 64 175);
    --button-border-radius: 5px;
    --button-color: white;
}

.omnisearch-wrapper {
    width: 100%;
    padding: var(--wrapper-padding-y) var(--wrapper-padding-x);
    background-color: var(--wrapper-bg-color);
    border: var(--wrapper-border-size) solid var(--wrapper-border-color);
    border-radius: var(--wrapper-border-radius);
    display: flex;
    justify-content: space-around;
    align-items: center;
    gap: 10px;
    margin: 0 auto;
    box-sizing: border-box;
    max-width: 1300px;
}

@media (max-width: 950px) {
    .omnisearch-wrapper {
        flex-wrap: wrap;
    }

}

.omnisearch-wrapper input {
    width: 100%;
    border: none;
    color: var(--input-color);
    font-size: var(--font-size);
    outline: none;
}

.omnisearch-wrapper input:focus {
    outline: none;
}

.omnisearch-dropdown,
.omnisearch-input-container {
    position: relative;
    display: flex;
    align-items: center;
    background-color: var(--input-bg-color);
    border: var(--input-border-size) solid var(--input-border-color);
    border-radius: var(--input-border-radius);
    padding: var(--input-padding-y) var(--input-padding-x);
    gap: 5px;
    width: 100%;
}

.omnisearch-price {
    flex: 1 0 8rem;
}

.omnisearch-input-container {
    flex: 1 0 8rem;
}

.omnisearch-dropdown svg,
.omnisearch-input-container svg {
    width: var(--font-size);
    height: var(--font-size);
}

.omnisearch-dropdown-menu {
    position: absolute;
    padding: 10px 20px;
    margin-top: 10px;
    top: 100%;
    left: 0;
    background-color: var(--input-bg-color);
    border: var(--input-border-size) solid var(--input-border-color);
    border-radius: var(--input-border-radius);
    z-index: 5;
    display: none;
    min-width: 100%;
    max-height: 250px;
    overflow: hidden;
    overflow-y: scroll;
}

.omnisearch-dropdown-menu.active {
    display: block;
}

.omnisearch-dropdown-menu li {
    list-style: none;
    font-size: var(--font-size);
    color: var(--input-color);
    padding: 10px 5px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

.omnisearch-dropdown-menu li:hover {
    background-color: #f0f0f0;
}

.omnisearch-button {
    all: unset;
    display: flex;
    justify-content: center;
    padding: var(--button-padding-y) var(--button-padding-x);
    background-color: var(--button-bg-color);
    color: var(--button-color);
    border: var(--button-border-size) solid var(--button-border-color);
    border-radius: var(--button-border-radius);
    font-size: var(--font-size);
    cursor: pointer;
    width: 100%;
    flex: 1 0 8rem;
}</style>
        <form class="omnisearch-wrapper" id="omni-search">
            <div class="omnisearch-dropdown" data-field="city">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.1 by @fontawesome  - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"/></svg>
                    <input type="text" name="city" placeholder="City" id="city" autocomplete="off">
                <menu class="omnisearch-dropdown-menu">
                ${generateCities()}
                </menu>
            </div>
            <div class="omnisearch-dropdown omnisearch-price" data-field="min_price">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.1 by @fontawesome  - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z"/></svg>
                    <input type="text" name="min_price" placeholder="Min Price" id="min_price" inputmode="numeric">
                <menu class="omnisearch-dropdown-menu">
                   ${generatePrice(criteria.min_price_from, criteria.min_price_to, criteria.price_interval)}
                </menu>
            </div>
            <div class="omnisearch-dropdown omnisearch-price" data-field="max_price">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.1 by @fontawesome  - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z"/></svg>
                    <input type="text" name="max_price" placeholder="Max Price" id="max_price" inputmode="numeric">
                <menu class="omnisearch-dropdown-menu">
                    ${generatePrice(criteria.max_price_from, criteria.max_price_to, criteria.price_interval)}

                </menu>
            </div>
            <label class="omnisearch-input-container" for="beds" data-field="beds">
                <input type="text" name=beds placeholder="Beds" id="beds" inputmode="numeric">
            </label>
            <label class="omnisearch-input-container" for="baths" data-field="baths">
                <input type="text" name="baths" placeholder="Baths" inputmode="numeric">
            </label>
            <button class="omnisearch-button" type="submit">Search</button>
        </form>`;
        // Get a reference to the current script element
        const IDX_currentScript = document.currentScript;
        // Insert the HTML after the current script element
        if (IDX_currentScript) {
            IDX_currentScript.insertAdjacentHTML('afterend', html);
        }
        initSearchWidget(settings, cities, url);

    }

    function initSearchWidget(settings, cities, url) {
        const omniSearch = document.getElementById('omni-search');
        const dropdowns = document.querySelectorAll('.omnisearch-dropdown');
        const inputs = document.querySelectorAll('.omnisearch-wrapper input');
        const fields = document.querySelectorAll('.omnisearch-wrapper [data-field]');
        const fieldsValues = {
            city: '',
            min_price: 0,
            max_price: 0,
            beds: 0,
            baths: 0
        };

        function setStyles() {
            if(!settings.styles) return;
            for (const [key, value] of Object.entries(settings.styles)) {
                omniSearch.style.setProperty(key, value);
            }
        }

        function formatCurrency(value) {
            return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        }

        function addEventToMenuItems(menu, input) {
            menu.querySelectorAll('li').forEach(li => {
                li.addEventListener('click', (e) => {
                    e.stopPropagation();
                    menu.classList.remove('active');
                    input.value = li.textContent;
                    const inputType = input.getAttribute('inputmode');
                    if (inputType === 'numeric') {
                        input.value = input.value.replace(/[^0-9.]/g, "");
                        fieldsValues[input.getAttribute('name')] = input.value;
                        input.value = formatCurrency(input.value);
                        return;
                    }
                    fieldsValues[input.getAttribute('name')] = input.value;
                });
            });
        }

        function fieldsVisibles() {
            if(!settings.fields) return;
            fields.forEach(field => {
                if (field && settings.fields[field.getAttribute('data-field')]) {
                    field.style.display = 'none';
                }
            });
        }

        function getCityId(cityName) {
            if(!cityName) return '';
            
            const city = cities.find(city => city.name === cityName);
            return city.id;
        }

        dropdowns.forEach(dropdown => {
            const input = dropdown.querySelector('input');
            const menu = dropdown.querySelector('.omnisearch-dropdown-menu');

            dropdown.addEventListener('click', (e) => {
                menu.classList.add('active');
                input.focus();
            });
            if (input.getAttribute('name') === 'city') {
                input.addEventListener('input', () => {
                    const value = input.value;
                    const filteredCities = cities.filter(city => city.name.toLowerCase().includes(value
                        .toLowerCase()));
                    menu.innerHTML = '';
                    filteredCities.forEach(city => {
                        menu.innerHTML += `<li>${city.name}</li>`;
                    });
                    addEventToMenuItems(menu, input);
                });
            }
            addEventToMenuItems(menu, input);

            document.addEventListener('click', event => {
                if (!menu.contains(event.target) && !dropdown.contains(event.target)) {
                    menu.classList.remove('active');
                }
            });
        });

        inputs.forEach(input => {
            input.addEventListener('input', () => {
                const inputType = input.getAttribute('inputmode');
                const key = input.getAttribute('name');
                if (inputType === 'numeric') {
                    input.value = input.value.replace(/[^0-9.]/g, "");
                    fieldsValues[key] = input.value;
                    input.value = formatCurrency(input.value);
                    return;
                }
                fieldsValues[key] = input.value;
            });
        });

        omniSearch.addEventListener('submit', event => {
            event.preventDefault();
            const {
                city,
                min_price,
                max_price,
                beds,
                baths
            } = fieldsValues;
            const apiUrl = `${url}?minListPrice=${min_price}&maxListPrice=${max_price}&bedrooms=${beds}&bathCount=${baths}&propertyType=SFR,CND&status=active&sort=${settings.sort}&cityId=${settings.city?? getCityId(city)}`;

            
            
            // check if settings has new_tab first exists and is true
            if( settings.new_tab && settings.new_tab === true ){
                window.open(apiUrl, '_blank');
            }else{
                window.location.href = apiUrl;
            }
       
        });

        fieldsVisibles();
        setStyles();
    }

