2008-12-23: 
- Added type "ALL" to CallList to retrieve complete list of calls at once.
- Moved callType from CallList to CallEntry. 
- Implemented in-library msn filtering and reverse-lookups.
- Renamed various methods in FonbookManager from *Fonbuch* to *Fonbook*.
- Made CallList a singleton.

2008-12-26:
- Replaced string tokenizer in Listener.

2008-12-27:
- Refactored MSN-filter functionality.
- Added "-fPIC" to Makefiles.
- A call to Config::SetupFonbookIDs now deletes a previously instantiated FonbookManager
  to allow multiple calls to SetupFonbookIDs in case of configuration changes.
- Introduced new method CallList::DeleteCallList() to explicitly delete the singleton instance.

2008-12-28:
- Made Listener a singleton. A call to Listener::CreateListener() is used to activate this feature.
- Introduced new method CallList::CreateCallList() to explicitly pre-fetch the call list before
  calling CallList::getCallList().
- Moved Config::SetupFonbookIDs to FonbookManager::CreateFonbookManager().
- Renamed Tools::GetPhoneSettings() to Tools::GetLocationSettings().
- Added resolving of SIP[0-9] to real provider names.

2008-12-19:
- removed the port defines and replaced them by two new fields in class Config to allow easier unit testing
- default LKZ to 49 (Germany) if an error occurs

2009-02-23:
- added exception catch in Tools::GetLang() and Tools::Login()

2009-03-27:
- Removed the default of countryCode = "49" if Tools::GetLocationSettings() fails. This task is 
  handed over to the caller, see next.
- Added new parameters to Config::Setup() to give default values for countryCode and regionCode.
  The default parameters are used, when auto-detection in Tools::GetLocationSettings() fails. The
  new parameter locationSettingsDetected indicates whether auto-detection was successful. In this
  case, the given default values are overwritten to give the caller access to the new values.

2009-04-08:
- Fixed naming of local phonebook. The recommended name is now localphonebook.csv, the old name 
  localfonbuch.csv is still accepted. The directory remains $vdrconfigdir/plugins/fritzbox/.
  
2009-05-18:
- Updated OertlichesFonbook to new website layout

2009-05-31:
- Fixed naming of local phonebook. The plugin now really looks for a file called 
  localphonebook.csv.
  
2009-06-01:
- Provided Interface to add entries to phone books. By default, existing implementations do not 
  support this feature.
- Implemented adding of entries in local phone book.  

2009-08-23:
- Implemented new login method for Fritz!Box firmware >= xx.04.74 using SIDs. This needs 
  features from openssl library. For compiling, libssl-dev (or similar) is needed.
  
2009-08-26:
- Adapted to new tcpclient++
- Fixed a warning warn_unused_result in LocalFonbook.cpp
- Fixed wrong HTTP-GET header in Nummerzoeker.cpp
 
2009-08-30:
- Fixed detection of login failure in Tools::Login()
- Improved cleanup when deleting Listener, FritzFonbook, CallList
- Delay destructor of FritzFonbook and CallList to wait for running threads to end
- Improved concurrent access to Fritz!Box using Tools::GetFritzBoxMutex()

2009-09-05/2009-09-20:
- Improved detection of login type (SID or PASSWORD), which is now done only once
- Improved Tools::Login() to avoid unneccessary logins
- Created FritzClient to act as an facade to the FB which uses tcpclient::HttpClient.
  FritzClient handles all communication to the FB including login. The consumer just 
  uses one of the following methods to get information from the FB
  * RequestCallList()
  * RequestLocationSettings()
  * RequestSipSettings()
  * RequestFonbook()
  This class uses a mutex to automatically serialize multiple instances of itself. The lock 
  is aquired at creation and released at destruction of the class instance. Removed mutex
  in Tools.
- Login() and GetLang() moved as private methods to FritzClient
- Code cleanup and introduction of RETRY_* macros for easy retry handling when 
  communicating with the FB

2009-09-13:
- Fixed entity decoding in FritzFonbook.cpp

2009-09-14:
- Added sort routines in CallList and Fonbook

2009-11-16:
- Adapted to changes in tcpclient++
  * fixed TcpClient to throw correct exceptions on connect. This fixes detection 
    of disabled call monitor, the corresponding hint "dial #96*5*" is now shown in 
    syslog again

2009-11-21:
- Improved matching of phone numbers: Fritz!Box control codes *xxx# are now ignored.

2009-11-29:
- Added missing include <cstring> in FritzClient.cpp

2009-12-08:
- Fixed retry delay calculation in case of connection refused

2010-01-17:
- Fixed a possible segfault when sorting calllists and fonbooks

2010-01-18:
- Added Config::SetupPorts() to provide non-standard ports
- Fixed some warnings about ununsed parameters in base-classes and empty implementations
- Removed useless check in CallList::RetrieveEntry()

2010-01-25:
- FritzClient::Login() now returns a bool wether login was successful
- FritzClient::hasValidPassword() can now be used to determine the result of the last Login()
- Tools::GetLocationSettings() now returns a bool wether the password used 
  to access the FB was valid
- Fixed two bugs in sorting call lists by date / time

2010-01-27:
- Improved destructor of Listener to allow proper cleanup of thread
  
2010-01-29:
- Added CallList::LastCall()

2010-01-31:
- removed FonbookEntry::getTypeName() as this is something the consumer has to take care about

2010-02-05:
- introduced I18N_NOOP macro, this allows application that use libfritz++ to identify strings 
  delivered by the library (e.g., using xgettext) they should localize
  
2010-02-06:
- fixed sorting issue in calllist by putting remoteNumber / "unknown" into the remoteName field
- "unknown" call list entries are now always sorted to beginning of the list

2010-02-07:
- addes a missing redefinition of GetTechId() in class FonbookManager

2010-02-16:
- modified logging to handle full path filenames cause by cmake in __FILE__.
  Provided new logging macros DBG, INF, ERR
- Removed dependency to OpenSSL due to licensing issues, 
  using copy of MD5 implementation from GNU coreutils 5.93
  
2010-02-19:
- Removed md5.[h,c] in favor of libgcrypt, libfritz++ now needs libgcrypt's 
  development header "gcrypt.h" to compile
  
2010-02-20:
- Added a missing call to Login() in FritzClient::InitCall()
- Do not initiate a call if no number is given in FritzClient::InitCall()
  