

// ---------------------------------
// program
// ---------------------------------
var startPosLeft = 230;
var categories = new Array();
var renderedChannelStep;
var channelsCount;
var programDate;


function slideContent(e, ui) {
    var posLeft = startPosLeft - ui.value;
    $("#titles-holder").css("left", posLeft + "px");

}

function resetSlideContent() {
    var posLeft = readCookie('slideOffset');

    if (posLeft != null) {
        $("#epg-slider").slider("moveTo", Math.abs(posLeft));
    } else {
        var date = new Date();
        var hs = date.getHours();
        var offset = (hs - 4) * 60 * 3;
        $("#epg-slider").slider("moveTo", "+=" + offset);

    }
}

function stopSlideContent(e, ui) {

    var posLeft = ui.value;
    createCookie('slideOffset', posLeft, 30);
}




// TV program

function renderTimeline(hours) {
    var timeline = '<div class="timeline">';
    for (i = 4; i < hours + 5; i++) {
        if (i < 10) { hour = '0' + i; } else if (i > 24) { hour = '0' + (i - 24); } else { hour = i; }
        //hour = i < 10 ? '0'+i : i;
        timeline += '<span>' + hour + ':00</span>'
    }
    timeline += '</div>';
    return timeline;
}

function renderActualTime() {

    var date = new Date();
    if (programDate == date.format('yyyy-mm-dd')) {
        var hs = date.getHours() - 4;
        var hm = date.getMinutes();
        var left = Math.ceil((60 * hm + 3600 * hs) * 0.05) + hs - 1;
        $('#timeline-actual').css('left', left + 'px');
        $('#timeline-actual').show();
    } else {
        $('#timeline-actual').hide();
    }
}



function scrollChannels(dir) {
    switch (dir) {
        case 'up':
            if (renderedChannelStep - 1 > 0) {
                renderedChannelStep--;
                renderChannelList(channelsData, renderedChannelStep);
            }
            break;

        case 'down':

            if (channelsCount / 7 != renderedChannelStep && Math.ceil(channelsCount / 7) > renderedChannelStep) {
                renderedChannelStep++;
                renderChannelList(channelsData, renderedChannelStep);
            }
            break;
        case 'refresh':
            renderChannelList(channelsData, renderedChannelStep);
            break;
    }
}



function handleApp_program() {
    //alert('program');
    $('#app-container').attr('className', 'app-bcg');
    // vycistenie obsahu kontainera app-container
    $('#app-container').empty();
    if ($('#app-container-epg').length == 0) {
        $('<div class="app-container-epg" id="app-container-epg"></div>').appendTo('#app-container');
        $('<div class="epg-slider" id="epg-slider"><div id="epg-slider-btn"></div></div>').appendTo('#app-container-epg');
        $("#epg-slider").slider({ slide: slideContent, stop: stopSlideContent, min: 0, max: 3931 });
        $("#epg-slider").slider('disable');
        // channel holder
        $('<div id="channel-holder"></div>').appendTo('#app-container-epg');
        $('<div class="channel-scr-up" id="channel-scr-up"><a href="#action=program"></a></div>').appendTo('#channel-holder');
        $('#channel-scr-up').click(function () { scrollChannels('up') });
        $('<div class="channel-scr-down" id="channel-scr-down"><a href="#action=program"></a></div>').appendTo('#channel-holder');
        $('#channel-scr-down').click(function () { scrollChannels('down') });

        $('<div class="channel-list" id="channel-list">' + msg[49] + '</div>').appendTo('#channel-holder');
        $('<div id="titles-holder"></div>').appendTo('#app-container-epg');
        $(renderTimeline(24)).appendTo('#titles-holder');
        $('<div id="epg-cal-holder" class="epg-cal"></div>').appendTo('#app-container-epg');
        var date = new Date();
        if (programDate == undefined || programDate == null) { programDate = date.format('yyyy-mm-dd'); }
        generateCalendar('epg-cal-holder', programDate, renderChannelList);
        $('#calendar-container').css('left', '25px');
        $('#calendar-container').css('top', '0px');
        $('#calendar-container').css('z-index', '20');
        $('#epg-cal-holder').css('z-index', '21');
        // program picker
        $('<div class="kategorie-channel"><a href="#" class="kategorie-channel-picker"><strong>' + texts[17] + '</strong></a></div>').appendTo('#app-container-epg');

        // slider + nastavenie na akt. cas
        $('<div class="titles-grid" id="titles-grid"></div>').appendTo('#titles-holder');

        $('<div id="timeline-actual"></div>').appendTo('#titles-holder');
        renderActualTime();

    } else {
        //sem sa tusim nedostane $('#app-container').empty(); - cize nikdy neexistuje
        $('#app-container-epg').css('display', 'block');
    }
    if (renderedChannelStep == undefined) { renderedChannelStep = 1; }
    renderChannelList(channelsData, renderedChannelStep);
    getChannelSelector('app-container-epg', 'getChannelProgram');


    handleHash();
    if (_hash['c'] != undefined) {
        getChannelProgram(_hash['c']);
    }
    if (_hash['s'] != undefined) {
        getShowDetail(_hash['s']);
    }
    handleVsetkyTvHref();
}


