
// zpracovani checkboxu
function checkFilterData(element, filterName, filterValue) {
    if (element.checked) {
        setFilterData('add', filterName, filterValue, 0);
    } else {
        setFilterData('delete', filterName, filterValue, 0);
    }
}

var filterQueryString = "";
// pripraveni linku a nasetovani do globalni promenne
function setFilterData(filterType, filterName, filterValue, bOnly) {
    if (filterType == 'remove') {
        jQ("#" + filterName + "_checks input[@type='checkbox']").each(function() {
            jQ(this).removeAttr('checked');
        });
    }
    
    // add - zaskrtnuti checkboxu
    // replace - jQuery slider pro cenu
    if (filterType === 'add' || filterType === 'replace') {
    	aagGaq.callEvent('data_filter', filterName, (filterValue+"").replace(/^([0-9]{1,2})([0-9]{2})\|([0-9]{1,2})([0-9]{2})$/,'$1:$2|$3:$4'));
    }
    
    filterQueryString = 'choosenFilterType=' + filterType + '&choosenFilterName=' + filterName + '&choosenFilterValue=' + filterValue + '&choosenOnlyFilter=' + bOnly;
}

function setCheckBox(filterName, id) {
    jQ("#" + filterName + "_checks input[@type='checkbox']").each(function() {
        jQ(this).removeAttr('checked');
    });
    jQ("#" + filterName + '_' + id).attr('checked', 'checked');
}

var changeTimeDirection = false;

function switchDepTimeDirection(showContainer, hideContainer) {
    jQ("#"+hideContainer).hide();
    jQ("#"+showContainer).show();
    changeTimeDirection = true;
}

function createTimeSlider(sliderName, sliderNameRemove, startTime, endTime, firstSelectedValue, secondSelectedValue, sliderNameId1, sliderNameId2, hideContainer) {
    var sliderStartTime = startTime * 1;
    var sliderEndTime = endTime * 1;
    var firstSliderValue = firstSelectedValue * 1;
    var secondSliderValue = secondSelectedValue * 1;
    
    // pokud mame jedno z cisel neplatne, killneme provadeni funkce
    if (isNaN(sliderStartTime) || isNaN(sliderEndTime) || isNaN(firstSliderValue) || isNaN(secondSliderValue)) {
        return false;
    }

    // nasetovani default hodnoty do DOMu, pro ucely resetu
    jQ("#" + sliderName + "TimeSlider").attr('rel',sliderStartTime + '|' + sliderEndTime);

    jQ("#" + sliderName + "TimeSlider").slider({
        handles: [{start:firstSliderValue, min:sliderStartTime, max:sliderEndTime-1, id:sliderNameId1},
                    {start:secondSliderValue, min:sliderStartTime+1, max:sliderEndTime, id:sliderNameId2}],
        range: true,
        min: sliderStartTime,
        max: sliderEndTime,
        slide: function() {
            var value0 = jQ(this).slider('value', 0) + ':00';
            var value1 = jQ(this).slider('value', 1) + ':00';
            jQ("#" + sliderName + "TimeStartValue").text(value0);
            jQ("#" + sliderName + "TimeEndValue").text(value1);
        },
        stop: function(event, ui) {
            var value0 = jQ(this).slider('value', 0) * 1;
            var value1 = jQ(this).slider('value', 1) * 1;
            var value = value0 + '00|' + value1 + '00';
            if (changeTimeDirection) {
                setFilterData('remove|add', sliderNameRemove + 'Time|' + sliderName + 'Time', value , false);
                changeTimeDirection = false;
                userRequestData(0,0,0);
            } else if (value0 > 0 && value1 > 0 && blockAjaxRequestData == null) {
                setFilterData('replace', sliderName + 'Time', value , false);
                userRequestData(0,0,0);
            }
        }
    });
    if (hideContainer) {
        jQ("#" + sliderName + "TimeContainer").hide();
    }
}

function createChangePlaneTimeSlider(sliderName, startTime, endTime, firstSelectedValue) {
    var sliderStartTime = startTime * 1;
    var sliderEndTime = endTime * 1;
    var firstSliderValue = firstSelectedValue * 1;

    // pokud mame jedno z cisel neplatne, killneme provadeni funkce
    if (isNaN(sliderStartTime) || isNaN(sliderEndTime) || isNaN(firstSliderValue)) {
        return false;
    }

    // nasetovani default hodnoty do DOMu, pro ucely resetu
    jQ("#" + sliderName + "TimeSlider").attr('rel',sliderStartTime + '|' + sliderEndTime);

    jQ("#" + sliderName + "TimeSlider").slider({
        min: sliderStartTime,
		max: sliderEndTime,
        slide: function() {
            var value0 = jQ(this).slider('value') + ':00';
            jQ("#" + sliderName + "TimeStartValue").text(sliderStartTime + ':00');
            jQ("#" + sliderName + "EndValue").text(value0);
        },
        stop: function(event, ui) {
            var value = jQ(this).slider('value') * 1;
            if (!isNaN(value) && blockAjaxRequestData == null) {
                setFilterData('replace', sliderName + 'Time', value , false);
                userRequestData(0,0,0);
            }
            else {
                blockAjaxRequestData = null;
            }
        }
    });
    
    // tady presuneme slider na firstSliderValue, protoze se ho tam nedari dostat pri samotne inicializaci
    if (!isNaN(firstSliderValue) && firstSliderValue >= sliderStartTime && firstSliderValue <= sliderEndTime) {
        blockAjaxRequestData = true; // pri automatickem presunu blokujeme AJAX requesty
        jQ("#" + sliderName + "TimeSlider").slider('moveTo', firstSliderValue, 0);
    }
}

