2012-08-31  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalWeeklyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): the week counter must
	start at 0 when there's no day mask.

2012-08-22  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalWeeklyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): fixed validation of
	the interval when a day mask is used on multiple days.

2012-08-21  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalRepeatableEntityObject.m (-exceptionDatesWithTimeZone:): we
	now consider the timezone of the EXDATE, if defined.

2012-07-26  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTimeZonePeriod.m (-recurrenceRule): new accessor for the
	"rrule" element.
	(-startDate): made method public.
	(-compare:): new method that compare two periods based on their
	startDate, for timezone definitions which have a "standard" or
	"daylight" period for more that one year.

2012-05-30  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalRepeatableEntityObject.m (-exceptionDatesWithTimeZone:)
	(-rules:withTimeZone:): exception dates and exception rules must
	also be adjusted for floating all-day repeating events.

2012-05-29  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalRecurrenceCalculator.m
	(_removeExceptionDatesFromRanges:withDates:withinRange:startingWithDate:):
	when removing exception dates, avoid removing dates matching the
	end date of the occurrence. This fixes an issue with all-day
	daily events.

2012-04-23  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalMonthlyRecurrenceCalculator.m (NGMonthDaySet_clear): make
	use of memset, which is expected to be faster.
	(-recurrenceRangesWithinCalendarDateRange:): added handling of
	"BYSETPOS" for "BYDAY" sets.

2012-04-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTrigger.m (-nextAlarmDate): new method including most of
	the old code from -[iCalAlarm nextAlarmDate]. Added support for
	DATE-TIME values.

	* iCalAlarm.m (-nextAlarmDate): now a proxy method for
	-[iCalTrigger nextAlarmDate].

2012-04-18  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceRule.m (-orderOfValueKeys): overrriden method.

	* NSDictionary+NGCards.m
	(-versitRenderInString:withKeyOrdering:asAttributes:): now takes
	an "ordering" parameter resulting from the methods below and
	reorder the dictionary keys as specified.

	* CardElement.m (-orderOfAttributeKeys, -orderOfValueKeys): new
	methods that return an ordered array of value keys, used for
	rendering data in a way that is acceptable to certain picky
	clients.

2012-04-11  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalWeeklyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange): we now return
	occurrences that intersects with the period (not only occurrences
	within the period). We no longer rely on NSCalendarDate to compute
	the number of days since the master event start date (it is bugged).

2012-03-26  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalDateTime.m (_setDateTime:forAllDayEntity:): set or unset the
	"VALUE" parameter to the date instance, depending on its the
	all-dayness.

2012-03-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEvent.m (-hasDuration): returns NO when the value is present
	but empty.

2012-02-03  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalDailyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange): handle the case
	where the occurrence start date doesn't cover the reference period
	but the end date does.

2012-01-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NSString+NGCards.m (-asCardAttributeValues): fixed a leak by
	freeing "characters" at the end of the method.

2012-01-09  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NSString+NGCards.m (-vCardSubvalues): fixed allocation of
	parsing buffer to avoid a buffer overflow.

2011-12-30  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCard.m (-initWithUid:): initialize "CLASS" and "PROFILE".

	* CardGroup.m (-isVoid): overriden method.
	(-cleanupEmptyChildren): make use of "isVoid" to detect and remove
	empty children.

2011-11-21  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalTimeZone.m (+knownTimeZoneNames): ignore files that don't
	have a .ics extension.

2011-11-13  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTrigger.m (-setValue:, value): removed useless accessors.

	* iCalAttachment.m (-setValue:, value): removed useless accessors.

	* iCalRecurrenceRule.m (-setRrule): now makes use of the existing
	parsing algorithm and get the values from the parsed element.

	* iCalEntityObject.m (-setCategories:): now take an array as
	parameter.

	* NSString+NGCards.m (-vCardSubvalues): new method adapted to the
	new CardElement data structure, replaces
	"vCardSubvaluesWithSeparator:", since we now know how to properly
	separate or escape elements.

	* CardElement.m (-init): "values" in now an NSMutableDictionary.
	(-setValues:, -values): new primitive accessors;
	(-setValues:atIndex:forKey:, -setSingleValue:atIndex:forKey:)
	(setSingleValue:forKey:): new helper setters.
	(-flattenedValueAtIndex:forKey:, -flattenedValues:forKey:): new
	"flattened" helper getters. "Flattening" meaning here that the
	first and/or second level array are merged with "," and ";", to
	support clients that badly escape(d) their output for fields
	taking only one value or a specific set of values.
	(-valuesForKey:,-valuesAtIndex:forKey:): new helper getters

2011-11-09  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NSString+NGCards.m (-escapedForCards): restored the escaping of
	commas, since they might be used in fields such as
	COMMENT/DESCRIPTION (iCalendar) or NOTE (vCards)

2011-09-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalToDo.m (-setCompleted:):  (hack) when invoked with a nil
	argument, we set the status "back" to "IN-PROCESS" as we otherwise
	may end up with a "COMPLETED" task without a completion date.

2011-07-12  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalCalendar.m (-addTimeZone:): now returns true if the timezone
	was already defined in the calendar.

2011-07-11  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalDailyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): we must return all
	ranges that intersect with the lookup period.

	* iCalRepeatableEntityObject.m (-addToExceptionDates:): drop the
	time part when dealing with an all-day event.

2011-03-29  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalRepeatableEntityObject.m (-rules:withEventTimeZone:): new
	method that returns a new set of rules with their "untill dates"
	adjusted to the specified timezone.
	(-recurrenceRulesWithTimeZone:): new method that returns the
	recurrence rules adjusted to the specified timezone.
	(-exceptionRulesWithTimeZone:): new method that returns the
	exception rules adjusted to the specified timezone.

2011-03-23  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalRepeatableEntityObject.m (-removeAllExceptionDates): don't
	use the method "exceptionDates" since it returns an array of
	strings and not CardElement instances.

	* iCalTimeZone.m (+knownTimeZoneNames): new class method to
	retrieve the timezone names. Used in replacement of the same
	method in NSTimeZone.

2011-03-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEvent.m (-firstRecurrenceStartDate): new method that makes
	use of the new one below.

	* iCalRepeatableEntityObject.m
	(-firstRecurrenceStartDateWithEndDate:): new method that returns
	the first occurrence of a recurring entity.

	* iCalByDayMask.m (-occursOnDay:withWeekOccurrence:): fixed method
	to return true only when it is valid to do so...
	(-weekDayOccurrences): new method that returns a reference to the
	days ivar.

