﻿function TabClick(className, divID, tourTypeValue, searcherClientID, searcherID, selectedIndex) {
    try {
        HideDiv($get(openMultiCombo));
    }
    catch (Err) { }
    try {
        HideDiv($get(openCombo));
    }
    catch (Err) { }
    openMultiCombo = null;
    openCombo = null;
    document.getElementById(SearcherId_prefix + divID).className = className;
    $get(SearcherId_prefix + 'HiddenFieldTourType').value = tourTypeValue;
    var tabsDiv = $get(SearcherId_prefix + 'DivTourTypesTabs');
    var tabs = tabsDiv.getElementsByTagName("div");
    var i = 0;
    for (i = 0; i < tabs.length; i++) {
        if (i == selectedIndex) {
            if (tabs[i].className.indexOf("Selected_Tab") == -1) {
                tabs[i].className = tabs[i].className.replace("Unselected_Tab", "Selected_Tab");
            }
        }
        else {
            tabs[i].className = tabs[i].className.replace("Selected_Tab", "Unselected_Tab");
        }
    }
    
    LoadingTextAndRemoveComboContent($get('DivSearcherLocalityCombo'), "Nahrávám...");
    LoadingTextAndRemoveComboContent($get('DivSearcherRegionCombo'), "Nahrávám...");
    LoadingTextAndRemoveComboContent($get('DivSearcherCountryCombo'), "Nahrávám...");

    SearcherChanged(searcherClientID, "all", searcherID);
}

function LiTabClick(className, divID, tourTypeValue, searcherClientID, searcherID) {
    try {
        HideDiv($get(openMultiCombo));
    }
    catch (Err) { }
    try {
        HideDiv($get(openCombo));
    }
    catch (Err) { }
    openMultiCombo = null;
    openCombo = null;
    document.getElementById(SearcherId_prefix + divID).className = className;
    $get(SearcherId_prefix + 'HiddenFieldTourType').value = tourTypeValue;
    
    LoadingTextAndRemoveComboContent($get('DivSearcherLocalityCombo'), "Nahrávám...");
    LoadingTextAndRemoveComboContent($get('DivSearcherRegionCombo'), "Nahrávám...");
    LoadingTextAndRemoveComboContent($get('DivSearcherCountryCombo'), "Nahrávám...");

    SearcherChanged(searcherClientID, "all", searcherID);
}

function LoadingTextAndRemoveComboContent(comboDiv, loadingText) {
    var comboBoxes = comboDiv.getElementsByTagName("input");
    var divs = comboDiv.getElementsByTagName("div");
    var i = 0;
    for (i = 0; i < comboBoxes.length; i++) {
        if (comboBoxes[i].type = "text") {
            comboBoxes[i].value = loadingText;
            break;
        }
    }
    for (i = 0; i < divs.length; i++) {
        if (divs[i].id.indexOf("DivComboValues") != -1) {
            var ul = divs[i].getElementsByTagName("ul")[0];
            if (ul != undefined && ul != null) {
                ul.innerHTML = "";
            }
            break;
        }
    }
}

function GetSelectedParameters(searcherClientID) {
    var searcher = $get(searcherClientID);
    var inputs = searcher.getElementsByTagName('input');
    var selectedParams = "";
    var i = 0;
    for (i = 0; i < inputs.length; i++) {
        if ((inputs[i].attributes["type"].value == "hidden") ||
        (inputs[i].attributes["valueinput"] != undefined && inputs[i].attributes["valueinput"] != null && inputs[i].attributes["valueinput"].value == "1")) {
            var elementValue = inputs[i].value;
            if (inputs[i].attributes["elementid"] != undefined && inputs[i].attributes["elementid"] != null && elementValue != "") {
                var elementID = inputs[i].attributes["elementid"].value;
                switch (elementID) {
                    case "MultiSelectComboBoxCountry":
                        selectedParams += "country$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxRegion":
                        selectedParams += "region$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxLocality":
                        selectedParams += "locality$" + elementValue + "#";
                        break;
                    case "NiceDateTimePickerFrom":
                        selectedParams += "dateFrom$" + elementValue + "#";
                        break;
                    case "NiceDateTimePickerTo":
                        selectedParams += "dateTo$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxDaysCount":
                        selectedParams += "days$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxNightsCount":
                        selectedParams += "nights$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxCategory":
                        selectedParams += "category$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxBoardType":
                        selectedParams += "board$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxTransportType":
                        selectedParams += "transport$" + elementValue + "#";
                        break;
                    case "NiceTextBoxPriceFrom":
                        selectedParams += "priceFrom$" + elementValue + "#";
                        break;
                    case "NiceTextBoxPriceTo":
                        selectedParams += "priceTo$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxPrice":
                        selectedParams += "priceRange$" + elementValue + "#";
                        break;
                    case "MultiSelectComboBoxAirports":
                        selectedParams += "airports$" + elementValue + "#";
                        break;
                    case "ImageCheckBoxOnlyLastMinute":
                        selectedParams += "lastMinute$" + elementValue + "#";
                        break;
                    case "NiceTextBoxHotel":
                        selectedParams += "hotel$" + elementValue + "#";
                        break;
                    case "NiceTextBoxAction":
                        selectedParams += "action$" + elementValue + "#";
                        break;
                }
            }
        }
    }

    return selectedParams.substring(0, selectedParams.length - 1);
}

