/// prointernet Grid List Search
/// Version: 2.0.8006.30174

function gridListSearch() {
    this.config = {
        layerTarget: "",
        emptyText: "Keine Seiten gefunden",
        baseUrl: "",
        clientKey: "",
        cssClass: "",
        closeText: "Suchergebnisse ausblenden",
        baseData: {},
        autoSearch: false
    };

    this.searchTimeout = null;
    this.txt = $(this);
    this.searchLayer = null;

}

gridListSearch.prototype.init = function (config) {
    var s = this;

    s.config = $.extend(s.config, config);

    //AjaxNav.setClientParams(s.config.clientKey);

    // Textbox Keypress
    s.txt.bind("keydown search", function (e) {

        // Wenn kein AutoSearch dann nur bei Enter ausführen
        if (!s.config.autoSearch) {
            if (e.which != 13) {
                return true;
            }
        }

        clearTimeout(s.searchTimeout);
        s.searchTimeout = setTimeout(function () {
            var currentQuery = s.txt.val();
            if (s.lastQuery != currentQuery) {
                s.doSearch(currentQuery);
            }

        }, 500);

    });

    // Textbox Focus / Blur Placeholder Text
    s.txt.focus(function () {
        if (s.searchLayer && s.searchLayer.is(":hidden")) {
            s.searchLayer.show();
        }

    });

    // Clear
    s.txt.bind("change", function () {
        var val = $(this).val();
        if (val == "" && s.lastQuery != "") {
            s.doSearch(null);
        }
    })

}

gridListSearch.prototype.doSearch = function (query) {
    var s = this;
    s.lastQuery = query;

    if (query) {
        // Redirect zu Query [inlineBaseUrl]?[clientKey]=query
        var queryParams = {};
        queryParams[s.config.clientKey] = query;

        var config = {};
        var renderId = s.txt.attr("render");
        if (renderId) {
            config["renderId"] = renderId;
        }

        AjaxNav.go(s.config.baseUrl, queryParams);
    } else {
        // Redirect zur Liste ohne Query [inlineBaseUrl]
        AjaxNav.go(s.config.baseUrl);
    }

}

gridListSearch.prototype.isValidSearchString = function (query) {
    return (query && query != "" && query != this.txt.attr("placeholder"));
}

$.fn.gridListSearch = function (config) {
    var s = $(this);

    if (!s.data("gridListSearch")) {
        var lSearch = new gridListSearch();
        lSearch.txt = $(this);
        lSearch.init(config);

        s.data("gridListSearch", lSearch);
    }
}