﻿/// <reference path="../API/Agility.js" />

Agility.RegisterNamespace("BNN.LatestAndPopularNews");

(function(LatestAndPopularNews) {

    var properties = null;

    LatestAndPopularNews.OnInit = function(p) {

        properties = p;

        var latestNews = $("#LatestAndPopularNews .LatestNews");
        var latestData = "?itemCount=" + properties.NumToShow + "&currentStoryID=" + properties.CurrentStoryID; //"{itemCount : " + properties.NumToShow + ", currentStoryID:" + properties.CurrentStoryID + "}";
        _populateNewsTemplate(latestNews, "GetLatestNews", latestData);

        var popularNews = $("#LatestAndPopularNews .PopularNews");
        var popularData = "?itemCount=" + properties.NumToShow + "&popularAge=" + p.PopularAge; //"{itemCount : " + properties.NumToShow + ", popularAge:" + p.PopularAge + "}";
        _populateNewsTemplate(popularNews, "GetPopularNews", popularData);
    };

    _populateNewsTemplate = function(container, method, data) {
        $.ajax({
            //type: "POST",
            url: AjaxWebserviceSvcUrl + '/' + method + data, 
           // data: data,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(jsonResponse) {
                var result = { d: jsonResponse };
                if (result.d != undefined && result.d != null) {

                    var templateUrl = Agility.ResolveUrl("~/ClientTemplates/LatestAndPopularNews.htm");
                    container.setTemplateURL(templateUrl);
                    container.setParam("ExpandStoryLabel", properties.ExpandStoryHoverLabel);
                    container.setParam("FullStoryLabel", properties.FullStoryLabel);
                    container.processTemplate(result.d);
                    
                    container.find('div:first .Toggle').trigger('click');
                }
            },
            complete: function(XMLHttpRequest, textStatus) {
                //alert(XMLHttpRequest.status + ' ' + textStatus);
                //alert(XMLHttpRequest.responseText);
            }
        });
    };

    LatestAndPopularNews.ShowLatest = function() {

        $("#LatestAndPopularNews .PopularNews").hide();
        $("#LatestAndPopularNews .LatestNews").show();

        $("#LatestNewsTab").addClass("Selected");
        $("#PopularNewsTab").removeClass("Selected");
    };

    LatestAndPopularNews.ShowPopular = function() {

        $("#LatestAndPopularNews .LatestNews").hide();
        $("#LatestAndPopularNews .PopularNews").show();

        $("#PopularNewsTab").addClass("Selected");
        $("#LatestNewsTab").removeClass("Selected");
    };

    LatestAndPopularNews.ToggleNewsItem = function(sender) {

        var itemRoot = $(sender).parent().parent();
        var itemIndex = itemRoot.parent().children("div").index(itemRoot);

        if ($("#LatestNewsTab").hasClass("Selected")) {
            $("#LatestAndPopularNews .LatestNews .NewsStory").each(function(index) {

                if (itemIndex != index) {
                    _slideUp($(this));
                }
            });
        }

        if ($("#PopularNewsTab").hasClass("Selected")) {
            $("#LatestAndPopularNews .PopularNews .NewsStory").each(function(index) {

                if (itemIndex != index) {
                    _slideUp($(this));
                }
            });
        }

        if (itemRoot.hasClass("Expanded")) {

            _slideUp(itemRoot);
        } else {

            _slideDown(itemRoot);
        }
    };

    LatestAndPopularNews.ToHTML = function(text) {
        var $div = $('<div></div>').html(text);
        return $div.text();
    };

    _slideUp = function(target) {

        target.children(".Teaser").slideUp('fast');
        target.removeClass("Expanded");
    };

    _slideDown = function(target) {

        var teaser = target.children(".Teaser");
        if (teaser.html().length > 0) {
            teaser.slideDown('fast');
            target.addClass("Expanded");
        }
    };

})(BNN.LatestAndPopularNews);

