/*
* Retrieve events with a date query
*/
google.load("gdata", "1");
google.setOnLoadCallback(getCalendarFeed);

function getCalendarFeed(){

    var maxResults = 4;
	
	// Create the calendar service object
	var calendarService = new google.gdata.calendar.CalendarService('GoogleInc-jsguide-1.0');
	
	// The default "private/full" feed is used to retrieve events from
	// the primary private calendar with full projection
	var feedUri = 'http://www.google.com/calendar/feeds/lookfly.com_on3njkhgsk5jvpmcua3cufndts%40group.calendar.google.com/public/basic';
	
	// Create a CalendarEventQuery, and specify that this query is
	// applied toward the "private/full" feed
	var query = new google.gdata.calendar.CalendarEventQuery(feedUri);
	
	// Create and set the minimum and maximum start time for the date query
	query.setOrderBy("starttime");
	query.setMaxResults(maxResults);
	query.setFutureEvents(true);
	query.setSortOrder('ascending');
	
	// The callback that will be called when getEventsFeed() returns feed data
	var callback = function(root) {
	
	  // Obtain the array of matched CalendarEventEntry
	  var eventEntries = root.feed.getEntries();
	
	  // If there is matches for the date query
	  if (eventEntries.length > 0) {
		var limit = 0;
		//eventEntries = eventEntries.reverse();
		if (eventEntries.length > maxResults){
			limit = maxResults
		} else {
			limit = eventEntries.length
		}
		for (var i = 0; i < limit; i++) {
		  var event = eventEntries[i];
		  // Print the event title of the matches
		  var eventContent = event.getContent().getText().substr(5);
		  var eventUrl = eventContent.slice(eventContent.indexOf("http"), eventContent.indexOf("<", eventContent.indexOf("http")));
		  var eventTime = eventContent.slice(0, eventContent.indexOf("<br", 1));
		  var eventDesc = eventContent.slice((eventContent.indexOf("Event Description") + 18), eventContent.indexOf("<", eventContent.indexOf("Event Description")));
		  var eventTitle = event.getTitle().getText();
		  $("gcalendar-content").insert('<li><a href="' + eventUrl + '" class="event-title">' + eventTitle + '</a><br/><span class="event-time">' + eventTime + '</span><br/><span class="event-description">' + eventDesc + '</span></li>');
		}
	  } else {
		// No match is found for the date query
		$("gcalendar-content").insert('<li>No events are matched from the query!</li>');
	  }
	}
	
	// Error handler to be invoked when getEventsFeed() produces an error
	var handleError = function(error) {
	  $("gcalendar-content").insert(error);
	}
	
	// Submit the request using the calendar service object. Notice the CalendarEventQuery
	// object is passed in place of the feed URI
	calendarService.getEventsFeed(query, callback, handleError);
}