// po kliku na channel (z skrolovacieho listu aj zo zoznamu Vsetky TV)
function getChannelProgram(channel) {
    var url_main = appBaseHref;
    var date = calendarHolder.val();
    programDate = date;
    if (channel == undefined) { var channel = $('#chnl-no').val(); }

    var url_addon = 'Program/GetChannelProgram?date=' + date + '&channel=' + channel;
    var url_complete = url_main + url_addon;

    showLoader();
    $.getJSON(url_complete, function (data) {
        renderChannelProgram(data, channel, date);
        hideLoader();
    });
}

function getChProgram(channel) {
    var url_main = appBaseHref;
    var date = calendarHolder.val();
    programDate = date;
    if (channel == undefined) { var channel = $('#chnl-no').val(); }

    var url_addon = 'Program/GetChannelProgram?date=' + date + '&channel=' + channel;
    var url_complete = url_main + url_addon;
    showLoader();

    $.getJSON(url_complete, function (data) {
        renderChProgram(data, channel, date);
        hideLoader();
    });
}

// rendering zoznamu Vsetky TV (zatial riesim len z program a kategorie - rozne schovavanie - asi dako inak?)
function renderChannelProgram(data, channel, datum) {

    var time = new Array();
    var name;
    // vycistenie obsahu kontainera app-container
    if ($('#kategorie-channel-list').length != 0) $('#kategorie-channel-list').css('display', 'none');
    if ($('#app-container-epg').length != 0) $('#app-container-epg').css('display', 'none');
    if ($('#app-container-nahravky').length != 0) $('#app-container-nahravky').css('display', 'none');
    if ($('#epg-cal-holder').length != 0) $('#epg-cal-holder').empty();

    // ak som uz raz mal program, div je len schovany
    if ($('#app-container-channel').length != 0) {
        $('#app-container-channel').fadeIn("fast");
        $('#app-container-channel').empty();
    } else {
        $('<div class="app-container-channel" id="app-container-channel">').appendTo('#app-container');

    }

    // meno channelu z channelsData
    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; }
        }
    }

    $('<div id="chnl-list" class="chnl-list"></div>').appendTo('#app-container-channel');
    $('<ul class="" id="chnl-list-ul"></ul>').appendTo('#chnl-list');
    $('<div class="channel-name">' + name + '</div><input type="hidden" name="chnl-no" id="chnl-no" value="' + channel + '"><div id="channel-cal" class="channel-cal"></div><a href="#action=program" class="channel-close-btn"></a>').appendTo('#app-container-channel');

    for (var i in data[channel]) {
        if (data[channel][i] != undefined) {
            var rec = data[channel][i]['RECORDED'] ? 'rec' : '';
            time = data[channel][i]['AIRTIME'].split(" ");
            $('<li><a href="#action=program&c=' + channel + '&s=' + data[channel][i]['PROGRAM_ID'] + '" onclick="return prGetShowDetail(' + data[channel][i]['PROGRAM_ID'] + ',' + channel + ')" class = "' + rec + '"><span class="time">' + time[1].substring(0, time[1].length - 3) + '</span><span class="title">' + data[channel][i]['SHORT_TITLE'] + '</span></a></li>').appendTo('#chnl-list-ul');
        }
    }
    $("div.program-notice").remove();
    if (data[channel] == undefined) { $('<div class="program-notice">' + msg[48] + '</div>').appendTo('#chnl-list'); }


    if (datum) {
        generateCalendar('channel-cal', datum, getChProgram);
    } else {
        generateCalendar('channel-cal', programDate, getChProgram);
    }

    $('#channel-cal').css('z-index', '21');
    $('#calendar-container').css('left', '25px');
    $('#calendar-container').css('top', '0px');
    $('#calendar-container').css('z-index', '20');

    $("a.channel-close-btn").click(
         function () {
             $("#app-container-channel").empty();
             $("#app-container-channel").css('display', 'none');
             if ($('#app-container-epg').length != 0) $('#app-container-epg').css('display', 'block');
             if ($('#app-container-nahravky').length != 0) $('#app-container-nahravky').css('display', 'block');

             if ($('#epg-cal-holder').length != 0) {
                 var date = new Date();
                 if (programDate == undefined || programDate == null) { programDate = date.format('yyyy-mm-dd'); }
                 generateCalendar('epg-cal-holder', programDate, renderChannelList);
                 $('#calendar-container').css('left', '25px');
                 $('#calendar-container').css('top', '0px');
                 $('#calendar-container').css('z-index', '20');
                 if (renderedChannelStep == undefined) { renderedChannelStep = 1; }
                 renderChannelList(channelsData, renderedChannelStep);
             }
         }
         );

}



