// variables - change their values in templates
var section = 'WIDEO';              // ID kategorii do której maja być linkowane filmy
var username = 'onlinegp24';        // nazwa uzytkownika
var start = 1;                      // index poczatku
var count = 12;                     // ilosc wyswietlanych filmow
var order = 'published';            // porzadek sortowania
var windowWidth = 425;              // szerokosc okna wideo
var windowHeight = 344;             // wysokosc okna wideo
var category = '';                  // kategoria/keyword filmow
var searchtext = '';                // tekst wyszukiwania
var current = '';                   // obecnie wybrany element
var init = true;                    // flaga inicjalizacji

// get links to Articles
getArticleLinks = function (id) {
    if (id) {
        $.get('/apps/pbcs.dll/section?category=WIDEOCHECKARTICLE&id='+id, function(data){
            if (data.substring(1,3)=="ul") {
                text="<p class=\"connections\">Powiązane artykuły:</p>"+ data ;
                $("#videoDescription p.link").after(text);
            }
        });
    }
};

// get related videos
getRelatedVideos = function (id) {
    if (id) {
        var url = 'http://gdata.youtube.com/feeds/api/videos/'+id+'/related?author='+username+'&alt=json-in-script&callback=renderRelatedVideos&v=2';
        var script=document.createElement('script');
        script.src=url;
        script.type="text/javascript";
        $('#videoScriptsRelated').html(script);
    }
};

// get and format all entries
renderRelatedVideos = function (root) {
    var feed = root.feed;
    var total = feed.openSearch$totalResults.$t;
    var entries = feed.entry || [];
    var html = [''];
    if (total>0) {
        html.push('<p>Powiązane wideo:</p><ul>');
        if (total>4) {
            total = 4;
        }
        for (var i = 0; i < total; ++i) {
            var id = feed.link[0].href;
            var entry = feed.entry[i];
            var title = utf2iso(entry.media$group.media$title.$t);
            var content = utf2iso(entry.media$group.media$description.$t);
            var link = '/apps/pbcs.dll/section?Category='+section+'&amp;id='+entry.media$group.yt$videoid.$t;
            var image = entry.media$group.media$thumbnail[0].url;
            var duration = '<p class="duration">Czas trwania: '+Math.floor(entry.media$group.yt$duration.seconds/60)+':'+entry.media$group.yt$duration.seconds%60+'</p>';
            var date = '<p class="date">Dodano: '+entry.media$group.yt$uploaded.$t.substring(0,10)+'</p>';
            var views = entry.yt$statistics?'<p class="views">Wyświetlenia: '+entry.yt$statistics.viewCount+'</p>':'';
            var rating = entry.gd$rating?'<p class="rating">Ocena: '+entry.gd$rating.average+'</p>':'';
            var active = '';
            if (current == link) {
                active = 'class="active"';
            }
            html.push('<li '+active+'><a href="'+link+'" title="'+title+'" class="player"><image src="'+image+'" alt="'+title+'" /><a><a href="'+link+'" title="', title, '" class="player"><b>'+title+'</b></a><p class="description">'+content+'</p><div>'+date+views+rating+duration+'</div></li>');
        }
        html.push('</ul>');
        $('#videoRelated').html(html.join(""));
        // set .player class functions
        $('.player').click(function(){
            showPlayer($(this),0,1,windowWidth,windowHeight);
            $('#videoList li').removeClass('active');
            $('#videoList li a[href='+$(this).attr('href')+']').parent().addClass('active');
            scroll(0,0);
            return false;
        });
    }
};