2011-03-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardGroup.m (-removeChild:, -removeChildren:): new
	self-explanatory methods.

2011-03-15  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NSString+NGCards.m (-asCardAttributeValues): rewritten method
	properly in order to parse the values string by properly taking
	quoted, escaping and special characters into account.

2011-01-14  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalTimeZone.m (-computedDateForString:): new method that
	returns a date adjusted with respect to this vTimeZone.
	(-computedDatesForStrings:): idem but for multiple dates.

	* iCalRepeatableEntityObject.m
	(-exceptionDatesWithEventTimeZone:): new method that returns the
	exception dates for the event, but adjusted to the event's timezone.

2011-01-13  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalTimeZone.m (-computedDateForDate:): Was
	_computedDateTimeForDate. Adjusts a date with respect to this
	vTimeZone.

	* iCalDateTime.m (-dateTimes): when there's no timezone defined
	(which is the case when parsing a vTimeZone!), don't fallback to
	the system timezone.

2010-11-18  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCard.m (-setVName, vName): removed useless and non-standard
	methods.

2010-11-08  Francis Lachapelle  <flachapelle@inverse.ca>

	* NSString+NGCards.m (-vCardSubvaluesWithSeparator:): now returns
	an empty array when the string is empty, instead of an array with
	an empty string.

2010-10-28  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalRecurrenceRule.m (-isInfinite): a repeat count set to 0 is
	no longer consider a limit (ie, isInfinite will be true).

2010-10-27  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCard.m (-setCategories): make use of the new method below.
	(-categories): make use of value 0 and of the
	vCardSubvaluesWithSeparator: category method.

	* CardElement.m (-setCommaSeparatedValues): temporary helper for
	versit fields that are using the comma as value separator.

2010-10-26  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCard.m (-setCategories, -categories): new accessors for the
	"CATEGORIES" vcard property.

	* NGVCardPhoto.m (-type): fixed the returning of the default type.

	* CardElement.m (-setValues:): new method. Actual renamed version
	of prior setValuesAsCopy:.

2010-10-18  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTimeZone.m (-dateForDateTimeString:): adjust dates since
	they are passed as UTC and may not match the timezone's DST
	switches. A bit dirty but good for now...

	* iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): we don't need
	to deduct the offset from UTC from the resulting date since
	"tzStart" is already relative to UTC.

2010-10-13  Francis Lachapelle  <flachapelle@inverse.ca>

	* NSString+NGCards.m (-vCardSubvaluesWithSeparator): properly
	initialized the "escaped" bool.

2010-10-08  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEvent.m (-setAllDayWithStartDate:duration:): added a
	work-around for bug 866, by adding one hour in addition to the
	offset in days from the start date.

	* NSString+NGCards.m (-unescapedFromCard): removed obsolete
	method.
	(-componentsWithSafeSeparator:): renamed to
	"vCardSubvaluesWithSeparator:" with proper unescaping of versit
	values by scanning each character one after another.

2010-09-28  Francis Lachapelle  <flachapelle@inverse.ca>

	* NSString+NGCards.m (-asCalendarDate): added handling of date that
	includes dashes (YYYY-MM-DD).

	* iCalDateTime.m (-dateTimes): new method that handles EXDATE with
	multiple values.

	* iCalRepeatableEntityObject.m (-exceptionDates): add all values
	from each EXDATE attribute.

	* iCalRepeatableEntityObject.m (-exceptionDates): idem.

2010-08-30  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalPerson.m, iCalWeeklyRecurrenceCalculator.m: adapted classes
	to use "NSInteger" and "NSUInteger" instead of "int" and "unsigned
	int" for compatibility with versions of GNUstep base >= 1.20.

2010-08-24  Francis Lachapelle  <flachapelle@inverse.ca>

	* CardElement.m (-setNamedValue:to:): don't add the value if nil
	and not already defined.

2010-08-19  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalAlarm.m (-setComment, -setSummary, -setAction)
	(-setAttendees): new accessors.

2010-08-13  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalAlarm.m (-nextAlarmDate): new utility method split from the
	SOGo quick table extractor for events.

2010-08-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCardPhoto.m (-type): returns @"JPEG" if the type is
	unspecified.

2010-07-21  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalXMLRenderer.m (_appendPaddingValues:withTag:intoString:):
	fixed a typo causing a crash.

2010-07-16  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCardPhoto.[hm]: new class module that implement facilities
	for handling "PHOTO" tags in vcards.

2010-06-08  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalXMLRenderer.m (-[CardGroup xmlRender]): don't append empty
	rendering from child elements to avoid an exception.

2010-06-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalXMLRenderer.m: new class module for exporting iCalCalendar
	objects as XML files.

	* iCalUTCOffset.m: new class module for handling of the
	"tzoffsetfrom" and "tzoffsetto" elements.

2010-05-05  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalPerson.m (-setParticipationStatus:, -participationStatus):
	added handling of the new partstat value
	"iCalPersonPartStatUndefined".

	* iCalEntityObject.m (-resources): removed useless method.
	(-nonParticipants): new method returning ATTENDEE objects having
	their ROLE attribute set to "NON-PARTICIPANT".
	(-isAttendee:): new method.
	(-findAttendeeWithEmail): new method replacing
	"findParticipantWithEmail:".

2010-04-28  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceRule.m (-iCalRepresentationForWeekDay:): made
	method "public" in the header file.

2010-04-22  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalYearlyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): the rule interval
	must be reset to 1 when using the monthly calculator since the
	interval is related to the yearly frequency. Also fixed the month
	counter with respect to the recurrence interval.

	* iCalWeeklyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): fixed the computation
	of the week number which results in a bad verification of the interval.