// rendering zoznamu Vsetky TV (zatial riesim len z program a kategorie - rozne schovavanie - asi dako inak?)
function renderChProgram(data, channel, datum) {
    $("div.program-notice").remove();
    $("#chnl-list-ul").empty();

    for (var i in data[channel]) {
        if (data[channel][i] != undefined) {
            var rec = data[channel][i]['RECORDED'] ? 'rec' : '';
            time = data[channel][i]['AIRTIME'].split(" ");
            $('<li><a href="#action=program&c=' + channel + '&s=' + data[channel][i]['PROGRAM_ID'] + '" onclick="return prGetShowDetail(' + data[channel][i]['PROGRAM_ID'] + ',' + channel + ')" class = "' + rec + '"><span class="time">' + time[1].substring(0, time[1].length - 3) + '</span><span class="title">' + data[channel][i]['SHORT_TITLE'] + '</span></a></li>').appendTo('#chnl-list-ul');
        }
    }

    if (data[channel] == undefined) {

        $('<div class="program-notice">Nenašli sa žiadne výsledky. Zvoľte iný deň.</div>').appendTo('#chnl-list');

    }
}


function getLimitedProgram(step) {
    var date = calendarHolder.val();
    programDate = date;
    var cfrom = (step * 7) - 6;
    var cto = step * 7;
    var iCh = '';
    var iter = 1;
    //alert (cfrom+'-'+cto);
    for (var i in channelsData) {
        channels2 = channelsData[i];
        for (var ii in channels2) {
            if (channels2[ii]['ID'] != undefined) {
                if (iter >= cfrom && iter <= cto) {
                    iCh += channels2[ii]['ID'] + "|";

                }
            }
            iter++;
        }
    }

    if (iCh.length > 0) {
        var url_main = appBaseHref;
        var url_addon = 'Program/GetLimitedProgram?date=' + date + '&iCh=' + iCh;
        var url_complete = url_main + url_addon;
        showLoader();
        $.getJSON(url_complete, function (data) {
            renderProgramList(data, step);
            hideLoader();
        });
    }
}



// nacitanie programov pre skroll
function getProgramList(channel) {
    var date = $('#epg-cal-holder-date').val();

    var url_main = appBaseHref;
    var url_addon = 'program/?action=getProgram&date=' + date;
    var url_complete = url_main + url_addon;
    showLoader();
    $.getJSON(url_complete, function (data) {
        renderProgramList(data);
        hideLoader();
    });
}

