$(document).ready(function(){
    // wczytywanie ramówki
    objRamowka.load();
    // obsługa zdarzeń ramówki w serwisie
    objRamowka.event();
});

/**
 * Ramówka
 *
 * Pobieranie danych z xml'a i przypisanie ich do odpowiednich bloków
 * 
 * @autor Tomasz Pietrzak
 */
objRamowka = {

    // konfiguracja
    name      : 'js-ramowka',
    reload    : 1 * 60 * 1000,                 // czas po którym skrypt zostanie ponownie wywołany (w mili sek.)
    url       : '/externals/xml/ramowka/najnowsza.xml', // ścieżka do pliku xml
    rds_url   : '/externals/xml/rds_cache.json',
    prefix_dj : 'Prowadzi: ',

    // struktura xml'a'
    xml       : new Array(),
    xmlDetail : new Array( 'Title', 'TimeStart', 'TimeEnd', 'Url' ),
    xmlDJ     : new Array( 'Firstname', 'Lastname', 'ImageSlider', 'Url' ),

    // wczytywanie zawartości xml'a
    load : function(){
    
        $.ajax({
            type: "GET",
            url: objRamowka.url,
            dataType: "xml",
            success: function(xml) {
                // pobieranie danych do zmiennej xmlData
                objRamowka.data(xml);
                objRamowka.rds();
                
            }
        });
    },

    event : function(){
        // kliknięcie w przycisk nawigacji
        $('#'+objRamowka.name+' .js-ramowka-pagination a').click(function(){
            // przerywanie jeśli przycisk zablokowany
            if( $(this).hasClass('js-ramowka-disabled') )
                return false;

            // zdjęcie blokady z klawiszy nawigacyjnych
            $('#'+objRamowka.name+' .js-ramowka-pagination a').removeClass('js-ramowka-disabled');

            selected = $('#'+objRamowka.name+' .js-ramowka-show .js-ramowka-selected');
            switch( $(this).text() )
            {
                case 'prev':
                    if( $(selected).prev().html() )
                    {
                        $(selected).removeAttr('class').prev().addClass('js-ramowka-selected');
                        if( $(selected).prev().prev().html() == null )
                            $('#'+objRamowka.name+' .js-ramowka-pagination .js-ramowka-prev').addClass('js-ramowka-disabled');
                    }
                    break;
                case 'next':
                    if( $(selected).next().html() )
                    {
                        $(selected).removeAttr('class').next().addClass('js-ramowka-selected');
                        if( $(selected).next().next().html() == null )
                            $('#'+objRamowka.name+' .js-ramowka-pagination .js-ramowka-next').addClass('js-ramowka-disabled');
                    }
                    break;
            }

            // blokada wywołania linku
            return false;
        });
    },

    data : function(xml){

        var self, obj, dj;

        // czyszczenie tablicy pobranych danych (potrzebne przy kolejnym wczytywaniu danych)
        objRamowka.xml = new Array();

        // przejście po wszystkich blokach
        $(xml).find('Ramowka BlokProgramowy').each(function(){
            obj = {};
            self = $(this);
            
            obj.Detail = {};
            $(objRamowka.xmlDetail).each(function(i){
                obj.Detail[objRamowka.xmlDetail[i]] = $(self).find('Detail').find(objRamowka.xmlDetail[i]).text();
            });

            obj.DJs = new Array();
            $(self).find('DJs DJ').each(function(){
                dj = {};
                self = $(this);
                $(objRamowka.xmlDJ).each(function(i){
                    dj[objRamowka.xmlDJ[i]] = $(self).find(objRamowka.xmlDJ[i]).text();
                });
                obj.DJs.push(dj);
            });

            objRamowka.xml.push(obj);
        });
    },

    // 'wstrzykiwanie' pobranych danych do html'a
    replace : function(){

        var html, djs, temp;
        
        // czyszczenie starej ramówki
        $('#'+objRamowka.name+' .js-ramowka-show').html('');
 
        
        // wypełnianie na nowo
        for (var i=0, j=objRamowka.xml.length; i<j; i++)
        {
            html = $('<div></div>');
            
            // program
            if( objRamowka.xml[i].Detail.Url )
                temp = $('<a></a>').attr('href', objRamowka.xml[i].Detail.Url)
                                   .attr('title', '['+objRamowka.xml[i].Detail.TimeStart+' - '+objRamowka.xml[i].Detail.TimeEnd+'] '+objRamowka.xml[i].Detail.Title)
                                   .text(objRamowka.xml[i].Detail.Title );
            else
                temp = $('<span></span>').attr('title', '['+objRamowka.xml[i].Detail.TimeStart+' - '+objRamowka.xml[i].Detail.TimeEnd+'] '+objRamowka.xml[i].Detail.Title)
                                         .text(objRamowka.xml[i].Detail.Title );
            temp = $('<div></div>').addClass('js-ramowka-title')
                                   .html(temp);
            $(html).append(temp);
            
            // prowadzący
            if( objRamowka.xml[i].DJs.length > 0 )
            {
                djs = $('<div></div>').addClass('js-ramowka-dj');/*.append(objRamowka.prefix_dj);*/

                for (k=0, l=objRamowka.xml[i].DJs.length; k<l; k++)
                {
                    temp = '';

                    if( objRamowka.xml[i].DJs[k].ImageSlider != '/' )
                    {
                    temp = $('<img />').attr('src', objRamowka.xml[i].DJs[k].ImageSlider)
                                       .attr('alt', objRamowka.xml[i].DJs[k].Firstname+' '+objRamowka.xml[i].DJs[k].Lastname);
                    }

                    temp = $('<a></a>').attr('href', '/'+objRamowka.xml[i].DJs[k].Url)
                                       .attr('title', objRamowka.xml[i].DJs[k].Firstname+' '+objRamowka.xml[i].DJs[k].Lastname)
                                       .append(objRamowka.xml[i].DJs[k].Firstname+' '+objRamowka.xml[i].DJs[k].Lastname)
                                       .append(temp);
                    $(djs).append(temp);
                    if( k+1!=l ) $(djs).append(', ');
                }
                
                $(html).append(djs);
            }
                               
            // wstawianie html na stronie
            $('#'+objRamowka.name+' .js-ramowka-show').append(html);
        }
    },
    
    rds : function(){
        
        /* RDS - dodał Artur Leśnieski */
         $.getJSON( objRamowka.rds_url, function(data) {
             
            // 'wstrzykiwanie' pobranych danych do html'a
            objRamowka.replace();

            if(data.length != 0) {
                html = $('<div></div>');
                temp = $('<div></div>').addClass('js-ramowka-title').html(data.autor);
                $(html).append(temp);
                temp = $('<div></div>').addClass('js-ramowka-dj').html(data.utwor);
                $(html).append(temp);

                $('#'+objRamowka.name+' .js-ramowka-show').prepend(html);
            }
            
            // nadanie klas po wczytaniu danych
            $('#'+objRamowka.name+' .js-ramowka-show div:first').addClass('js-ramowka-selected');
            $('#'+objRamowka.name+' .js-ramowka-pagination .js-ramowka-prev').addClass('js-ramowka-disabled');
            $('#'+objRamowka.name+' .js-ramowka-pagination .js-ramowka-next').removeClass('js-ramowka-disabled');
            if( $('#'+objRamowka.name+' .js-ramowka-show > div').size() < 2 )
                $('#'+objRamowka.name+' .js-ramowka-pagination .js-ramowka-next').addClass('js-ramowka-disabled');

            // ponowne wywołanie skryptu po 'objRamowka.reload' czasie
            setTimeout ( "objRamowka.load()", objRamowka.reload ); 
        });
        
    }
}
