var maxEvents = 1;

var dateFormat = function()
{
    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function(
            val, len)
    {
        val = String(val);
        len = len || 2;
        while (val.length < len)
            val = "0" + val;
        return val;
    };
    
    // Regexes and supporting functions are cached through closure
    return function(date, mask, utc)
    {
        var dF = dateFormat;
        
        // You can't provide utc if you skip other args (use the "UTC:" mask
        // prefix)
        if (arguments.length == 1
                && (typeof date == "string" || date instanceof String)
                && !/\d/.test(date))
        {
            mask = date;
            date = undefined;
        }
        
        // Passing date through Date applies Date.parse, if necessary
        date = date ? new Date(date) : new Date();
        if (isNaN(date))
            throw new SyntaxError("invalid date");
        
        mask = String(dF.masks[mask] || mask || dF.masks["default"]);
        
        // Allow setting the utc argument via the mask
        if (mask.slice(0, 4) == "UTC:")
        {
            mask = mask.slice(4);
            utc = true;
        }
        
        var _ = utc ? "getUTC" : "get", d = date[_ + "Date"](), D = date[_
                + "Day"](), m = date[_ + "Month"](), y = date[_ + "FullYear"](), H = date[_
                + "Hours"](), M = date[_ + "Minutes"](), s = date[_ + "Seconds"]
                (), L = date[_ + "Milliseconds"](), o = utc ? 0 : date
                .getTimezoneOffset(), flags =
        {
            d : d,
            dd : pad(d),
            ddd : dF.i18n.dayNames[D],
            dddd : dF.i18n.dayNames[D + 7],
            m : m + 1,
            mm : pad(m + 1),
            mmm : dF.i18n.monthNames[m],
            mmmm : dF.i18n.monthNames[m + 12],
            yy : String(y).slice(2),
            yyyy : y,
            h : H % 12 || 12,
            hh : pad(H % 12 || 12),
            H : H,
            HH : pad(H),
            M : M,
            MM : pad(M),
            s : s,
            ss : pad(s),
            l : pad(L, 3),
            L : pad(L > 99 ? Math.round(L / 10) : L),
            t : H < 12 ? "a" : "p",
            tt : H < 12 ? "am" : "pm",
            T : H < 12 ? "A" : "P",
            TT : H < 12 ? "AM" : "PM",
            Z : utc ? "UTC" : (String(date).match(timezone) || [ "" ]).pop()
                    .replace(timezoneClip, ""),
            o : (o > 0 ? "-" : "+")
                    + pad(
                            Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o)
                                    % 60, 4),
            S : [ "th", "st", "nd", "rd" ][d % 10 > 3 ? 0
                    : (d % 100 - d % 10 != 10) * d % 10]
        };
        
        return mask.replace(token, function($0)
        {
            return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
        });
    };
}();

// Some common format strings
dateFormat.masks =
{
    "default" : "ddd mmm dd yyyy HH:MM:ss",
    shortDate : "m/d/yy",
    mediumDate : "mmm d, yyyy",
    longDate : "mmmm d, yyyy",
    fullDate : "dddd, mmmm d, yyyy",
    shortTime : "h:MMtt",
    mediumTime : "h:MM:ss TT",
    longTime : "h:MM:ss TT Z",
    isoDate : "yyyy-mm-dd",
    isoTime : "HH:MM:ss",
    isoDateTime : "yyyy-mm-dd'T'HH:MM:ss",
    isoUtcDateTime : "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",
    justYear : "yyyy",
    justMonth : "mm",
    justDay : "d",
    justHour : "HH:MM"

};