// nacitanie programov pre scroll
function renderProgramList(data, step) {

    if (channelsData != null) {
        var cfrom = (step * 7) - 6;
        var cto = step * 7;
        var iter = 1;

        // vymazem stary grid
        $('#titles-grid').empty();
        $('<div id="titles-grid-i"></div>').appendTo('#titles-grid');
        // kategorie

        for (var i in channelsData) {
            channels2 = channelsData[i];

            // kanale v kategorii
            for (var ii in channels2) {
                iCh = channels2[ii]['ID'];
                if (iter >= cfrom && iter <= cto) {
                    $('<ul class="channel-titles-row" id="channel-titles-row-' + iCh + '"></ul>').appendTo('#titles-grid-i');
                    // programy
                    for (var iii in data[iCh]) {
                        if (data[iCh][iii] != undefined) {

                            //var rec = data[iCh][iii]['RECORDED'] ? '<img src="img/epg/rec.png" alt="rec icon" style="margin-right:5px;top:2px;"/>' : '';
                            //var rec = data[iCh][iii]['RECORDED'] ? '<img src="img/epg/rec.png" alt="rec icon"/>' : '';
                            var rec = data[iCh][iii]['RECORDED'] ? 'recorded' : '';

                            width = data[iCh][iii]['DURATION'] * 0.05;

                            /*$('<li title="'+data[iCh][iii]['SHORT_TITLE']+'" style= "width:'+(width+2)+'px; left:'+data[iCh][iii]['TMSTP']+
                            'px"><a class="recFhover" href="#action=program&s='+data[iCh][iii]['PROGRAM_ID']+'" onclick="return prGetShowDetail('+data[iCh][iii]['PROGRAM_ID']+')"><b><b><b>'+rec+''+data[iCh][iii]['SHORT_TITLE']+
                            '</b></b></b></a></li>').appendTo('#channel-titles-row-'+iCh);*/


                            $('<li title="' + data[iCh][iii]['SHORT_TITLE'] + '" style= "width:' + (width + 2) + 'px; left:' + data[iCh][iii]['TMSTP'] +
                        'px"><a class="recFhover ' + rec + '" href="#action=program&s=' + data[iCh][iii]['PROGRAM_ID'] + '" onclick="return prGetShowDetail(' + data[iCh][iii]['PROGRAM_ID'] + ')">' + data[iCh][iii]['SHORT_TITLE'] +
                        '</a></li>').appendTo('#channel-titles-row-' + iCh);

                        }

                    }

                }
                iter++;
            }

        } // end for
        $('<div class="clear"></div>').appendTo('#titles-grid-i');
        resetSlideContent();
        $("#epg-slider").slider('enable');



        renderActualTime();

        $("a.recFhover").hover(
      function () {
          $(this).find("a:first").removeClass('recorded');
          $(this).find("a:first").addClass('recordedHover');
      },
      function () {
          $(this).find("a:first").removeClass('recordedHover');
          $(this).find("a:first").addClass('recorded');
      }
    );

    }


}


// skrolovaci zoznam programov
function renderChannelList(data, step) {
    // urobim prvu uroven
    if (data == undefined) { data = channelsData; };
    if (step == undefined) { step = renderedChannelStep; };
    renderedChannelStep = step;
    var cfrom = (step * 7) - 6;
    var cto = step * 7;
    var iter = 1;
    $('#channel-list').empty();

    $('<div id="channel-list-inner"></div>').appendTo('#channel-list');
    $('<ul id="channel-list-ul"></ul>').appendTo('#channel-list-inner');
    for (var i in data) {
        data2 = data[i];
        for (var ii in data2) {
            if (data2[ii] != undefined) {
                //alert (data2[ii]['LONG_NAME']);
                if (iter >= cfrom && iter <= cto) {
                    $('<li><a href="#action=program&c=' + data2[ii]['ID'] + '" onclick="return getChannelProgram(' + data2[ii]['ID'] + ');">' + data2[ii]['LONG_NAME'] + '</a></li>').appendTo('#channel-list-ul');
                }
                iter++;
            }
        }
    }

    channelsCount = iter - 1;
    getLimitedProgram(step);
}


