﻿/// <reference path="../API/Agility.js" />

Agility.RegisterNamespace("BNN.LatestAndPopularVideos");

(function(LatestAndPopularVideos) {

    var _scrollSettings = { duration: 1000 };
    var _itemsToScroll = 3;
    var _mode = 1;

    LatestAndPopularVideos.OnInit = function(latestVideos, popularVideos, videoContainer, width, height, mainContainer) {

        if (latestVideos.length == 0 && popularVideos.length == 0) {
            $("#" + mainContainer).hide();
            return;
        }

        $("#" + mainContainer + " .Main .Nav .Up").bind("click", function() {

            var currentPosition = parseInt($("#" + mainContainer).attr("currentPosition"));
            var target = currentPosition - _itemsToScroll;
            target = Math.max(target, 0);

            if (target != currentPosition) {
                $("#" + mainContainer + " .Main .MoreVideos").scrollTo($("#" + mainContainer + " .Main .MoreVideos .MoreVideos" + target), _scrollSettings);
                $("#" + mainContainer).attr("currentPosition", target);
            }
        });

        $("#" + mainContainer + " .Main .Nav .Down").bind("click", function() {

            var currentPosition = parseInt($("#" + mainContainer).attr("currentPosition"));
            var target = currentPosition + _itemsToScroll;
            target = Math.min(target, latestVideos.length - 1);

            if (target != currentPosition) {
                $("#" + mainContainer + " .Main .MoreVideos").scrollTo($("#" + mainContainer + " .Main .MoreVideos .MoreVideos" + target), _scrollSettings);
                $("#" + mainContainer).attr("currentPosition", target);
            }
        });

        var latestButton = $("#" + mainContainer + " .Main .FilterControls .Latest");
        var popularButton = $("#" + mainContainer + " .Main .FilterControls .Popular");

        latestButton.bind("click", function() {

            latestButton.addClass("Selected");
            popularButton.removeClass("Selected");
            _updateContainerContent(latestVideos, mainContainer, videoContainer, width, height);
        });

        popularButton.bind("click", function() {

            popularButton.addClass("Selected");
            latestButton.removeClass("Selected");
            _updateContainerContent(popularVideos, mainContainer, videoContainer, width, height);
        });

        if (latestVideos.length > 0) {
            LatestAndPopularVideos.UpdateMainVideo(latestVideos[0].Id, latestVideos[0].Title, videoContainer, width, height, mainContainer);
        }

        // If no popular videos, hide button
        if (popularVideos.length == 0) {
            popularButton.hide();
            popularButton.next().hide();
        }

        latestButton.addClass("Selected");
        _updateContainerContent(latestVideos, mainContainer, videoContainer, width, height);
    };

    _updateContainerContent = function(content, mainContainer, videoContainer, width, height) {

        var templateUrl = Agility.ResolveUrl("~/ClientTemplates/MoreVideos.htm");
        var container = $("#" + mainContainer + " .Main .MoreVideos .Scroll");
        container.html("");

        container.setTemplateURL(templateUrl)
        container.setParam("VideoContainer", videoContainer)
        container.setParam("Width", width);
        container.setParam("Height", height);
        container.setParam("MainContainer", mainContainer);
        container.processTemplate(content);

        // Move to the top of the list
        $("#" + mainContainer + " .Main .MoreVideos").scrollTo($("#" + mainContainer + " .Main .MoreVideos .MoreVideos0"), _scrollSettings);
        $("#" + mainContainer).attr("currentPosition", "0");
    };

    LatestAndPopularVideos.UpdateMainVideo = function(id, title, videoContainer, width, height, mainContainer) {

        var url = Agility.ResolveUrl("~/VideoPlayer.aspx?ClipId=" + id + "&Width=" + width + "&Height=" + height + "&Mode=" + _mode + "&Description=" + encodeURI(title));
        $("#" + videoContainer).attr("src", url);

        $("#" + mainContainer + " .VideoTitle").html(title);
        $("#" + mainContainer + " .VideoTitle").attr("title", title);
    };

})(BNN.LatestAndPopularVideos);