2010-04-19  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalByDayMask.[h|m]: new class that computes complex BYDAY constraints.

	* iCalRecurrenceRule.m (-byDayMask): new method that returns an
	instance of iCalByDayMask.
	(-byMonth): new method that returns an array with the values of
	the BYMONTH constraint.
	(-hasByMask): new method that returns true if the rule has at
	least one BYxxx mask defined.

	* iCalDailyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): make use of the new
	iCalByDayMask class.
	(-lastInstanceStartDate): make use of the previous method when a
	BYxxx mask is defined in the rule.

	* iCalWeeklyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): make use of the new
	iCalByDayMask class.
	(-lastInstanceStartDate): make use of the previous method when a
	BYxxx mask is defined in the rule.

	* iCalMonthlyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): added support for
	BYMONTH, negative BYMONTHDAY, and BYDAY.
	(-lastInstanceStartDate): make use of the previous method when a
	BYxxx mask is defined in the rule.

	* iCalYearlyRecurrenceCalculator.m
	(-recurrenceRangesWithinCalendarDateRange:): added support for
	BYxxx constraints using the iCalMonthlyRecurrenceCalculator class.
	(-lastInstanceStartDate): make use of the previous method when a
	BYxxx mask is defined in the rule.

	* iCalTimeZonePeriod.m (-_occurenceForDate:byRRule:): make use of
	the new iCalByDayMask class.

2010-04-09  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEvent.m (-propertyValue:): new method that accept a
	key-based method invocation.

2010-03-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): fixed
	computing of timezone switch dates for periods starting at a
	"negative" day of the month.

2010-03-09  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTimeZone.m (-periodForDate:): the order in which daylight
	and standard occur is not the same in the northern and southern
	hemisphere. We were thus choosing the wrong period for southern
	areas.

	* iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): fixed
	computing of timezone switch dates, which were offset by one week
	too early.

2010-01-06  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalDateTime.m (-setTimeZone:): don't modify the date in case of
	an all-day value, otherwise the resulting date will be recomputed.

2009-10-19  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalDateTime.m (-setTimeZone:): don't add the time in case of an
	all-day component.

2009-10-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardElement.m (-copyWithZone:): we release the "tag" and the
	"group" copy to avoid a leak.
	(-mutableCopyWithZone): same as above.

2009-09-24  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NSArray+NGCards.m (-renderedForCards): insert the non-blank
	values at their correct positions by inserting empty strings.

2009-09-10  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalPerson.m ([iCalPerson -_valueOfMailtoAttribute:]): fixed the
	string range that was removing valid characters from a quoted string.

	* NSString+NGCards.m ([NSString -rfc822Email]): new method that
	returns the string without the "mailto:" prefix.

2009-09-09  Cyril Robert <crobert@inverse.ca>

	* NGVCard.m: Made use of NSDictionary+Utilities' userRecordAsLDIFEntry.
	* NGVList.m: Made use of NSDictionary+Utilities' userRecordAsLDIFEntry.
	* NGVCard.m (ldifString): Moved to a category in SOGo
	* NGVList.m (ldifString): Moved to a category in SOGo

2009-09-02  Cyril Robert <crobert@inverse.ca>

	* NGVCard.m (ldifString): Added, to support exporting
	* NGVList.m (ldifString): Added, to support exporting

2009-08-27  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalPerson.m (-setDelegatedTo:, -setDelegatedFrom:)
	(-setSentBy:): new helper methods to set the corresponding
	attributes, properly formatted. The getters were added too.

	* iCalEntityObject.m (-removeFromAttendees:): new helper method to
	remove a specific attendee from the list.

	* NSArray+NGCards.m (-renderedForCards): empty values are not
	returned, so as to avoid rendering attributes that do not have a
	value.

	* CardVersitRenderer.m (-renderElement:): we avoid outputting
	attribute keys if no non-empty value has been returned.

2009-07-17  Cyril Robert <crobert@inverse.ca>

	* iCalPerson.m: Lowercased MAILTO to make it work with iCal.

2009-04-21  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalTrigger.m ([iCalTrigger -setRelationType:]): new method to
	set the "related" attribute of an alarm trigger.

	* NSString+NGCards.m ([NSString -durationAsTimeInterval]): added
	support of negative durations.

2009-03-24  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalWeeklyRecurrenceCalculator.m
	([iCalWeeklyRecurrenceCalculator
	-recurrenceRangesWithinCalendarDateRange:_r]): same as below.

	* iCalDailyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator
	-recurrenceRangesWithinCalendarDateRange:_r]): autorelease
	currentStartDate when instantiated from a copy of firDate, to
	avoid a leak.

2009-03-18  Francis Lachapelle  <flachapelle@inverse.ca>

	* iCalDateTime.m ([iCalDateTime -dateTime]): when not defined, the
	timezone is now guessed from the date of the current object.

2009-02-06  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardElement.m ([CardElement -setParent:aParent]): no longer
	retain the parent passed as parameter.

2008-12-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalYearlyRecurrenceCalculator.m
	([iCalYearlyRecurrenceCalculator -lastInstanceStartDate]): same as
	below.

	* iCalMonthlyRecurrenceCalculator.m
	([iCalMonthlyRecurrenceCalculator -lastInstanceStartDate]): same
	as below.

	* iCalWeeklyRecurrenceCalculator.m
	([iCalWeeklyRecurrenceCalculator -lastInstanceStartDate]): same as
	below.

	* iCalDailyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator
	-lastInstanceStartDate]): return a date based on the start date,
	instead of julian calculations, to avoid losing the original date
	timezone.

2008-08-18  Ludovic Marcotte  <lmarcotte@inverse.ca>

	* NSString+NGCards.m ([NSString -unescapedFromCard]): added code
	to correctly escape carriage returns from Outlook clients.

2008-08-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardGroup.m ([CardGroup -elementWithClass:groupClass]): replaces
	"groupWithClass:".

	* CardElement.m ([CardElement
	-deepCopyOfArray:oldArraywithZone:aZone]): new self-explaining
	method.
	([CardElement -deepCopyOfDictionary:oldDictionarywithZone:aZone]):
	new self-explaining method.
	([CardElement -copyWithZone:aZone])
	([CardElement -mutableCopyWithZone:aZone]): make a deep copy of
	the children elements.

2008-07-17  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRepeatableEntityObject.m ([iCalRepeatableEntityObject
	-addToExceptionDates:_rdate]): the iCalDateTime argument was
	replaced with NSCalendarDate.

	* iCalEntityObject.m ([iCalEntityObject
	-setOrganizer:_organizer]): now accepts a nil argument.

	* CardGroup.m ([CardGroup -children]): now returns an NSMutableArray.
	([CardGroup -copyWithZone:aZone])
	([CardGroup -mutableCopyWithZone:aZone]): the children were not
	properlty cloned, we thus clone them explicitly.

2008-07-16  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalDateTime.m ([iCalDateTime -setDate:dateTime]): don't set
	date in utc.