// ChannelSelector - zoznam programov Vsetky TV (overlay div)
function getChannelSelector(holder, handler) {
    if ($('#kategorie-channel-list').length == 0) {
        $('<div id="kategorie-channel-list" class="kategorie-channel-list"></div>').appendTo('#' + holder);
        $('<iframe src="about:blank" scrolling="no" frameborder="0" class="iframe-ie6-overlay-fix"></iframe>').appendTo('#' + holder);
    } else {
        $('#kategorie-channel-list').empty();

    }
    for (var i in channelsData) {
        if (i == 1) {
            channels2 = channelsData[i];
            if (channels2.length > 0) {
                n = channels2[0]['CAT'];
                $('<div id="kategorie-channel-list-' + i + '" class="kategorie-channel-list-item"></div>').appendTo('#kategorie-channel-list');
                $('<div class="chnl-list-category">' + n + '</div>').appendTo('#kategorie-channel-list-' + i);
                for (var ii in channels2) {
                    //$('<a href="#action=program&k='+channels2[ii]['ID']+'" onclick="return '+handler+'('+channels2[ii]['ID']+');">'+channels2[ii]['LONG_NAME']+'</a><br/>').appendTo('#kategorie-channel-list-'+i);
                    $('<a class="kategorie-channel-link" href="#" onclick="return ' + handler + '(' + channels2[ii]['ID'] + ');">' + channels2[ii]['LONG_NAME'] + '</a><br/>').appendTo('#kategorie-channel-list-' + i);
                }
                $('<div id="kategorie-channel-list-holder" class="kategorie-channel-list-holder"></div>').appendTo('#kategorie-channel-list');
            }
        }
        else {
            channels2 = channelsData[i];
            if (channels2.length > 0) {
                n = channels2[0]['CAT'];
                $('<div id="kategorie-channel-list-' + i + '" class="kategorie-channel-list-item"></div>').appendTo('#kategorie-channel-list-holder');
                $('<div class="chnl-list-category">' + n + '</div>').appendTo('#kategorie-channel-list-' + i);
                for (var ii in channels2) {
                    //$('<a href="#action=program&k='+channels2[ii]['ID']+'" onclick="return '+handler+'('+channels2[ii]['ID']+');">'+channels2[ii]['LONG_NAME']+'</a><br/>').appendTo('#kategorie-channel-list-'+i);
                    $('<a  class="kategorie-channel-link" href="#" onclick="return ' + handler + '(' + channels2[ii]['ID'] + ');">' + channels2[ii]['LONG_NAME'] + '</a><br/>').appendTo('#kategorie-channel-list-' + i);

                }
                if (i == 7) { $('<div class="clear"></div>').appendTo('#kategorie-channel-list-holder'); }
            }
        }
    }

    $("div.kategorie-channel-list").css('display', 'none');

    $("a.kategorie-channel-picker").mouseup(
         function () {
             jQuery.each(jQuery.browser, function (i) {
                 if ($.browser.msie && $.browser.version < 7) {
                     $('.iframe-ie6-overlay-fix').fadeIn("fast");
                 }
             });
             $("div.kategorie-channel-list").fadeIn("fast");
             kategorieChLstCancel();
         }
         );

    //$('.iframe-ie6-overlay-fix').show();
}

function kategorieChLstCancel() {

    $("body").mousedown(
         function () {
             $('.iframe-ie6-overlay-fix').fadeOut("fast");
             $("div.kategorie-channel-list").fadeOut("fast");
         }
         );

}


function prGetShowDetail(id, channel) {
    getShowDetail(id, function () { prCancelShowDetail(channel); });
    return true;
}

function prCancelShowDetail(channel) {
    handleHashAndGo();
    /*if(channel != undefined){
    setHash('action=program&c='+channel+'');
    getChannelProgram(channel);

    }else{
    setHash('action=program');
    renderChannelList(channelsData,renderedChannelStep);
    }*/
    return false;
}

// ---------------------------------
// koniec program
// ---------------------------------
