﻿
function grdRss_RowDataBound(sender, args) {
    var item = args.get_item();
    var dataItem = args.get_dataItem();
    var cell = item.get_cell("MyColumn");
    var titleLink = getElement(cell, "rsstitle");
    
    // If title not populated then use the first row to populate
    if (titleLink == null) {
        cell.innerHTML = cell.parentNode.parentNode.rows[0].cells[0].innerHTML;
        titleLink = getElement(cell, "rsstitle");
    }
    
    titleLink.innerHTML = dataItem.title;
    titleLink.href = dataItem.link;

    getElement(cell, "rsscontent").innerHTML = dataItem.content;
    getElement(cell, "rssauthor").innerHTML = dataItem.author;
    getElement(cell, "rssdate").innerHTML = String.format("{0:MM/dd/yyyy hh:mm}", dataItem.publishedDate);
}

function getElement(parent, cssclass) {
    var children = parent.getElementsByTagName("*");
    for (var i = 0, l = children.length; i < l; i++) {
        var child = children[i];
        if (child.className == cssclass)
            return child;
    }
    return null;
}

function grdRss_Created(sender, args) {
    if (eval(sender.get_id() + "feedUrl") != "") {
        var tableView = sender.get_masterTableView();
        retrieveRss(0, tableView.get_pageSize(), eval(sender.get_id() + "feedUrl"), tableView, sender.get_id()); 
    }
}

function retrieveRss(start, end, url, tableView, id) {
    $find(loadingPanelID).show(id);
    $.jGFeed(url,
        function(feeds) {
            // Check for errors
            if (!feeds) {
                // there was an error
                return false;
            }
            $find(id).get_masterTableViewHeader().get_element().getElementsByTagName("th")[0].innerHTML = feeds.title;
            updateGrid(feeds.entries.slice(start, end), tableView, id, feeds.entries.length);
        }, 10);
}

function grdRss_Command(sender, args) {
    var tableView = sender.get_masterTableView();
    args.set_cancel(true);
    $get(String.format("{0}_GridData", sender.get_id())).scrollTop = 0;
    //$find(loadingPanelID).show(sender.get_id());
    var start = tableView.get_currentPageIndex() * tableView.get_pageSize();
    var end = start + tableView.get_pageSize();
    retrieveRss(start, end, eval(sender.get_id() + "feedUrl"), tableView, sender.get_id());
}


function updateGrid(result, tableView, id, count) {
    tableView.set_dataSource(result);
    tableView.dataBind();
    tableView.set_virtualItemCount(count);
    $find(loadingPanelID).hide(id);
}