2008-07-14  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* ICalDateHolder.m: removed class module.

	* NSCalendarDate+ICal.m ([NSCalendarDate
	+calendarDateWithICalRepresentation:]): removed method.

	* iCalRecurrenceCalculator.m: no longer use the
	calendarDateWithICalRepresentation: category method (removed), use
	NSString's asCalendarDate category method instead.

	* iCalRepeatableEntityObject.m ([iCalRepeatableEntityObject
	-classForTag:classTag]): instances of EXDATE are of iCalDateTime
	class.
	([iCalRepeatableEntityObject -exceptionDates]): return the dates
	as utc-based date strings.

2008-07-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEntityObject.m ([iCalEntityObject -setRecurrenceId:newRecId])
	([iCalEntityObject -recurrenceId]): new accessors to handle the
	"RECURRENCE-ID" fields in recurrence exceptions.

2008-07-07  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardElement.m ([CardElement -addValue:aValue])
	([CardElement -addAttribute:anAttributevalue:aValue])
	([CardElement -removeValue:aValuefromAttribute:anAttribute])
	([CardElement -setValue:anIntto:aValue])
	([CardElement -setNamedValue:aValueNameto:aValue])
	([CardElement -setValue:anIntofAttribute:anAttributeto:aValue]):
	if aValue is nil, set it to an empty string.

2008-07-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardGroup.m ([CardGroup +parseFromSource:source]): directly
	return the result from [sax cards] instead of creating a new array.

2008-07-03  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEvent.m ([iCalEvent -endDate]): if no DTEND is specified,
	returns the end date based on the start date and take the duration
	into account if it is specified.

2008-06-30  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalFreeBusy.m ([iCalFreeBusy
	-fillStartDate:startDateandEndDate:endDate]): new method created
	to avoid enlarging the code.

2008-04-02  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceCalculator.m ([iCalRecurrenceCalculator
	+recurrenceRangesWithinCalendarDateRange:_rfirstInstanceCalendarDateRange:_firrecurrenceRules:_rRulesexceptionRules:_exRulesexceptionDates:_exDates]):
	when removing dates, the decremental count of dates to remove was
	actually incremental, which caused an out of bound reference
	exception.

2008-03-26  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceRule.m ([iCalRecurrenceRule -byMonthDay]): check
	whether the "bymonthday" value is empty and returns an array only if
	not, otherwise returns nil.

	* iCalRecurrenceCalculator.m ([iCalRecurrenceCalculator
	+recurrenceRangesWithinCalendarDateRange:_rfirstInstanceCalendarDateRange:_firrecurrenceRules:_rRulesexceptionRules:_exRulesexceptionDates:_exDates]):
	split method in many submethods for clarity.

2008-03-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTimeZonePeriod.m ([iCalTimeZonePeriod
	-dayOfWeekFromRruleDay:day]): the algorithm would never work if
	the day was monday. After it was changed for sunday (see below),
	it would return 1 instead of 0.

	* iCalRecurrenceRule.m ([iCalRecurrenceRule -setByDayMask:_mask]):
	the first day of the week is always sunday, following Apple's
	documentation.

2008-03-03  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCardReference.[hm]: new class module that implements the base
	data type contained in a VLIST element.

	* NGVList.[hm]: new class module that implements Thunderbird-style
	personal mailing lists. Base mime-type is "text/x-vlist".

2008-02-08  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceRule.m ([iCalRecurrenceRule -wkst]): if no wkst
	parameter is specified, we supply "MO" as default value.
	([iCalRecurrenceRule -weekDayFromICalRepresentation:_day]): the
	second letter of sunday if "u", fixed typo.

	* CardElement.m ([CardElement
	-setNamedValue:aValueNameto:aValue]): if the value is empty, we
	removed the named value.

2008-01-28  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceRule.m ([iCalRecurrenceRule
	-weekDayFromICalRepresentation:_day]): issue an error whenever the
	day cannot be deduced. Accept days notated with a prefix.
	([iCalRecurrenceRule -byDayMask]): don't strip the represented
	day, feed it directly to weekDayFromICalRepresentation: since it
	will do the correct syntax validation.

	* iCalDailyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator
	-recurrenceRangesWithinCalendarDateRange:]): make use of <<
	instead of exp2 to compute the mask.

2008-01-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceRule.m ([iCalRecurrenceRule -repeatInterval]):
	return 1 if the parsed value is < 1.

2007-12-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NSString+NGCards.m ([NSString
	-componentsWithSafeSeparator:separator]): new method that
	separated the elements of a string into an array while avoiding
	escaped instances of the separator passed as parameter.

2007-12-12  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTimeZone.m ([iCalTimeZone -periodForDate:date]): at least
	one timezone period is needed so we might need to fallback on the
	only one present if the other does not exist.

2007-11-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalDateTime.m ([iCalDateTime -timeZone]): log a message if the
	corresponding timezone isn't found.

2007-11-26  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalCalendar.m ([iCalCalendar -versitString]): same as below,
	with "2.0" as value.

	* NGVCard.m ([NGVCard -versitString]): overriden method by forcing
	version to "3.0" since it's the format we comply with.
	

2007-11-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEntityObject.m ([iCalEntityObject -compare:otherObject]):
	safely compare between objects which may be nil.

2007-11-18  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalPerson.m ([-rsvp]): return lowercase string.

	* iCalCalendar.m ([iCalCalendar -setMethod:_value]): convert
	method to uppercase before setting value.

	* CardGroup.m ([CardGroup -addChild:aChild]): don't process nil
	values for aChild.
	([CardGroup -setUniqueChild:aChild]): same as above.
	([CardGroup -setChildrenAsCopy:someChildren]): reparent the copied
	children.
	([CardGroup -mutableCopyWithZone:aZone]): implemented
	NSMutableCopying protocol.

	* CardElement.m ([CardElement -mutableCopyWithZone:aZone]):
	implemented NSMutableCopying protocol.

2007-11-12  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalTimeZonePeriod.m ([iCalTimeZonePeriod
	-occurenceForDate:refDate]): added support for timezone periods
	which do not contain a recurrence rule, such as the one provided
	by iCal.

2007-11-02  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalDateHolder.m ([iCalDateHolder -awakeAfterUsingSaxDecoder:]):
	make use of cStringUsingEncoding: instead of getString:length: to
	retrieve the buffer content to work-around a bug in gnustep-base.

