:return: a dictionary of {calenderid, TrumbaCalendar}
             None if error, {} if not exists

def _load_calendar(campus, resp_fragment, calendar_dict, parent):
    """
    :return: a dictionary of {calenderid, TrumbaCalendar}
             None if error, {} if not exists
    """
    for record in resp_fragment:
        if re.match(r'Internal Event Actions', record['Name']) or\
                re.match(r'Migrated .*', record['Name']):
            continue
        trumba_cal = TrumbaCalendar()
        trumba_cal.calendarid = record['ID']
        trumba_cal.campus = campus
        if parent is None:
            trumba_cal.name = record['Name']
        else:
            trumba_cal.name = "%s >> %s" % (parent, record['Name'])

        if not _is_valid_calendarid(record['ID']):
            logger.warn(
                "InvalidCalendarId %s, entry skipped!" % trumba_cal)
            continue

        calendar_dict[trumba_cal.calendarid] = trumba_cal
        if record['ChildCalendars'] is not None and\
                len(record['ChildCalendars']) > 0:
            _load_calendar(campus,
                           record['ChildCalendars'],
                           calendar_dict,
                           trumba_cal.name)