var inputSelector = 'input.header_search_input';
var searchButtonSelector = 'span.header_search_button';
var frequentlySearchedContainerSelector = 'div.frequently_searched_container';
var quickSearchOptionsContainerSelector = 'div.quick_search_options';
var debounceTimeout = 500;
var minSearchQueryLength = 3;
var searchResultsPage = '/wyniki-wyszukiwania';
var quickSearchAction = '?action=pzu_search.quickSearchOptions';
var frequentlySearchedAction = '?action=pzu_search.getFrequentlySearched';
var inited = false;
var area, nodeId;


$(document).on("ready", function() {
    area = $('html').data('area');
    nodeId = $('html').data('node-id');

    $(inputSelector).on("input", $.debounce(debounceTimeout, onInput));
    $(inputSelector).on("keypress", function(e) {
        if (e.which === 13) {
            e.preventDefault();
            moveWithInputValueAsSearchQuery();
        }
    });
    $(searchButtonSelector).on("click", moveWithInputValueAsSearchQuery);
});

function buildFrequentlySearchActionParams() {
    return {
        nodeId: nodeId
    }
}

function initSearchLayer() {
    if (!inited) {
        oneweb.CsrfTokenManager.postAjax(frequentlySearchedAction, buildFrequentlySearchActionParams(), function(result) {
            $(frequentlySearchedContainerSelector).html(result);
            inited = true;
        });
    }
}

function buildQuickSearchActionParams(query) {
    return {
        query: query,
        area: area
    }
}

function showQuickSearchResults(results) {
    console.log('showQuickSearchResults');
    if ((results || "").length === 0) {
        console.log(results);
        showFrequentlySearched();
    } else {
        $(frequentlySearchedContainerSelector).hide();
        $(quickSearchOptionsContainerSelector).html(results);
    }
}

function showFrequentlySearched() {
    $(frequentlySearchedContainerSelector).show();
    $(quickSearchOptionsContainerSelector).empty();
}

function onInput() {
    console.log('on input');
    var searchQuery = $(inputSelector).val() || "";
    if (searchQuery.length < minSearchQueryLength) {
        return showFrequentlySearched();
    }

    var parameters = buildQuickSearchActionParams(searchQuery);
    oneweb.CsrfTokenManager.postAjax(quickSearchAction, parameters, showQuickSearchResults);
}

function moveWithInputValueAsSearchQuery() {
    console.log('move ?');
    var searchQuery = $(inputSelector).val();
    var destLocation = searchResultsPage;

    if (searchQuery.length > 0) {
        destLocation += "?" + $.param({query: searchQuery});
        window.location = destLocation;
    }
}