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

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