2007-11-01  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardGroup.m ([CardGroup +parseFromSource:source]): make sure the
	given source is not nil, otherwise the parser will raise an
	exception, which we don't want.

2007-10-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardElement.m ([CardElement -value:anInt]): added handling for
	quoted-printable, base64 and 8bit encoding attributes.

2007-08-07  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceRule.m ([iCalRecurrenceRule
	-valueForFrequency:value]): returns NSNotFound whenever the
	frequency text has a length of 0.
	([iCalRecurrenceRule -byDayMask]): return an empty mask whenever
	the "byday" value has a length of 0.

2007-02-12  Helge Hess  <helge.hess@opengroupware.org>
 
	* iCalMonthlyRecurrenceCalculator.m: fixed byday calculation for days
	which overflow the number of days in a month. Should fix OGo bug
	#1829. (v4.7.79)
	
2007-07-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalToDo.m ([iCalToDo -setDue:newDueDate]): use setDateTime:
	instead of setDate: because the latter sets an "all day"
	timestamp.

2007-07-03  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalRecurrenceRule.m ([iCalRecurrenceRule
	+recurrenceRuleWithICalRepresentation:_iCalRep]): the
	representation is generally a series of values separated by a ";".
	Therefore we need to split those values and feed them one by one.
	([iCalRecurrenceRule -weekDayFromICalRepresentation:_day]): return
	-1 instead of raising an exception if the week day could not be
	recognized.

	* CardElement.m ([CardElement -versitString]): remove the ending
	"\r\n".

2007-06-12  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalDateTime.m ([iCalDateTime
	-_setDateTime:dateTimeforAllDayEntity:forAllDayEntity]): take the
	forAllDayEntity parameter into account when the date entity has a
	timezone.

	* iCalTimeZone.m ([iCalTimeZone -dateStringForDate:date]): new
	method that returns dates formatted for all day events.

2007-06-07  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalDateTime.m ([iCalDateTime
	-_setDateTime:dateTimeforAllDayEntity:forAllDayEntity]):
	inverted the all day logic because all day dates where generated
	for regular dates and the other way around...

	* iCalEvent.m ([iCalEvent
	-setAllDayWithStartDate:newStartDateduration:days]): new method
	that sets the start and end dates in an all day fashion.
	([iCalEvent -setEndDate:newEndDate]): no longer use the methods
	provided by the removed module CardGroup+iCal.
	([-isAllDay]): reimplemented method by testing if the start day
	component is an all day date.

	* iCalEntityObject.m ([iCalEntityObject -setCreated:newCreated]) 
	([iCalEntityObject -created], [-setLastModified:_value]) 
	([iCalEntityObject -lastModified]) 
	([iCalEntityObject -setTimeStampAsDate:newTimeStamp]) 
	([iCalEntityObject -timeStampAsDate], [-setStartDate:_value]) 
	([iCalEntityObject -startDate]): no longer use the methods
	provided by the removed module CardGroup+iCal.

	* iCalDateTime.m ([iCalDateTime -setDate:dateTime]): take the date
	passed as parameter as an all day date.
	([iCalDateTime -isAllDay]): new method determining whether the
	current value is an all day value.

	* NSString+NGCards.m ([NSString -isAllDayDate]): new method that
	determines whether the date represented in "self" is an all day
	date (date only) or not (date + time).

	* CardElement.h: moved IS_EQUAL macro from removed module
	"common.h".

	* CardGroup+iCal.[hm]: removed category module.

2007-04-27  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCard.m ([NGVCard -n]): simplified method by returning the
	values of the element returned by uniqueChildWithTag:.

2007-03-07  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEntityObject.m ([iCalEntityObject -symbolicAccessClass]):
	new method that parses the "CLASS" element of the card and returns
	an enum value.

	* NSString+NGCards.m ([NSString -foldedForVersitCards]):
	simplified method by initializing and returning folderString
	unconditionnally. If length < 76, the original string is appended
	to it.

	* CardGroup.m ([CardGroup +groupWithTag:aTag]): simply invoke
	[self elementWithTag:].
	([CardGroup +groupWithTag:aTagchildren:someChildren]): same as
	above.

2007-03-05  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* iCalEntityObject.h (enum): added an enum with iCalAccessPublic,
	iCalAccessPrivate and iCalAccessConfidential values.

2007-02-15  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardGroup.m ([CardGroup -firstChildWithTag:aTag]): new method.

2007-02-09  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardGroup.m ([CardGroup +cardParser]): find the correct parser
	by requesting a parser by name instead of by mime-type. This way,
	any parser which would declare the same types would not
	enter in conflict.

2007-02-08  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* CardElement.m ([CardElement -namedValue:aValueName]): use
	NSString's rangeOfString instead of indexOfString for
	compatibility with GNUstep.

2007-02-02  Wolfgang Sourdeau  <wsourdeau@inverse.ca>

	* NGVCard.m ([NGVCard -classForTag:classTag]): declare an entry
	for "FBURL".

2006-08-03  Helge Hess  <helge.hess@opengroupware.org>

	* NGVCardSaxHandler.m: fixed a bug with returning parsing results.
	  Properly make a copy of the vCard array so that -clear doesn't
	  destroy references. Thanks go to Wolfgang Sourdeau for documenting
	  the issue! (v4.5.76)

2006-07-04  Helge Hess  <helge.hess@opengroupware.org>

	* use %p for pointer formats, fixed gcc 4.1 warnings (v4.5.75)

2006-05-16  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalDataSource.h, common.h: changed EOControl related includes into
	  imports to enable compilation against MulleEOF (v4.5.74)

2006-04-07  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalEntityObject.h: added missing forward declaration for
	  gstep-base compile (v4.5.73)

2006-04-06  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.72

	* iCalEntityObject.[hm]: added "url" property - unfortunately
	  this was missing before. Increased class version to "1".

	* iCalRepeatableEntityObject.m, iCalEvent.m, iCalToDo.m: adjusted
	  super class version check.

2006-01-16  Helge Hess  <helge.hess@opengroupware.org>

	* iCalRecurrenceRule.m: properly include NSString+Ext.h to avoid a
	  warning during Cocoa compilation (v4.5.71)

2005-11-17  Helge Hess  <helge.hess@opengroupware.org>

	* include string.h where required (v4.5.70)

