// ---------------------------------
// kategorie
// ---------------------------------

var k = null;

// relacie (shows)
var s = new Array();

// detaily relacii
var sd = new Array();

// vytvorenie kostry pre kategorie a zoznam relacii
function handleApp_kategorie() {
    $('#app-container').attr('className', 'app-bcg');
    // vycistenie obsahu kontainera app-container
    $('#app-container').empty();

    if ($('#app-container-kategorie').length == 0) {
        // hlavny app kontainer pre kategorie
        $('<div class="app-container-kategorie" id="app-container-kategorie"></div>').appendTo('#app-container');

        // upozornenia
        $('<div class="kategorie-notice-first" id="kategorie-notice-first" style="display:block;">' + msg[0] + '</div>').appendTo('#app-container-kategorie');
        $('<div class="kategorie-notice" id="kategorie-notice" style="display:none;">' + msg[1] + '</div>').appendTo('#app-container-kategorie');

        // zoznam kategorii
        $('<div class="kategorie-listA" id="kategorie-listA"></div>').appendTo('#app-container-kategorie');
        $('<ul class="" id="kategorie-listA-list"></ul>').appendTo('#kategorie-listA');

        // zoznam podkategorii
        $('<div class="kategorie-listB" id="kategorie-listB"></div>').appendTo('#app-container-kategorie');
        $('<ul class="" id="kategorie-listB-list"></ul>').appendTo('#kategorie-listB');

        // zoznam relacii
        $('<div class="kategorie-list" id="kategorie-list"></div>').appendTo('#app-container-kategorie');
        $('<ul class="" id="kategorie-list-shows"></ul>').appendTo('#kategorie-list');

        $('<input type="hidden" value="" name="shows-category" id="shows-category" />').appendTo('#app-container-kategorie');

        // vyber TV programov
        $('<div class="kategorie-channel" id="kategorie-channel" style="top: 15px; left: 715px;"><a href="#" class="kategorie-channel-picker"><strong>' + texts[17] + '</strong></a></div>').appendTo('#app-container-kategorie');

        // kalendar
        var date = new Date();
        generateCalendar('app-container-kategorie', date.format('yyyy-mm-dd'), getShows);

    } else {
        $('#app-container-kategorie').css('display', 'block');
    }

    getCategories();
    getChannelSelector('app-container-kategorie', 'filterChannelProgram');


    $('<div class="chnl-list-category"><a href="#" style="color:black;" onclick="return clearFilter();">' + texts[17] + '</a></div>').appendTo('#kategorie-channel-list-holder');
    $("a.kategorie-channel-picker").attr('href', '#action=kategorie');
}

//nastavenie hashu na vsetkyTv button .... volam z fillGenres a getShows
function handleVsetkyTvHref() {
    var hash = window.location.hash;
    hash = hash.replace('#', '');
    $("a.kategorie-channel-picker").attr('href', '#' + hash);
    $("a.kategorie-channel-link").attr('href', '#' + hash);
}

// nacitanie kategorii
function getCategories() {
    // ak nemam nacitane kategorie, tak ich nacitam, inac ich rovno zobrazim
    if (k == null) {
        var url_main = appBaseHref;
        var url_addon = 'Categories/GetCategories';
        var url_complete = url_main + url_addon;

        showLoader();
        $.getJSON(url_complete, function (data) {
            k = data;
            fillCategories();
            hideLoader();
        });
    } else fillCategories();
}

// zobrazenie kategorii
function fillCategories() {
    // urobim prvu uroven
    for (var i in k) {
        if (k[i] != undefined && k[i]['PARENT_ID'] == 0) {
            $('<li><a href="#action=kategorie&k=' + k[i]['ID'] + '" class="katA kategoriaA_' + k[i]['ID'] + '" onclick="return fillGenres(' + k[i]['ID'] + ');">' + k[i]['VALUE'] + '</a></li>').appendTo('#kategorie-listA-list');
        }
    }

    // zobrazim rovno aj podkategoriu ak to mam v hashi
    handleHash();
    if (_hash['k'] != undefined) {
        jQuery.each(k, function (i, val) {
            //alert(val);
            if (val != undefined && val['ID'] == _hash['k']) {
                if (val['PARENT_ID'] == 0) fillGenres(_hash['k']);
                else {
                    fillGenres(val['PARENT_ID']);
                    getShows(_hash['k']);
                }
            }
        });
        if (_hash['s'] != undefined) {
            getShowDetail(_hash['s'], '#action=kategorie&k=' + _hash['k']);
        }
    }
    else {
        $('#kategorie-notice-first').css('display', 'block');
        $('#kategorie-notice').css('display', 'none');
    }
}

