﻿var feedUrlSermoncast = 'SermonCast.xml';
var feedUrlCalendar = 'http://www.google.com/calendar/feeds/tdu74bdtl62133un1iments2lo@group.calendar.google.com/public/full';
var feedUrlBlogNews = 'http://churchoftheriver.blogspot.com/feeds/posts/default';
var applicationName = 'ChurchOfTheRiver-Mashup-1.0';

var calendarService;
var blogService;
var podcastService;

function getCalendarEventFeed(callback, maxResults) {
    var query = new google.gdata.calendar.CalendarEventQuery(feedUrlCalendar);
    query.setFutureEvents(true);
    query.setMaxResults(maxResults);
    query.setOrderBy('starttime');
    query.setSortOrder('ascending');
    query.setSingleEvents(true);

    calendarService.getEventsFeed(query, callback, feedErrorHandler);
}

function getBlogPostFeed(callback, maxResults, feedUri) {
    if (feedUri == null) feedUri = feedUrlBlogNews;
    var query = new google.gdata.blogger.BlogPostQuery(feedUri);
    query.setMaxResults(maxResults);
    query.setOrderBy = 'ORDERBY_PUBLISHED';
    
    blogService.getBlogPostFeed(query, callback, feedErrorHandler);
}

function getPodcastFeed(callback, maxResults, feedUri) {
    if (feedUri == null) feedUri = feedUrlSermoncast;
    var query = new google.gdata.client.Query(feedUri);
    query.setParam('max-results', maxResults);
    podcastService.getFeed(query, callback, feedErrorHandler);
}

function feedErrorHandler(e) {
    alert(e.cause ? e.cause.statusText : e.message);
}

function podcastEntry(entry, full) {
    var element = document.createElement('div');
    element.className = 'entry';

    var link = document.createElement('a');
    link.className = 'link';
    link.setAttribute('href', entry.link.href);
    link.appendChild(document.createTextNode(entry.title.$t));
    element.appendChild(link);

    var d = new Date();
    d.setXmlTimeStamp(entry.published.$t);

    var date = document.createElement('span');
    date.className = 'date';
    date.appendChild(document.createTextNode(d.shortDate()));
    element.appendChild(date);

    element.appendChild(document.createTextNode(entry.contributor.name.$t));

    if (full && entry.description) {
        var span = document.createElement('span');
        span.innerHTML = '<br />' + entry.description.$t;
        element.appendChild(span);
    }
    return element;    
}

function newsEntry(entry) {
    var element = document.createElement('div');
    element.className = 'entry';

    var link = document.createElement('a')
    link.setAttribute('href', entry.getHtmlLink().getHref());
    link.className = 'link';
    link.appendChild(document.createTextNode(entry.getTitle().getText()));
    element.appendChild(link);

    var date = document.createElement('span');
    date.className = 'date';
    var published = entry.getPublished().getValue().getDate();
    date.appendChild(document.createTextNode(published.shortDate() + ' ' + published.shortTime()));
    element.appendChild(date);

    var span = document.createElement('span');
    span.innerHTML = entry.getContent().getText();
    element.appendChild(span);
    
    return element;
}

function calendarEntry(entry) {
    var element = document.createElement('div');
    element.className = 'entry';
    
    var link = document.createElement('a')
    link.setAttribute('href', entry.getHtmlLink().getHref());
    link.className = 'link';
    link.appendChild(document.createTextNode(entry.getTitle().getText()));
    element.appendChild(link);

    var date = document.createElement('span');
    date.className = 'date';
    var times = entry.getTimes();
    if (times.length > 0) {
        startDateTime = times[0].getStartTime();
        startJSDate = startDateTime.getDate(); 
    }

    date.appendChild(document.createTextNode(startJSDate.toEventString()));
    element.appendChild(date);

    return element;
}