2005-10-05  Helge Hess  <helge.hess@opengroupware.org>

	* iCalMonthlyRecurrenceCalculator.m: implemented calculation of
	  negative byday occurrences (eg -1TH) (v4.5.69)

2005-09-22  Helge Hess  <helge.hess@skyrix.com>

	* iCalRecurrenceRule.m: added direct parser support for 'interval',
	  allow 'until' values w/o Z marker for date-only values (v4.5.68)

2005-09-22  Helge Hess  <helge.hess@opengroupware.org>

	* v4.5.67

	* iCalMonthlyRecurrenceCalculator.m: finished 'byday' calculation

	* iCalRecurrenceRule.m: added support for 'bymonthday', fixed handling
	  of occurrence1

2005-09-21  Helge Hess  <helge.hess@skyrix.com>

	* v4.5.66

	* iCalRecurrenceRule.m: temporarily expose byDayOccurence1 until the
	  API is fixed

	* iCalMonthlyRecurrenceCalculator.m: prepared for byday/bymonthday
	  rule specs

	* v4.5.65

	* iCalMonthlyRecurrenceCalculator.m: fixed calculation of 'count' field

	* iCalRecurrenceCalculator.m: minor code cleanups

	* iCalRecurrenceRule.m: improved rrule parser

2005-09-20  Helge Hess  <helge.hess@opengroupware.org>

	* iCalMonthlyRecurrenceCalculator.m: stop calculation if a byday part
	  was detected in the rule (v4.5.64)

	* iCalRecurrenceCalculator.m: moved cluster subclasses to own source
	  files (v4.5.63)

	* iCalRecurrenceRule.m: added some parsing/gen support for BYDAY
	  (v4.5.62)

2005-09-19  Helge Hess  <helge.hess@opengroupware.org>

	* iCalRecurrenceRule.m: minor code improvements, more tolerant on
	  invalid iCal rrule input (v4.5.61)

2005-08-16  Helge Hess  <helge.hess@opengroupware.org>

	* GNUmakefile, GNUmakefile.preamble: added OSX framework compilation
	  (v4.5.60)

2005-08-06  Helge Hess  <helge.hess@opengroupware.org>

	* iCalCalendar.m, NGVCardName.m: fixed gcc 4.0 warnings (v4.5.59)

2005-08-05  Helge Hess  <helge.hess@opengroupware.org>

	* NGVCardSaxHandler.h: fixed a gcc 4.0 warning (v4.5.58)

2005-07-18  Helge Hess  <helge.hess@opengroupware.org>

	* iCalPerson.m: added -partStatWithDefault method to retrieve the
	  partstat and return NEEDS-ACTION in case none is set (v4.5.57)

2005-07-15  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalObject.[hm], iCalEntityObject.m, iCalToDo.m, iCalAlarm.m,
	  iCalPerson.m, iCalCalendar.m, iCalEvent.m, iCalTrigger.m,
	  iCalObject.m, iCalFreeBusy.m, iCalRepeatableEntityObject.m:
	  fixed NSCopying (v4.5.56)

2005-07-15  Helge Hess  <helge.hess@opengroupware.org>

	* added fragile base class version checks (v4.5.55)

2005-07-15  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalObject.[hm], iCalEntityObject.m, iCalToDo.m, iCalAlarm.m,
	  iCalPerson.m, iCalCalendar.m, iCalEvent.m, iCalTrigger.m,
	  iCalObject.m, iCalFreeBusy.m, iCalRepeatableEntityObject.m:
	  added NSCopying (v4.5.54)

2005-07-15  Helge Hess  <helge.hess@opengroupware.org>

	* v4.5.53

	* iCalCalendar.m: added +parseCalendarFromSource: convenience method

	* NGVCard.m: properly reset sax driver after parsing

2005-07-15  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalEntityObject.[hm]: added -increaseSequence (v4.5.52)

	* iCalPerson.m: fixed -hasSameEmailAddress: to lowercase email
	  addresses before attempting comparison (v4.5.51)

2005-07-15  Helge Hess  <helge.hess@opengroupware.org>

	* v4.5.50
	
	* NGiCal.xmap: fixed mapping of 'method' property (is an attribute of
	  the calendar)
	  
	* iCalCalendar.m: use ASSIGNCOPY in accessors, added 'method' to
	  -description
	  
2005-07-14  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.49

	* iCalCalendar.[hm]: added 'method'

	* iCalEntityObject.[hm]: added 'userComment', changed all email
	  related comparisons to lowercase all strings before comparison

	* iCalEvent.h: pretty printed iVars

	* NGiCal.xmap: added mapping for 'comment' -> 'userComment' and
	  'method' -> 'method'

2005-07-13  Helge Hess  <helge.hess@opengroupware.org>

	* v4.5.48

	* NGVCard.m: added some convenience methods to access the preferred
	  email, tel and adr

	* NGVCardOrg.m: added a convenience method to access the first orgunit

2005-07-05  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NSCalendarDate+ICal.m: fixed 'gmtcalfmt' which removed seconds from
	  format for no obvious reason (v4.5.47)

2005-05-31  Helge Hess  <helge.hess@skyrix.com>

	* NGVCardSaxHandler.m: ensure that types are always uppercase, improved
	  check for DUPs (v4.5.46)

2005-05-16  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NGiCal.xcode: reorganized ordering of headers/classes

2005-05-15  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NGiCal.xcode: added vCard related stuff

2005-05-10  Helge Hess  <helge.hess@opengroupware.org>

	* NGVCard.m: added support for profile, source, name (v4.5.45)

2005-05-09  Helge Hess  <helge.hess@opengroupware.org>

	* first version of working vCard SAX handler (v4.5.54)

2005-05-08  Helge Hess  <helge.hess@opengroupware.org>

	* more work on vCard parsing (v4.5.53)

	* work on vCard objects (incomplete) (v4.5.52)

2005-04-25  Helge Hess  <helge.hess@opengroupware.org>

	* iCalDateHolder.m, iCalDataSource.m: fixed gcc 4.0 warnings (v4.5.51)

2005-03-23  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.50

	* iCalRenderer.h: added missing paranthesis for iVar declarations

	* iCalTrigger.m, iCalEntityObject.m, iCalToDo.m,
	  iCalRecurrenceCalculator.m, iCalDateHolder.m, iCalDataSource.m,
	  iCalPerson.m, iCalCalendar.m: numerous dealloc bugs/leaks fixed