function createPricesSlider(sliderName, startTime, endTime, firstSelectedValue, secondSelectedValue, sliderNameId1, sliderNameId2) {
    var sliderStartTime = startTime * 1;
    var sliderEndTime = endTime * 1;
    var firstSliderValue = firstSelectedValue * 1;
    var secondSliderValue = secondSelectedValue * 1;
    
    // pokud mame jedno z cisel neplatne, killneme provadeni funkce
    if (isNaN(sliderStartTime) || isNaN(sliderEndTime) || isNaN(firstSliderValue) || isNaN(secondSliderValue)) {
        return false;
    }
    
    // nasetovani default hodnoty do DOMu, pro ucely resetu
    jQ("#" + sliderName + "Slider").attr('rel',sliderStartTime + '|' + sliderEndTime);
    
    jQ("#" + sliderName + "Slider").slider({
        handles: [{start:firstSliderValue,min:sliderStartTime,max:sliderEndTime-1,id:sliderNameId1},
                    {start:secondSliderValue,min:sliderStartTime+1,max:sliderEndTime,id:sliderNameId2}],
        range: true,
        min: sliderStartTime,
        max: sliderEndTime,
        slide: function() {
            var value0 = jQ(this).slider('value', 0) * 1;
            var value1 = jQ(this).slider('value', 1) * 1;
            jQ("#" + sliderName + "StartValue").text(value0);
            jQ("#" + sliderName + "EndValue").text(value1);
        },
        stop: function(event, ui) {
            var value0 = jQ(this).slider('value', 0) * 1;
            var value1 = jQ(this).slider('value', 1) * 1;
            var value = value0 + '|' + value1;
            if (value0 > 0 && value1 > 0 && blockAjaxRequestData == null) {
                setFilterData('replace', sliderName, value , false);
                requestData(0,0,0);
            }
        }
    });
}

// blokovani ajaxovy requestu (true = blokujeme, null = neblokujeme)
var blockAjaxRequestData = null; // defaultne je ajax povolen, tzn. 'blockAjaxRequestData = null'

// resetovani jednoho slideru
function resetSlider(sliderId) {
    blockAjaxRequestData = null; // povolime AJAx requesty
    var defaultValue = jQ('#'+sliderId).attr('rel').split('|');
    var value0 = defaultValue[0] * 1;
    var value1 = defaultValue[1] * 1;
    jQ('#'+sliderId).slider('moveTo', value0, 0).slider('moveTo', value1, 1);
}

// resetovani skupiny slideru
function resetSliderGroup(sliderGroup) {
    var counter = 1;
    var sliderCount = jQ("#" + sliderGroup + " div[@id^='ui-slider-handle-']").length; // počet ovládacích táhel všech sliderů
    // projdeme celou grupu - vsechny tahla vsech slideru
    jQ("#" + sliderGroup + " div[@id^='ui-slider-handle-']").each(function() {
        blockAjaxRequestData = true; // zakazeme ajaxovy request
        var sliderId = jQ(this).parent().parent().attr('id'); // zjistime ID slideru
        if (sliderCount % 2 == 0) {
            var defaultValue = jQ('#'+sliderId).attr('rel').split('|'); // zjistime jeho defaultni hodnoty
            jQ('#'+sliderId).slider('moveTo', parseInt(defaultValue[0], 10), 0).slider('moveTo', parseInt(defaultValue[1], 10), 1);
        }
        else {
           var defaultValue = jQ('#' + sliderId).attr('rel').split('|'); // zjistime jeho defaultni hodnoty 
           if (defaultValue[1] != '' && defaultValue[1] != undefined) {
               jQ('#'+sliderId).slider('moveTo', parseInt(defaultValue[1], 10)); // presuneme tahlo na defaultni maximum
           }
        }
        // pokud jsme nastavili vsechny tahla, provedeme
        if (counter == sliderCount) {
            blockAjaxRequestData = null; // povolime AJAx requesty
            userRequestData(0,0,0); // zavolame request pro ziskani nabidek
            return false; // opustime z cyklus 'each' (pro jistotu)
        }
        ++counter; 
    });
}

