﻿/// <reference name="MicrosoftAjax.js"/>
/// <reference path="~/js/RssLoaderServiceDebug.js"/>

function rssLoader_RenderControl(divId, url, useCache, feedDescriptor)
{
    //alert(feedDescriptor.unselectedPagerButtonCssClass);

    Portal.RssLoaderService.GetFeedHtml(divId, url, useCache, feedDescriptor, rssLoader_LoadSuccess, rssLoader_LoadFailed, divId);
}

function rssLoader_LoadSuccess(result, userContext, methodName)
{
    // userContext in this case is the id of the div tag to insert html into
    var o = $get(userContext);
    
    if(o != null)
    {
        o.innerHTML = result;
    }
}

function rssLoader_LoadFailed(error, userContext, methodName)
{
    //alert('RenderControl() failed:\n\n' + error.get_message());
    var re = /'/g;
    var message = error.get_message();
    var stack = error.get_stackTrace();
    
    message = message.replace(re, "''");
    stack = stack.replace(re, "''");
    
    // uncomment next line for debugging errors
    //alert('Error calling GetFeedHtml():\n' + message + '\n\n' + stack);
    
    // userContext in this case is the id of the div tag to insert html into
    var o = $get(userContext);
    if(o != null)
    {
        o.innerHTML = "An error occured loading content.";
    }
}



// pager button functions
function rssLoader_ShowPage(baseId, pageCount, selectedPageIndex)
{
    var pageIndex;
    var pageContainer;
    
    for(pageIndex = 0; pageIndex < pageCount; pageIndex++)
    {
        pageContainer = $get(baseId + "_rssPage_" + pageIndex);
        pageContainer.style.display = (pageIndex == selectedPageIndex ? "block" : "none");
    }
}

function rssLoader_PageButtonClicked(baseId, pageCount, selectedPageIndex, pagerButtonCssClass, pagerSelectedButtonCssClass)
{
    var pageIndex;
    var pagerButton;
    
    rssLoader_ShowPage(baseId, pageCount, selectedPageIndex);
    
    for(pageIndex = 0; pageIndex < pageCount; pageIndex++)
    {
        pagerButton = $get(baseId + "_rssPagerButton_" + pageIndex);
        pagerButton.className = (pageIndex == selectedPageIndex ? pagerSelectedButtonCssClass : pagerButtonCssClass);
    }
}

function rssLoader_SetButtonState(buttonId, enabled, cssClass)
{
    var b = $get(buttonId);

    if(b != null)
    {
        b.className = cssClass;
        b.disabled = !enabled;
    }
}

function rssLoader_FirstButtonClicked(baseId, pageCount, pagerButtonCssClass, pagerDisabledButtonCssClass)
{
    var hfSelectedIndex = $get(baseId + "_rssSelectedIndex");
    
    hfSelectedIndex.value = 0;
    rssLoader_ShowPage(baseId, pageCount, 0);

    rssLoader_SetButtonState(baseId + "_rssPagerFirstButton", false, pagerDisabledButtonCssClass);
    rssLoader_SetButtonState(baseId + "_rssPagerPreviousButton", false, pagerDisabledButtonCssClass);
    rssLoader_SetButtonState(baseId + "_rssPagerNextButton", true, pagerButtonCssClass);
    rssLoader_SetButtonState(baseId + "_rssPagerLastButton", true, pagerButtonCssClass);    
}

function rssLoader_PreviousButtonClicked(baseId, pageCount, pagerButtonCssClass, pagerDisabledButtonCssClass)
{
    var hfSelectedIndex = $get(baseId + "_rssSelectedIndex");
    var selectedIndex = eval(hfSelectedIndex.value, 10);
    
    if(selectedIndex > 0)
    {
        selectedIndex--;
        hfSelectedIndex.value = selectedIndex;
        rssLoader_ShowPage(baseId, pageCount, selectedIndex);
        
        rssLoader_SetButtonState(baseId + "_rssPagerFirstButton", (selectedIndex > 0), (selectedIndex > 0 ? pagerButtonCssClass : pagerDisabledButtonCssClass));
        rssLoader_SetButtonState(baseId + "_rssPagerPreviousButton", (selectedIndex > 0), (selectedIndex > 0 ? pagerButtonCssClass : pagerDisabledButtonCssClass));
        rssLoader_SetButtonState(baseId + "_rssPagerNextButton", (selectedIndex < (pageCount - 1)), (selectedIndex < (pageCount - 1) ? pagerButtonCssClass : pagerDisabledButtonCssClass));
        rssLoader_SetButtonState(baseId + "_rssPagerLastButton", (selectedIndex < (pageCount - 1)), (selectedIndex < (pageCount - 1) ? pagerButtonCssClass : pagerDisabledButtonCssClass));
    }
}

function rssLoader_NextButtonClicked(baseId, pageCount, pagerButtonCssClass, pagerDisabledButtonCssClass)
{
    var hfSelectedIndex = $get(baseId + "_rssSelectedIndex");
    var selectedIndex = eval(hfSelectedIndex.value, 10);
    
    if(selectedIndex < (pageCount - 1))
    {
        selectedIndex++;
        hfSelectedIndex.value = selectedIndex;
        rssLoader_ShowPage(baseId, pageCount, selectedIndex);
        
        rssLoader_SetButtonState(baseId + "_rssPagerFirstButton", (selectedIndex > 0), (selectedIndex > 0 ? pagerButtonCssClass : pagerDisabledButtonCssClass));
        rssLoader_SetButtonState(baseId + "_rssPagerPreviousButton", (selectedIndex > 0), (selectedIndex > 0 ? pagerButtonCssClass : pagerDisabledButtonCssClass));
        rssLoader_SetButtonState(baseId + "_rssPagerNextButton", (selectedIndex < (pageCount - 1)), (selectedIndex < (pageCount - 1) ? pagerButtonCssClass : pagerDisabledButtonCssClass));
        rssLoader_SetButtonState(baseId + "_rssPagerLastButton", (selectedIndex < (pageCount - 1)), (selectedIndex < (pageCount - 1) ? pagerButtonCssClass : pagerDisabledButtonCssClass));
    }
}

function rssLoader_LastButtonClicked(baseId, pageCount, pagerButtonCssClass, pagerDisabledButtonCssClass)
{
    var hfSelectedIndex = $get(baseId + "_rssSelectedIndex");
    
    hfSelectedIndex.value = (pageCount - 1);
    rssLoader_ShowPage(baseId, pageCount, (pageCount - 1));

    rssLoader_SetButtonState(baseId + "_rssPagerFirstButton", true, pagerButtonCssClass);
    rssLoader_SetButtonState(baseId + "_rssPagerPreviousButton", true, pagerButtonCssClass);
    rssLoader_SetButtonState(baseId + "_rssPagerNextButton", false, pagerDisabledButtonCssClass);
    rssLoader_SetButtonState(baseId + "_rssPagerLastButton", false, pagerDisabledButtonCssClass);    
}