2005-03-02  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalRecurrenceCalculator.m: bugfix for monthly and yearly recurrences
	  (v4.5.49)

	* iCalRecurrenceCalculator.m: optimized exception date handling in
	  complex calculation method quite a bit. Fixed bugs in all calculation
	  methods by introducing checks on the desired range. (v4.5.48)

2005-02-28  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.47

	* iCalRepeatableEntityObject.m:  shifted code to
	  iCalRecurrenceCalculator

	* iCalRecurrenceCalculator.[hm]: new class method to calculate
	  complex recurrences. In SOGo this information is stored in quick
	  fields to reduce the complexity of lookups, hence we need to offer
	  a proper API to calculate date ranges from this information.
	  Fixed all calculations to explicitly set timeZone for all newly
	  created startDates - it seems the timeZone information is not
	  properly retained by the hour:minute:second: method from NGExtensions
	  which lead to improper DST related shifts.

	* iCalDateHolder.h: exposed the API

	* NSCalendarDate+ICal.[hm]: new convenience constructor for calendar
	  dates from iCal representations (uses iCalDateHolder internally)

	* iCalRecurrenceRule.m: changed setUntil: to utilize new public
	  NSCalendarDate+ICal category

	* NGiCal.h: added NSCalendarDate+ICal.h to the public headers

	* GNUmakefile: NSCalendarDate+ICal.h is public now

2005-02-20  Helge Hess  <helge.hess@opengroupware.org>

	* NGiCal.xmap: fixed a missing semicolon (did not load on MacOSX)
	  (v.4.5.46)

2005-02-17  Helge Hess  <helge.hess@skyrix.com>

	* GNUmakefile.preamble: fixed linking locations for dependencies
	  (v4.5.45)

2005-02-17  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.44

	* iCalEntityObject.[hm]: added convenience API

	* iCalRepeatableEntityObject.[hm]: added convenience API

	* iCalRecurrenceRule.m: bugfixes in -byDayList and
	  -iCalRepresentationForWeekDay:

	* iCalRecurrenceCalculator.m: implemented 'BYDAY' calculations for
	  weekly frequency. Note that 'COUNT' is still broken for this case.

	* iCalRenderer.m: updated rendering, now can render recurrence rules
	  and accompanied stuff properly.

2005-02-15  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.43

	* iCalRecurrenceRule.[hm]: exposed some more of the API

	* iCalRecurrenceCalculator.m: some bugfixes. Split the code and gave
	  iCalWeeklyRecurrenceCalculator its own calculation - there are a
	  number of foreseeable differences to daily calculation that make
	  this necessary in the near future anyways.

	* v4.5.42

	* iCalRepeatableEntityObject.[hm]: added ability to properly calculate
	  the recurrence ranges within a specific calendar date range, taking
	  all possible exceptions into account.

	* iCalEvent.[hm]: convenience wrapper for the new method found in
	  iCalRepeatableEntityObject.

2005-02-14  Helge Hess  <helge.hess@opengroupware.org>

	* v4.5.41

	* GNUmakefile.preamble: added missing dependency on libNGExtensions
	  (which also adds the dependency on libDOM)

	* iCalRecurrenceCalculator.h: fixed missing forward declaration in
	  header

