﻿(function($) {
    var RssNews = function(element) {
        element = $(element);
        var o = this;
        this.init = function() {
            $.ajax({
                type: "POST",
                url: "Data.asmx/GetRssNews",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    var result = (typeof msg.d) ? eval(msg.d) : msg.d;
                    var ul = element.find('ul');
                    if(ul.length === 0) {
                        ul = $(document.createElement('ul')).addClass('feed');
                        element.find('.wrapper').append(ul);
                    }
                    for(var i = 0; i < result.length; i++) {
                        var li = $(document.createElement('li'));
                        li.append('<div><a href="' + result[i].Link + '" class="title" title="' + result[i].Title + '" target="_blank">' + result[i].Title + '</a><small class="source">Provided by: <a href="' + result[i].SourceLink + '" target="_blank">' + result[i].Source + '</a></small><small class="date">Date Published: ' + result[i].PublicationDate + '</small><div class="clear"></div></div>');
                        ul.append(li);
                    }
                    if(result.length > 0) {
                        element.show();
                        var autoscrolling = true;
                        $('#rssNews').newsCarousel().hover(function() {
                            autoscrolling = false;
                        },
                        function() {
                            autoscrolling = true;
                        });
                        setInterval(function() { if (autoscrolling) { $('#rssNews').trigger('next'); } }, 10000);
                    }
                }
            });
        };
    };
    $.fn.rssNews = function() {
        return this.each(function() {
            var rssNews = new RssNews(this);
            rssNews.init();
        });
    };
    $.fn.newsCarousel = function() {
        return this.each(function() {
            var wrapper = $("> div", this).css("overflow","hidden");
            var slider = wrapper.find("> ul");
            var items = slider.find("> li");
            var single = items.filter(":first");
            var singleHeight = single.outerHeight() + 2; 
            var visible = Math.ceil(wrapper.innerHeight() / singleHeight);
            var currentPage = 1;
            var pages = items.length;  

            items.filter(':first').before(items.slice(- visible).clone().addClass('cloned'));
            items.filter(':last').after(items.slice(0, visible).clone().addClass('cloned'));
            items = slider.find('> li');
            wrapper.scrollTop(singleHeight * visible);
            
            function gotoPage(page) {
                wrapper.filter(':not(:animated)').animate({
                    scrollTop : '+=' + singleHeight
                }, 800, function () {
                    if (page == 0) {
                        wrapper.scrollTop(singleHeight * visible * pages);
                        page = pages;
                    } else if (page > pages) {
                        wrapper.scrollTop(singleHeight * visible);
                        page = 1;
                    } 
                    currentPage = page;
                });                
                return false;
            }
            
            $(this).bind('next', function () {
                gotoPage(currentPage + 1);
            });
        });
    };
})(jQuery);
$('#rssNews').rssNews();