// zobrazenie podkategorii
function fillGenres(id) {
    if (id != undefined) setHash('action=kategorie&k=' + id);
    $('#kategorie-listB-list').empty();
    $('#kategorie-list-shows').empty();
    $('#kategorie-notice-first').css('display', 'block');
    $('#kategorie-notice').css('display', 'none');
    $('a.katA').removeClass('katselected');
    $('a.kategoriaA_' + id + '').addClass('katselected');
    handleVsetkyTvHref();
    for (var i in k) {
        if (k[i] != undefined && k[i]['PARENT_ID'] == id) {
            $('<li><a href="#action=kategorie&k=' + k[i]['ID'] + '" class="katB kategoriaB_' + k[i]['ID'] + '"  onclick="return getShows(' + k[i]['ID'] + ');">' + k[i]['VALUE'] + '</a></li>').appendTo('#kategorie-listB-list');
        }
    }
    return true;
}

// nacitanie relacii
var last_date = null;
var channelFilter = null;
function getShows(id) {
    if (undefined != id) $('#shows-category').val(id);
    else id = $('#shows-category').val();
    if (id.length != 0) setHash('action=kategorie&k=' + id);
    handleVsetkyTvHref();

    if (id.length != 0) { $('#kategorie-notice-first').css('display', 'none'); }

    $('a.katB').removeClass('katselected');
    $('a.kategoriaB_' + id + '').addClass('katselected');
    //$('#kategorie-notice').css('display', 'block');

    // ak som zmenil datum, musim nacitat novy zoznam relacii

    var date = $('#app-container-kategorie-date').val();
    if (last_date != date) s = new Array();

    //if (s == null || s[id] == null) {

    $('#kategorie-list-shows').empty();
    var url_main = appBaseHref;
    var url_addon = 'Program/GetShowsByCategory?id=' + id;
    url_addon += '&date=' + date;

    if (channelFilter != null) { url_addon += '&channel=' + channelFilter; }
    var url_complete = url_main + url_addon;
    //alert(url_complete);
    showLoader();
    $.getJSON(url_complete, function (data) {
        s[id] = data;
        fillShows(id);
        hideLoader();
    });
    //} else {
    //    fillShows(id);
    //}
    last_date = date;
    return true;
}

// zobrazenie zoznamu relacii
function fillShows(id) {
    $('#kategorie-list-shows').empty();

    if (s[id] != '') {
        for (var i in s[id]) {
            if (s[id][i] != undefined) {
                var rec = s[id][i]['RECORDED'] ? 'rec' : '';
                $('<li><a href="#action=kategorie&k=' + id + '&s=' + s[id][i]['ID'] + '" class="' + rec + '"'
	            + ' onclick="return cGetShowDetail(' + s[id][i]['ID'] + ', ' + id + ');">'
	            + '<span class="time">' + s[id][i]['AIRTIME'] + '</span>'
	            + '<span class="title">' + s[id][i]['SHORT_TITLE'] + '</span>'
                + '<span class="channel">' + s[id][i]['SHORT_NAME'] + '</span>'
                + '</a></li>').appendTo('#kategorie-list-shows');
            }
        }
        $('#kategorie-notice').css('display', 'none');
    } else {
        if (id.length != 0) { $('#kategorie-notice').css('display', 'block'); }
    }
}

function cGetShowDetail(id, cat) {
    getShowDetail(id, function () { cCancelShowDetail(cat); });
    return true;
}

function cCancelShowDetail(id) {
    s[id] = null;
    getShows(id);
    setHash('action=kategorie');
    return false;
}

//filter zoznamu relacii

function filterChannelProgram(channel) {
    channelFilter = channel;
    var name = null;
    for (var i in channelsData) {
        channels2 = channelsData[i];
        for (var ii in channels2) {
            if (channel == channels2[ii]['ID']) { name = channels2[ii]['SHORT_NAME']; break; break; }
        }
    }
    $("a.kategorie-channel-picker").empty();
    $("<strong>" + name + "</strong>").appendTo("a.kategorie-channel-picker");

    getShows();

}

function clearFilter() {
    channelFilter = null;
    var name = texts[17];
    $("a.kategorie-channel-picker").empty();
    $("<strong>" + name + "</strong>").appendTo("a.kategorie-channel-picker");
    getShows();
}
// ---------------------------------
// koniec kategorie
// ---------------------------------

