var filterTimeoutID = 0;
var filterKeyUpTimeout = 750;
var filterKey = ''; // should be set to 'films', 'calendar'...
var filterPath = '';


$(document).ready(function() {
    $('#filter_display_div').buttonset();
    $('[id^="mp3_page_nav_"]').livequery(function() {
        $(this).buttonset();
    });
    $('[id^="filter_display_"]').live('change',function() {
            var display = $(this).val();
            doFilter('display',display);
        });
    $('[id^="page_nav_"]').change(function() {
        var page = $(this).val();
        doFilter('page',page);
    });
    $('#filter_text').keyup(function(event) {
        if (event.keyCode =='13') {
            doFilter();
        } else {
            setFilterTimeout(++filterTimeoutID);
        }
    });
    $('#filter_category').change(function() {
        doFilter();
    });
    $('#filter_year').change(function() {
        doFilter();
    });
    $('#filter_text_columns').change(function() {
        doFilter();
    });
    $('#filter_arranger').keyup(function(event) {
        if (event.keyCode =='13') {
            doFilter();
        } else {
            setFilterTimeout();
        }
    });
    $('#filter_sort').change(function() {
        doFilter();
    });
    $('#view_style input').change(function() {
        var viewID = $('[name="view_style"]:checked').val();
        //console.log(viewID);
        doFilter('style',viewID);
    });
});


function setFilterTimeout(id) {
    setTimeout(function(){doFilterTimeout(id)},filterKeyUpTimeout);
}
function doFilterTimeout(id) {
    if (id == filterTimeoutID) doFilter();
}

function doFilter(key,value,mayRecurse) {
    filterTimeoutID = 0;
    if (typeof(key) == 'undefined') key = '';
    if (typeof(mayRecurse) == 'undefined') mayRecurse = true;
    var text = (key == 'text') ? value : ($('#filter_text').length > 0 ? $('#filter_text').val() : '' );
    var column = (key == 'column') ? value : ($('#filter_text_columns').length > 0 ? $('#filter_text_columns').val() : '' );
    var categoryID = (key == 'categoryID') ? value : ($('#filter_category').length > 0 ? $('#filter_category').val() : '' );
    var arranger = (key == 'arranger') ? value : ($('#filter_arranger').length > 0 ? $('#filter_arranger').val() : '' );
    var year = (key == 'year') ? value : ($('#filter_year').length > 0 ? $('#filter_year').val() : '' );
    var display = (key == 'display') ? value : ($('[name="filter_display"]:checked').length > 0 ? $('[name="filter_display"]:checked').val() : '' );
    var page = (key == 'page') ? value : ($('#page').length > 0 ? $('#page').val() : '' );
    var hitsPerPage = (key == 'hitsPerPage') ? value : ($('#hits_per_page').length > 0 ? $('#hits_per_page').val() : '' );
    var style = (key == 'style') ? value : ($('[name="view_style"]:checked').length > 0 ? $('[name="view_style"]:checked').val() : '' );
    var sort = (key == 'sort') ? value : $('#filter_sort').val();
    $.post(filterPath+'/index.php?ajax=common&action=filter&key='+filterKey+'&r='+getRandom(), {text : text, column : column, arranger : arranger, year : year, category_id : categoryID, display : display, page : page, hits_per_page : hitsPerPage, style : style, sort : sort}, function(data) {
        //console.log(data);
        data = parseJson(data);
        //console.log(data)
        if (data.status == 'OK') {
            $('#mp3_content').html(data.content)
            stripeTable($('#mp3_content table'));
            // if year is displayed, update select with available years
            if ($('#filter_year').length > 0) {
                var selected = $('#filter_year').val();
                $('#filter_year')[0].options.length = 0;
                var output = [];
                output.push('<option value=""> - alla - </option>');
                $.each(data.years, function(index, year) {
                    output.push('<option value="'+year+'">'+year+'</option>');
                });
                $('#filter_year').html(output.join(''));
                if ($('#filter_year [value="'+selected+'"]').length > 0) {
                    $('#filter_year [value="'+selected+'"]').attr('selected','selected');
                } else {
                    // selected years doesn't exist, do a new search on year = all (0)'
                    if (mayRecurse) {
                        doFilter('year','',false);
                    }

                }
            }
        } else {
            showPopupError('Ett fel uppstod: '+data.description);
        }
    });
}

function clearFilter() {
    if ($('#filter_text').length > 0) $('#filter_text').val('');
    if ($('#filter_arranger').length > 0) $('#filter_arranger').val('');
    if ($('#filter_text_columns').length > 0) $('#filter_text_columns').attr('selectedIndex',0);
    if ($('#filter_category').length > 0) $('#filter_category').attr('selectedIndex',0);
    if ($('#filter_year').length > 0) $('#filter_year').attr('selectedIndex',0);
    doFilter();
}
