try {
    var playlistReady = playerReady;
} catch (err){
}

playerReady = function(obj) {
    setTimeout(function(){checkPlaylistLoaded(obj)}, 1);
    try {
        playlistReady(obj);
    } catch (err){
    }
}

function itemHandler(obj) {
    var item = obj['index'];
    
    // JK - change
    var pla = document.getElementById(obj['id']).getPlaylist();
    setDescr(pla[item]);
//alert(pla[item].title);
    
    var playlist = $("#"+obj['id']).next();
    var currentItem = 0;
    playlist.children().each(function(){
        if (currentItem == item) {
            $(this).addClass("playing");
        } else {
            $(this).removeClass("playing");
        }
        currentItem++;
    });
}

function checkPlaylistLoaded(obj) {
    var player = document.getElementById(obj['id']);
    var jsPlaylist = player.getPlaylist();
    if (jsPlaylist.length > 0) {
        var playlist = createPlaylist(obj);
        populatePlaylist(player, jsPlaylist, playlist);
        player.addControllerListener("PLAYLIST","playlistHandler");
        player.addControllerListener("ITEM","itemHandler");
    } else {
        setTimeout(function(){checkPlaylistLoaded(obj)}, 150);
    }
}

function createPlaylist(obj){
    var playerDiv = $("#"+obj['id']);
    playerDiv.after("<div class='jw_playlist_playlist'></div>");
    return playerDiv.next();
}

function playlistHandler(obj){
    var player = document.getElementById(obj['id']);
    var jsPlaylist = player.getPlaylist();
    var playerDiv = $("#"+obj['id']);
    var playlist = playerDiv.next();
    populatePlaylist(player, jsPlaylist, playlist);
}

function populatePlaylist(player, jsPlaylist, playlist){
//alert(so.getVariable('item'));    
//alert(dumparray(jsPlaylist));    
    playlist.empty();
    for (var i=0;i<jsPlaylist.length;i++) {
        
        var jsItem = jsPlaylist[i];        
        var alternate = "even";
        if (i % 2) {
            alternate = "odd";
        }
        var klasa = '';
        if(i == so.getVariable('item')) {
            klasa= ' playing ';
        }
        playlist.append("<div class='jw_playlist_item "+alternate+ klasa+ "'>"+dump(jsItem)+"</div>");
    }
    
    var playlistItem = 0;
    // zmienna globalna - domyslny film
    biezacy = so.getVariable('item');
    var pla = player.getPlaylist();

    playlist.children().each(function(){
        var currentItem = playlistItem;
        $(this).click(function () {
            // zliczanie wyswietlen filmu dla domyslnego filmu
            if(currentItem == biezacy) { 
                setDescr(pla[currentItem]); // aktualizacja licznika domyslnego filmu tylko raz
                biezacy = -1;
            }
            player.sendEvent("ITEM", currentItem);
        });
        playlistItem++;
    });
}

function setDescr(item) {
//alert($("#akt_tytul").html());
//alert(dumparray(item));    
    // skasowanie mozliwosci aktualizcji licznika dla domyslnego filmu jesli nastapilo jakiekolwiek przelaczenie
    biezacy = -1;
    // aktywacja pierwszej zakladki accordion
    $("#accordion").accordion("activate" , 0);    

    var film = item.link;
    var filmid = item.mediaid;
    var kat = item.category;

    $("#akt_tytul").html(kat+ ' - '+ item.title);
    $('span.tytulfilmu').html(item.title);    

    $('#komentarz_red').html('<img src="tmplimg/loading.gif" style="display:block;width:16px;margin:5px auto;" />').load('komentarz.php?kom=r&id='+ filmid);
    $('#ilekomusr').load('komentarz.php?kom=i&id='+ filmid);
    $('#komentarze_users').html('<img src="images/loading.gif" alt="" />').load('komentarz.php?id='+ filmid);

    $('form.wydajopinie').attr('action', kat+ ',1,'+ item.categoryip+ ','+ filmid);
//alert($('form.wydajopinie').attr('action'));
    $('#filmid').attr('value', filmid);
    $('div.filmsuma').html('<img src="images/loading.gif" alt="" />').load('podsumowanie.php?id='+ filmid );
//alert(film);
}

function dump(arr) {
//alert(dumparray(arr));
//alert(arr['date']);
    var output = "<div class='jw_playlist_title'>${title}</div><div class='jw_playlist_image_div'><img src='${image}' class='jw_playlist_image' /></div><div class='jw_playlist_description'>${description}</div><div class='clear'></div><div class='jw_playlist_parametry'><div class='jw_playlist_data'>Dodano: "+ date_format(arr["date"])+ "</div><div class='jw_playlist_duration'>Czas: "+ sec2min(arr["duration"])+ "</div></div><div class='clear'></div>";
    var variables = getVars(output);
    for (var j=0; j<variables.length; j++) {
        var variable = variables[j];
        var varName = variable.replace('${','').replace('}','');
        var value = arr[varName];
        if (!value) {
            value = '';
        }
        output = output.replace(variable, value);
    }
    output = output.replace("<div class='jw_playlist_image_div'><img src='' class='jw_playlist_image' /></div>","");
    return output;
}

function sec2min(sek) {
    var min = Math.floor(sek/60); 
    if((sek- min*60)> 9)
        return (min+ ":"+ (sek- min*60));
    else    
        return (min+ ":0"+ (sek- min*60));
}

/* Data wejściowa w formacie: 20101231  */
function date_format(data) {
    return (data.substring(6)+ "."+ data.substring(4,6)+ "."+ data.substring(0,4)+ ' r.');
}

function dumpText(arr) {
    var dumped_text = "";
    if(typeof(arr) == 'object') {
        for(var item in arr) {
            var value = arr[item];        
            if(typeof(value) == 'object') {
                dumped_text += "<div class='"+item+"'>";
                dumped_text += dump(value);
                dumped_text += "</div>";
            } else {
                dumped_text += "<div class='"+item+"'>"+ value + "</div>";
            }
        }
    } else {
        dumped_text += arr+" ("+typeof(arr)+")";
    }
    return dumped_text;
}

function getVars(str){
    return str.match(/\$\{(.*?)\}/g);
}

/**
 * Function : dumparray()
 * Arguments: The data - array,hash(associative array),object
 *    The level - OPTIONAL
 * Returns  : The textual representation of the array.
 * This function was inspired by the print_r function of PHP.
 * This will accept some data as the argument and return a
 * text that will be a more readable version of the
 * array/hash/object that is given.
 * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php
 */
function dumparray(arr,level) {
    var dumped_text = "";
    if(!level) level = 0;
    
    //The padding given at the beginning of the line.
    var level_padding = "";
    for(var j=0;j<level+1;j++) level_padding += "    ";
    
    if(typeof(arr) == 'object') { //Array/Hashes/Objects 
        for(var item in arr) {
            var value = arr[item];
            
            if(typeof(value) == 'object') { //If it is an array,
                dumped_text += level_padding + "'" + item + "' ...\n";
                dumped_text += dump(value,level+1);
            } else {
                dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
            }
        }
    } else { //Stings/Chars/Numbers etc.
        dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
    }
    return dumped_text;
}