// Internationalization strings
dateFormat.i18n =
{
    dayNames : [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday",
            "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
    monthNames : [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
            "Sep", "Oct", "Nov", "Dec", "January", "February", "March",
            "April", "May", "June", "July", "August", "September", "October",
            "November", "December" ]
};

// For convenience...
Date.prototype.format = function(mask, utc)
{
    return dateFormat(this, mask, utc);
};

function padNumber(num)
{
    if (num <= 9)
    {
        num = "0" + num;
    }
    return num;
}

function locationAsHtml(item)
{
    var loc = '';
    
    if (item.location)
        loc = "<span class='eLoc'>" + item.location + "</span>";
    else
        ; // no place for this event, must be an annoucement
        
    return loc;
}

function isSameDay(item)
{
    
    var start = item.start;
    var end = item.end;
    var sameDay = start.format("justYear") == end.format("justYear");
    var startDay = new Number(start.format("justDay"));
    var endDay = new Number(end.format("justDay"));
    sameDay = sameDay && start.format("justMonth") == end.format("justMonth");
    sameDay = sameDay
            && (start.format("justDay") == end.format("justDay") || (startDay == endDay
                    && start.format("justHour") == "00:00" && end
                    .format("justHour") == "00:00"));
    
    // alert(item.start.format("justHour") + " " + item.end.format("justHour") +
    // " " + sameDay + " " + startDay + "-" + endDay);
    return sameDay;
    
}

function datesAsHtml(item)
{
    // alert(item.start.format() + " " + item.end.format());
    // var sameDay = item.start.format("fullDate") ==
    // item.end.format("fullDate");
    var sameDay = isSameDay(item);
    var allDay = item.start.format("shortTime") == item.end.format("shortTime");
    var dhtml = "";
    var dateF = "ddd., mmmm d";
    if (sameDay && !allDay)
    {
        dhtml = item.start.format(dateF) + ", "
                + item.start.format("shortTime");
    }
    else if (sameDay && allDay)
    {
        dhtml = item.start.format(dateF);
    }
    else if (!sameDay)
    {
        var endTime = item.end.getTime();
        endTime = endTime - (1000 * 60 * 60 * 24);
        var endDate = new Date(endTime);
        var s = item.start.format(dateF);
        var e = endDate.format(dateF);
        if (s != e)
            dhtml = item.start.format(dateF) + " - " + endDate.format(dateF);
        else
            dhtml = item.start.format(dateF);
    }
    else
    {
        throw "Unhandled date display case: sameDay=" + sameDay + " allDay: "
                + allDay;
    }
    return "<span class='eDate'>" + dhtml + "</span>";
}

function listMedallions(feedRoot)
{
    
    var entries = feedRoot.feed.getEntries();
    
    var len = entries.length;
    
    var items = new Array();
    var listing = "";
    
    var lastMonth = "";
    var monthIndex = 0;
    
    var seenTitles = new Array();
    var stop = false;
    
    for ( var i = 0; i < len; i++)
    {
        var entry = entries[i];
        var item = parseItem(entry);
        items[i] = item;
        var title = item.oldtitle;
        
        if (seenTitles[title] == null)
        {
            
            var currMonth = item.start.format("mmmm");
            if (currMonth != lastMonth)
            {
                
                lastMonth = currMonth;
                
                if (monthIndex > 0 && monthIndex < 3)
                {
                    $('medallionEvents' + monthIndex).innerHTML = listing;
                    listing = "";
                    
                }
                else
                {
                    
                }
                monthIndex++;
                listing += "<li class='eMonth'>" + lastMonth + "</li>";
            }
            
            listing += "<li>" + item.title + item.dates +  "</li>";
        }
        
    }
    if (len == 0)
        listing = "<li><p>No events, please check for updates again later on.</p></li>";
    else
        ; // have events
        
    $('medallionEvents3').innerHTML = listing;
    
}

function listEvents(feedRoot, targetId)
{
    var entries = feedRoot.feed.getEntries();
    
    var len = entries.length;
	    
    var items = new Array();
    var listing = "";
    
    var lastMonth = "";
    
    var seenTitles = new Array();
    var stop = false;
    
    for ( var i = 0; i < len; i++)
    {
        var entry = entries[i];
        var item = parseItem(entry);
		
        items[i] = item;
        var title = item.oldtitle;
        
        if (seenTitles[title] == null)
        {
            // want to capture 1 ig general mtg and 1 ig & dcm mtg
            if (targetId == "groupEvents")
                seenTitles[title] = true;
            else
                ; // not the ig general feed
                
            var currMonth = item.start.format("mmmm");
            if (currMonth != lastMonth && showMonths)
            {
                
                lastMonth = currMonth;
                listing += "<li class='eMonth'>" + lastMonth + "</li>";
            }
            
            listing += "<li>" + item.title + item.dates + item.loc
                    + item.comments + "</li>";
        }
        
    }
    if (len == 0)
    {
        listing = ""; // "<li><p>No events, please check for updates again
                        // later on.</p></li>";
        try
        {
            if ($('eHitsSummary').innerHTML == '')
            {
                $('eHitsSummary').innerHTML = 'No events matched your query.';
            }
        }
        catch (ignored)
        {
            
        }
    }
    else
    {
        try
        {
            $('eHitsSummary').innerHTML = '&nbsp;';
        }
        catch (ignored)
        {
            
        }
    }
    
try{
    $(targetId).innerHTML = listing;
}catch (e) {}
	    
}

function listAnyEvents(feedRoot, targetId)
{
    
    var entries = feedRoot.feed.getEntries();
    
    var len = entries.length;
    
    var items = new Array();
    var listing = "";
    
    var lastMonth = "";
    
    var seenTitles = new Array();
    var stop = false;
    
    for ( var i = 0; i < len; i++)
    {
        var entry = entries[i];
        var item = parseItemForAll(entry);
        items[i] = item;
        var title = item.oldtitle;
        
        if (seenTitles[title] == null)
        {
            
            var currMonth = item.start.format("mmmm");
            if (currMonth != lastMonth && showMonths)
            {
                
                lastMonth = currMonth;
                listing += "<br/><p><b>" + lastMonth + "</b></p><br/>";
            }
            
            listing += "<p><b>" + item.title + "</b><br/>" + item.dates;
            if (item.loc != null && item.loc != '')
            {
                listing+= "<br/><i>" + item.loc + "</i>";
            }
            if (item.comments != null && item.comments != '')
            {
                listing += "<br/>" + item.comments;
            }
            listing +="</p><br/>";
        }
        
    }
    
    $(targetId).innerHTML = $(targetId).innerHTML + listing;
    
}

var myService = null;
var twoThreeFourUrl = 'http://www.google.com/calendar/feeds/aatoronto.org_ue51kq731e9gkquns7nrpthfk0%40group.calendar.google.com/public/full';
var medallionUrl = 'http://www.google.com/calendar/feeds/aatoronto.org_l7f1plk4magm0c8rbrcan641pc@group.calendar.google.com/public/full';
var eventsUrl = 'http://www.google.com/calendar/feeds/aatoronto.org_ieh6knmpi8srpm8cilia5v1c20@group.calendar.google.com/public/full';
var districtFeedUrl = 'http://www.google.com/calendar/feeds/aatoronto.org_mjjg5qliiveqb990rkav5d06b8@group.calendar.google.com/public/full';
var nonAAEventsURL = 'http://www.google.com/calendar/feeds/aatoronto.org_64rancmr01jn3jbdt05fiab92c%40group.calendar.google.com/public/full';

var allFeeds = [ eventsUrl, twoThreeFourUrl, medallionUrl, districtFeedUrl, nonAAEventsURL ];

function setupMyService()
{
    myService = new google.gdata.calendar.CalendarService('myservice');
}

var handleTwoThreeFour = function(myResultsFeedRoot)
{
    listEvents(myResultsFeedRoot, "ig234events");
}

var handleEvents = function(myResultsFeedRoot)
{
    listEvents(myResultsFeedRoot, "gtaEvents");
}

var handleMedallion = function(myResultsFeedRoot)
{
    listEvents(myResultsFeedRoot, "medallionEvents");
}

var handleMedallionForEventPage = function(myResultsFeedRoot)
{
    listMedallions(myResultsFeedRoot, "medallionEvents");
}

var handleDistrictsForEventPage = function(myResultsFeedRoot)
{
    
    listEvents(myResultsFeedRoot, "districtEvents");
}

var handleListEvents = function(myResultsFeedRoot)
{
    listAnyEvents(myResultsFeedRoot, "listStart");
}

var handleNonAAEvents = function(myResultsFeedRoot)
{ 
    listEvents(myResultsFeedRoot, "nonAAEvents");
}

var allHandles = [ handleEvents, handleTwoThreeFour, handleMedallion,
        handleDistrictsForEventPage, handleNonAAEvents ];

function parseItem(entry)
{
    var item = new Object();
    
    item.oldtitle = entry.getTitle().getText();
    item.title = entry.getTitle().getText();
    item.comments = entry.getContent().getText();
    
    var times = entry.getTimes();
    
    if (times.length > 0)
    {
        item.start = times[0].getStartTime().getDate();
        item.end = times[0].getEndTime().getDate();
    }
    else
    {
        throw "Event with no date found! " + item.title;
    }
    
    var where = entry.getLocations();
    if (where.length > 0)
    {
        item.location = where[0].getValueString();
    }
    
    item.loc = locationAsHtml(item);
    item.dates = datesAsHtml(item);
    item.comments = item.comments ? "<span class='eComments'>" + item.comments
            + "</span>" : "";
    
    item.comments = item.comments.replace(
            /\[(.*),{1,1}\s*(.*),{1,1}(internal|external)\]{1,1}/gi,
            "<a class='$3' href='$2'>$1</a>");
    item.comments = item.comments.replace(/\n\s*\n/gi, '<br/>&nbsp;<br/>');
    item.comments = item.comments.replace(/\n/gi, '<br/>');
    
    item.title = "<span class='eTitle'>" + item.title + "</span>";
    
    return item;
}


function parseItemForAll(entry)
{
    var item = new Object();
    
    item.oldtitle = entry.getTitle().getText();
    item.title = entry.getTitle().getText();
    item.comments = entry.getContent().getText();
    
    var times = entry.getTimes();
    
    if (times.length > 0)
    {
        item.start = times[0].getStartTime().getDate();
        item.end = times[0].getEndTime().getDate();
    }
    else
    {
        throw "Event with no date found! " + item.title;
    }
    
    var where = entry.getLocations();
    if (where.length > 0)
    {
        item.location = where[0].getValueString();
    }
    
    item.loc = locationAsHtml(item);
    item.dates = datesAsHtml(item);
    item.comments = item.comments ? item.comments : "";
    
    item.comments = item.comments.replace(/\n\s*\n/gi, '<br/>&nbsp;<br/>');
    item.comments = item.comments.replace(/\n/gi, '<br/>');
    
    item.title = item.title ;
    
    return item;
}

/** for committee page ** */
var handleCmt = function(feedRoot)
{
    var entries = feedRoot.feed.getEntries();
    
    var len = entries.length;
    
    var items = new Array();
    
 
    var seenTitles = new Array();
    
    for ( var i = 0; i < len; i++)
    {
        var entry = entries[i];
        var item = parseItem(entry);
        items[i] = item;
        
        var title = item.title;
        
        var key = item.oldtitle.replace(/\s{1,1}.*/, "");
        key = key.toLowerCase();
        
        if (seenTitles[key] == null)
        {
            
            seenTitles[key] = true;
            
            var listing = item.dates + item.loc + item.comments;
            
      
       
            try
            {
                $('cmt' + key).innerHTML = listing;
            }
            catch (ignored)
            {
            }
            
        }
        
    }
    if (len == 0)
        listing = "<li><p>No events, please check for updates again later on.</p></li>";
    else
        ; // have events
        
    // alert(debug);
    
}

function parseQuery(url, maxResults)
{
    var query = new google.gdata.calendar.CalendarEventQuery(url);
    query.setOrderBy('starttime');
    query.setSortOrder('ascending');
    query.setFutureEvents(true);
    query.setSingleEvents(true);
    query.setMaxResults(maxResults);
    
    return query;
}

/** for committee page ** */
var getCmtFeed = function()
{
    setupMyService();
    
    var query = parseQuery(twoThreeFourUrl, maxEvents);
    
    myService.getEventsFeed(query, handleCmt, calErrorHandler);
    
}

/** for GM map page * */
var getIGMFeed = function()
{
    setupMyService();
    var maxResults = 20;
    var query = parseQuery(twoThreeFourUrl, maxResults);
    
    myService.getEventsFeed(query, handleIgm, calErrorHandler);
    
}

var getDistrictFeed = function()
{
    setupMyService();
    // var maxResults = 15;
    // var query = parseQuery(districtFeedUrl, maxResults);
    
    // myService.getEventsFeed(query, handleDistrict, calErrorHandler);
    
    maxResults = 15;
    query = parseQuery(districtFeedUrl, maxResults);
    
    myService.getEventsFeed(query, handleDistrictMeeting, calErrorHandler);
    
}

/** for GM map page * */
var handleIgm = function(feedRoot)
{
    var entries = feedRoot.feed.getEntries();
    
    var len = entries.length;
    
    var items = new Array();
    
    var listingsByTitleMap = new Array();
    var seenTitles = new Array();
    
    for ( var i = 0; i < len; i++)
    {
        var entry = entries[i];
        var item = parseItem(entry);
        items[i] = item;
        
        var title = item.title;
        
        if (seenTitles[title] == null)
        {
            
            seenTitles[title] = true;
            
            var listing = item.dates + "<br/>" + item.loc;
            
            var key = item.oldtitle.replace(/\s.*/, "");
            
            listingsByTitleMap[key] = listing;
            try
            {
                if (item.oldtitle == 'Monthly General Meeting of GTA Intergroup')
                {
                    $('igmeeting').innerHTML = listing;
                }
            }
            catch (ignored)
            {
            }
            
        }
        
    }
    
}

var handleDistrictMeeting = function(feedRoot)
{
    var entries = feedRoot.feed.getEntries();
    
    var len = entries.length;
    
    var items = new Array();
    
    var listingsByTitleMap = new Array();
    var seenTitles = new Array();
    
    for ( var i = 0; i < len; i++)
    {
        var entry = entries[i];
        var item = parseItem(entry);
        items[i] = item;
        
        var title = item.title;
        
        if (seenTitles[title] == null)
        {
            
            seenTitles[title] = true;
            
            var listing = "<b style='line-height: 2em;'>" + item.dates + "</b><br/>" + item.loc + "<br/>"
                    + item.comments;
            
            var key = item.oldtitle.replace(/\s.*/, "");
            
            listingsByTitleMap[key] = listing;
            try
            {
                if (item.oldtitle == 'District 22 Committee Meeting')
                {
                    $('D22Mtg').innerHTML = listing;
                }
                else if (item.oldtitle == 'District 4 Committee Meeting')
                {
                    $('D4Mtg').innerHTML = listing;
                }
                else if (item.oldtitle == 'District 10 Committee Meeting')
                {
                    $('D10Mtg').innerHTML = listing;
                }
                else if (item.oldtitle == 'District 12 Committee Meeting')
                {
                    $('D12Mtg').innerHTML = listing;
                }
                else if (item.oldtitle == 'District 2 Committee Meeting')
                {
                    $('D2Mtg').innerHTML = listing;
                }
                else if (item.oldtitle == 'District 14 Committee Meeting')
                {
                    $('D14Mtg').innerHTML = listing;
                }
                else if (item.oldtitle == 'District 6 Committee Meeting')
                {
                    $('D6Mtg').innerHTML = listing;
                }
                else if (item.oldtitle == 'District 18 Committee Meeting')
                {
                    $('D18Mtg').innerHTML = listing;
                }
                else if (item.oldtitle == 'Joint Intergroup and Districts Meeting')
                {
                    $('dmeeting').innerHTML = listing;
                }
                
            }
            catch (ignored)
            {
            }
            
        }
        
    }
    
}

/** for district page * */
var handleDistrict = function(feedRoot)
{
    var entries = feedRoot.feed.getEntries();
    
    var len = entries.length;
    
    var items = new Array();
    
    var listingsByTitleMap = new Array();
    var seenTitles = new Array();
    
    for ( var i = 0; i < len; i++)
    {
        var entry = entries[i];
        var item = parseItem(entry);
        items[i] = item;
        
        var title = item.title;
        
        if (seenTitles[title] == null)
        {
            
            seenTitles[title] = true;
            
            var listing = item.dates + "<br/>" + item.loc;
            
            var key = item.oldtitle.replace(/\s.*/, "");
            
            listingsByTitleMap[key] = listing;
            try
            {
                if (item.oldtitle == 'Joint Intergroup and Districts Meeting')
                {
                    $('dmeeting').innerHTML = listing;
                }
            }
            catch (ignored)
            {
            }
            
        }
        
    }
    
}



function makeStartDate(monthOffset)
{
    var d = new Date();
    
    d.setMonth(d.getMonth() + monthOffset + 1, 1);
    // alert(d.getFullYear() + "-" + (d.getMonth() + 1) +
    // "-01T00:00:00.000-04:00");
    // '2009-01-01T00:00:00.000-04:00'
    var m = d.getMonth();
   var m = new String(m);
   if (m.length == 1)
       m = "0" + m;
   var r = d.getFullYear() + "-" + m
   + "-01T00:00:00.000-08:00";
   
  // alert(r);
    return r;
}

var getMyFeed = function()
{
    setupMyService();
    
    for ( var i = 0; i < allFeeds.length; i++)
    {
        var maxResults = 30;
        var at234 = 1;
        var medal = 2;
        var districts = 3;
        
        if (i == at234)
        {
            maxResults = 15;
        }
        else if (i == districts)
        {
            maxResults = 12;
        }
        
        if (i == medal)
        {
            
            var query = new google.gdata.calendar.CalendarEventQuery(
                    medallionUrl);
            query.setOrderBy('starttime');
            query.setSortOrder('ascending');
            
            query.setSingleEvents(true);
            var startMin = google.gdata.DateTime.fromIso8601(makeStartDate(-1));
            var startMax = google.gdata.DateTime.fromIso8601(makeStartDate(6));
            query.setMinimumStartTime(startMin);
            query.setMaximumStartTime(startMax);
            query.setMaxResults(100);
            
            myService.getEventsFeed(query, handleMedallionForEventPage,
                    calErrorHandler);
        }
        else
        {
            var query = parseQuery(allFeeds[i], maxResults);
            myService.getEventsFeed(query, allHandles[i], calErrorHandler);
        }
        
    }
}

var calErrorHandler = function(e)
{
    // alert("Error loading Google calendar: " + e);
}

// parse a query string
function gup(name)
{
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return results[1];
}

/*
 * Retrieve events with full text query
 */

var eventSearch = function()
{
    setupMyService();
    
    // Full text calSearchQuery for this string
    var searchText = gup('q');
    
    for ( var i = 0; i < allFeeds.length; i++)
    {
        var maxResults = 30;
        
        var at234 = 1;
        var medal = 2;
        var districts = 3;
        
        var query = new google.gdata.calendar.CalendarEventQuery(allFeeds[i]);
        
        var startMin = google.gdata.DateTime.fromIso8601(makeStartDate(-1));
        var startMax = google.gdata.DateTime.fromIso8601(makeStartDate(5));
        
        query.setMinimumStartTime(startMin);
        query.setMaximumStartTime(startMax);
        query.setOrderBy('starttime');
        query.setSortOrder('ascending');
        query.setSingleEvents(true);
        
        if (i == at234)
        {
            maxResults = 15;
        }
        else if (i == districts)
        {
            maxResults = 5;
            
        }
        
        query.setMaxResults(maxResults);
        
        query.setFullTextQuery(searchText);
        
        myService.getEventsFeed(query, allHandles[i], calErrorHandler);
    }
    
}

var getListFeed = function()
{
    setupMyService();
    
    for ( var i = 0; i < allFeeds.length; i++)
    {
        var maxResults = 30;
        var at234 = 1;
        var medal = 2;
        var districts = 3;
        
        if (i == at234)
        {
            maxResults = 0;
        }
        else if (i == districts)
        {
            maxResults = 12;
        }
        
        if (i == medal)
        {
            
            var query = new google.gdata.calendar.CalendarEventQuery(
                    medallionUrl);
            query.setOrderBy('starttime');
            query.setSortOrder('ascending');
            
            query.setSingleEvents(true);
            var startMin = google.gdata.DateTime.fromIso8601(makeStartDate(-1));
            var startMax = google.gdata.DateTime.fromIso8601(makeStartDate(6));
            query.setMinimumStartTime(startMin);
            query.setMaximumStartTime(startMax);
            query.setMaxResults(100);
            
            myService.getEventsFeed(query, handleListEvents,
                    calErrorHandler);
        }
        else
        {
            var query = parseQuery(allFeeds[i], maxResults);
            myService.getEventsFeed(query, handleListEvents, calErrorHandler);
        }
        
    }
}