2005-02-12  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.40

	* iCalRecurrenceCalculator.[hm]: implemented all required (and simple)
	  calculations. Added some convenience API to query some of the more
	  obvious ranges suitable as limits for fetching/comparison. 

	* iCalRepeatableEntityObject.[hm]: new method for calculating the
	  last possible recurrence start date. This can be used for fetches
	  as well.

	* iCalEvent.[hm]: more convenient wrapper for the new method found in
	  iCalRepeatableEntityObject.

	* NSCalendarDate+ICal.[hm]: convenience methods for calculating
	  "distances" between dates.

	* tests/*: updated

2005-02-11  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.39

	* README: updated

	* iCalRepeatableEntityObject.[hm]: new base class for all other
	  repeatable entity objects. Offers a convenience API for generating
	  recurrence ranges and tests, taking all exceptions into account.

	* iCalRecurrenceRule.[hm]: an iCal recurrence rule, modeled as closely
	  as possible to RFC2445. Please note that this is work in progress
	  and far from being complete, yet.

	* iCalRecurrenceCalculator.[hm]: a controller implementing RFC2445
	  to properly generate recurrence ranges and accompanied functionality.

	* iCalEvent.[hm], iCalToDo.[hm]: now subclasses from
	  iCalRepeatableEntityObject, thus removed code dealing with
	  recurrences

	* NGiCal.h: added new headers

	* NGiCal.xmap: changed recurrenceRule mappings due to model change

	* tests/*: contains unit tests for stuff dealing with recurrences. See
	  accompanied README for details

2004-12-17  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalPerson.[hm]: formalized participationStatus according to RFC2445.
	  Provided convenience API to set status without concrete knowledge
	  of string values involved. (v4.5.38)

2004-12-16  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.5.37

	* iCalEvent.[hm]: Added transparency 'TRANSP'. Also multiple
	  convenience methods provided.

	* NGiCal.xmap: added proper mapping for 'transp'.

2004-12-14  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NGiCal.xcode: minor changes and updated

2004-12-13  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalPerson.[hm]: added -cnWithoutQuotes and -rfc822Email convenience
	  methods to simplify client code dealing with these properties
	  (v4.5.36)

2004-11-07  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NGiCal.xcode: provide SOPE_{MAJOR,MINOR}_VERSION to the build

2004-11-06  Helge Hess  <helge.hess@opengroupware.org>

	* iCalRenderer.m: use SOPE version defines for iCalendar product id
	  (v4.5.35)

2004-11-04  Helge Hess  <helge.hess@skyrix.com>

	* use Version file for install directory location of sax mapping

2004-10-31  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalAlarm.[hm], iCalEvent.[hm], iCalToDo.[hm],
	  NGiCal.xmap: added recurrenceRule (v4.3.34)

2004-10-20  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NGiCal.xcode: added iCalRenderer.[hm], bumped framework version

2004-10-20  Helge Hess  <helge.hess@opengroupware.org>

	* iCalRenderer.m: fixed some issue with Cocoa Foundation (v4.3.33)

	* v4.3.32

	* iCalEvent.m: added -vEvent method to produce an iCalendar
	  representation of an event

	* added iCalRenderer class based on the SOGo render by ZNeK

2004-10-14  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NGiCal.xmap: added "categories" mapping (v4.3.31)

2004-10-05  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalEntityObject.[hm]: added categories property (v4.3.30)

2004-09-22  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NGiCal.xcode: fixed several build parameters

2004-09-01  Marcus Mueller  <znek@mulle-kybernetik.com>

	* v4.3.29

	* iCalEventChanges.[hm]: new class for tracking changes between
	  two given events

	* iCalEvent.[hm]: new API to generate iCalEventChanges objects.

	* common.h: inline function and macro for "safe" comparison of
	  object values

2004-09-01  Helge Hess  <helge.hess@opengroupware.org>

	* GNUmakefile.postamble: copy sax-model to FHS_INSTALL_ROOT + 
	  /share/sope-4.3/saxmappings/ when compiling for FHS (v4.3.28)

2004-08-29  Helge Hess  <helge.hess@opengroupware.org>

	* added hack to install the project in FHS locations - the library,
	  its headers, the tools and the resources will be installed in
	  FHS_INSTALL_ROOT if specified (eg make FHS_INSTALL_ROOT=/usr/local)
	  (v4.3.27)

2004-08-26  Marcus Mueller  <znek@mulle-kybernetik.com>

	* NGiCal.xcode: new Xcode project

2004-08-20  Helge Hess  <helge.hess@opengroupware.org>

	* fixed for SOPE 3.3 directory layout (v4.3.26)

	* moved to sope-ical

	* moved to SOPE 4.3 (v4.3.25)

2004-08-14  Helge Hess  <helge.hess@opengroupware.org>

	* iCalEntityObject.m: changed "sequence" attribute from NSString to
	  NSNumber (this might break some code, though some care was taken to
	  accept NSString parameters) (v4.2.24)

2004-07-14  Helge Hess  <helge.hess@opengroupware.org>

	* iCalEvent.h: moved 'status' field to iCalEntityObject, because it is
	  also available in todo objects (v4.2.23)

2004-06-30  Marcus Mueller  <znek@mulle-kybernetik.com>

	* iCalEntityObject.m: added -removeAllAttendees and -removeAllAlarms.
	  These are necessary in case you want to remake the contents of these
	  collections, but keep all other attributes otherwise. (v4.2.22)

2004-06-09  Helge Hess  <helge.hess@opengroupware.org>

	* v4.2.21

	* GNUmakefile.preamble: added prebinding

	* GNUmakefile: create GNUmakefile.preamble, GNUmakefile.postamble

2004-05-05  Marcus Mueller  <znek@mulle-kybernetik.com>

	* GNUmakefile: added support for building with
	  GNUSTEP_BUILD_DIR environment variable set for recent
	  gnustep-make package. (v4.2.20)

2004-01-23  Helge Hess  <helge.hess@opengroupware.org>

	* iCalDataSource.m: added some sanity checks, improved to work better
	  with Mozilla generated iCal files (v4.2.19)

2003-12-22  Helge Hess  <helge.hess@skyrix.com>

	* iCalDateHolder.m: small fix not to print a warning for "YYYYMMDD"
	  style dates (which are supported) (v4.2.18)

2003-12-21  Helge Hess  <helge.hess@opengroupware.org>

	* v4.2.17

	* iCalEvent.m: added parsing of duration values and calculation of 
	  end-dates based on that (eg required for Panther iCal.app)
	
	* iCalEvent.m: added support for 'status' and 'duration' fields 

Thu Nov 20 16:31:15 2003  Martin Hoerning  <martin@opengroupware.org>

	* iCalDateHolder.m: added timeless date format: YYYYMMDD
	  (solves ogo bug 424) (v4.2.16)

Wed Oct 29 22:04:32 2003  Martin Hoerning  <martin@opengroupware.org>

	* iCalDateHolder.m, iCalObject.[m|h]: added iCalDefaultTimeZone to 
	  create date from iCalDates without timeZone. (solves OGoo bug 257) 
	  (v4.2.15)

2003-10-12  Helge Hess  <helge@opengroupware.org>

	* GNUmakefile (libNGiCal_LIBRARIES_DEPEND_UPON): link against
	  libSaxObjC on MacOSX (v4.2.14)

Fri Jul 18 17:04:55 2003  Martin Hoerning  <mh@skyrix.com>

	* iCalToDo.h, iCalPerson.h, iCalEvent.h, iCalEntityObject.h: added 
	  accessor-methods to interface (v4.2.13)

2003-07-18  Helge Hess  <helge.hess@skyrix.com>

	* iCalDateHolder.m: replaces and indexOfString with rangeOfString,
	  thanks to Filip Van Raemdonck for pointing that out (v4.2.12)

2003-03-21  Helge Hess  <helge.hess@skyrix.com>

	* added some method prototypes

2003-03-13  Helge Hess  <helge.hess@skyrix.com>

	* moved iCalEntityObject to a separate file (v4.2.11)

Mon Mar 10 18:41:10 2003  Bjoern Stierand  <bjoern@skyrix.com>

	* NGiCal.xmap: added missing attendee attributes (as dictated by
	  mh on the phone)

2003-03-10  Helge Hess  <helge.hess@skyrix.com>

	* iCalPerson.h: added some method prototypes

2003-02-24  Helge Hess  <helge.hess@skyrix.com>

	* iCalObject.h: added some accessors (v4.2.10)

2003-02-12  Helge Hess  <helge.hess@skyrix.com>

	* moved to skyrix-core (v4.2.9)

2003-01-13  Helge Hess  <helge.hess@skyrix.com>

	* added some support for timezones to be able to parse Evolution
	  apt creation requests (v4.2.7)

2002-10-14  Helge Hess  <helge.hess@skyrix.com>

	* added iCalDateHolder for decoding xCal date values with timezone
	  attributes to a NSCalendarDate

	* iCalObject.m: ignore X- keys

	* removed all the old stuff (v4.2.4)

	* ICalVEvent.m: renamed -class to -eventClass since -class conflicts
	  with the NSObject method

	* started XML based iCal (v4.2.3)

2002-10-10  Helge Hess  <helge.hess@skyrix.com>

	* ICalParser.m: small cleanups (v4.2.2)

2002-10-04  Helge Hess  <helge.hess@skyrix.com>

	* created ChangeLog, created NGiCal library into SkyCore


