/**
* @author jason
*/

google.load("gdata", "1");
//google.setOnLoadCallback(init);

jQuery( init );


function init() {
	// init the Google data JS client library with an error handler
	google.gdata.client.init(handleGDError);

	var calendarUrl = 'http://www.google.com/calendar/feeds/prairierivers@gmail.com/public/full';
	$("#calendar li.title").after('<li class="loading">loading...</li>');
	loadCalendar( calendarUrl );
	
}

/**
 * Adds a leading zero to a single-digit number.  Used for displaying dates.
 */
function padNumber(num) {
	if(num <= 9) {
		return "0" + num;
	}
	return num;
}

/**
 * Uses Google data JS client library to retrieve a calendar feed from the specified
 * URL.  The feed is controlled by several query parameters and a callback 
 * function is called to process the feed results.
 *
 * @param {string} calendarUrl is the URL for a public calendar feed
 */  
function loadCalendar(calendarUrl) {
	var service = new google.gdata.calendar.CalendarService('gdata-js-client-samples-simple');
	var query = new google.gdata.calendar.CalendarEventQuery(calendarUrl);
	query.setOrderBy('starttime');
	query.setSortOrder('ascending');
	query.setFutureEvents(true);
	query.setSingleEvents(true);
	query.setMaxResults(5);
	
	service.getEventsFeed(query, listEvents, handleGDError);
}

function handleGDError(e) {
	var errorHtml = "There was a problem loading the Calendar. Please click on the link below to view the calendar.";
	$("#calendar li.loading").html(errorHtml);
}

function listEvents(feedRoot) {
	var entries = feedRoot.feed.getEntries();
	$("#calendar li.loading").remove();
	$.each(entries, function() {

		var entry = this;
		var entryTitle = entry.getTitle().getText();
	    var entryLinkHref = null;

	    if(entry.getHtmlLink() != null) {
	      entryLinkHref = entry.getHtmlLink().getHref();
	    }

		var startDateTime = null;
		var startJSDate = null;
		var times = entry.getTimes();
		
		if(times.length > 0) {
			startDateTime = times[0].getStartTime();
			startJSDate = startDateTime.getDate();
		}
		
		var entryLinkHref = null;
		
		if(entry.getHtmlLink() != null) {
			entryLinkHref = entry.getHtmlLink().getHref();
		}

		var dateString = (startJSDate.getMonth() + 1) + "/" + startJSDate.getDate();

		if(!startDateTime.isDateOnly()) {
			dateString += " " + (startJSDate.getHours() % 12) + ":"
				+ padNumber(startJSDate.getMinutes())
				+ (startJSDate.getHours() < 12 ? "am" : "pm");
		}
		
		
		var calLinkHtml = '<a href="' + entryLinkHref + '&ctz=America/Chicago" >' + entryTitle + '</a>';

		$("#calendar").append(
			$("<dt/>").text(dateString)
		).append(
			$("<dd/>").html(calLinkHtml)
		);
	});
	//$("#calendar dd:odd").addClass("alt");
}

