
window.runAutomagicSearch = function (index, queryKey, service, dnsSuffix) {



    var defaultCss = {
        // searchBox
        searchBox__container: "searchBox__container",
        searchBox__containerOpen: "searchBox__container--open",
        searchBox__input: "searchBox__input",
        searchBox__suggestionsContainer: "searchBox__suggestions-container",
        searchBox__suggestionsList: "searchBox__suggestions-list",
        searchBox__suggestion: "searchBox__suggestion",
        searchBox__suggestionFocused: "searchBox__suggestion--focused",
        searchBox__sectionContainer: "searchBox__section-container",
        searchBox__sectionTitle: "searchBox__section-title",
        searchBox__inputContainer: "searchBox__input-container flex",
        searchBox__buttonContainer: "searchBox__button-container",
        searchBox__button: "searchBox__button",
        searchBox__buttonIcon: "searchBox__button-icon",
        // faceting
        searchFacets__rangeFacet: "searchResults__rangeFacet",
        searchFacets__checkboxFacet: "searchResults__checkboxFacet",
        searchFacets__facetHeaderContainer: "searchResults__facetHeader-container",
        searchFacets__facetHeader: "searchResults__facetHeader",
        searchFacets__facetHeaderLink: "searchResults__facetHeader-link",
        searchFacets__facetHeaderIconCollapsed: "searchResults__facetHeader-icon--collapsed",
        searchFacets__facetHeaderIconOpen: "searchResults__facetHeader-icon--open",
        searchFacets__facetControlContainer: "searchResults__facetControl-container",
        searchFacets__facetControlList: "searchResults__facetControl-list",
        searchFacets__facetControl: "searchResults__facetControl",
        searchFacets__facetControlCheckboxWrapper: "searchResults__facetControl-checkbox-wrapper checkbox",
        searchFacets__facetControlCheckboxChecked: "searchResults__facetControl-checkbox--checked",
        searchFacets__facetControlCheckboxCheckedHover: "searchResults__facetControl-checkbox--checkedHover",
        searchFacets__facetControlCheckboxUnchecked: "searchResults__facetControl-checkbox--unchecked",
        searchFacets__facetControlCheckboxUncheckedHover: "searchResults__facetControl-checkbox--uncheckedHover",
        searchFacets__facetControlCheckbox: "searchResults__facetControl-checkbox",
        searchFacets__facetControlRangeLabel: "searchResults__facetControl-rangeLabel",
        searchFacets__facetControlRangeLabelMin: "searchResults__facetControl-rangeLabelMin",
        searchFacets__facetControlRangeLabelMax: "searchResults__facetControl-rangeLabelMax",
        searchFacets__facetControlRangeLabelRange: "searchResults__facetControl-rangeLabelRange",
        searchFacets__sliderContainer: "searchFacets__sliderContainer",
        searchFacets__clearFiltersButtonControl: "searchResults__clearFiltersButtonControl",
        searchFacets__clearFiltersButtonDisabled: "searchFacets__clearFiltersButtonDisabled hidden",
        // sorting
        sorting__sortBy: "sorting__sortyBy",
        sorting__sortByControl: "sorting__sortyByControl w-full",
        // results
        searchResults__result: "searchResults__result",
        results__blurb: "results__blurb",
        // pager
        pager__pageItem: "pager__pageItem",
        pager__pageItemActive: "pager__pageItemActive active",
        pager__pageItemDisabled: "pager__pageItemDisabled disabled",
        pager__pageLink: "pager__pageLink page-link",
        pager__list: "pager__list",
        pager__nav: "pager__nav",
        // should be only visible to screen reader
        screenReaderOnly: "screenReaderOnly sr-only"
    };




    // WARNING
    // For demonstration purposes only, do not use in a production environment.

    // Usa as variáveis passadas do Blazor em vez de as expor diretamente no ficheiro JavaScript
    var automagic = new AzSearch.Automagic({
        index: index,
        queryKey: queryKey,
        service: service,
        dnsSuffix: dnsSuffix
    });


  

    const resultTemplate = `<div class="w-full aspect-[4/3] result_img overflow-hidden">
                                        <img class="w-full h-full object-cover result_img" src="https://xaehjyex2p.cloudimg.io/{{PhotoUrl}}?w=500" alt={{AdTitle}} />
                                    </div>
                                    <div class="absolute inset-0 flex flex-col justify-end">
                                        <a href="/inmueble/{{ContractNumber}}" class="inset-0 absolute size-full z-20 cursor-pointer"></a>
                                        <div class="inset-0 -z-0 absolute bg-gradient-to-t from-black/50 via-black/25 to-black/0"></div>
                                        <div class="flex z-10 px-2">
                                            <p class="text-neutral-500 sr-only">{{ContractNumber}}</p>
                                            <div class="grow shrink-0 flex flex-col pb-4">
                                                <span class="text-2xl font-bold leading-7 text-white tracking-widest">{{Price}} €</span>
                                                <span class="font-light uppercase text-white">Municipio</span>
                                            </div>
                                            <div class="shrink-0 flex items-center gap-2 text-white font-light">
                                                <div class="flex flex-col items-center">
                                                    <span class="text-lg leading-none">{{Bedrooms}}</span>
                                                    <span>hab.</span>
                                                </div>
                                                <div class="flex flex-col items-center">
                                                    <span class="text-lg leading-none">{{Bathrooms}}</span>
                                                    <span>baños</span>
                                                </div>
                                                <div class="flex flex-col items-center">
                                                    <span class="text-lg leading-none">{{TotalSpace}}</span>
                                                    <span>m²</span>
                                                </div>
                                            </div>
                                        </div>
                                    </div>`;



    // automagic.addLoadingIndicator("spinner");

    automagic.addResults("results", { count: true }, resultTemplate);
    automagic.addPager("pager");

    var suggestionsProcessor = function (results) {
        return results.map(function (result) {
            result.searchText = result["@search.text"];
            return result;
        });
    };

    automagic.store.setSuggestionsProcessor(suggestionsProcessor);

    var suggestionsTemplate = `
                                <div class="px-4 py-2 text-neutral-200">
                                    <p>{{PostalCode}} {{AddressLocalLevelName}} </p> {{{searchText}}}
                                </div>`;

    automagic.addSearchBox("searchBox", {
        highlightPreTag: "<span class='font-semibold text-primary'>",
        highlightPostTag: "</span>",
        suggesterName: "sg",
        select: "PropertyTypeName,AdTitle,AddressLocalLevelName,StreetName,PostalCode",
        top: 10
    }, "", suggestionsTemplate, defaultCss);

    automagic.addCheckboxFacet("AddressLocalLevelNameFacet", "AddressLocalLevelNameThirdElement", "string", defaultCss);

    automagic.addCheckboxFacet("PropertySubTypeNameFacet", "PropertySubTypeName", "string", defaultCss);

    automagic.addCheckboxFacet("BedroomsFacet", "Bedrooms", "number", defaultCss);

    automagic.addCheckboxFacet("BathroomsFacet", "Bathrooms", "number", defaultCss);

    automagic.addCheckboxFacet("PropertyConditionNameFacet", "PropertyConditionName", "string", defaultCss);

    automagic.addCheckboxFacet("FeatureTypeNamesFacet", "FeatureTypeNames", "collection", defaultCss);


    // Adds a button to clear any applied filters
    automagic.addClearFiltersButton("clearFilters");

    // Definir uma consulta de busca inicial
    // set a pre-defined input to search/suggest
    automagic.store.setInput("");
    automagic.store.search();

    // create an checkbox facet, updates internal application state
    // checkbox facets are used for discrete value filtering
    // a common scenario is ratings on ecommerce sites
    // a website might display checkboxes to filter by 1* 2* 3* 4* 5* rated products
    /////////automagic.store.addCheckboxFacet("beds", "number");
    // issue a search request that will populate facets for that field
    // note search() returns a promise
    //////////automagic.store.search().then(...)
    // simulates a user selecting a facet checkbox for the value "urban"
    // will produce the filter $filter="beds eq 3"
    //automagic.store.toggleCheckboxFacet("PropertyTypeNameFacet", "Apartamento");

    //automagic.store.set("PropertyTypeNameFacet", "Apartamento")

    // make the request to retrieve results, applying the recently generated filter
    //automagic.store.searchFromFacetAction();


    // PARA USAR A PARTIR DO BLAZOR
    window.automagicInstance = automagic;


};



function automagicInvokeStartPropertyType(value) {
    window.automagicInstance.store.setGlobalFilter("PropertyTypeName", "PropertyTypeName eq '" + value + "'");
    window.automagicInstance.store.searchFromFacetAction();
}

function automagicInvokeSetPrice(min, max) {
    console.log("Min:", min);
    console.log("Max:", max);
    window.automagicInstance.store.setGlobalFilter("Price", `Price ge ${min} and Price le ${max}`);
    window.automagicInstance.store.searchFromFacetAction();
}

function automagicInvokeSetSize(min, max) {
    console.log("Min:", min);
    console.log("Max:", max);
    window.automagicInstance.store.setGlobalFilter("TotalSpace", `TotalSpace ge ${min} and TotalSpace le ${max}`);
    window.automagicInstance.store.searchFromFacetAction();
}



function updateHref() {
    var links = document.querySelectorAll('a[href="#"]');
    links.forEach(function(link) {
        link.setAttribute('href', 'javascript:void(0)');
    });
}