// show player
showPlayer = function (element,link,displayDescription,width,height) {
    if (!link) {
        link = element.attr("href");
    }
    if (!width || !height) {
        width = 425;
        height = 344;
    }
    if (current!=link | !displayDescription) {
        id=link.substr(link.length-11,11);
        var link = 'http://www.youtube.com/v/' + id + '&border=0&autoplay=0&color1=0x2D639F&color2=0x4C84C1&rel=0&fs=1&egm=0';
        swfobject.embedSWF(link, "videoPlayerHolder", width, height, "6",'/swf/expressInstall.swf',{},{bgcolor:'#4C84C1',wmode:'opaque',allowfullscreen:'true'},{});

        if (displayDescription) {
            current = element.attr("href");
            var title = element.parent().find('b').text();
            var description = element.parent().find('p.description').html();
            var info = element.parent().find('div').html();
            var directlink = '/apps/pbcs.dll/section?category='+section+'&amp;id='+id;
            $("#videoDescription").html('<h1>'+title+'</h1><p class="description">'+description+'</p><p class="link"><label for="directLink">Link bezpośredni:</label><input type="text" name="directLink" id="directLink" class="inputText" value="http://'+location.host+directlink+'" size="50"/></p>'+info+'<div id="videoRelated"></div>');
            getArticleLinks(id);
            getRelatedVideos(id);
        }
    }
};

// set navigation
pagesNav = function (total) {
    var navigation = ' strony: ';
    var next = start + count;
    var numPages = Math.ceil (total / count) ;
    var currentPage = (start + count -1) / count;
    // back button
    if (start > 1) {
        navigation += '<a href="#" id="previous">&laquo;</a> ';
    }
    // pages
    navigation += '<span id="pages">';
    for (i=1;i<=numPages;i++) {
        if ((numPages>5 && ((i>(currentPage-3) && i<(currentPage+3)) || (i<6 && currentPage<4) || (i>(numPages-5) && currentPage>(numPages-3)))) || numPages<=5) {
            var active = '';
            if (i == currentPage) {
                active = 'class=active';
            }
            navigation += ' <a href="#" id="page'+i+'" '+active+'>'+i+'</a> ';
        }
        else {
            navigation += '.';
        }
    }
    navigation = navigation.replace(/[.]+/g,'...') + '</span>';
    // forward button
    if (next < total) {
        navigation += ' <a href="#" id="next">&raquo;</a>';
    }
    // apply html
    $("#videoNavigation").html(navigation);
    // bind functions to buttons
    $('#next').click(function(){
        start += count;
        loadVideos();
        return false;
    });
    $('#previous').click(function(){
        start -= count;
        loadVideos();
        return false;
    });
    $('#pages a').click(function(){
        start = count * $(this).text() - count + 1;
        loadVideos();
        return false;
    });
};

// get and format all video entries
renderVideos = function (root) {
    var feed = root.feed;
    var total = feed.openSearch$totalResults.$t;
    var entries = feed.entry || [];
    var html = [''];
    if (total>0) {
        for (var i = 0; i < feed.entry.length; ++i) {
            var id = feed.link[0].href;
            var entry = feed.entry[i];
            var title = utf2iso(entry.media$group.media$title.$t);
            var content = utf2iso(entry.media$group.media$description.$t);
            var link = '/apps/pbcs.dll/section?Category='+section+'&amp;id='+entry.media$group.yt$videoid.$t;
            var image = entry.media$group.media$thumbnail[0].url;
            var duration = '<p class="duration">Czas trwania: '+Math.floor(entry.media$group.yt$duration.seconds/60)+':'+entry.media$group.yt$duration.seconds%60+'</p>';
            var date = '<p class="date">Dodano: '+entry.media$group.yt$uploaded.$t.substring(0,10)+'</p>';
            var views = entry.yt$statistics?'<p class="views">Wyświetlenia: '+entry.yt$statistics.viewCount+'</p>':'';
            var rating = entry.gd$rating?'<p class="rating">Ocena: '+entry.gd$rating.average+'</p>':'';
            var active = '';
            if (current == link) {
                active = 'class="active"';
            }
            html.push('<li '+active+'><a href="'+link+'" title="'+title+'" class="player"><image src="'+image+'" alt="'+title+'" /><a><a href="'+link+'" title="', title, '" class="player"><b>'+title+'</b></a><p class="description">'+content+'</p><div>'+date+views+rating+duration+'</div></li>');
        }
        $('#videoList').html(html.join(""));
        // display pages navigation
        pagesNav (total);
        // set .player class functions
        $('.player').click(function(){
            showPlayer($(this),0,1,windowWidth,windowHeight);
            $('#videoList li').removeClass('active');
            $(this).parent().addClass('active');
            scroll(0,0);
            return false;
        });
        // show player for the first item
        if ($('#videoPlayerHolder').html() == "") {
            init = false;
            showPlayer($('.player:first'),0,1,windowWidth,windowHeight);
            $('.player:first').parent().addClass('active');
        }
    }
};

