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

    function IDX_insertWidgetHtml() {
        const cities = [{"id":6029,"name":"Big Canoe"},{"id":6158,"name":"Snellville"},{"id":6041,"name":"Cedar Bluff"},{"id":33710,"name":"Marble Hill"},{"id":6351,"name":"Tignall"},{"id":6380,"name":"Cadwell"},{"id":31418,"name":"Hazlehurst"},{"id":6213,"name":"Brunswick"},{"id":6174,"name":"Trenton"},{"id":6231,"name":"Commerce"},{"id":6176,"name":"Tucker"},{"id":6100,"name":"Hortense"},{"id":6332,"name":"Rock Mills"},{"id":6283,"name":"Jesup"},{"id":6265,"name":"Good Hope"},{"id":6286,"name":"Knoxville"},{"id":6196,"name":"Alpharetta"},{"id":6113,"name":"Loganville"},{"id":6015,"name":"Alto"},{"id":6323,"name":"Oakwood"},{"id":6022,"name":"Auburn"},{"id":25365,"name":"Tifton"},{"id":6079,"name":"Forsyth"},{"id":6248,"name":"Duluth"},{"id":6254,"name":"Epworth"},{"id":13162,"name":"Mauk"},{"id":6215,"name":"Bulter"},{"id":6306,"name":"Menlo"},{"id":6073,"name":"Fairplay"},{"id":26955,"name":"Brasstown"},{"id":6232,"name":"Cornelia"},{"id":16159,"name":"Westminster"},{"id":6095,"name":"Hillsboro"},{"id":6137,"name":"Powder Springs"},{"id":6219,"name":"Carrollton"},{"id":6144,"name":"Rome"},{"id":31395,"name":"Hayesville"},{"id":6098,"name":"Holly Springs"},{"id":6180,"name":"Valdosta"},{"id":6370,"name":"Winterville"},{"id":6017,"name":"Anderson"},{"id":6364,"name":"Waverly Hall"},{"id":6133,"name":"Pine Mt Valley"},{"id":6268,"name":"Gray"},{"id":6235,"name":"Dacula"},{"id":6378,"name":"Helena"},{"id":6252,"name":"Ellabell"},{"id":24549,"name":"Soperton"},{"id":18266,"name":"Rincon"},{"id":40573,"name":"Woodland"},{"id":6028,"name":"Barnesville"},{"id":6222,"name":"Cedartown"},{"id":6132,"name":"Pine Mountain"},{"id":6067,"name":"Eatonton"},{"id":6057,"name":"Crawfordville"},{"id":6350,"name":"Thomaston"},{"id":6125,"name":"Nicholson"},{"id":6342,"name":"Suches"},{"id":6187,"name":"Williamson"},{"id":6227,"name":"Colbert"},{"id":48691,"name":"Brookhaven"},{"id":6275,"name":"Helen"},{"id":6269,"name":"Grayson"},{"id":6211,"name":"Bremen"},{"id":6331,"name":"Riverdale"},{"id":6147,"name":"Rydal"},{"id":6030,"name":"Blythe"},{"id":6246,"name":"Dry Branch"},{"id":44955,"name":"Nevils"},{"id":6173,"name":"Tiger"},{"id":35539,"name":"Odum"},{"id":6055,"name":"Covington"},{"id":6190,"name":"Woodland"},{"id":24546,"name":"East Dublin"},{"id":6345,"name":"Talking Rock"},{"id":18265,"name":"Richmond Hill"},{"id":6056,"name":"Crawford"},{"id":25016,"name":"Cordele"},{"id":6103,"name":"Ivey"},{"id":6128,"name":"Oxford"},{"id":6153,"name":"Scottdale"},{"id":6115,"name":"Lyerly"},{"id":6129,"name":"Peachtree City"},{"id":6142,"name":"Rock Spring"},{"id":24241,"name":"Centerville"},{"id":6371,"name":"Yatesville"},{"id":6304,"name":"Maxeys"},{"id":6262,"name":"Gainesville"},{"id":6277,"name":"Hoschton"},{"id":6287,"name":"Lake City"},{"id":6089,"name":"Hawkinsville"},{"id":24548,"name":"Rentz"},{"id":6278,"name":"Ila"},{"id":13174,"name":"Talbotton"},{"id":6259,"name":"Flowery Branch"},{"id":6312,"name":"Mineral Bluff"},{"id":40715,"name":"Young Harris"},{"id":6341,"name":"Stone Mountain"},{"id":15232,"name":"Murphy"},{"id":6120,"name":"Mcdonough"},{"id":34458,"name":"Mitchell"},{"id":6293,"name":"Lithonia"},{"id":6281,"name":"Jefferson"},{"id":6201,"name":"Berkeley Lake"},{"id":6200,"name":"Avondale Estate"},{"id":6075,"name":"Fitzgerald"},{"id":30585,"name":"Gibson"},{"id":6124,"name":"Mt Zion"},{"id":6099,"name":"Homer"},{"id":6324,"name":"Palmetto"},{"id":6066,"name":"Eastanollee"},{"id":6309,"name":"Milam"},{"id":6154,"name":"Senoia"},{"id":24545,"name":"Dudley"},{"id":6317,"name":"Murrayville"},{"id":30043,"name":"Five Points"},{"id":6348,"name":"Taylorsville"},{"id":6362,"name":"Watkinsville"},{"id":24543,"name":"Alamo"},{"id":6082,"name":"Glennville"},{"id":6243,"name":"Donalsonville"},{"id":6038,"name":"Canton"},{"id":6068,"name":"Ellijay"},{"id":37729,"name":"Scaly Mountain"},{"id":6043,"name":"Cherry Log"},{"id":6107,"name":"Kingston"},{"id":6255,"name":"Euharlee"},{"id":6290,"name":"Lexington"},{"id":6326,"name":"Piedmont"},{"id":6204,"name":"Blairsville"},{"id":6261,"name":"Fortson"},{"id":6108,"name":"Lafayette"},{"id":34804,"name":"Mountain City"},{"id":6253,"name":"Ellenwood"},{"id":6264,"name":"Gillsville"},{"id":32985,"name":"Leesburg"},{"id":6360,"name":"Warner Robins"},{"id":6247,"name":"Dublin"},{"id":6104,"name":"Jenkinsburg"},{"id":6150,"name":"Sandy Springs"},{"id":6239,"name":"Darien"},{"id":6053,"name":"Conley"},{"id":25401,"name":"Waynesboro"},{"id":6347,"name":"Tallulah Falls"},{"id":16312,"name":"Gaylesville"},{"id":6199,"name":"Avondale"},{"id":6197,"name":"Athens"},{"id":6078,"name":"Forest Park"},{"id":25009,"name":"Cobbtown"},{"id":6310,"name":"Milledgeville"},{"id":6183,"name":"Warrenton"},{"id":6062,"name":"Decatur"},{"id":6285,"name":"Kingsland"},{"id":6367,"name":"White"},{"id":6081,"name":"Franklin Spring"},{"id":6111,"name":"Lithia Springs"},{"id":6328,"name":"Resaca"},{"id":6012,"name":"Albany"},{"id":6105,"name":"Juliette"},{"id":25351,"name":"Statesboro"},{"id":6300,"name":"Macon"},{"id":6325,"name":"Pembroke"},{"id":6267,"name":"Grantville"},{"id":6294,"name":"Lizella"},{"id":6217,"name":"Camp Hill"},{"id":6014,"name":"Allenhurst"},{"id":24968,"name":"Brooklet"},{"id":6249,"name":"Dunwoody"},{"id":6218,"name":"Carnesville"},{"id":39601,"name":"Vidalia"},{"id":16135,"name":"Long Creek"},{"id":6040,"name":"Cartersville"},{"id":6377,"name":"Georgetown"},{"id":6230,"name":"Comer"},{"id":6266,"name":"Gordon"},{"id":6090,"name":"Hayesville"},{"id":6263,"name":"Gay"},{"id":6185,"name":"White Plains"},{"id":6138,"name":"Reidsville"},{"id":6050,"name":"Cohutta"},{"id":6389,"name":"Tate"},{"id":35172,"name":"Newington"},{"id":6191,"name":"Woodstock"},{"id":24247,"name":"Perry"},{"id":6352,"name":"Toccoa"},{"id":6119,"name":"Maysville"},{"id":6242,"name":"Dillard"},{"id":6031,"name":"Bonaire"},{"id":6361,"name":"Washington"},{"id":24243,"name":"Eastman"},{"id":25296,"name":"Register"},{"id":6032,"name":"Bostwick"},{"id":6065,"name":"East Point"},{"id":6195,"name":"Adairsville"},{"id":6280,"name":"Jasper"},{"id":6085,"name":"Greenville"},{"id":12156,"name":"Turtletown"},{"id":28462,"name":"Crandall"},{"id":25310,"name":"Rossville"},{"id":6207,"name":"Bowersville"},{"id":6139,"name":"Ringgold"},{"id":25402,"name":"Wedowee"},{"id":6372,"name":"Adel"},{"id":6319,"name":"Newborn"},{"id":6086,"name":"Haddock"},{"id":35782,"name":"Otto"},{"id":24767,"name":"Heflin"},{"id":48722,"name":"Chattahoochee Hills"},{"id":56005,"name":"Stonecrest"},{"id":6260,"name":"Fort Valley"},{"id":16288,"name":"Cedar Bluff"},{"id":6206,"name":"Bogart"},{"id":6198,"name":"Atlanta"},{"id":6354,"name":"Townsend"},{"id":6256,"name":"Fairburn"},{"id":6229,"name":"Columbus"},{"id":6160,"name":"Sparta"},{"id":6131,"name":"Pine Lake"},{"id":6093,"name":"Hephzibah"},{"id":6308,"name":"Midway"},{"id":24766,"name":"Fruithurst"},{"id":37679,"name":"Sardis"},{"id":30740,"name":"Glenwood"},{"id":48723,"name":"Peachtree Corners"},{"id":15242,"name":"Salem"},{"id":6063,"name":"Demorest"},{"id":6046,"name":"Clarkston"},{"id":6162,"name":"Stephens"},{"id":6250,"name":"East Ellijay"},{"id":6013,"name":"Alexander City"},{"id":6148,"name":"Saint Marys"},{"id":6251,"name":"Elberton"},{"id":6140,"name":"Roanoke"},{"id":6363,"name":"Waverly"},{"id":6143,"name":"Rocky Face"},{"id":34801,"name":"Mount Zion"},{"id":6336,"name":"Sautee"},{"id":6141,"name":"Roberta"},{"id":6096,"name":"Hiram"},{"id":6210,"name":"Braselton"},{"id":6339,"name":"Smyrna"},{"id":6203,"name":"Bishop"},{"id":6178,"name":"Union City"},{"id":6297,"name":"Ludowici"},{"id":6088,"name":"Hartwell"},{"id":6184,"name":"West Point"},{"id":6164,"name":"Sugar Hill"},{"id":6049,"name":"Clermont"},{"id":43866,"name":"Lake Spivey"},{"id":6288,"name":"Lakemont"},{"id":6159,"name":"Social Circle"},{"id":6165,"name":"Sugar Valley"},{"id":6236,"name":"Dahlonega"},{"id":48502,"name":"Huguley"},{"id":33509,"name":"Lyons"},{"id":16120,"name":"Fair Play"},{"id":6171,"name":"Thomasville"},{"id":6170,"name":"The Rock"},{"id":6291,"name":"Lilburn"},{"id":6299,"name":"Mableton"},{"id":6271,"name":"Grovetown"},{"id":6076,"name":"Flovilla"},{"id":24242,"name":"Cochran"},{"id":6272,"name":"Hamilton"},{"id":6322,"name":"Norman Park"},{"id":48724,"name":"Smoke Rise"},{"id":6366,"name":"Waynesville"},{"id":6318,"name":"Nashville"},{"id":30472,"name":"Garfield"},{"id":6333,"name":"Rockmart"},{"id":6376,"name":"Claxton"},{"id":6228,"name":"College Park"},{"id":6130,"name":"Pendergrass"},{"id":24249,"name":"Vienna"},{"id":6225,"name":"Cleveland"},{"id":6072,"name":"Fairmount"},{"id":6110,"name":"Lawrenceville"},{"id":6042,"name":"Centre"},{"id":6161,"name":"St. Simons Isla"},{"id":6349,"name":"Tennille"},{"id":18268,"name":"Tybee Island"},{"id":6101,"name":"Hull"},{"id":6375,"name":"Butler"},{"id":6216,"name":"Byron"},{"id":6305,"name":"Meansville"},{"id":6070,"name":"Ephesus"},{"id":25300,"name":"Rising Fawn"},{"id":6037,"name":"Canon"},{"id":6226,"name":"Cloudland"},{"id":18267,"name":"Springfield"},{"id":6273,"name":"Hampton"},{"id":18270,"name":"Garden City"},{"id":6386,"name":"Nelson"},{"id":25776,"name":"Andrews"},{"id":32163,"name":"Jeffersonville"},{"id":6192,"name":"Zebulon"},{"id":47766,"name":"Mccaysville"},{"id":18269,"name":"Port Wentworth"},{"id":6337,"name":"Sharpsburg"},{"id":6033,"name":"Bowdon"},{"id":6114,"name":"Lula"},{"id":26699,"name":"Bloomingdale"},{"id":6295,"name":"Locust Grove"},{"id":6175,"name":"Trion"},{"id":37702,"name":"Sautee Nacoochee"},{"id":6117,"name":"Marblehill"},{"id":10748,"name":"Roanoke"},{"id":6019,"name":"Armuchee"},{"id":6292,"name":"Lindale"},{"id":28347,"name":"Copperhill"},{"id":13154,"name":"Eufaula"},{"id":6036,"name":"Calhoun"},{"id":6340,"name":"Statham"},{"id":6145,"name":"Roopville"},{"id":25358,"name":"Swainsboro"},{"id":13176,"name":"Valley"},{"id":6358,"name":"Walthourville"},{"id":6102,"name":"Irwinton"},{"id":6276,"name":"Hinesville"},{"id":36709,"name":"Rabun Gap"},{"id":6156,"name":"Shannon"},{"id":13159,"name":"Lafayette"},{"id":6188,"name":"Winder"},{"id":6220,"name":"Cataula"},{"id":6335,"name":"Rutledge"},{"id":6284,"name":"Jonesboro"},{"id":6334,"name":"Royston"},{"id":6303,"name":"Martin"},{"id":6365,"name":"Waycross"},{"id":6355,"name":"Villa Rica"},{"id":33383,"name":"Louisville"},{"id":6223,"name":"Chamblee"},{"id":6329,"name":"Rex"},{"id":18263,"name":"Pooler"},{"id":6069,"name":"Emerson"},{"id":6074,"name":"Felton"},{"id":24550,"name":"Wrightsville"},{"id":28112,"name":"Clyo"},{"id":6209,"name":"Box Springs"},{"id":6172,"name":"Thomson"},{"id":6097,"name":"Hogansville"},{"id":6177,"name":"Tyrone"},{"id":34695,"name":"Moultrie"},{"id":16109,"name":"Anderson"},{"id":6071,"name":"Eulonia"},{"id":32553,"name":"Kite"},{"id":6016,"name":"Americus"},{"id":6289,"name":"Lavonia"},{"id":6313,"name":"Molena"},{"id":6237,"name":"Dallas"},{"id":6116,"name":"Madison"},{"id":6258,"name":"Fleming"},{"id":6384,"name":"Morganton"},{"id":6018,"name":"Aragon"},{"id":6054,"name":"Conyers"},{"id":15209,"name":"Highlands"},{"id":6311,"name":"Milner"},{"id":6240,"name":"Dawson"},{"id":6241,"name":"Dewy Rose"},{"id":6316,"name":"Morrow"},{"id":6146,"name":"Roswell"},{"id":6379,"name":"Abbeville"},{"id":25496,"name":"Adrian"},{"id":6025,"name":"Baldwin"},{"id":23963,"name":"Milton"},{"id":24245,"name":"Kathleen"},{"id":48146,"name":"Other"},{"id":6084,"name":"Greensboro"},{"id":6094,"name":"Hiawassee"},{"id":6134,"name":"Pineview"},{"id":6224,"name":"Chatsworth"},{"id":6092,"name":"Henderson Hills"},{"id":6060,"name":"Davisboro"},{"id":25200,"name":"Millen"},{"id":6245,"name":"Douglasville"},{"id":6091,"name":"Hazelhurst"},{"id":6136,"name":"Porterdale"},{"id":23962,"name":"Johns Creek"},{"id":6122,"name":"Monroe"},{"id":25282,"name":"Portal"},{"id":25359,"name":"Sylvania"},{"id":39808,"name":"Warne"},{"id":29802,"name":"Evans"},{"id":6387,"name":"Sky Valley"},{"id":13160,"name":"Lanett"},{"id":6155,"name":"Shady Dale"},{"id":6282,"name":"Jersey"},{"id":6169,"name":"Temple"},{"id":6179,"name":"Union Point"},{"id":6045,"name":"Clarkesville"},{"id":6346,"name":"Tallapoosa"},{"id":6026,"name":"Ball Ground"},{"id":6357,"name":"Walnut Grove"},{"id":6270,"name":"Griffin"},{"id":6244,"name":"Doraville"},{"id":6390,"name":"Woodville"},{"id":6034,"name":"Buckhead"},{"id":6052,"name":"Concord"},{"id":6151,"name":"Sautee Nacooche"},{"id":6061,"name":"Dawsonville"},{"id":6020,"name":"Arnoldsville"},{"id":6023,"name":"Augusta"},{"id":6356,"name":"Waco"},{"id":18264,"name":"Guyton"},{"id":15245,"name":"Seneca"},{"id":6123,"name":"Moreland"},{"id":6274,"name":"Haralson"},{"id":6163,"name":"Stockbridge"},{"id":24547,"name":"Mcrae"},{"id":6296,"name":"Lovejoy"},{"id":6343,"name":"Summerville"},{"id":6168,"name":"Talmo"},{"id":6359,"name":"Warm Springs"},{"id":25430,"name":"Woodbine"},{"id":6109,"name":"Lagrange"},{"id":6186,"name":"Wiley"},{"id":6327,"name":"Ranger"},{"id":6152,"name":"Savannah"},{"id":6314,"name":"Montezuma"},{"id":6194,"name":"Acworth"},{"id":6135,"name":"Plainville"},{"id":6212,"name":"Brooks"},{"id":6233,"name":"Cumming"},{"id":6083,"name":"Graham"},{"id":6373,"name":"Alapaha"},{"id":6279,"name":"Jackson"},{"id":6149,"name":"Sandersville"},{"id":6238,"name":"Dalton"},{"id":33156,"name":"Lincolnton"},{"id":6369,"name":"Winston"},{"id":6330,"name":"Reynolds"},{"id":6166,"name":"Sunyside"},{"id":6320,"name":"Newnan"},{"id":6118,"name":"Marietta"},{"id":6214,"name":"Buchanan"},{"id":6035,"name":"Buford"},{"id":6064,"name":"Douglas"},{"id":6344,"name":"Suwanee"},{"id":6381,"name":"Gaines School"},{"id":39287,"name":"Turin"},{"id":6257,"name":"Fayetteville"},{"id":6234,"name":"Cusseta"},{"id":39831,"name":"Warthen"},{"id":40273,"name":"White Oak"},{"id":6205,"name":"Blue Ridge"},{"id":6368,"name":"Whitesburg"},{"id":6126,"name":"Norcross"},{"id":6157,"name":"Shiloh"},{"id":6221,"name":"Cave Spring"},{"id":6374,"name":"Avondale Estates"},{"id":6080,"name":"Franklin"},{"id":6385,"name":"Mount Airy"},{"id":6044,"name":"Chickamauga"},{"id":25375,"name":"Twin City"},{"id":6059,"name":"Danielsville"},{"id":6189,"name":"Woodbury"},{"id":6039,"name":"Carlton"},{"id":6321,"name":"Newton"},{"id":24544,"name":"Dexter"},{"id":6024,"name":"Austell"},{"id":6208,"name":"Bowman"},{"id":6106,"name":"Kennesaw"},{"id":6077,"name":"Folkston"},{"id":6087,"name":"Hapeville"},{"id":6301,"name":"Manchester"},{"id":6127,"name":"Norwood"},{"id":6182,"name":"Waleska"},{"id":6048,"name":"Clayton"},{"id":6181,"name":"Vinings"},{"id":6388,"name":"St. Simons"},{"id":6315,"name":"Monticello"},{"id":25196,"name":"Metter"},{"id":6298,"name":"Luthersville"},{"id":6051,"name":"Coleman"},{"id":6058,"name":"Culloden"},{"id":6338,"name":"Silver Creek"},{"id":6302,"name":"Mansfield"},{"id":6021,"name":"Atkinson"},{"id":6202,"name":"Bethlehem"},{"id":6121,"name":"Monore"},{"id":28203,"name":"Collins"},{"id":34274,"name":"Midville"}];
        const url = "https:\/\/itstheperfectspot.com\/listings";
        console.log(cities, url)
        const settings = {"city":null,"sort":"priceDesc","fields":null,"styles":null,"new_tab":"false","criteria":{"max_price_to":2000000,"min_price_to":1000000,"max_price_from":1000000,"min_price_from":0,"price_interval":100000},"search_url":"https:\/\/itstheperfectspot.com\/listings"};
        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();
    }

