function fetchCalendar(calendarAddress, startdate, enddate) {
 
    /*   
    $('table#hoursTable > tbody > tr').each(function(idx, el) {
        $('td.title, td.hours', this).toggleClass('today', idx == 0);
        if (idx == 0) {
            $('td.title', this).html('<span>Today</span>');
        }
    });
    */
    loadCalendar(calendarAddress, startdate, enddate);
}

var feedToDivMap = {
    "http://www.google.com/calendar/feeds/gavudiri8870fu7oie7o8up7rk%40group.calendar.google.com/public/full" : "dukeusers",
    "http://www.google.com/calendar/feeds/8dcuklhi7984oqd7fs1tgdu8fs%40group.calendar.google.com/public/full" : "genpublic"
}
/**
 * Callback function for the Google data JS client library to call with a feed 
 * of events retrieved.
 *
 * Creates an unordered list of events in a human-readable form.  This list of
 * events is added into a div called 'events'.  The title for the calendar is
 * placed in a div called 'calendarTitle'
 *
 * @param {json} feedRoot is the root of the feed, containing all entries 
 */ 
function listEvents(feedRoot) {
    var entries = feedRoot.feed.getEntries();
    var feedID = feedRoot.feed.id.$t;
  
    var getTimezoneDelta = function(d) {
        var est_offset = 300, actual_tzoffset = d.getTimezoneOffset();
        var delta = actual_tzoffset - est_offset;
        return delta;
    }
  
    /* loop through each event in the feed */ 
    /* use i<7 instead of i<len because queries with all-day events will have len=8; 
    (retrieve one extra day due to timezone weirdness in google calendar) */
    for (var i = 0; i < 4; i++) {
        var entry = entries[i];
        var title = entry.getTitle().getText();
    
        var startDateTime = null;
        var startJSDate = null;
    
        var times = entry.getTimes();
        if (times.length > 0) {
            startDateTime = times[0].getStartTime();
            //startJSDate_test = startDateTime.getDate();
            //tz_delta = getTimezoneDelta(startJSDate_test);
            //startJSDate_test.setMinutes(startJSDate_test.getMinutes() + tz_delta);\
            /*
            if (console) { 
                console.log(startDateTime.date);
                console.log(startDateTime.date.getTimezoneOffset());
                console.log("adjusted tz date = [" + startJSDate_test + "]"); 
                console.log(""); 
            }
            */
            startJSDate = startDateTime.getDate();
            tz_delta = getTimezoneDelta(startJSDate);
            startJSDate.addMinutes(tz_delta);
            //startJSDate.setMinutes(startJSDate.getMinutes() + tz_delta);
            
            endDateTime = times[0].getEndTime();
            endJSDate = endDateTime.getDate();
            endJSDate.addMinutes(tz_delta);
            //endJSDate.setMinutes(endJSDate.getMinutes() + tz_delta);
        }
            
        /* Parse out the Time string */
        var startTimeString = '';
        var endTimeString = '';
    
        isAllDay = false;
        if (!startDateTime.isDateOnly()) {
            if (((endJSDate.getTime() - startJSDate.getTime()) / 1000) >= 86340) {
                // assume 24 hour schedule
                isAllDay = true;
            }
            else {
                startTimeString = extractTime(startJSDate);
                endTimeString = extractTime(endJSDate);
            }
        } else {
            isAllDay = true;
        }
        var $dayRow = $('tr#'+i);
        var dayString = startJSDate.getDayName(true)
            + ' '
            + (startJSDate.getMonth() + 1)
            + '/'
            + startJSDate.getDate();
            
        if (startDateTime.isDateOnly() && feedToDivMap[feedID] == 'dukeusers') {
            // use the title, but look out for 'Perkins Hours: Open 24 hours.' string
            var patt = new RegExp("Perkins Hours: ");
            if (patt.test(title) == true) {
                title = "Open 24 hours"
            }
        }
            
        var span = "";
        if ( startDateTime.isDateOnly() ) { span += title; } 
        else if (isAllDay) { span += "Open 24 hours"; }
        else { span += startTimeString + " &#150; " + endTimeString; }
        span += "";
        //$myHoursDiv.html(span);
            
        if (feedToDivMap[feedID] == 'dukeusers') {
            // format for Duke Users hours
            $dukeusersDIV = $('div.dukeusers', $dayRow);
            $('span.title', $dukeusersDIV).text(dayString);
            $('div.hours', $dukeusersDIV).html(span);
            
        } else if (feedToDivMap[feedID] == 'genpublic') {
            // format for General Public hours
            $genpublicDiv = $('div.genpublic', $dayRow);
            $genpublicDiv.html(span + '*');
        }
	}   //end for loop	

} 