// calling youtube script
loadVideos = function () {
    if (!category || category=='Latest') {
        category=',';
    }
    var url = 'http://gdata.youtube.com/feeds/api/users/'+username+'/uploads?category='+category+'&q='+searchtext+'&orderby='+order+'&max-results='+count+'&start-index='+start+'&alt=json-in-script&callback=renderVideos&v=2';
    var script=document.createElement('script');
    script.src=url;
    script.type="text/javascript";
    $('#videoScripts').html(script);
};

// get and format search results
renderSearchResults = function (root) {
    var feed = root.feed;
    var total = feed.openSearch$totalResults.$t;
    var entries = feed.entry || [];
    var html = [''];
    if (total>0) {
        for (var i = 0; i < feed.entry.length; ++i) {
            var id = feed.link[0].href;
            var entry = feed.entry[i];
            var title = utf2iso(entry.media$group.media$title.$t);
            var content = utf2iso(entry.media$group.media$description.$t);
            var link = '/apps/pbcs.dll/section?Category='+section+'&amp;id='+entry.media$group.yt$videoid.$t;
            var image = entry.media$group.media$thumbnail[0].url;
            var duration = '<p class="duration">Czas trwania: '+Math.floor(entry.media$group.yt$duration.seconds/60)+':'+entry.media$group.yt$duration.seconds%60+'</p>';
            var date = '<p class="date">Dodano: '+entry.media$group.yt$uploaded.$t.substring(0,10)+'</p>';
            var views = entry.yt$statistics?'<p class="views">Wyświetlenia: '+entry.yt$statistics.viewCount+'</p>':'';
            var rating = entry.gd$rating?'<p class="rating">Ocena: '+entry.gd$rating.average+'</p>':'';
            html.push('<li><a href="'+link+'" title="'+title+'" class="player"><image src="'+image+'" alt="'+title+'" /><a><a href="'+link+'" title="', title, '" class="player"><b>'+title+'</b></a><p class="description">'+content+'</p><div>'+date+views+rating+duration+'</div></li>');
        }
        $('#videoList').html(html.join(""));
        pagesNav (total);
        // bind functions to buttons
        $('#next').click(function(){
            start += count;
            loadSearch();
            return false;
        });
        $('#previous').click(function(){
            start -= count;
            loadSearch();
            return false;
        });
        $('#pages a').click(function(){
            start = count * $(this).text() - count + 1;
            loadSearch();
            return false;
        });
    }
};

// calling youtube script
loadSearch = function () {
    if (!category || category=='Latest') {
        category=',';
    }
    var url = 'http://gdata.youtube.com/feeds/api/users/'+username+'/uploads?category='+category+'&q='+searchtext+'&orderby='+order+'&max-results='+count+'&start-index='+start+'&alt=json-in-script&callback=renderSearchResults&v=2';
    var script=document.createElement('script');
    script.src=url;
    script.type="text/javascript";
    $('#videoScripts').html(script);
};

$.fn.changeCategory = function() {
    $(this).click(function(){
        category = $(this).attr('id');
        order = "published";
        start = 1;
        loadVideos();
        $(this).parent().parent().find("li a").removeClass("active");
        $(this).addClass("active");
        $('#videoSort a').removeClass("active");
        $('#videoSort a:first').addClass("active");
        return false;
    });
};

$.fn.changeSortOrder = function() {
    $(this).click(function(){
        order = $(this).attr('id');
        start = 1;
        loadVideos();
        $(this).parent().find("a").removeClass("active");
        $(this).addClass("active");
        return false;
    });
};