﻿var userID;
var properties;
var orderBy = new Array();
orderBy.push('PublishedDateTime desc');

var startRowIndexBlogEntries;
var maximumRowsBlogEntries = 8;

var monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");

function onItemCount(sender, e)
{
    var nextLink, previousLink, maxItems, startIndex;
    
    if (e.Succeeded)
    {
        if (e.Context == "blogEntryCount")
        {
            nextLink = document.getElementById("_nextBlogEntriesLink");
            previousLink = document.getElementById("_previousBlogEntriesLink");
            maxItems = startRowIndexBlogEntries + maximumRowsBlogEntries;
            startIndex = startRowIndexBlogEntries;
            if (e.Result > 0)
                getBlogEntries();
        }
        
        if (e.Result <= maxItems)
            nextLink.innerHTML = "";
        else
            nextLink.innerHTML = "Next >>";
        
        if (startIndex <= 0)
            previousLink.innerHTML = "";
        else
            previousLink.innerHTML = "<< Previous";
    }
}

function onItems(sender, e)
{
    document.getElementById("blogLoadingIndicator").style.display = "none";
    if (e.Succeeded)
    {
        var template = "";
        var destination = "";
        var container = "";
        
        if (e.Context == "blogEntries")
        {
            template = '_blogEntryTemplate';
            destination = '_blogEntries';
            container = '_blogContainer';
        }
        else
        {
                alert("Unexpected context value");
                return;
        }
        
        $get(destination).innerHTML = "";
            
        var previousDateString = "";
        for (var lcv = 0; lcv < e.Result.length; lcv++)
        {
            if (e.Context == "blogEntries")
            {
                var itemDictionary = {};
                itemDictionary['#ID#'] = e.Result[lcv].ID.toString();
                var publishDate = e.Result[lcv].PublishedDateTime;
                var dateString = monthNames[publishDate.getMonth()] + " " + publishDate.getDate() + ", " + publishDate.getFullYear();
                itemDictionary['#PublishedDateTime#'] = (previousDateString == dateString) ? "" : dateString;
                itemDictionary['#DateVisible#'] = (previousDateString == dateString) ? "none" : "block";
                previousDateString = dateString;
                itemDictionary['#Title#'] = e.Result[lcv].Title.htmlEncode();
                itemDictionary['#Content#'] = e.Result[lcv].Description;
                itemDictionary['#CommentText#'] = (e.Result[lcv].TotalCommentCount == 0) ? "no comments so far" : 
                    ((e.Result[lcv].TotalCommentCount == 1) ? "one comment so far" : (e.Result[lcv].TotalCommentCount + " comments so far"));
                itemDictionary['#Category#'] = "nothing";
                itemDictionary['#UserID#'] = e.Result[lcv].UserID;
                for (var i = 0 ; i < e.Result[lcv].Properties.length ; i++)
                    if (e.Result[lcv].Properties[i].Key == 'Category')
                        itemDictionary['#Category#'] = '<a href="ViewCategory.aspx?userName=' + e.Result[lcv].UserID + '&category=' + 
                                e.Result[lcv].Properties[i].Value + '">' + e.Result[lcv].Properties[i].Value + '</a>';
                
                BoostDisplayManager.ProcessTemplateIntoElement(template, destination, itemDictionary);
            }
            else
            {
                BoostDisplayManager.ProcessStreamingItemIntoElement(template, destination, e.Result[lcv]);
            }
        }
        
        if (e.Result.length > 0 && $get(container).style.display != "")
        {
            $get(container).style.display = "";
        }
    }
}

function next(context)
{
    startRowIndexBlogEntries += maximumRowsBlogEntries;
    getBlogEntriesCount();
}

function previous(context)
{
    startRowIndexBlogEntries -= maximumRowsBlogEntries;
    getBlogEntriesCount();
}