function SearcherChanged(searcherClientID, geographyChnage, searcherID) {
    var selectedParams = GetSelectedParameters(searcherClientID);
    WebBooking.WebUserControls.SearcherService.UpdateSearcherData(selectedParams, geographyChnage, $get(SearcherId_prefix + 'HiddenFieldTourType').value, searcherClientID, searcherID, SearcherSucc, SearcherErr);
    var loader = $get('ImageSearcherLoader');
    loader.style.display = '';
    var toursCount = $get(SearcherId_prefix + 'LabelToursCount');
    toursCount.innerHTML = "";
}

function SearcherSucc(result) {
    var loader = $get('ImageSearcherLoader');
    loader.style.display = 'none'; 
    var toursCount = $get(SearcherId_prefix + 'LabelToursCount');
    toursCount.innerHTML = ': ' + result.ToursCount;
    if (result.LocalityCombo != undefined && result.LocalityCombo != null && result.LocalityCombo != "") {
        var localityCombo = $get('DivSearcherLocalityCombo');
        localityCombo.innerHTML = "";
        localityCombo.innerHTML = result.LocalityCombo;
    }
    if (result.RegionCombo != undefined && result.RegionCombo != null && result.RegionCombo != "") {
        var regionCombo = $get('DivSearcherRegionCombo');
        regionCombo.innerHTML = "";
        regionCombo.innerHTML = result.RegionCombo;
    }
    if (result.CountryCombo != undefined && result.RegionCombo != null && result.RegionCombo != "") {
        var regionCombo = $get('DivSearcherCountryCombo');
        regionCombo.innerHTML = "";
        regionCombo.innerHTML = result.CountryCombo;
    }
}

function SearcherErr(error) {
}

function Search(searcherClientID) {
    var initSearch = $get(SearcherId_prefix + 'HiddenFieldInitSearch').value;
    var onlySearcherOnPage = $get(SearcherId_prefix + 'HiddenFieldOnlySearcherOnPage').value;
    var selectedParams = "";
    if (initSearch == "1") {
        selectedParams = "init$init";
        $get(SearcherId_prefix + 'HiddenFieldInitSearch').value = "";
    }
    else {
        selectedParams = GetSelectedParameters(searcherClientID);
    }
    var personsDiv = $get('DivSearcherPersons');
    var inputs = personsDiv.getElementsByTagName("input");
    var selectedPersons = "";
    var i = 0;
    for (i = 0; i < inputs.length; i++) {
        if (inputs[i].type == "hidden" && inputs[i].id.indexOf('HiddenFieldSelectedPersons') != -1) {
            selectedPersons = inputs[i].value;
            break;
        }
    }
    var tourType = $get(SearcherId_prefix + 'HiddenFieldTourType').value;
    //save tourType for paging
    $get(SearcherId_prefix + 'HiddenFieldSelectedTourType').value = tourType;
    //save persons for paging
    $get(SearcherId_prefix + 'HiddenFieldSelectedPersons').value = selectedPersons;
    //save params for paging
    $get(SearcherId_prefix + 'HiddenFieldSelectedParams').value = selectedParams;
    
    //show loader
    var loader = $get('div_loader_searcher');
    var inactiveDiv = $get(SearcherParentId);
    var searchResultDiv = $get('DivSearcherResultContainer');
    if (searchResultDiv != undefined && searchResultDiv != null) {
        HideAllTermsDivs(searchResultDiv.id);
    }
    ShowObjectAndInactiveBackground(inactiveDiv, inactiveDiv, loader, "Inactive", "shadowDiv12xc21x24d21sss");

    if (SearcherActualPage == null) {
        SearcherActualPage = 1;
    }

    WebBooking.WebUserControls.SearcherService.GetSearchResult(selectedParams, tourType, selectedPersons, SearcherActualPage, "", "", SearcherResultType, onlySearcherOnPage, SearchResultSucc, SearchResultErr);
    SearcherActualPage = null;
}

function SearchResultSucc(result) {
    if (result != undefined && result != null && result != "") {
        if (result.startsWith('<')) {
            var searchResultDiv = $get('DivSearcherResultContainer');
            searchResultDiv.innerHTML = "";
            searchResultDiv.innerHTML = result;
            //hide loader
            var loader = $get('div_loader_searcher');
            var inactiveDiv = $get(SearcherParentId);
            HideObjectAndActiveBackground(inactiveDiv, loader, "shadowDiv12xc21x24d21sss");
        }
        else {
            window.location = result;
        }
    }
    else {
        //hide loader
        var loader = $get('div_loader_searcher');
        var inactiveDiv = $get(SearcherParentId);
        HideObjectAndActiveBackground(inactiveDiv, loader, "shadowDiv12xc21x24d21sss");
    }
}

function SearchResultErr(error) {
    //hide loader
    var loader = $get('div_loader_searcher');
    var inactiveDiv = $get(SearcherParentId);
    HideObjectAndActiveBackground(inactiveDiv, loader, "shadowDiv12xc21x24d21sss");
}

function SearcherResultType_Click(resultType) {
    var imageContainer = $get(SearcherId_prefix + 'DivSearcherResultTypeImageContainer');
    if (typeof (imageContainer) != undefined && imageContainer != null) {
        if (resultType == 'tiles') {
            imageContainer.className = "div_SearcherResultTypeImageContainer div_ResultTypeTiles";
            SearcherResultType = 'tiles'
        }
        else {
            imageContainer.className = "div_SearcherResultTypeImageContainer div_ResultTypeRows";
            SearcherResultType = 'rows'
        }
    }
}
