[SCM] vdr-plugin-epgsearch packaging repository branch, upstream, updated. upstream/1.0.0+git20120325

etobi git at e-tobi.net
Sat Mar 31 11:16:07 UTC 2012


The following commit has been merged in the upstream branch:
commit 360946ecb8aca091cb9f75e24e562b1b2ec56cef
Author: etobi <git at e-tobi.net>
Date:   Sun Mar 25 14:37:02 2012 +0200

    Imported Upstream version 1.0.0+git20120325

diff --git a/HISTORY b/HISTORY
index 8f2a1b5..977649e 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,29 +1,48 @@
 VDR Plugin 'epgsearch' Revision History
 ---------------------------------------
 
+2011-xx-xx; Version 1.0.1
+new:
+- in the menu 'recordings done' you can now toggle the blue key to 'Orphaned' to show
+  recordings with vanished search timers.
+- when channel seperators are displayed the filling '-' can cause problems in the output
+  of graphlcd. Set PLUGIN_EPGSEARCH_SEP_ITEMS=--- in your Make.config to avoid this. Most
+  skins (except classic, st:tng)  will translate '---' into a single line anyway 
+  (Feature #857, thanks to 'KeineAhnung' for providing a patch)
+- search timers are now processed by their descending timer priority. Search timers with the same priority
+  are sorted by their search term. Thanks to Anonym for providing a patch 
+- new bugtracker at http://projects.vdr-developer.org/projects/plg-epgsearch - thanks to Tobias Grimm
+- dropped old code for vdr < 1.6.0, thanks to Ville Skyttä for whole pile of patches
+- updated MainMenuHooks patch to 1.0.1
+- czech translation, thanks to Radek Stastny
+
+fixes:
+- fixed a crash when editing blacklists
+
+
 2011-09-11; Version 1.0.0
 new:
 - supports vdr-1.6.0 to vdr-1.7.21
-- avoid repeats with new 'compare date' entry: compare two events by their date to ignore 
+- avoid repeats with new 'compare date' entry: compare two events by their date to ignore
   repeats within the same day, week or month
-- global blacklists: blacklists for search timers can now be global to exclude 
-  generally unwanted events (like on my double SD/HD channels). Default mode for search 
+- global blacklists: blacklists for search timers can now be global to exclude
+  generally unwanted events (like on my double SD/HD channels). Default mode for search
   timers is now 'only global', but can be  set to 'none' to ignore also global blacklists.
-- new setup variable epgsearch.ConflCheckCmd (no gui for this, so edit setup.conf!), that 
+- new setup variable epgsearch.ConflCheckCmd (no gui for this, so edit setup.conf!), that
   allows executing a command for each timer causing a conflict, see the MANUAL for details.
-- vdr-1.7.15 has changed the SVDRP default port to 6419, please update this in epgsearch's 
+- vdr-1.7.15 has changed the SVDRP default port to 6419, please update this in epgsearch's
   setup menu too!
-- there is now an official git repository for epgsearch, that contains the latest 
-  development. 
-  First usage: 
-    git clone git://projects.vdr-developer.org/vdr-plugin-epgsearch.git	
+- there is now an official git repository for epgsearch, that contains the latest
+  development.
+  First usage:
+    git clone git://projects.vdr-developer.org/vdr-plugin-epgsearch.git
   Keep up-to-date with:
     git pull
   Web-git:
     http://projects.vdr-developer.org/git/?p=vdr-plugin-epgsearch.git
-  many thanks to the maintainers of projects.vdr-developer.org, especially Tobias 
+  many thanks to the maintainers of projects.vdr-developer.org, especially Tobias
   Grimm
-- directory entries from VDR's folders.conf are now also read and offered in the 
+- directory entries from VDR's folders.conf are now also read and offered in the
   directory selection of the timer menu.
 - Search timer support for content descriptors as introduced in vdr-1.7.11. This lets you
   search for broadcasts by their type, like "Movie/Drama", "Documentation",...
@@ -31,56 +50,56 @@ new:
   event via OSD right before it starts and lets you switch to its channel with 'Ok'.
   Switch timers now have the same option.
 - in addition to the announcements via OSD new events can now also be reported by mail.
-  To do so, there's a new search timer action "Announce by mail". You also have to update 
-  your mail template file epgsearchupdmail.templ (s. the updated html sample in the conf 
+  To do so, there's a new search timer action "Announce by mail". You also have to update
+  your mail template file epgsearchupdmail.templ (s. the updated html sample in the conf
   directory and/or read the MANUAL '13. Email notification').
-- The time in hours between the search timer mails can now be configured in the 
+- The time in hours between the search timer mails can now be configured in the
   setup to avoid flooding your inbox. epgsearch buffers the contents of the pending mails
   in the new file pendingnotifications.conf.
-- New setup option to check if there is EPG content for the next x hours. If not 
-  you get warned by OSD and/or mail (Setup -> Search and search timers), suggested by 
+- New setup option to check if there is EPG content for the next x hours. If not
+  you get warned by OSD and/or mail (Setup -> Search and search timers), suggested by
   Andreas Mair.
 - new internal variables:
   * %day%, %month% and %year% which return the numeric day, month and year
     (with century) of an event
-  * %chgrp% returns the VDR channel group name corresponding to an event    
+  * %chgrp% returns the VDR channel group name corresponding to an event
   * %liveeventid% returns the encoded event ID as used in the frontend 'live' to add
     direct links e.g. in the search timer mails (see sample conf/epgsearchupdmail-html.templ).
   * %timer.liveid% returns the encoded timer ID as used in the frontend 'live' to add
     direct links e.g. in the search timer mails.
-  * %date_iso% and %date_iso_now% return the (current) date in 'YYYY-MM-DD' format, 
+  * %date_iso% and %date_iso_now% return the (current) date in 'YYYY-MM-DD' format,
     suggested by Andreas Mair.
   * %search.series% returns 1 or 0 depending on the flag "series recording" of a search and
     can be used in the directory entry of a search or it's depending variables.
 - new command 'connect' within internal variables: with this command you can connect to
-  a TCP service, pass data and assign the result to a variable. See the MANUAL for 
+  a TCP service, pass data and assign the result to a variable. See the MANUAL for
   details.
 - new command 'length' within internal variables: this returns the length of the given arguments
 - in memory to pat: french translation update, thanks to Patrice Staudt
 - italian translation update, thanks to Diego Pierotto
 - finnish translation update, thanks to Rolf Ahrenberg and Ville Skyttä
-- new lithuanian translation, thanks to Valdemaras Pipiras 
+- new lithuanian translation, thanks to Valdemaras Pipiras
 - new slovak translation, thanks to Milan Hrala
-- new SVDRP command 'MENU [NOW|PRG|SUM]' to call one of the main OSD menus or 
+- new SVDRP command 'MENU [NOW|PRG|SUM]' to call one of the main OSD menus or
   the summary of the current event. If any epgsearch menu is open a subsequent
   SVDRP call will close it again.
 - changed the maximum number of days for a timer conflict check from 99 to 14
 - patch by Jörg Wendel for new graphtft patch
-- Two events with both empty episode names are now handled different within the 
-  feature 'Avoid repeats'. This will result in more recordings, but ensures not to 
+- Two events with both empty episode names are now handled different within the
+  feature 'Avoid repeats'. This will result in more recordings, but ensures not to
   miss one only because of a buggy EPG.
-- searchtimers: if a timers filename results in an empty string or contains 
+- searchtimers: if a timers filename results in an empty string or contains
   "!^invalid^!" it will be skipped for programming now.
 - Avoid repeats: The option 'Yes' for 'Compare subtitle' is now replaced with 'if present'.
-  With this setting epgsearch will classify two events only as equal if 
-  their episode names match and are not empty. 
-- epgsearch now uses the shutdown handler (introduced in vdr 1.5.1) to prevent a 
+  With this setting epgsearch will classify two events only as equal if
+  their episode names match and are not empty.
+- epgsearch now uses the shutdown handler (introduced in vdr 1.5.1) to prevent a
   search timer update to be interrupted.
-- the SVDRP command UPDS for triggering search timer updates has now a new option 
+- the SVDRP command UPDS for triggering search timer updates has now a new option
   'SCAN' that will execute an EPG scan before the search timer update actually starts.
-- when deleting a search timer now its list of created timers is also cleared, 
+- when deleting a search timer now its list of created timers is also cleared,
   suggested by Sundararaj Reel
-- moved 'file' and 'directory' to the top in the timer edit menu, since at least in 
+- moved 'file' and 'directory' to the top in the timer edit menu, since at least in
   my case its the most common entry to change, e.g. to select a folder for the recording.
 - auto enable Wareagle icons if VDRSymbols font is used (can be overwritten with
   WarEagleIcons=0 in epgsearchmenu.conf), suggested by Ronny Kornexl
@@ -88,38 +107,38 @@ new:
 - epgsearch now autodetects an installed pin plugin or graphtft, also the optional libraries
   libpcre und libtre (can be turned off by commenting AUTOCONFIG in the Makefile)
 - new patch vdr.epgsearch-exttimeredit.diff:
-  this patch against VDR integrates epgsearch's timer edit menu to VDR's timer menu, thanks 
+  this patch against VDR integrates epgsearch's timer edit menu to VDR's timer menu, thanks
   S:oren at vdr-portal for providing it.
 - some speed enhancements, thanks to Tobias Bratfisch for providing patches
-- if the VPS time differs from the start time of an event the VPS marker is now  'v' 
+- if the VPS time differs from the start time of an event the VPS marker is now  'v'
   instead of 'V'
 - the first run of the background threads (searchtimer, switchtimer, conflict check) is now
   triggered by the first call to cPlugin::MainThreadHook instead of waiting 20s after
   VDRs startup.
-- The update check for manual timers does now ignore timers whose start or stop time was edited 
-  by the user. 
+- The update check for manual timers does now ignore timers whose start or stop time was edited
+  by the user.
 - default path to sendmail is now '/usr/sbin/sendmail' and can be configured in the Makefile,
   thanks to Ville Skyttä for providing a patch.
-- externally triggered search timer updates (via service interface or SVDRP) will now 
+- externally triggered search timer updates (via service interface or SVDRP) will now
   automatically activate the setting "Use search timers" in the setup.
 - epgsearch now also checks the recordings length among the correct start and stop time of a timer
-  when testing for complete recordings. 98% and more are handled as complete. 
+  when testing for complete recordings. 98% and more are handled as complete.
 - switch timers are now also visible in all search results EPG menus
 - Avoid repeats: in 'compare summary' one can now adjust the required match, default is 90%.
-- if there is no subtitle the filename now defaults to YYYY.MM.DD-HH.MM-Weekday to ease 
+- if there is no subtitle the filename now defaults to YYYY.MM.DD-HH.MM-Weekday to ease
   sorting in some frontends, thanks to Dominic Evans for providing a patch
 - should now compile in FreeBSD, thanks to Juergen Lock for providing a patch
 - new SVDRP command UPDT to reload the list of search timers in epgsearch.conf
 
 fixes:
 - fixed a crash when pressing 'Ok' in an empty timers done menu
-- fixed a crash when using the progressbar and events with 0 duration exist, thanks 
+- fixed a crash when using the progressbar and events with 0 duration exist, thanks
   to egal at vdrportal
-- when an incomplete recording triggers a search timer update for a search timer 
+- when an incomplete recording triggers a search timer update for a search timer
   with 'avoid repeats' now running events are ignored for the repeats.
 - now using cCondWait::Wait instead of cCondWait:SleepMs to avoid shutdown problems,
   thanks to e9hack at vdrportal for providing a patch
-- fixed line breaks in SVDRP command LSTT, thanks to Andreas Mair for providing a 
+- fixed line breaks in SVDRP command LSTT, thanks to Andreas Mair for providing a
   patch
 - improved response time when canceling the search timer thread
 - fixed a segfault occurring when navigating to a userdefined epg menu that has expired
@@ -135,22 +154,22 @@ fixes:
 - some fixes regarding libtre includes, thanks to Ville Skyttä for providing a patch
 - fix UTF8-character handling in timer file names, thanks to Rolf Ahrenberg for providing
   a patch
-- fixed a crash when adding huge episode names to the timer's file name, thanks to Lari 
+- fixed a crash when adding huge episode names to the timer's file name, thanks to Lari
   Tuononen for reporting
-- make sure only one regular expression library is linked against epgsearch, thanks to 
+- make sure only one regular expression library is linked against epgsearch, thanks to
   Ville Skyttä for providing a patch.
-- some providers have strange EPG time changes only by some seconds. epgsearch now ignores 
-  changes less than 60s and does not touch the corresponding timer or report by mail, 
+- some providers have strange EPG time changes only by some seconds. epgsearch now ignores
+  changes less than 60s and does not touch the corresponding timer or report by mail,
   thanks to cmichel at mantis for reporting
 - possible fix of the old problem with a crash in libpcre, thanks to Andreas Cz. for the
   patch and to Stefan Bauer for pointing me to it.
-- fix a crash when toggling between with/without subtitle in timer info view for events 
+- fix a crash when toggling between with/without subtitle in timer info view for events
   that have (very) long "short" texts, thanks to Ville Skyttä for providing a patch.
-- fixed file descriptor handling when there are errors in SVDRP communication, thanks to 
+- fixed file descriptor handling when there are errors in SVDRP communication, thanks to
   Teemu Rantanen for providing a patch.
 - fixed the service interface for switchtimers because of wrong parameter handling, thanks
   to gnapheus at vdrportal for reporting.
-- fixed case insensitve searching when Utf-8 characters are involved, thanks to Ville 
+- fixed case insensitve searching when Utf-8 characters are involved, thanks to Ville
   Skyttä for reporting
 - fixed check of complete VPS recordings, thanks to durchflieger at vdr-portal for providing
   a patch.
@@ -164,58 +183,58 @@ new:
 - support for VDRSymbols font (activate it with 'WarEagle=1' in epgsearchmenu.conf)
 - the EPG command 'Search in recordings' now evaluates the info.vdr instead of the
   recordings path name and also does fuzzy searching, suggested by Mase at vdrportal
-- search timers with action 'switch only' and switch timers now have an additional 
-  option 'unmute sound' which unmutes audio at the event, if it was off, suggested 
+- search timers with action 'switch only' and switch timers now have an additional
+  option 'unmute sound' which unmutes audio at the event, if it was off, suggested
   by Michael Brückner
-- the timer update notification mails supports now an additional variable 
+- the timer update notification mails supports now an additional variable
   %timer.modreason%, that holds the reason for a timer update in plain text (see
   epgsearchupdmail(-html).templ for a sample)
 - support for a conf.d mechanism (s. MANUAL -> 14. The conf.d subdirectory), suggested
   by Mike Constabel.
-- new SVDRP command 'LSCC' that returns the results of a timer conflict 
+- new SVDRP command 'LSCC' that returns the results of a timer conflict
   check. See the MANUAL for details about the format of the result list.
-- new patch against VDR (vdr-1.5.17-progressbar-support-0.0.1.diff) that adds support 
+- new patch against VDR (vdr-1.5.17-progressbar-support-0.0.1.diff) that adds support
   for graphical progressbars in skins classic and st:tng, thanks to zulu at vdrportal
 - '0' in the menu of done recordings now toggles the display of the episode name only
-- the favorites menu can now also be displayed after 'Overview - Now' via setup, 
+- the favorites menu can now also be displayed after 'Overview - Now' via setup,
   suggested by Bittor Corl
 - menu of recordings done now sorts the date top down
 - support for new info key behaviour in vdr-1.5.13
 - changes for builtin graphtft-patch (when using VDR-extension-patch you need > v.37)
 - updated the timercmd-patch for vdr-1.5.12 (patches/timercmd-0.1_1.5.12.diff)
 - added patches/README.patches to describe the existing patches
-- update of 'undoneepgsearch.sh', a script to remove recordings from the done file via 
+- update of 'undoneepgsearch.sh', a script to remove recordings from the done file via
   reccmds.conf, thanks to Viking at vdrportal.
 - update of finnish translation, thanks to Rolf Ahrenberg
 - full spanish translation, many thanks to agusmir, dragondefuego, GenaroL, lopezm and
   nachofr from todopvr.com, and especially to bittor
-- update of italian translation, thanks to Diego Pierotto 
+- update of italian translation, thanks to Diego Pierotto
 - update of dutch translation, thanks to carel at bugtracker
 - the setup option "No announcements when replaying" is now ignored, if the search timer
   update was triggered manually, suggested by Andreas Mair.
 
-fixes: 
-- shifting the time display: the start time now only gets displayed in 
-  'Overview - Now' instead of a progressbar, if there's not already a start time 
-  in the menu template ('%time%') as in the default template, 
+fixes:
+- shifting the time display: the start time now only gets displayed in
+  'Overview - Now' instead of a progressbar, if there's not already a start time
+  in the menu template ('%time%') as in the default template,
   thanks to Getty at vdrportal for reporting
-- fixed some issues regarding GPL, thanks to Thomas Günther for reporting 
+- fixed some issues regarding GPL, thanks to Thomas Günther for reporting
 - fixed a crash when no EPG is present, thanks to Petri Helin for providing a patch
-- the default value for maximum duration is now '23:59' to avoid problems with 
+- the default value for maximum duration is now '23:59' to avoid problems with
   external tools, thanks to ralf-naujokat at bugtracker for reporting (bug-id #371)
 - after an EPG change of less then 10 minutes epgsearch modified a timer instead of
   creating a new one. This caused problems with events with less then 10 minutes. The
   tolerance is therefore now min(<event duration>, 10 min). Thanks to Janne Liimatainen
   for reporting.
 - fixed some translations, thanks to ramirez at vdrportal for reporting
-- speed improvement when scrolling through EPG menus, thanks to ramirez at vdrportal for 
+- speed improvement when scrolling through EPG menus, thanks to ramirez at vdrportal for
   reporting
 - fixed a crash, when SIGINT is signaled while background threads startup
-- channel group separators in 'Overview Now/Next/...' are now hidden if they are 
+- channel group separators in 'Overview Now/Next/...' are now hidden if they are
   empty like in ':@30', thanks to Ulf Kiener for providing a patch
 - fixed a crash in the setup of the addon plugins when VDR is patched with the ext-patch
   and active LIEMIKUUTIO
-- 'avoid repeats' combined with 'pause on ... recordings' created to less timers, thanks 
+- 'avoid repeats' combined with 'pause on ... recordings' created to less timers, thanks
   to spockele at vdrportal for reporting
 - fixed some compiler warnings with g++ 4.3
 - fine-tuning fuzzy matching of descriptions, thanks to Alf Fahland for providing a patch
@@ -226,39 +245,39 @@ fixes:
 - fixed evaluation of compiler flags like WITHOUT_EPGSEARCHONLY,...
 
 2007-09-02: Version 0.9.23
-new: 
-- full support for new i18n system in vdr>=1.5.7, but keeps fully backwards 
+new:
+- full support for new i18n system in vdr>=1.5.7, but keeps fully backwards
   compatible
 - when using extended EPG categories one can now also compare by value, e.g.
   to search for events after some year.
-  Therefore new searchmodes (10 which means '<', 11 which means '<=', ...) 
+  Therefore new searchmodes (10 which means '<', 11 which means '<=', ...)
   were introduced in the file epgsearchcats.conf. Example:
 
     # 'until year'
     3|Year|until year||11
     # 'from year'
-    12|Year|from year||13  
-  
+    12|Year|from year||13
+
   One could use this also to search for a specific season of a series, if this
   data is part of the EPG. See the section <epgsearchcats.conf> in the documentation
   for a complete list of all search modes.
-- The edit menu for search timers has now a switch 'Ignore missing categories' for 
-  extended EPG categories. If set to 'Yes' this tells epgsearch that a missing EPG 
-  category should not exclude an event from the results. Caution: Using this without 
+- The edit menu for search timers has now a switch 'Ignore missing categories' for
+  extended EPG categories. If set to 'Yes' this tells epgsearch that a missing EPG
+  category should not exclude an event from the results. Caution: Using this without
   any other criterions could flood your timers.
 - Search timers have now an 'auto delete' feature. The edit menu therefor provides:
     * after x recordings, or
     * after x days after first recording
   Only complete recordings are counted. The deletion of the search timer is executed
   directly after the end of the corresponding recording
-- new action "Create a copy" in menu Search/Actions to create and edit a copy of the 
+- new action "Create a copy" in menu Search/Actions to create and edit a copy of the
   current search, suggested by Michael Brückner.
-- the option "use as search timer" has now a third value 'user defined' besides 'yes' 
-  and 'no', that allows specifying a time margin where the search timer is active, 
+- the option "use as search timer" has now a third value 'user defined' besides 'yes'
+  and 'no', that allows specifying a time margin where the search timer is active,
   suggested by jo01 at vdrportal
-- the progressbar now displays the start time instead of an empty bar, when 
+- the progressbar now displays the start time instead of an empty bar, when
   shifting to future events, thanks to zulu at vdrportal for providing a patch.
-- menu "show timers created" shows now summary for the timers done with 'Ok'. 
+- menu "show timers created" shows now summary for the timers done with 'Ok'.
   Also the shortcuts '1..9' for the EPG-commands are available.
 - built-in pin-plugin patch (no more need to patch epgsearch). Activate
   it by compiling with 'USE_PINPLUGIN' in VDR's Make.config (as already done in
@@ -273,7 +292,7 @@ fixes:
 - fixed a bug in timer creation after navigating through the summary menu,
   thanks to Rolf Ahrenberg for reporting
 - Label "Record" or "Timer" in menu summary fixed with respect to existing timer.
-- fixed switch timers in the case when EPG has changed, thanks to Juergen Urban 
+- fixed switch timers in the case when EPG has changed, thanks to Juergen Urban
   for providing a patch
 - fixed some compiler warnings in g++-4.2, thanks to Michael Brückner for reporting
 - added "," to the allowed characters for a search timer, thanks to Mike Constabel for
@@ -281,15 +300,15 @@ fixes:
 
 2007-05-27: Version 0.9.22
 new:
-- new option in timer conflict check "When a recording starts": 
-  This performs a conflict check when any recording starts and informs 
+- new option in timer conflict check "When a recording starts":
+  This performs a conflict check when any recording starts and informs
   about it via OSD if the conflict is within the next 2h. So also timers not
   created with epgsearch are checked, the same for instant recordings.
 - new service interface "Epgsearch-services-v1.0": This allows other plugins
-  to access and manage many components of epgsearch as searchtimers, setup 
+  to access and manage many components of epgsearch as searchtimers, setup
   values,... and execute tasks like searching for repeats (Have a look at
   services.h for more information).
-- new project homepage: http://winni.vdr-developer.org/epgsearch, many thanks 
+- new project homepage: http://winni.vdr-developer.org/epgsearch, many thanks
   to Thomas Keil, sorry, only german at the moment ;)
 - update for finnish translation, thanks to Rolf Ahrenberg
 fixes:
@@ -299,67 +318,67 @@ fixes:
   checks the alphanumeric portions of title and episode
 - fixed another issue with quotes when calling commands for EPG events
 - some license changes and additions for integration in Debian repositories
-- fixed a bug in displayed time, when using user defined times and shifting 
+- fixed a bug in displayed time, when using user defined times and shifting
   with FRew/FFwd, thanks to Torsten Weigelt for reporting
 - the aux info about the channel was not added in 'one press timer creation'.
   Thanks to Rolf Ahrenberg for providing a patch.
 
 2007-04-29: Version 0.9.21
 new:
-- support for the new MainMenuHooksPatch. This replaces the 
-  vdr-replace-schedulemenu patch. The new patch is used by other plugins too, 
-  so from now on only one patch is needed. The old patch is still supported, 
+- support for the new MainMenuHooksPatch. This replaces the
+  vdr-replace-schedulemenu patch. The new patch is used by other plugins too,
+  so from now on only one patch is needed. The old patch is still supported,
   but this will be removed in the next releases.
-- announcements of broadcasts via OSD have been completely redesigned. Instead 
-  of displaying them event by event, you get now 
-  "x new broadcast(s) found! Show them?". Pressing 'Ok' shows a menu of all 
-  events with the usual functions as in other EPG menus. With "Edit" you can 
-  modify the announce settings (like "announce again: yes/no" or announce again 
+- announcements of broadcasts via OSD have been completely redesigned. Instead
+  of displaying them event by event, you get now
+  "x new broadcast(s) found! Show them?". Pressing 'Ok' shows a menu of all
+  events with the usual functions as in other EPG menus. With "Edit" you can
+  modify the announce settings (like "announce again: yes/no" or announce again
   after day x).
-- timer conflict notifications via OSD can now be supressed while replaying. 
+- timer conflict notifications via OSD can now be supressed while replaying.
   Nevertheless, if a conflict comes up within the next 2 hours the message gets
   still displayed.
 - all addon plugins (epgsearchonly, quickepgsearch, conflictcheckonly) now
   have a setup option to toggle the main menu entry on/off, thanks to Tobias
   Grimm for providing a patch.
-- channel name in aux info of manual timers, thanks to Rolf Ahrenberg for 
+- channel name in aux info of manual timers, thanks to Rolf Ahrenberg for
   providing a patch.
-- new script undoneepgsearch.sh to undo a timer within the recordings menu, 
+- new script undoneepgsearch.sh to undo a timer within the recordings menu,
   more info at:
   http://www.vdr-portal.de/board/thread.php?postid=574109#post574109
   Thanks to the author Christian Jacobsen
 - update for french translation, thanks to Patrice
-  Staudt 
-- update for finnish translation, thanks to Rolf Ahrenberg 
-- menu 'timer conflicts details' now also shows the date of the conflict in 
+  Staudt
+- update for finnish translation, thanks to Rolf Ahrenberg
+- menu 'timer conflicts details' now also shows the date of the conflict in
   menu title, suggested by Rusk at vdrportal.
-- the password for mail authentication is now hidden in the OSD, i.e. 
-  represented with '***...' 
+- the password for mail authentication is now hidden in the OSD, i.e.
+  represented with '***...'
 - the setup for mail notifications now also has a "Send to" address, because
-  some providers don't allow the same address for sender and recipient. 
-  If "Send to" is not set, epgsearch automatically uses the sender address as 
+  some providers don't allow the same address for sender and recipient.
+  If "Send to" is not set, epgsearch automatically uses the sender address as
   recipient.
-- when testing for repeats (with feature 'Avoid repeats') epgsearch now only 
-  compares the alphanumeric portions of title and episode and ignores the case 
+- when testing for repeats (with feature 'Avoid repeats') epgsearch now only
+  compares the alphanumeric portions of title and episode and ignores the case
   too. Suggested by chello at vdrportal.
-- thanks to Rolf Ahrenberg for finnish translation update 
+- thanks to Rolf Ahrenberg for finnish translation update
 - added '&' to the set of valid chars for search terms
 fixes:
-- the tags stored in the aux info of the timers created with search timers 
+- the tags stored in the aux info of the timers created with search timers
   conform now to correct XML syntax (no capitals, no blanks). E.g. "Search timer"
-  will be changed to "searchtimer". So don't wonder if the first search timer 
+  will be changed to "searchtimer". So don't wonder if the first search timer
   update will modify all existent timers created with search timers. Thanks to
   Rolf Ahrenberg for reporting.
-- update of recordingdone.sh because of the previous changes, thanks to 
-  Mike Constabel for providing a patch 
+- update of recordingdone.sh because of the previous changes, thanks to
+  Mike Constabel for providing a patch
 - fixed a segfault in the case of misconfigured extended EPG categories.
-- scrolling text items now works again, if your skin supports this. 
+- scrolling text items now works again, if your skin supports this.
   Thanks to ufauser at vdrportal for reporting.
-- setup option "Use search timers" now always gets automatically enabled, if 
+- setup option "Use search timers" now always gets automatically enabled, if
   one toggles a search to 'active' or manually starts a search timer update.
-- fixed handling of double quotes in title/episode when passed to userdefined 
+- fixed handling of double quotes in title/episode when passed to userdefined
   EPG commands, thanks to Mike Constabel for reporting.
-- fixed menu handling in search timer templates menu, thanks to wombel at vdrportal 
+- fixed menu handling in search timer templates menu, thanks to wombel at vdrportal
   for reporting.
 
 2007-01-30: Version 0.9.20
@@ -374,7 +393,7 @@ new:
   Please refer to the README (1.4.4 Setup/Timer Programming/Default timer check
   method) for further notes.
 - the timespan used in the favorites menu can now be adjusted via
-  setup. Default is 24h. 
+  setup. Default is 24h.
 - Event announcements: If the user presses one of the keys 'Ok', '0', ... '9'
   while the announcement of an event is displayed, he will be asked if further
   announcements of this event should be disabled for ever (user hit '0' or
@@ -388,10 +407,10 @@ new:
   with the next search timer update. With the new menu 'Show timers created'
   in Search/Actions one can edit this list. The whole feature can be disabled
   in the search timers setup. Note: the done list is only populated with
-  timers that were newly created with this release. 
+  timers that were newly created with this release.
 - new addon plugin 'quickepgsearch': it creates a main menu entry 'Quick
   search' and can be used to search for any event in the EPG. Include it with
-  '-Pquickepgsearch' , suggested by SurfaceCleanerZ at vdrportal. 
+  '-Pquickepgsearch' , suggested by SurfaceCleanerZ at vdrportal.
 - new setup option "Limit channels from 1 to" to speed up epgsearchs call. If
   the current channel is above the limit, all channels will be
   displayed. Suggested by Uwe at vdrportal.
@@ -419,14 +438,14 @@ new:
     now used in the default menu template of the favorites menu, where the date
     field was removed.
   * '%length%' for the length of a broadcast in seconds.
-- thanks to Rolf Ahrenberg for finnish translation update 
+- thanks to Rolf Ahrenberg for finnish translation update
 fixes:
 - manually created timers are now neither deleted nor modified by any search
-  timers. 
+  timers.
 - the addon conflictcheckonly was compiled even if WITHOUT_CONFLICTCHECKONLY
   was defined in the Makefile, thanks to Ronny Kornexl for reporting.
 - search term and directory support now the characters '�' (only for language
-  german) and '@'. 
+  german) and '@'.
 - 'avoid repeats' had a bug (in some special cases) that created a timer for any
   later repeat instead of the first event.
 - a search with "Use day of week" AND "Use time" where "Start before" is after
@@ -438,7 +457,7 @@ fixes:
 - fixed a bug in evaluation of user variables, thanks to Mike Constabel for
   reporting and remote debugging
 - fixed a bug in conflict mail notification concerning timers without assigned
-  events 
+  events
 
 2006-10-27: Version 0.9.19
 new:
@@ -446,17 +465,17 @@ new:
   initially created a corresponding timer may modify it.
 - new variables:
   * '%search.query%' to be used in the recording directory of a search
-    timer. Will be substituted to the query of a search timer. 
+    timer. Will be substituted to the query of a search timer.
   * '%videodir%' VDR video directory (e.g. /video)
   * '%plugconfdir%' VDR plugin config directory (e.g. /etc/vdr/plugins)
   * '%epgsearchdir%' epgsearchs config directory
-    (e.g. /etc/vdr/plugins/epgsearch) 
+    (e.g. /etc/vdr/plugins/epgsearch)
 - the syntax of the 'system' command within a user variable has changed to be
-  more flexible. It's now: 
-  %uservar%=system(/path/to/script[, parameters]) 
+  more flexible. It's now:
+  %uservar%=system(/path/to/script[, parameters])
   where the optional 'parameters' can now be any expression using other
   variables except directly using conditional expressions or other system
-  calls. 
+  calls.
 - update for french translation, thanks to Patrice Staudt
 fixes:
 - VPS timers created by search timers are now always updated to their VPS time,
@@ -479,19 +498,19 @@ new:
   mv /etc/vdr/plugins/.epgsearch* /etc/vdr/plugins/epgsearch
 
   This is only important if you don't already use epgsearchs '--config' or
-  '-c' parameter. 
+  '-c' parameter.
 
 - new 'Favorites menu' besides 'Now' and 'Next': This menu can show a list of
   all your favorite broadcasts for the next 24h. To enable it activate 'Show
   favorites menu' in the setup. To let epgsearch know what your favorites are
   create/edit some searches and enable 'Use in favorites menu'.
 - new setup option for timer conflict check: 'After each timer
-  programming'. This performs a conflict check after each manual timer 
+  programming'. This performs a conflict check after each manual timer
   programming and - if the new/modified timer is involved in a conflict - pops
   up an OSD message about it.
 - new email notifications about search timer updates or timer
   conflicts with a customizable mail content. Please refer to the MANUAL
-  section 'Email notification' for further details. 
+  section 'Email notification' for further details.
 - epgsearch has now a set of man pages. A very BIG thanks to Mike Constabel
   (vejoun at vdrportal) who did the complete job of rewriting/correcting and
   formatting the current docs. The man pages cover the README's, MANUAL and a
@@ -501,7 +520,7 @@ new:
   directory, search timer recording directory or your own menu
   templates. Since this is quite complex please refer to the MANUAL section
   'User defined variables'. Just an example to see what is possible:
-     # Weekday, Date, Time   
+     # Weekday, Date, Time
      %DateStr%=%time_w% %date% %time%
      # Themes or Subtitle or Date
      %ThemesSubtitleDate1%=%Subtitle% ? %Subtitle% : %DateStr%
@@ -524,7 +543,7 @@ new:
 - the check for a complete recording now also accepts short breaks (< 2s,
   e.g. a channel pid change)
 - new SVDRP commands:
-  * LSTC [channel group name] 
+  * LSTC [channel group name]
     list all channel groups or if given the one with name 'group name'
   * NEWC <channel group settings>
     create a new channel group, format as in epgsearchchangrps.conf
@@ -542,9 +561,9 @@ new:
   * 'DELB <ID>' to delete the blacklist with ID
   * 'EDIB <settings>' to modify an existing blacklist
   * 'QRYS < ID(s) >' to get the results for a search with the given
-    ID. Multiple IDs can also be passed and have to be separated with '|'. 
+    ID. Multiple IDs can also be passed and have to be separated with '|'.
   * 'QRYS <settings>' to get the results for a search with the given
-    search settings.  
+    search settings.
   * 'QRYF [hours]' to get the results for the favorites menu. The optional
     parameter specifies the number of hours to evaluate and defaults to 24h.
   * 'LSTE [ID] to get the extended EPG categories defined in epgsearchcats.conf
@@ -555,14 +574,14 @@ new:
   (english)
   http://www.vdr-developer.org/mantisbt
   http://www.vdr-developer.org/mailman/listinfo/epgsearch
-  thanks to the providers of developer.org 
+  thanks to the providers of developer.org
 - new service interface "Epgsearch-switchtimer-v1.0" to access and manage
   switch timers, thanks to Dirk Leber for his extension.
 - update for french translation (including setup help!), thanks to Patrice
   Staudt
-- thanks to Rolf Ahrenberg for finnish translation update 
+- thanks to Rolf Ahrenberg for finnish translation update
 - thanks to Mike Constabel for providing a HTML update mail template
-  (conf/epgsearchupdmail-html.templ) 
+  (conf/epgsearchupdmail-html.templ)
 fixes:
 - the first day of a repeating timer is now taken into consideration in the
   timer conflict check, thanks to zimuland at vdrportal for reporting
@@ -573,20 +592,20 @@ fixes:
 - changed some default search mode values in the epgsearchcats.conf samples for
   multiple selection
 - removed extra line feeds in SVDRP response of LSTS, thanks to Andreas Mair
-  for reporting 
+  for reporting
 - channel criterion 'no pay tv' in search timers was ignored, thanks to
   Andreas Mair for reporting
 - fixed initial min/max values for search criterion 'duration', thanks to
-  Mike Constabel for reporting 
+  Mike Constabel for reporting
 - fixed a bug when selecting the conflict check 'after each search timer
   update' in setup, thanks to Ronny Kornexl for reporting
 - some changes for thread safeness
-- added '--remove-destination' to the Makefile as introduced in vdr-1.4.2-3 
+- added '--remove-destination' to the Makefile as introduced in vdr-1.4.2-3
 
 2006-08-07: Version 0.9.17d (maintenance release)
 fixes:
 - fixed a wrong usage of 'cPlugin::ConfigDirectory' in search timer thread,
-  thanks to Udo Richter and Petri Hintukainen for reporting 
+  thanks to Udo Richter and Petri Hintukainen for reporting
 
 2006-06-12: Version 0.9.17c
 fixes:
@@ -613,26 +632,26 @@ fixes:
 - dropped support for vdr < 1.3.46 :-(
 - changed logic in jumping through menus with user-defined times: you can now
   also access times on next day, if they are less then 20 hours in the
-  future. Thanks to egal at vdrportal and CKone at vdrportal. 
+  future. Thanks to egal at vdrportal and CKone at vdrportal.
 - epgsearch has now its own timer conflict check which can be customized by
   setup regarding relevant priorities, the time span to check or the relevant
   conflict duration. There is also a conflict manager in Search/Actions that
   can be used to resolve conflicts. Many thanks to Mike Constabel for heavy
   testing ;-)
 - if there is a timer conflicts notification via OSD, you can now press 'Ok' to
-  go directly to the timer conflicts overview. 
+  go directly to the timer conflicts overview.
 - if you like to have a separate main menu entry for the timer conflict check
-  use '-P conflictcheckonly' which comes as 'mini'-plugin with epgsearch and 
+  use '-P conflictcheckonly' which comes as 'mini'-plugin with epgsearch and
   simply calls epgsearch's conflict menu. conflictcheckonly has a setup option
   to display an info about the last conflict check directly in its main menu
-  entry. 
+  entry.
 - setup is now completely restructured and has now something like an 'online'
-  help. 
+  help.
 - menu 'switch timers' now also displays the channel number
 - input logic for extended EPG categories changed to allow multiple values.
 - added script 'timercmds-auxinfo.sh' that displays the aux info (e.g. the
   search timer responsible for the timer) in VDR's timer menu (requires the
-  timercmd patch), thanks to the author Mike Constabel 
+  timercmd patch), thanks to the author Mike Constabel
 - user-defined EPG times with empty description get now their associated time
   as description, suggested by Thiemo Gehrke
 - new service interface "Epgsearch-conflictmenu-v1.0" to call epgsearch's
@@ -643,26 +662,26 @@ fixes:
   only useful when testing the conf file. To activate the permanent
   reload again, pass the new start parameter '-r' or '--reloadmenuconf' in
   your runvdr
-- thanks to Rolf Ahrenberg for finnish translation update 
+- thanks to Rolf Ahrenberg for finnish translation update
 - added HISTORY.DE (german HISTORY)
 fixes:
 - loading epgsearchmenu.conf now falls back to menu defaults, if the conf file
-  contains any errors. 
+  contains any errors.
 - fixed handling of '%' in  LSTS in SVDRP for vdr > 1.3.44, thanks to Mike
-  Constabel 
+  Constabel
 - fixed loading epgsearchmenu.conf for epgsearchonly and service interface
   "Epgsearch-searchmenu-v1.0", thanks to Daniel Dorau for reporting.
 - fixed display update in menu 'Search templates', thanks to Mike Constabel
 - fixed a bug when deleting associated timers of a search timer when there
   are no timers present, thanks to Patrick Koppen for reporting.
 - hopefully fixed a bug when adding a search entry to templates, thanks to
-  Patrick Koppen for reporting.  
+  Patrick Koppen for reporting.
 
 2006-04-18: Version 0.9.16 (maintenance release)
 fixes:
-- the display of 'Overview - Now' was broken, when using progressbar and 
+- the display of 'Overview - Now' was broken, when using progressbar and
   channel numbers in default menu look. Thanks to Gerhard Steiner for
-  reporting this one. 
+  reporting this one.
 - when using small OSD fonts, the progressbars where flickering because of 1
   pixel line height. Thanks to holymoly and TomG at vdrportal.
 - support for the APIVERSION define as introduced in vdr-1.3.47
@@ -674,10 +693,10 @@ new:
   MenuWhatsOnNow=%chnr%:3|%progrt2s%:5| %time% %t_status%:8|%category%:6| %title% ~ %subtitle%:35
   creates a menu line starting with the channel number, followed by a progress
   bar in text2skin style, the start time, the timer status, the EPG category
-  (like "movie") and finally the title and subtitle. 
+  (like "movie") and finally the title and subtitle.
   You can customize each menu ('What's on now, next, other times, schedule and
   search results with a separate line). Please refer to the MANUAL for more
-  information. 
+  information.
 - IMPORTANT change to search timers: epgsearch now removes timers, that are
   not needed anymore (if vdr >= 1.3.44). These are:
   * timers, that are no more valid because of EPG changes. This should avoid
@@ -706,7 +725,7 @@ new:
   'Search'. Compilation of epgsearchonly is automatically done, but can be
   switched off in the Makefile when uncommenting the line
   #WITHOUT_EPGSEARCHONLY=1. To use it simply put '-P epgsearchonly' to your
-  VDR start script. (requires >= vdr-1.3.30) 
+  VDR start script. (requires >= vdr-1.3.30)
 - new service interface "Epgsearch-searchmenu-v1.0" to call epgsearch's search
   menu from other plugins.
 - new action 'Delete created timers?' for search entries to delete all timers
@@ -720,7 +739,7 @@ new:
 - Support for wareagle-icon-patch (activate it by adding the line
   'WarEagleIcons=1' to epgsearchmenu.conf)
 - Progressbar in Now/Next beautified when using setup option 'graphical',
-  inspired by Nordlichts-EPG-Plugin 
+  inspired by Nordlichts-EPG-Plugin
 - new setup option to show/hide radio channels in the EPG menus, suggested by
   Patrice Staudt.
 - new service interface "Epgsearch-searchresults-v1.0", that returns a result
@@ -742,7 +761,7 @@ new:
   create a timer for a result. Suggested by Lari Tuononen
 fixes:
 - thanks to Darren Salt for patches for g++ 4.1 and some things concerning
-  thread safeness and code review 
+  thread safeness and code review
 - fixed some memory leaks
 - fixed calling user defined EPG commands, thanks to rzndl at vdrportal
 - fixed blacklist match for search timers, thanks to Christian Jacobsen
@@ -760,7 +779,7 @@ new:
 - when disabling/enabling a search timer you can now decide if the associated
   timers should also be disabled/enabled.
 - new built-in EPG command 'Create blacklist' to create a blacklist from any
-  EPG menu. 
+  EPG menu.
 - the summary of an entry in the menu 'recordings done' has now an additional
   button 'Aux info', that displays the content of the aux field.
 - update for the script recordingdone.sh to work also with vdr-1.3.44, thanks
@@ -773,9 +792,9 @@ new:
   don't have to apply them, but when using them, all works fine. Thanks to
   Mike Constable for providing them.
   * new script convert_info_vdr.pl. This converts the info file of recordings
-    made before vdr-1.3.44 and moves epgsearch aux data to the new aux field. 
+    made before vdr-1.3.44 and moves epgsearch aux data to the new aux field.
   * new script convert_epgsearchdone_data.pl. This converts the
-    epgsearchdone.data file adding an 'aux' section to it. 
+    epgsearchdone.data file adding an 'aux' section to it.
 - update for script mtdone2epgsearchdone.sh, thanks to Christian Jacobsen
 - update for french translation, thanks to Patrice Staudt
 - update for finnish translation, thanks to Rolf Ahrenberg
@@ -801,8 +820,8 @@ new:
   timer. Blacklists can be managed from setup or with the new search action
   'Show blacklists' or directly when editing a search. Within a search you can
   select one or more or all blacklists. If any search result is also contained
-  in a black list result set it will be skipped.  
-- the switchtimer background thread is now only active, while there are any 
+  in a black list result set it will be skipped.
+- the switchtimer background thread is now only active, while there are any
   active switch timers.
 - when you unpack the tar file, the necessary link is now automatically
   created (like text2skin)
@@ -860,7 +879,7 @@ new:
   * 'UPDD' to reload the file epgsearchdone.data, e.g. after an
     external tool has modified it.
   * 'SETS <ON|OFF>' to activate or cancel the search timer background
-    thread. 
+    thread.
 - since setup gets too big it has now the modes 'Standard' and
   'Extended'(toggled with key 'red'), suggested by Rolf Ahrenberg
 - update for finnish translation, thanks to Rolf Ahrenberg
@@ -870,13 +889,13 @@ new:
 - using 127.0.0.1 instead of resolving 'localhost' for SVDRP,
   suggested by Thiemo Gehrke
 - added script recordingdone.sh for your reccmds.conf to add a
-  recording to epgsearch's done file, thanks to Patrice Staudt, 
-  Christian Jacobsen and Mike Constabel 
+  recording to epgsearch's done file, thanks to Patrice Staudt,
+  Christian Jacobsen and Mike Constabel
 - added script mtdone2epgsearchdone.sh to move recordings from
   mastertimer's done file to epgsearch's done file, thanks to
   Christian Jacobsen.
 - thanks to Mike Constabel and Andreas Brugger for testing and bug
-  reports 
+  reports
 fixes:
 - fixed a bug after using templates, thanks to Christian Jacobsen
 
@@ -893,9 +912,9 @@ new:
   affects adding the subtitle to the timer file in manual timer
   programming. The setting 'smart' skips the subtitle if the event has
   more that 80 min.
-- search edit menu for search timers changed for future extensions: 
+- search edit menu for search timers changed for future extensions:
   'Action' now selects the job to do for the search results, currently
-  'record' (default) or 'announce only'  
+  'record' (default) or 'announce only'
 - thanks to Rolf Ahrenberg for finnish translation update
 fixes:
 - in vdr-1.3.38 some translations were broken
@@ -973,25 +992,25 @@ ATTENTION: this version converts epgsearch.conf (the file that stores
   of the previous/next event, suggested by Andreas Brugger
 - the channel number is now also listed in menu 'search results', if
   the setup option 'show channel numbers' is set, suggested by Gerhard
-  Steiner. 
+  Steiner.
 - short keys (1,2,...) to EPG commands are now also availabe in the
   EPG summary menu, suggested by Frank Kr�mmelbein
 - if VDR version >= 1.3.31 then setup has now an option to choose
   between epgsearch's timer edit menu and VDR's built-in menu (useful
   when using a patched VDR timer edit menu, suggested by Frank
-  Kr�mmelbein) 
+  Kr�mmelbein)
 - if a subtitle is present the menu for manual timer programming now
   always adds the subtitle to the timer file as default, suggested by
-  Gerhard Steiner  
+  Gerhard Steiner
 - optimized the splitting of the directory and file entry when
   re-editing a timer in manual programming, thanks to Andreas Brugger
 - the EPG menus now always display a subtitle in the form 'title ~
   subtitle' if present
 - new service 'Epgsearch-updatesearchtimers-v1.0' to trigger a search
-  timer update 
+  timer update
 - if a search timer update is triggered from the actions menu then an
-  osd message is displayed when it has finished (also when using the 
-  service 'Epgsearch-updatesearchtimers-v1.0' optional)   	  
+  osd message is displayed when it has finished (also when using the
+  service 'Epgsearch-updatesearchtimers-v1.0' optional)
 - the menu of search timers now displays the number of (active)
   searchtimers in its title
 - now checking if manual timer programming has failed and display an osd
@@ -1007,7 +1026,7 @@ fixes:
 - fixed menu navigation with respect to empty schedules, thanks to
   Darren Salt for his patch
 - fixed misaligned search entries in searches menu, thanks to Andreas
-  Brugger 
+  Brugger
 
 2005-09-04: Version 0.9.7
 new:
@@ -1027,21 +1046,21 @@ new:
   flexible way to select channels for the search procedure.
 - epgsearch now exposes its extended timer edit menu and searching the
   epg as services to other plugins (s. MANUAL or contact me, if you
-  are interested)	
+  are interested)
 - if a timer is programmed for an event (searchtimer or manual
   programming) then the summary is now also passed to the timer (allows
   displaying the summary pressing 'ok' in timer menu), thanks to
   TomG at vdrportal
 - after toggling the color buttons with '0' in the schedule menu the
   yellow/green button now move to the schedule of the
-  previous/next channel   
+  previous/next channel
 - added a patch from Uwe/egal at vdrportal that replaces vdr's
   standard schedule menu with the epgsearch plugin. Also big thanks to
   Uwe for the changes in epgsearch. After patching VDR you have to
   activate the patch in epgsearch's setup.
 - after editing a new search, its entry now gets correctly sorted in
   the list of all searches, thanks to Mike Constabel
-- added Gerhard Steiner's timercmd patch for vdr >= 1.3.25 
+- added Gerhard Steiner's timercmd patch for vdr >= 1.3.25
 - a 'back' in the start menu now always closes the osd (should solve
   some trouble with the submenu patch)
 - events without title are now ignored, regardless of the search
@@ -1050,7 +1069,7 @@ new:
   and gets replaced with the channels name
 - recording margins in search timers can now be negative (allows
   intentional cutting the begin/end of recording), suggested by Mike
-  Constabel  
+  Constabel
 - extended EPG categories are now compared case insensitive
 - updated finnish translation, thanks to Rolf Ahrenberg
 
@@ -1075,11 +1094,11 @@ fixes:
   be configured!):
    * additional item 'directory' with selection of existing
      directories with key 'blue' (also supports EPG
-     variables like "%category%" when using ext. EPG info)   
+     variables like "%category%" when using ext. EPG info)
    * item 'file' can be extended with subtitle (if present) pressing
      key 'blue'
    * item 'file' and 'directory' can be reset to standard pressing key
-     'yellow' 
+     'yellow'
    * when editing weekdays then item 'day' can be customized with a submenu
      for arbitrary weekdays selection
 - menu 'userdefined days of week' for search timers now starts with
@@ -1108,7 +1127,7 @@ fixes:
   refer to the README 'Using extended EPG info').
 - added a submenu to select an existing directory when editing a
   search timer. This menu can also be extended with entries in the file
-  epgsearchdirs.conf 
+  epgsearchdirs.conf
 - usage of variables like "%Genre%" or "%Category% in the directory
   entry of a search timer. These are replaced with the current extended
   EPG info when a timer is created.
@@ -1144,11 +1163,11 @@ fixes:
 - added a setup option to set a default for handling pay tv channels
   when searching (does not affect search timers)
 - fixed day check in searchtimer scan with respect to changes in
-  vdr-1.3.23 
+  vdr-1.3.23
 - changed detection of existing timers to reduce superfluous timer
-  modifications. 
+  modifications.
 - added channel name and subtitle to parameters for custom commands
-- small change in input logic of 'from channel' when editing a search entry 
+- small change in input logic of 'from channel' when editing a search entry
 - updated screen shots on project homepage
 
 2005-03-20: Version 0.9.2
@@ -1158,7 +1177,7 @@ fixes:
 - french translation update, thanks to Patrice Staudt
 - fixed a problem with priority and lifetime when modifying a
   timer
- 
+
 2005-03-19: Version 0.9.0
 - new search mode 'regular expressions' (POSIX(default) or Perl compatible by
   compiler switch HAVE_PCREPOSIX in the Makefile, see README - Installation)
@@ -1191,7 +1210,7 @@ fixes:
   yellow
 - fixed width of start time, when displaying channel number, thanks to
   Gerhard Steiner
- 
+
 2005-01-22: Version 0.0.7
 - Start menu can now be setup between 'schedule' and 'now'
 - runtime patch for progressbar (no need to patch vdr anymore, experimental)
@@ -1208,7 +1227,7 @@ fixes:
 2005-01-11: Version 0.0.6
 - now compiles also with vdr-1.3.18
 - Search criterion 'channel' can now be a range of channels (thanks to
-  gunnar at vdrportal) 
+  gunnar at vdrportal)
 - Setup option 'short channel names' for display in 'now',
   'next',... (only available for >= vdr-1.3.15, thanks to dido at vdrportal)
 - french translation, thanks to Patrice Staudt
@@ -1238,7 +1257,7 @@ fixes:
 
 2004-11-30: Version 0.0.4
 - New feature 'search timers' (like vdradmins 'auto timers', see the
-  readme, thanks to Rolf Ahrenberg for idea and code review) 
+  readme, thanks to Rolf Ahrenberg for idea and code review)
 - Progressbar can now be set to graphical bars in setup (you have to
   apply a vdr-patch for this, see README, thanks to Uwe/egal from vdrportal for
   creating the needed fonts)
@@ -1246,7 +1265,7 @@ fixes:
 - Added builtin command to commands menu to switch to channel of
   selected entry
 - Added builtin command to commands menu to search the current epg
-  entry in recordings (thanks to Adreas Kool for his patch)	
+  entry in recordings (thanks to Adreas Kool for his patch)
 - Key "Blue" can now also be customized by setup (switch/search)
 - Key '0' toggles key mapping of red and blue key (thanks to Roman
   (Uatschitchun) from vdrportal for his idea)
@@ -1268,7 +1287,7 @@ fixes:
 - Added duration to search criterions
 - Added commands menu in 'search results' list
 - Behaviour of red key is now the same in 'search results' as
-  in main menu of the plugin. 
+  in main menu of the plugin.
 - Updated history and readme's
 
 2004-09-11: Version 0.0.2
diff --git a/HISTORY.DE b/HISTORY.DE
index 2616d57..95957d1 100644
--- a/HISTORY.DE
+++ b/HISTORY.DE
@@ -1,24 +1,44 @@
 VDR Plugin 'epgsearch' Revision History
 ---------------------------------------
 
-2011-09-11; Version 1.0.0
+2011-xx-xx: Version 1.0.1
+neu:
+- Im Menu 'Erledigte Aufnahmen' kann nun mit der blauen Taste zu 'Verwaiste' umgeschaltet
+  werden, um Aufnahmen anzuzeigen, zu denen es keine Suchtimer mehr gibt.
+- Wenn Kanalseparatoren angezeigt werden, kann das in der Ausgabe von graphlcd Probleme 
+  machen. Um das zu  vermeiden, bitte PLUGIN_EPGSEARCH_SEP_ITEMS=--- in der Make.config
+  setzen. Die meisten Skins (ausser classic, st:tng) ersetzen '---' ohnehin in eine durch-
+  gehende Linie.
+  (Feature #857, Danke an 'KeineAhnung' für den Patch)
+- Suchtimer werden jetzt anhand absteigender Timer-Priorität abgearbeitet. Bei 
+  gleicher Priorität wird nach dem Suchbegriff sortiert. Danke an Anonym für den Patch.
+- Neuer Bugtracker unter http://projects.vdr-developer.org/projects/plg-epgsearch - Danke an Tobias Grimm
+- alten Code für vdr < 1.6.0 entfernt, Danke an Ville Skyttä für einen ganzen Haufen Patches
+- MainMenuHooks-Patch auf 1.0.1 aktualisiert
+- tschechische Ãœbersetzung, Danke an Radek Stastny
+
+fixes:
+- Crash beim Editieren von Ausschlusslisten korrigiert
+
+
+2011-09-11: Version 1.0.0
 neu:
 - unterstützt vdr-1.6.0 bis vdr-1.7.21
-- Vermeide Wiederholungen mit 'Vergleiche Zeitpunkt': dabei werden 
-  2 Sendungen anhand des Zeitpunkts der Ausstrahlung verglichen, um z.B. Wiederholungen 
+- Vermeide Wiederholungen mit 'Vergleiche Zeitpunkt': dabei werden
+  2 Sendungen anhand des Zeitpunkts der Ausstrahlung verglichen, um z.B. Wiederholungen
   innerhalb des gleichen Tages, der Woche oder des Monats zu ignorieren.
-- Globale Ausschlusslisten: Ausschlusslisten für Suchtimer können nun als global markiert 
+- Globale Ausschlusslisten: Ausschlusslisten für Suchtimer können nun als global markiert
   werden, um unerwünschte Sendungen generell auszuschliessen (wie z.B auf doppelten SD/HD-
-  Kanälen). Vorbelegung für Suchtimer ist nun "nur globale", kann aber auch auf "keine" 
+  Kanälen). Vorbelegung für Suchtimer ist nun "nur globale", kann aber auch auf "keine"
   gesetzt werden, um auch globale Ausschlusslisten zu ignorieren.
-- neue Setup-Option epgsearch.ConflCheckCmd (keine GUI dazu, also nur per setup.conf zu 
+- neue Setup-Option epgsearch.ConflCheckCmd (keine GUI dazu, also nur per setup.conf zu
   setzen!), mit der man je Konflikt-Timer einen Befehl ausführen kann, mehr dazu im MANUAL.
-- vdr-1.7.15 benutzt einen anderen SVDRP Standard-Port (6419), bitte im Setupmenü von 
+- vdr-1.7.15 benutzt einen anderen SVDRP Standard-Port (6419), bitte im Setupmenü von
   epgsearch ebenfalls anpassen!
 - Es gibt nun ein offizielles git repository für epgsearch, das die neueste Entwicklung
-  enthält. 
-  Zuerst: 
-    git clone git://projects.vdr-developer.org/vdr-plugin-epgsearch.git	
+  enthält.
+  Zuerst:
+    git clone git://projects.vdr-developer.org/vdr-plugin-epgsearch.git
   Auf den aktuellen Stand kommt man einfach mit:
     git pull
   Web-git:
@@ -28,18 +48,18 @@ neu:
   auswahl der Timerprogrammierung angeboten.
 - Suchtimer unterstützen nun content descriptors, die in vdr-1.7.11 eingeführt wurden. Damit
   können Sendungen nach ihrem Typ gesucht werden, z.B. "Film/Drama", "Dokumentation",...
-- Suchtimer haben nun eine neue Aktion "Ankündigen und Umschalten". Damit wird eine Sendung 
+- Suchtimer haben nun eine neue Aktion "Ankündigen und Umschalten". Damit wird eine Sendung
   via OSD kurz vor ihrem Start angekündigt. Mit 'Ok' kann zum entsprechenden Kanal
   gewechselt werden. Umschalttimer haben die gleiche Option erhalten.
 - Zusätzlich zur Ankündigung per OSD können neue Sendungen nun auch per Mail bekannt-
-  gegeben werden. Dazu gibt es eine neue Suchtimeraktion "Per Mail ankündigen". Man muss 
-  ausserdem das Mail-Templatefile epgsearchupdmail.templ anpassen (s. aktualisiertes 
+  gegeben werden. Dazu gibt es eine neue Suchtimeraktion "Per Mail ankündigen". Man muss
+  ausserdem das Mail-Templatefile epgsearchupdmail.templ anpassen (s. aktualisiertes
   HTML-Beispiel im conf-Verzeichnis bzw. MANUAL '13. Email notification').
 - Die Zeit in Stunden zwischen den Suchtimer-Emails kann nun im Setup eingestellt werden
   um eine Ãœberflutung des Posteingangs zu vermeiden. epgsearch puffert den Inhalt ausstehender
   Mails in der neuen Datei pendingnotifications.conf.
 - Neue Setup-Option zur Prüfung, ob es EPG für die nächsten x Stunden gibt. Falls nicht, kann
-  man per OSD und/oder Mail gewarnt werden. (Setup -> Suche und Suchtimer), vorgeschlagen von 
+  man per OSD und/oder Mail gewarnt werden. (Setup -> Suche und Suchtimer), vorgeschlagen von
   Andreas Mair.
 - neue interne Variablen:
   * %day%, %month% und %year% liefern den numerische Tag, das Monat und das
@@ -50,7 +70,7 @@ neu:
     conf/epgsearchupdmail-html.templ)
   * %timer.liveid% liefert die kodierte Timer-ID wie sie im Frontend 'live' benutzt wird.
     Damit können nun z.B. in den Suchtimer-Mails direkte Links angegeben werden.
-  * %date_iso% und %date_iso_now% ergeben das (aktuelle) Datum im Format 'YYYY-MM-DD', 
+  * %date_iso% und %date_iso_now% ergeben das (aktuelle) Datum im Format 'YYYY-MM-DD',
     vorgeschlagen von Andreas Mair.
   * %search.series% liefert 1 oder 0 abhängig vom Flag "Serienaufnahme" der Suche und kann
     im Verzeichniseintrag einer Suche oder in deren abhängigen Variablen benutzt werden.
@@ -61,12 +81,12 @@ neu:
 - Im Gedenken an pat: Update der französischen Übersetzung, Danke an Patrice Staudt
 - Update der italienischen Ãœbersetzung, Danke an Diego Pierotto
 - Update der finnischen Übersetzung, Danke an Rolf Ahrenberg und Ville Skyttä
-- Neue litauische Ãœbersetzung, Danke an Valdemaras Pipiras 
+- Neue litauische Ãœbersetzung, Danke an Valdemaras Pipiras
 - Neue slowakische Ãœbersetzung, Danke an Milan Hrala
 - neues SVDRP-Kommando 'MENU [NOW|PRG|SUM]' zum Aufruf eines der OSD-Hauptmenüs
-  oder der Inhaltsangabe der aktuellen Sendung. Falls irgendein epgsearch-Menü 
+  oder der Inhaltsangabe der aktuellen Sendung. Falls irgendein epgsearch-Menü
   geöffnet ist, schließt ein weiteres SVDRP-Kommando dieses wieder.
-- Die maximale Anzahl von Tagen für eine Timerkonfliktprüfung ist nun von 99 auf 
+- Die maximale Anzahl von Tagen für eine Timerkonfliktprüfung ist nun von 99 auf
   14 geändert.
 - Patch von Jörg Wendel für neuen graphtft-Patch
 - Zwei Episoden mit leerem Untertitel innerhalb 'Vermeide Wiederholung' werden
@@ -74,27 +94,27 @@ neu:
   wird verhindert, dass man eine Folge nur wegen eines fehlerhaften EPGs verpasst.
 - Suchtimer: Falls der Datei-Eintrag eines Timers leer ist oder "!^invalid^!" enthält,
   wird er für die Programmierung übersprungen.
-- Wiederholung vermeiden: Die Option 'ja' bei 'Vergleiche Untertitel' wurde durch 'falls 
-  vorhanden' ersetzt. Damit stuft epgsearch zwei Sendungen nur dann als 
+- Wiederholung vermeiden: Die Option 'ja' bei 'Vergleiche Untertitel' wurde durch 'falls
+  vorhanden' ersetzt. Damit stuft epgsearch zwei Sendungen nur dann als
   identisch ein, wenn die Episodennamen gleich sind und nicht leer.
 - epgsearch verwendet nun den shutdown handler (eingeführt in vdr 1.5.1) um die Unter-
   brechung eines Suchtimerupdates zu verhindern.
 - das SVDRP-Kommando UPDS zum Auslösen von Suchtimer-Updates hat nun eine neue Option
   'SCAN' mit der vor dem eigentlichen Update noch ein EPG-Scan ausgeführt wird.
-- beim Löschen eines Suchtimers wird nun auch dessen Liste erstellter Timer gelöscht, 
+- beim Löschen eines Suchtimers wird nun auch dessen Liste erstellter Timer gelöscht,
   vorgeschlagen von Sundararaj Reel
-- 'Datei' und 'Verzeichnis' an den Anfang des Timeredit-Menüs verlegt, da es zumindest bei 
-  mir das am meisten editierte Feld ist, z.B. bei wegen der Auswahl eines Ordners für die 
+- 'Datei' und 'Verzeichnis' an den Anfang des Timeredit-Menüs verlegt, da es zumindest bei
+  mir das am meisten editierte Feld ist, z.B. bei wegen der Auswahl eines Ordners für die
   Aufnahme.
 - Wareagle Icons werden bei Verwendung des VDRSymbols-Font nun automatisch aktiv (kann aber
-  mit WarEagleIcons=0 in epgsearchmenu.conf überschrieben werden), vorgeschlagen von 
+  mit WarEagleIcons=0 in epgsearchmenu.conf überschrieben werden), vorgeschlagen von
   Ronny Kornexl
 - Das korrekte Encoding für Email-Benachrichtigungen wird nun automatisch erkannt.
 - Es wird nun automatisch erkannt, ob Pin-Plugin oder Graphtft installiert sind, ebenso die
-  optionalen Libs libpcre und libtre (läßt sich im Makefile mit Kommentieren von AUTOCONFIG 
+  optionalen Libs libpcre und libtre (läßt sich im Makefile mit Kommentieren von AUTOCONFIG
   abschalten)
 - neuer Patch vdr.epgsearch-exttimeredit.diff:
-  Dieser VDR-Patch integriert epgsearch's Timer-Edit-Menü in VDR's Timer-Menü, Danke dafür 
+  Dieser VDR-Patch integriert epgsearch's Timer-Edit-Menü in VDR's Timer-Menü, Danke dafür
   an S:oren at vdr-portal.
 - einige Geschwindigkeitsverbesserungen, Danke an Tobias Bratfisch für die Patches
 - falls die VPS-Zeit von der Startzeit einer Sendung abweicht, wird die VPS-Kennung nun mit
@@ -103,17 +123,17 @@ neu:
   durch den ersten Aufruf von cPlugin::MainThreadHook ausgelöst, anstatt 20s nach dem VDR-Start.
 - Die Ãœberwachung manueller Timer ignoriert nun Timer, deren Start- oder Stopzeit vom Anwender
   geändert wurde.
-- Der Default-Pfad zu sendmail ist nun '/usr/sbin/sendmail' und kann per Makefile konfiguriert 
+- Der Default-Pfad zu sendmail ist nun '/usr/sbin/sendmail' und kann per Makefile konfiguriert
   werden, Danke an Ville Skyttä für den Patch.
 - Externe Suchtimer-Updates (via service interface oder SVDRP) aktivieren nun automatisch die
   Option "Suchtimer verw." im Setup.
-- epgsearch prüft nun neben korrekter Start- und Stopzeit des Timers auch die Aufnahmelänge 
+- epgsearch prüft nun neben korrekter Start- und Stopzeit des Timers auch die Aufnahmelänge
   bei der Prüfung auf vollständige Aufnahmen. 98% und mehr gelten als vollständig.
 - Umschalttimer sind nun ebenfalls in alle EPG-Menüs mit Suchergebnissen sichtbar.
-- Vermeide Wiederholung: Bei 'Vergleiche Beschreibung' kann nun angegeben werden wie hoch 
+- Vermeide Wiederholung: Bei 'Vergleiche Beschreibung' kann nun angegeben werden wie hoch
   die Ãœbereinstimmung sein muss, Default ist 90%.
 - falls kein Episodenname existiert, wird nun als Dateiname YYYY.MM.DD-HH.MM-Weekday
-  verwendet, um die Sortierung in manchen Frontends zu erleichtern. Danke an Dominic 
+  verwendet, um die Sortierung in manchen Frontends zu erleichtern. Danke an Dominic
   Evans für einen Patch.
 - sollte nun auch unter FreeBSD compilieren, Danke an Juergen Lock für einen Patch
 - neuer SVDRP-Befehl UPDT zum Neuladen der Suchtimer aus der Datei epgsearch.conf
@@ -132,30 +152,30 @@ fixes:
 - Absturz beim Navigieren zu benutzerdef. EPG-Menüs behoben, die zwischenzeitlich schon
   in der Vergangenheit lagen, Danke an Mike Constabel für den Hinweis
 - Im Timer-Edit-Menu war das Menu zur Tagesauswahl nicht mehr sichtbar
-- Wurde eine Sendung von mehreren Suchtimern mit "Nur ankündigen" gefunden, wurde sie auch 
+- Wurde eine Sendung von mehreren Suchtimern mit "Nur ankündigen" gefunden, wurde sie auch
   mehrfach gelistet, Danke an Andreas Mair für den Hinweis.
 - Fehler bei "Nur ankündigen"-Suchtimer im Zusammenhang mit der Anzeige des zugehörigen Such-
   timernamens korrigiert.
 - Einige Speicherlecks korrigiert, Danke an Bittor Corl für einen Patch
-- Einige Korrekturen damit es mit gcc-4.4 compiliert, Danke an firefly at vdrportal für einen 
+- Einige Korrekturen damit es mit gcc-4.4 compiliert, Danke an firefly at vdrportal für einen
   Patch.
 - Falsche Man-Sektion einiger Man-Pages korrigiert, Danke an Ville Skyttä für den Patch.
 - Einige Korrekturen bzgl. libtre-Includes, Danke an Ville Skyttä für den Patch.
 - Korrektur beim UTF8-Zeichensatz-Handling bei Timer-Filenamen, Danke an Rolf Ahrenberg für
   den Patch.
-- Absturz beim Hinzufügen sehr langer Episodentexte zum Verzeichnis eines Timers behoben, 
+- Absturz beim Hinzufügen sehr langer Episodentexte zum Verzeichnis eines Timers behoben,
   Danke an Lari Tuononen für den Hinweis.
-- Sichergestellt, dass nur noch ein Library für reguläre Ausdrücke von epgsearch benutzt 
+- Sichergestellt, dass nur noch ein Library für reguläre Ausdrücke von epgsearch benutzt
   wird, Danke an Ville Skyttä für den Patch.
 - Einige Provider haben seltsame Änderungen in den EPG-Zeiten von nur wenigen Sekunden.
-  epgsearch ignoriert nun Änderungen von weniger als 60s und ändert den zugehörigen Timer 
-  nicht. Es erfolgt auch keine Emailbenachrichtigung. Danke an cmichel at mantis für den 
+  epgsearch ignoriert nun Änderungen von weniger als 60s und ändert den zugehörigen Timer
+  nicht. Es erfolgt auch keine Emailbenachrichtigung. Danke an cmichel at mantis für den
   Hinweis.
-- möglicher Fix für das alte Problem mit dem crash in libpcre, Danke an Andreas Cz. für 
+- möglicher Fix für das alte Problem mit dem crash in libpcre, Danke an Andreas Cz. für
   den Patch und an Stefan Bauer für den Hinweis darauf.
 - Fix für einen Absturz beim Hin- und Herschalten von mit/ohne Untertitel bei Timern mit
   mit sehr langen Episodennamen, Danke an Ville Skyttä für den Patch.
-- Korrektur beim file descriptor handling bei fehlerhafter SVDRP-Verbindung, Danke an  
+- Korrektur beim file descriptor handling bei fehlerhafter SVDRP-Verbindung, Danke an
   Teemu Rantanen für einen Patch.
 - Service-Schnittstelle für Umschalttimer wegen falschem Parameterhandling korrigiert,
   Danke an gnapheus at vdrportal für den Hinweis.
@@ -171,29 +191,29 @@ neu:
 - Die Suche und damit das Suchtimer-Update sind nun etwa 25% schneller
 - Schnellere EPG-Menüs, danke an die Patch-Authoren von http://www.open7x0.org
 - Unterstützung des VDRSymbols-Font (aktivieren mit 'WarEagle=1' in epgsearchmenu.conf)
-- der EPG-Befehl 'Suche in Aufnahmen' wertet nun die info.vdr anstelle des 
+- der EPG-Befehl 'Suche in Aufnahmen' wertet nun die info.vdr anstelle des
   Aufnahmepfades aus und macht zusätzlich eine fuzzy-Suche, vorgeschlagen von
   Mase at vdrportal
-- Suchtimer mit Aktion 'Nur umschalten' und Switchtimer haben jetzt eine weitere 
-  Option 'Ton anschalten', wodurch der Ton beim Umschalten aktiviert wird, falls 
+- Suchtimer mit Aktion 'Nur umschalten' und Switchtimer haben jetzt eine weitere
+  Option 'Ton anschalten', wodurch der Ton beim Umschalten aktiviert wird, falls
   er aus war, vorgeschlagen von Michael Brückner
-- Die Timer-Benachrichtigungsmail unterstützt nun eine weitere Variable 
+- Die Timer-Benachrichtigungsmail unterstützt nun eine weitere Variable
   %timer.modreason%, in der im Klartext der Grund einer Timeränderung steht (s.
   epgsearchupdmail(-html).templ für ein Beispiel)
-- Unterstützung für einen conf.d-Mechanismus (s. MANUAL -> 14. The conf.d subdirectory), 
+- Unterstützung für einen conf.d-Mechanismus (s. MANUAL -> 14. The conf.d subdirectory),
   vorgeschlagen von Mike Constabel
-- neuer SVDRP-Befehl 'LSCC', der das Ergebnis einer Timerkonfliktprüfung 
+- neuer SVDRP-Befehl 'LSCC', der das Ergebnis einer Timerkonfliktprüfung
   zurückgibt. Zum Format der Ergebnisliste bitte ins MANUAL schauen.
 - Neuer Patch für VDR (vdr-1.5.17-progressbar-support-0.0.1.diff), der die Unter-
   stützung eines grafischen Fortschrittsbalkens in den Skins classic und st:tng
   einbaut, Danke an zulu at vdrportal.
 - '0' im Menü der erledigten Aufnahmen schaltet nun die Anzeige zwischen
   '~Episode' und 'Titel~Episode' um.
-- Das Favoriten-Menü kann jetzt auch per Setup nach 'Übersicht - Jetzt' angezeigt 
+- Das Favoriten-Menü kann jetzt auch per Setup nach 'Übersicht - Jetzt' angezeigt
   werden, vorgeschlagen von Bittor Corl
 - Im Menü "erledigte Aufnahmen" wird nun beim Datum absteigend sortiert.
 - Unterstützung für das neue Info-Key-Verhalten in vdr-1.5.13
-- Änderungen für den eingebauten graphtft-patch (bei Verwendung von 
+- Änderungen für den eingebauten graphtft-patch (bei Verwendung von
   VDR-extension-patch ist > v.37 notwendig)
 - Update des timercmd-patches für vdr-1.5.12 (patches/timercmd-0.1_1.5.12.diff)
 - Neue Datei patches/README.patches für eine Beschreibung der vorhandenen Patches
@@ -208,23 +228,23 @@ neu:
   Suchtimer-Update manuell gestartet wurde, vorgeschlagen von Andreas Mair.
 
 fixes:
-- Shiften der Uhrzeit: die Startzeit wird jetzt nur noch dann anstelle des 
+- Shiften der Uhrzeit: die Startzeit wird jetzt nur noch dann anstelle des
   Fortschrittsbalken angezeigt, wenn in der Menüvorlage nicht bereits eine
   Startzeit enthalten ist ("%time%"), so wie in der Standardvorlage. Danke
   an Getty at vdrportal für den Hinweis.
 - einige Punkte bzgl. GPL korrigiert, Danke an Thomas Günther für den Hinweis.
 - Crash behoben bei nicht vorhandenem EPG, Danke an Petri Helin für einen Patch.
-- Der Standardwert für die maximale Dauer ist nun '23:59' um Probleme mit 
-  externen Tools zu vermeiden, Danke an ralf-naujokat at bugtracker für den 
+- Der Standardwert für die maximale Dauer ist nun '23:59' um Probleme mit
+  externen Tools zu vermeiden, Danke an ralf-naujokat at bugtracker für den
   Hinweis (bug-id #371)
 - bei EPG-Änderungen mit weniger als 10 Minuten hat epgsearch bisher einen Timer
   modifiziert anstatt einen neuen anzulegen. Das verursachte jedoch Probleme mit
-  Sendungen unter 10 Minuten Länge. Die Toleranz ist deshalb nun 
+  Sendungen unter 10 Minuten Länge. Die Toleranz ist deshalb nun
   min(<Sendungsdauer>, 10 min). Danke an Janne Liimatainen für den Hinweis.
 - einige Übersetzungen korrigiert, Danke an ramirez at vdrportal für den Hinweis.
-- Scrollgeschwindigkeit in den EPG-Menüs verbessert, Danke an ramirez at vdrportal 
+- Scrollgeschwindigkeit in den EPG-Menüs verbessert, Danke an ramirez at vdrportal
   für den Hinweis.
-- Absturz behoben, wenn SIGINT während des Startens der Background-Threads 
+- Absturz behoben, wenn SIGINT während des Startens der Background-Threads
   signalisiert wird.
 - Kanalgruppen-Separatoren in 'Übersicht Jetzt/Nächste/...' werden nun ausgeblendet,
   wenn sie leer sind, wie in ':@30', Danke an Ulf Kiener für einen entspr. Patch.
@@ -242,8 +262,8 @@ fixes:
 - Auswertung von Compiler-Flags wie WITHOUT_EPGSEARCHONLY,... korrigiert.
 
 2007-09-02: Version 0.9.23
-neu: 
-- unterstützt das neue i18n-System in vdr>=1.5.7, ist aber weiterhin 
+neu:
+- unterstützt das neue i18n-System in vdr>=1.5.7, ist aber weiterhin
   abwärtskompatibel
 - bei den erweiterten EPG-Kategorien kann nun auch wertmäßig verglichen werden,
   z.B. um nach Sendungen nach einem bestimmten Jahr zu suchen. Dazu wurden neue
@@ -260,39 +280,39 @@ neu:
   <epgsearchcats.conf> in der Dokumentation aufgeführt
 - Neuer Schalter "Ignoriere fehlende Kategorien" im Edit-Menü eines Suchtimers
   bei den erweiterten EPG-Kategorien: Wenn 'Ja' gewählt ist, verhindert das, dass
-  eine Sendung aus dem Suchergebnis ausgeschlossen wird, falls die entsprechende 
+  eine Sendung aus dem Suchergebnis ausgeschlossen wird, falls die entsprechende
   Kategorie nicht im EPG vorhanden ist. Vorsicht: Ohne weitere Suchkriterien kann
   das zu einer Flut von Timern führen.
 - Suchtimer können jetzt automatisch gelöscht werden. Im Edit-Menü gibt es dafür:
     * nach x Aufnahmen, oder
     * nach x Tagen nach erster Aufnahme
   gezählt werden nur erfolgreiche Aufnahmen. Das Löschen erfolgt direkt nach dem
-  Ende der entsprechenden Aufnahme. 
+  Ende der entsprechenden Aufnahme.
 - Neue Aktion "Kopie anlegen" im Menü Suche/Aktionen zum Anlegen und Editieren einer
   Kopie der aktuellen Suche, vorgeschlagen von Michael Brückner.
 - Die Option "Verw. als Suchtimer" hat nun einen dritten Wert 'benutzerdef.' neben
   'Ja' und 'Nein', mit dem man über die Taste 'Blau' ein Zeitfenster angeben kann,
   in dem der Suchtimer aktiv sein soll. Vorgeschlagen von jo01 at vdrportal.
 - Der Fortschrittsbalken zeigt nun die Startzeit anstelle eines leeren Balkens
-  an, wenn man zu einer noch nicht laufenden Sendung shiftet, Danke an 
+  an, wenn man zu einer noch nicht laufenden Sendung shiftet, Danke an
   zulu at vdrportal für den Patch.
-- Das Menü "Zeige erstellte Timer" zeigt nun mit 'Ok' die Inhaltsangabe der 
+- Das Menü "Zeige erstellte Timer" zeigt nun mit 'Ok' die Inhaltsangabe der
   erstellten Timer. Ebenfalls funktionieren die Kurztasten '1..9' für die EPG-
   Befehle.
 - eingebauter pin-plugin patch (epgsearch muss nicht mehr gepatcht werden)
-  Zum Aktivieren bitte mit 'USE_PINPLUGIN' in VDR's Make.config kompilieren 
+  Zum Aktivieren bitte mit 'USE_PINPLUGIN' in VDR's Make.config kompilieren
   (ist mit VDR extension patch bereits automatisch der Fall)
 - eingebauter graphtft-plugin patch (epgsearch muss nicht mehr gepatcht werden)
-  Zum Aktivieren bitte mit 'USE_GRAPHTFT' in VDR's Make.config kompilieren 
+  Zum Aktivieren bitte mit 'USE_GRAPHTFT' in VDR's Make.config kompilieren
   (ist mit VDR extension patch bereits automatisch der Fall)
 - Update der finnischen Ãœbersetzung, Danke an Rolf Ahrenberg
 - Update der französischen Übersetzung, Danke an Patrice Staudt
 fixes:
 - Fehler beim Anlegen eines Timers korrigiert, nachdem man durch die Inhalts-
   angabe navigiert hat, danke an Rolf Ahrenberg für den Hinweis.
-- Beschriftung "Aufnehmen" bzw. "Timer" im Menü Inhaltsangabe je nach vorhandenem 
+- Beschriftung "Aufnehmen" bzw. "Timer" im Menü Inhaltsangabe je nach vorhandenem
   Timer korrigiert.
-- Fehler bei Umschalttimern und geändertem EPG behoben, Danke an Juergen Urban 
+- Fehler bei Umschalttimern und geändertem EPG behoben, Danke an Juergen Urban
   für einen Patch
 - einige Compiler-Warnungen in g++-4.2 gefixed, Danke an Michael Brückner für den
   Hinweis.
@@ -302,12 +322,12 @@ fixes:
 
 2007-05-27: Version 0.9.22
 neu:
-- neue Option in der Timerkonflikt-Prüfung "Beim Beginn einer Aufnahme": 
+- neue Option in der Timerkonflikt-Prüfung "Beim Beginn einer Aufnahme":
   Dadurch wird beim Start einer Aufnahme eine Konfliktprüfung durchgeführt und
-  per OSD über Konflikte informiert, wenn der Konflikt innerhalb der nächsten 
-  2h auftritt. Somit werden also auch Timer überwacht, die nicht innerhalb 
+  per OSD über Konflikte informiert, wenn der Konflikt innerhalb der nächsten
+  2h auftritt. Somit werden also auch Timer überwacht, die nicht innerhalb
   epgsearch programmiert wurden, ebenso Sofortaufnahmen.
-- Neues Service-Interface "Epgsearch-services-v1.0": Damit können andere 
+- Neues Service-Interface "Epgsearch-services-v1.0": Damit können andere
   Plugins auf viele Komponenten von epgsearch wie z.B. Suchtimer, Setup-Werte,
   ... zugreifen, diese verwalten und Aufgaben wie 'Nach Wiederholung suchen'
   ausführen (Mehr dazu in services.h).
@@ -319,7 +339,7 @@ fixes:
   gation, um Probleme mit Skins zu vermeiden und andere Bugs zu beheben.
 - beim Test auf Wiederholungen wird nun auch im Vergleich mit dem Done-File
   nur der alphanumerische Teil von Titel und Episode verwendet.
-- weiteres Problem mit Anführungszeichen beim Aufrunf von EPG-Befehlen 
+- weiteres Problem mit Anführungszeichen beim Aufrunf von EPG-Befehlen
   korrigiert.
 - Lizenzänderungen und -ergänzungen für den Einzug ins Debian-Repository
 - Fehler in der Zeitanzeige bei benutzerdef. Zeiten in Verbindung mit Zeit-
@@ -329,15 +349,15 @@ fixes:
 
 2007-04-29: Version 0.9.21
 neu:
-- Unterstützung für den MainMenuHooksPatch. Dieser löst den  
-  vdr-replace-schedulemenu-Patch ab. Der neue Patch wird auch von anderen 
+- Unterstützung für den MainMenuHooksPatch. Dieser löst den
+  vdr-replace-schedulemenu-Patch ab. Der neue Patch wird auch von anderen
   Plugins verwendet. Somit ist dafür nur noch ein Patch notwendig. Der alte
   Patch wird vorübergehend ebenfalls noch unterstützt.
-- Die Sendungs-Ankündigungen per OSD wurden vollständig überarbeitet. Statt 
+- Die Sendungs-Ankündigungen per OSD wurden vollständig überarbeitet. Statt
   einer Anzeige jeder einzelnen Sendung erhält man nun
   "x neue Sendungen gefunden! Anzeigen?". Mit 'Ok' wird ein Menü aller Sendungen
   eingeblendet, das die üblichen Funktionen anderer EPG-Menüs hat. Mit "Editieren"
-  kann man die Ankündigungs-Einstellungen verändern (z.B. "Erneut ankündigen: 
+  kann man die Ankündigungs-Einstellungen verändern (z.B. "Erneut ankündigen:
   ja/nein" oder erst wieder nach Tag x ankündigen).
 - Timer-Konflikt-Benachrichtigungen per OSD können nun während einer Wieder-
   gabe unterdrückt werden. Die Benachrichtigung erfolgt aber trotzdem, wenn
@@ -345,7 +365,7 @@ neu:
 - alle sub-Plugins (epgsearchonly, quickepgsearch, conflictcheckonly) haben
   nun eine Setupoption zum Ein-/Ausschalten des Hauptmenüeintrags. Danke an
   Tobias Grimm für den Patch.
-- Kanalname in der Aux-Info von manuellen Timern, Danke an Rolf Ahrenberg 
+- Kanalname in der Aux-Info von manuellen Timern, Danke an Rolf Ahrenberg
   für den Patch.
 - neues Skript undoneepgsearch.sh zum Rücksetzen eines Timers im Aufnahmemenü.
   Mehr dazu unter:
@@ -353,11 +373,11 @@ neu:
   Danke an den Author Christian Jacobsen
 - Update der französischen Übersetzung, Danke an Patrice Staudt.
 - Update der finnischen Ãœbersetzung, Danke an Rolf Ahrenberg.
-- Im Menü 'Timer-Konflikt-Details' wird im Titel nun auch das Datum des 
+- Im Menü 'Timer-Konflikt-Details' wird im Titel nun auch das Datum des
   Konflikts angezeigt, vorgeschlagen von Rusk at vdrportal.
-- Das Passwort für die Mail-Authentifizierung wird im OSD nun versteckt 
+- Das Passwort für die Mail-Authentifizierung wird im OSD nun versteckt
   angezeigt, d.h. mit '***...'
-- Das Setup für Mail-Benachrichtigungen hat nun auch ein "Senden an"-Feld, 
+- Das Setup für Mail-Benachrichtigungen hat nun auch ein "Senden an"-Feld,
   weil einige Provider keine Mails mit gleichem Sender/Empfänger akzeptieren.
   Falls das Feld nicht besetzt ist, benutzt epgsearch automatisch den Sender
   als Empfänger.
@@ -368,16 +388,16 @@ neu:
 - '&' zu den erlaubten Zeichen eines Suchbegriffs hinzugefügt
 fixes:
 - Die Tags in der Aux-Info von Timern, die per Suchtimer erzeugt wurden, sind nun
-  XML-konform (keine Großbuchstaben oder Leerzeichen). Z.B. wird aus "Search timer" 
-  nun "searchtimer". Also nicht wundern, wenn beim ersten Suchtimer-Update alle 
+  XML-konform (keine Großbuchstaben oder Leerzeichen). Z.B. wird aus "Search timer"
+  nun "searchtimer". Also nicht wundern, wenn beim ersten Suchtimer-Update alle
   Timer aktualisiert werden, die von Suchtimern angelegt wurden. Danke an Rolf
   Ahrenberg für den Hinweis.
 - Update von recordingdone.sh wegen der vorherigen Änderung, Danke an Mike Constabel
   für einen entsprechenden Patch.
 - segfault bei falsch konfigurierten erw. EPG-Kategorien behoben.
-- Scrollende Menütexte funktionieren nun wieder, wenn der gewählte Skin das 
+- Scrollende Menütexte funktionieren nun wieder, wenn der gewählte Skin das
   unterstützt. Danke an ufauser at vdrportal für den Hinweis.
-- Die Setup-Option "Verw. Suchtimer" wird nun automatisch aktiv, wenn ein 
+- Die Setup-Option "Verw. Suchtimer" wird nun automatisch aktiv, wenn ein
   Suchtimer aktiv gesetzt wird oder ein manuelles Suchtimer-Update gestartet
   wird.
 - Behandlung von Anführungszeichen in Titel/Untertitel bei Übergabe an benutzerdef.
@@ -397,7 +417,7 @@ neu:
   * anhand Sendungskennung
   * anhand Kanal/Uhrzeit
   Mehr dazu in der README.DE
-  (unter 1.4.4 Setup/Timer-Programmierung/Standard-Timer-Prüfmethode)  
+  (unter 1.4.4 Setup/Timer-Programmierung/Standard-Timer-Prüfmethode)
 - die im Favoritenmenü verwendete Zeitspanne kann jetzt über das Setup
   angepaßt werden. Standard sind 24h.
 - Sendungs-Ankündigungen: Wenn während der Ankündigung einer Sendung eine der
@@ -405,7 +425,7 @@ neu:
   Ankündigungen vollständig (bei den Tasten '0'  oder 'Ok') oder nur für die
   nächsten  x  Tage (bei den Tasten '1' bis '9') unterdrückt werden
   sollen. Bestätigt man diese Abfrage durch ein erneutes 'Ok', wird die
-  Einstellung entsprechend übernommen. 
+  Einstellung entsprechend übernommen.
 - Mit der neuen Setup-Option "Keine Ankündigungen bei Wiedergabe" können
   Ankündigungen von Sendungen während einer Wiedergabe nun abgeschaltet werden.
   Vorgeschlagen von Andreas Mair.
@@ -419,7 +439,7 @@ neu:
 - neues Zusatzplugin 'quickepgsearch': Dieses erstellt einen Hauptmenüeintrag
   "Schnellsuche", der dazu dient einfach nach einem beliebigen Begriff im EPG
   zu suchen. Mit '-Pquickepgsearch' einbinden. Vorgeschlagen von
-  SurfaceCleanerZ at vdrportal. 
+  SurfaceCleanerZ at vdrportal.
 - neue Setup-Option "Kanäle begrenzen von 1 bis" zur Beschleunigung von
   epgsearch's Aufruf. Ist der aktuelle Kanal über dem Limit werden alle Kanäle
   angezeigt. Vorgeschlagen von Uwe at vdrportal.
@@ -448,15 +468,15 @@ neu:
 - Danke an Rolf Ahrenberg für das Update der finnischen Übersetzung
 fixes:
 - manuell programmierte Timer werden durch Suchtimer nun weder gelöscht noch
-  geändert.  
+  geändert.
 - das Zusatzplugin conflictcheckonly wurde kompiliert auch wenn
   WITHOUT_CONFLICTCHECKONLY im Makefile gesetzt war, Danke an Ronny Kornexl
   für den Hinweis.
 - Für Suchbegriff und Verzeichnis gibt es nun auch die Zeichen 'ß' (nur bei
-  Sprache Deutsch) und '@'. 
+  Sprache Deutsch) und '@'.
 - Bei Verwendung von 'Wiederholung verm.' war es in bestimmten Fällen möglich,
   dass nicht die Erstausstrahlung, sondern eine Wiederholung programmiert
-  wurde. 
+  wurde.
 - Eine Suche mit "Verw. Wochentag" UND "Verw. Uhrzeit", bei der "Start vor:"
   nach Mitternacht liegt, findet nun auch Sendungen des nächsten Tages bis
   "Start vor:", z.B. "Start nach 22:00" und "Start vor 03:00" am Montag findet
@@ -476,15 +496,15 @@ fixes:
   ursprünglich angelegt hat.
 - neue Variablen:
   * '%search.query%' für die Verwendung im Aufnahmeverzeichnis eines
-    Suchtimers. Diese wird mit dem Suchbegriff eines Suchtimers ersetzt. 
+    Suchtimers. Diese wird mit dem Suchbegriff eines Suchtimers ersetzt.
   * '%videodir%' VDR Videoverzeichnis (z.B. /video)
   * '%plugconfdir%' VDR plugin Konfigurationsverzeichnis
-    (z.B. /etc/vdr/plugins) 
+    (z.B. /etc/vdr/plugins)
   * '%epgsearchdir%' epgsearchs Konfigurationsverzeichnis
-    (z.B. /etc/vdr/plugins/epgsearch)  
+    (z.B. /etc/vdr/plugins/epgsearch)
 - die Syntax des 'system'-Kommandos innerhalb einer Uservariable hat sich
   geändert, um die Parameter flexibler übergeben zu können. Sie lautet nun:
-  %uservar%=system(/path/to/script[, parameters]) 
+  %uservar%=system(/path/to/script[, parameters])
   wobei das optionale 'parameters' ein beliebiger Ausdruck unter Verwendung
   weiterer Uservariablen sein kann. Ausnahme: es dürfen nicht direkt weitere
   system-Calls oder bedingte Ausdrücke verwendet werden.
@@ -495,7 +515,7 @@ fixes:
   verändert hat.
 - nach Änderungen im Setup wurden Menü-Templates aus epgsearchmenu.conf wieder
   auf den Standard zurückgesetzt, Danke an s.krueger at vdrportal für den
-  Hinweis. 
+  Hinweis.
 - vorhandene VDR-Wiederholungstimer werden durch das Suchtimer-Update nicht
   mehr zu normalen Timern abgeändert.
 
@@ -518,7 +538,7 @@ neu:
   der Lieblingssendungen der nächsten 24h zeigen. Dazu zunächst im Setup
   'Zeige Favoriten-Menü' aktivieren. Um epgsearch zu sagen, was die
   Lieblingssendungen sind, dann Suchen anlegen/editieren und dort 'In
-  Favoritenmenü verw.' auswählen.  
+  Favoritenmenü verw.' auswählen.
 - neue Setup-Option für den Timer-Konflikt-Check: 'Nach jeder
   Timer-Programmierung'. Das bewirkt eine Konfliktprüfung nach jeder manuellen
   Timer-Programmierung und erzeugt sofort eine OSD-Nachricht, falls der
@@ -526,7 +546,7 @@ neu:
 - neue Email-Benachrichtigungen über Suchtimer-Updates oder
   Timer-Konflikte. Der Inhalt der Mails kann beliebig gestaltet werden. Bitte
   im MANUAL-Abschnitt 'Email notification' für weitere Details nachlesen.
-- epgsearch hat jetzt einen Satz von man-Pages. Ein GROSSES Danke an Mike 
+- epgsearch hat jetzt einen Satz von man-Pages. Ein GROSSES Danke an Mike
   Constabel (vejoun at vdrportal), der die ganze Arbeit des Umschreibens,
   Korrigierens und Formattieren gemacht hat. Die man-Pages enthalten die
   README's, das MANUAL, sowie eine Beschreibung aller conf's, die epgsearch
@@ -534,10 +554,10 @@ neu:
   epgsearch-src-Verzeichnis einrichten.
 - man kann jetzt eigene Variablen definieren um diese im
   Standard-Aufnahme-Verzeichnis, im Suchtimer-Aufnahme-Verzeichnis oder in den
-  Menü-Templates zu verwenden. Nachdem das Ganze etwas komplex ist, bitte den 
+  Menü-Templates zu verwenden. Nachdem das Ganze etwas komplex ist, bitte den
   Abschnitt 'User defined variables' im MANUAL lesen. Hier nur ein Beispiel was
   möglich ist:
-     # Weekday, Date, Time   
+     # Weekday, Date, Time
      %DateStr%=%time_w% %date% %time%
      # Themes or Subtitle or Date
      %ThemesSubtitleDate1%=%Subtitle% ? %Subtitle% : %DateStr%
@@ -549,10 +569,10 @@ neu:
   wird anstelle der Anzeige der Inhaltsanzeige. Vorschlag von malachay at vdrportal
 - wenn ein Timer von einem Suchtimer erzeugt wurde, wird nun in epgsearch's
   eigenem Timer-Edit-Menü der Name der Suche am Ende in einem nicht
-  selektierbaren Feld angezeigt. 
+  selektierbaren Feld angezeigt.
 - wenn eine Sendung via Suchtimer angekündigt wird, kann man nun dafür einen
   Timer erzeugen, wenn man während der Ankündigung die rote Taste drückt,
-  vorgeschlagen von Andreas Mair. 
+  vorgeschlagen von Andreas Mair.
 - Wenn Suchtimer im Setup abgeschaltet sind, dann bewirkt ein Anlegen/Ändern
   eines Suchtimers nun auch eine automatische Aktivierung im Setup,
   vorgeschlagen von Andreas Mair.
@@ -561,7 +581,7 @@ neu:
 - die Prüfung auf Vollständigkeit einer Aufnahme erlaubt nun auch kurze
   Unterbrechungen (unter 2s, z.B. bei einem Kanal-PID-Wechsel).
 - neue SVDRP-Befehle:
-  * LSTC [channel group name] 
+  * LSTC [channel group name]
     zeigt alle Kanalgruppen an oder nur die optional angegebene
   * NEWC <channel group settings>
     erstellt eine neue Kanalgruppe, Format wie in epgsearchchangrps.conf
@@ -573,7 +593,7 @@ neu:
     benennt eine Kanalgruppe um
   * LSTB [ID] zeigt alle Ausschlusslisten an, oder nur diejenige mit der
     angegebenen ID (Format ist dasgleiche wie in epgsearchblacklists.conf,
-    s. MANUAL) 
+    s. MANUAL)
   * NEWB <settings> zum Anlegen einer neuen Blacklist
     Anmerkung: der Wert ID wird ignoriert und von epgsearch automatisch vergeben.
   * DELB <ID> zum Löschen einer Blacklist mit der angegebenen ID
@@ -585,20 +605,20 @@ neu:
     Werten zurück.
   * 'QRYF [hours]' liefert die Ergebnisse des Favoriten-Menüs (s. MANUAL). Der
     optionale Parameter gibt die Anzahl der auszuwertenden Stunden
-    an. Standardwert ist 24h. 
+    an. Standardwert ist 24h.
   * 'LSTE [ID] liefert die erweiterten EPG-Kategorien, wie sie in
     epgsearchcats.conf definiert sind, oder nur diejenige mit der angegebenen
-    ID. 
+    ID.
   * 'MODS ID ON|OFF' schaltet die Option 'als Suchtimer verw.' ein/aus.
   * 'SETP option' liefert den aktuellen Wert einer Setup-Option (s. MANUAL).
 - epgsearch hat jetzt ein Bug-Tracking-System (deutsch) und eine Mailinglist
-  (englisch): 
+  (englisch):
   http://www.vdr-developer.org/mantisbt
   http://www.vdr-developer.org/mailman/listinfo/epgsearch
-  Danke an die Betreiber von developer.org 
+  Danke an die Betreiber von developer.org
 - neues Service-Interface "Epgsearch-switchtimer-v1.0" zum Zugriff und zur
   Verwaltung der Umschaltlisten (switch timer). Danke an Dirk Leber für die
-  Erweiterung.  
+  Erweiterung.
 - Update für die französische Übersetzung (mit Setup-Hilfe!), Danke an Patrice
   Staudt
 - Danke an Rolf Ahrenberg für das Update der finnischen Übersetzung
@@ -610,17 +630,17 @@ fixes:
 - Behandlung des Zeichens '|' beim Wechsel des Suchmodus einer Suche
   korrigiert, Danke an Chello at vdrportal für den Hinweis
 - einige Suchmodi in den epgsearchcats.conf-Beispielen für die Mehrfachauswahl
-  geändert. 
+  geändert.
 - zusätzliche Linefeeds in der SVDRP-Antwort von LSTS entfernt, Danke an
   Andreas Mair für den Hinweis
 - Kanal-Kriterium 'ohne Pay-TV' wurde ignoriert, Danke an Andreas Mair für den
-  Hinweis 
+  Hinweis
 - Min/Max-Initial-Werte für Suchkriterium "Dauer" korrigiert, Danke an Mike
   Constabel für den Hinweis
 - einen Bug bei der Auswahl der Konfliktprüfung nach jedem Suchtimer-Update
   behoben, Danke an Ronny Kornexl für den Hinweis
 - '--remove-destination' ins Makefile integriert, wie in vdr-1.4.2-3
-  eingeführt. 
+  eingeführt.
 
 2006-08-07: Version 0.9.17d (maintenance release)
 fixes:
@@ -644,7 +664,7 @@ fixes:
 2006-06-06: Version 0.9.17a (bug fix release)
 - Menü 'Timer-Konlfikte' wurde automatisch geschlossen, wenn
   Wiederholungstimer existierten, Danke an lostinspc at vdrportal
-- einige Compiler-Probleme mit gcc-2.95 und gcc-4.1.0 behoben, Danke an 
+- einige Compiler-Probleme mit gcc-2.95 und gcc-4.1.0 behoben, Danke an
   ferdi03 at vdrportal, smudo81 at vdrportal, toxic-tonic at vdrportal
 
 2006-06-05: Version 0.9.17
@@ -652,7 +672,7 @@ fixes:
 - Die Logik beim Springen durch die benutzerdef. EPG-Zeiten hat sich geändert:
   Es können jetzt auch Zeiten des nächsten Tages erreicht werden, wenn diese
   nicht mehr als 20 Stunden in der Zukunft liegen. Danke an egal at vdrportal und
-  CKone at vdrportal.  
+  CKone at vdrportal.
 - epgsearch hat jetzt einen eigenen Timer-Konflikt-Check, der über das Setup
   angepasst werden kann. Einstellbar sind relevante Prioritäten, die
   Zeitspanne der Prüfung und die relevante Dauer eines Konflikts. Begleitet
@@ -660,7 +680,7 @@ fixes:
   bei der Auflösung von Konflikten hilft. Vielen Dank an Mike Constabel für
   seine ausführlichen Tests.
 - Falls über einen Konflikt per OSD eine Nachricht erfolgt, kann nun mit 'Ok'
-  direkt in die Konflikt-Ãœbersicht des Konflikt-Managers gewechselt werden.  
+  direkt in die Konflikt-Ãœbersicht des Konflikt-Managers gewechselt werden.
 - Falls jemand für die Konfliktprüfung einen eigenen Hauptmenü-Eintrag opfern
   will, kann dazu das Mini-Plugin 'conflictcheckonly' verwenden, das
   automatisch mitkompiliert wird. Wie üblich mit '-Pconflictcheckonly'
@@ -683,14 +703,14 @@ fixes:
 - epgsearchmenu.conf wird nun nicht mehr bei jedem Plugin-Aufruf neu geladen,
   weil das nur zum Testen eines conf-Files sinnvoll ist. Um das permanente
   Neuladen trotzdem zu aktivieren, kann man als Plugin-Parameter '-r' oder
-  '--reloadmenuconf' in der runvdr angeben. 
+  '--reloadmenuconf' in der runvdr angeben.
 - Danke an Rolf Ahrenberg für das Update der finnischen Übersetzung
 - HISTORY.DE hinzugefügt
 fixes:
 - Beim Laden der epgsearchmenu.conf wird im Fehlerfall nun auf ein
-  Default-Menü geschaltet. 
+  Default-Menü geschaltet.
 - Behandlung von '%' in  LSTS für SVDRP bei vdr > 1.3.44 korrigiert, Danke an
-  Mike Constabel 
+  Mike Constabel
 - Rechtzeitiges Laden der epgsearchmenu.conf für epgsearchonly und das
   Service-Interface "Epgsearch-searchmenu-v1.0", Danke an Daniel Dorau für den
   Hinweis.
@@ -715,10 +735,10 @@ neu:
 
   MenuWhatsOnNow=%chnr%:3|%progrt2s%:5| %time% %t_status%:8|%category%:6| %title% ~ %subtitle%:35
 
-  im Menü 'Übersicht Jetzt' Einträge die mit der Kanalnummer beginnen, gefolgt von einem Fortschrittsbalken 
+  im Menü 'Übersicht Jetzt' Einträge die mit der Kanalnummer beginnen, gefolgt von einem Fortschrittsbalken
   im text2skin-Stil, der Startzeit, dem Timerstatus, der EPG-Kategorie (z.B. 'Spielfilm') sowie schließlich Titel
   und Untertitel.
-  Jedes Menü ('Übersicht Jetzt', 'Nächste', benutzerdef. Zeiten, 'Programm' und 'Suchergebnisse' kann mit einer 
+  Jedes Menü ('Übersicht Jetzt', 'Nächste', benutzerdef. Zeiten, 'Programm' und 'Suchergebnisse' kann mit einer
   eigenen Zeile angepaßt werden. Weitere Infos dazu im MANUAL.
 
 - WICHTIGE Änderung bei Suchtimern: epgsearch entfernt nun Timer, die nicht mehr notwendig sind (ab vdr >= 1.3.44).
@@ -728,9 +748,9 @@ neu:
   * Timers, bei denen die Suchkriterien nicht mehr stimmen, z.B. nach Änderung im Suchtimer. Derartige Timer müssen
     also nicht mehr manuell gelöscht werden.
   Ausnahme: Timer, deren Start/Stop-Zeit manuell geändert wurde. Diese werden nicht gelöscht oder verändert.
-- Neuer Such-Modus 'unscharf': Damit wird eine 'Fuzzy'-Suche durchgeführt, die einen Algorithmus verwendet, wie er 
+- Neuer Such-Modus 'unscharf': Damit wird eine 'Fuzzy'-Suche durchgeführt, die einen Algorithmus verwendet, wie er
   auch bei agrep benutzt wird. Die Fehler-Toleranz kann im Feld 'Toleranz' eingestellt werden.
-- Neue Setup-Option "Timer mit 'Aufnehmen' sofort anlegen", wie in vdr-1.3.38 eingeführt. Bei Drücken von 'Aufnehmen' 
+- Neue Setup-Option "Timer mit 'Aufnehmen' sofort anlegen", wie in vdr-1.3.38 eingeführt. Bei Drücken von 'Aufnehmen'
   wird damit sofort ein Timer angelegt. Kleine Abweichung zur VDR-Logik: Wenn die Sendung bereits läuft oder innerhalb
   der nächsten Vorlauf-Puffer-Minuten +2 beginnt, wird trotzdem das Timer-Edit-Menü angezeigt, damit man noch Änderungen
   z.B. beim Verzeichnis vornehmen kann, was bei einer lfd. Aufnahme ja nicht mehr geht. Die ganze Logik kann per Setup
@@ -742,9 +762,9 @@ neu:
 - Der Standard-Menü-Eintrag lautet jetzt nicht mehr 'Suche' sondern 'Programmführer'
 - einige Leute wollten einen eigenen Hauptmenü-Eintrag für epgsearch's Suchen-Menü. Deshalb gibt's nun ein Mini-Plugin
   names 'epgsearchonly' das einfach dieses Menü aufruft. Sein Hauptmenu-Eintrag lautet 'Suche'. Übersetzt wird es automatisch
-  mit epgsearch. Man kann das aber auch im Makefile abschalten, indem man 
+  mit epgsearch. Man kann das aber auch im Makefile abschalten, indem man
   #WITHOUT_EPGSEARCHONLY=1 auskommentiert. Zur Verwendung einfach '-P epgsearchonly' ins VDR-Startskript eintragen
-  (ab vdr-1.3.30) 
+  (ab vdr-1.3.30)
 - Neues Service-Interface "Epgsearch-searchmenu-v1.0" um epgsearch's Suchmenu aufzurufen (genau das macht epgsearchonly ;-) )
 - Neue Aktion 'Erstellte Timer löschen?' um alle Timer eines Suchtimers zu entfernen. Betrifft nicht aufnehmende Timer.
 - Beim Löschen einer Suche erfolgt nun eine Abfrage, ob alle zugehörigen Timer ebenfalls gelöscht werden sollen.
@@ -753,24 +773,24 @@ neu:
 - Eine Sendung, die gerade aufgenommen wird, hat in den EPG-Menüs nun ein 'R' statt eines 'T'.
 - Unterstützung des wareagle-icon-patch (kann in der epgsearchmenu.conf mit 'WarEagleIcons=1' aktiviert werden)
 - Fortschrittsbalken in Jetzt/Nächste 'verschönert' (bei Verwendung der Setup-Option 'graphisch'),
-  angelehnt an Nordlichts-EPG-Plugin 
+  angelehnt an Nordlichts-EPG-Plugin
 - Neue Setup-Option um Radio-Kanäle in den EPG-Menüs zu unterdrücken, vorgeschlagen von Patrice Staudt.
-- Neues Service-Interface "Epgsearch-searchresults-v1.0", das die Suchergebnisse einer übergebenen Suche zurückliefert, 
+- Neues Service-Interface "Epgsearch-searchresults-v1.0", das die Suchergebnisse einer übergebenen Suche zurückliefert,
   vorgeschlagen von Andreas Brugger
-- Damit das Setup nicht platzt, wurden einige Optionen entfernt, weil diese mit dem konfigurierbaren Menü nun genauso machbar 
+- Damit das Setup nicht platzt, wurden einige Optionen entfernt, weil diese mit dem konfigurierbaren Menü nun genauso machbar
   sind:
   * "Zeige Fortschrittsbalen in 'Nächste', default ist 'nein'
   * "Anzeigenbreite für Fortschrittsbalken", default ist 4
   * "Zeige kurze Kanalnamen", default ist 'ja'
   * "Zeige Untertitel in EPG-Menüs', default ist 'ja'
 - Update der finnischen Ãœbesetzung, Danke an Rolf Ahrenberg
-- Das Aux-Feld eines Timers wird nun komplett im XML-Stil gefüllt (ab vdr-1.3.44). Deshalb gibt es auch ein Update für die 
+- Das Aux-Feld eines Timers wird nun komplett im XML-Stil gefüllt (ab vdr-1.3.44). Deshalb gibt es auch ein Update für die
   recordingdone.sh im 'scripts'-Unterverzeichnis. Danke an Mike Constabel für den Patch des Skripts.
 - Das Suchtimer-Update läuft nun immer mit niedriger Priorität, vorgeschlagen von Christian Jacobsen
-- neues SVDRP-Kommando 'FIND'. Damit kann ein Sendung gesucht werden. Zurückgeliefert wird eine Ergebnisliste bestehend aus 
+- neues SVDRP-Kommando 'FIND'. Damit kann ein Sendung gesucht werden. Zurückgeliefert wird eine Ergebnisliste bestehend aus
   'NEWT'-Zeilen, die somit direkt zum Programmieren des Timers verwendet werden können. Vorgeschlagen ovn Lari Tuononen.
 fixes:
-- Danke an Darren Salt für einige Patches im Zusammenhang mit g++ 4.1, Thread safeness und code review 
+- Danke an Darren Salt für einige Patches im Zusammenhang mit g++ 4.1, Thread safeness und code review
 - einige Speicherlecks geflickt.
 - Korrektur für Aufruf von benutzerdef. EPG-Befehlen, Danke an rzndl at vdrportal
 - Korrektur für blacklist-Suche bei Suchtimern, Danke an Christian Jacobsen
@@ -790,12 +810,12 @@ neu:
 - Die Inhaltsangabe eines Eintrags im Menü 'Erledigte Aufnahmen' hat nun einen zusätzlichen Button
   'Zusatzinfo', der den Inhalt des Aux-Feld (in vdr-1.3.44 eingeführt) anzeigt, falls verfügbar.
 - Update für das Skript recordingdone.sh, funktioniert nun auch mit vdr-1.3.44, Danke an Mike Constabel
-  für die Anpassungen. 
-- Konvertierungsskripts für das Upgrade auf vdr-1.3.44: Aufgrund der geänderten Behandlung der 
+  für die Anpassungen.
+- Konvertierungsskripts für das Upgrade auf vdr-1.3.44: Aufgrund der geänderten Behandlung der
   Zusatzinfos in der Inhaltsangabe (summary -> aux) funktionieren einige Suchtimer-Features nicht mit
   Aufnahmen die vor dem Umstieg auf vdr-1.3.44 gemacht wurden. Das betrifft das done-Feature und das
-  automatische Löschen von Aufnahmen. Wer die Skripts nicht anwendet, hat einfach einige überflüssige 
-  Aufnahmen mehr ;-). Muss also nicht unbedingt gemacht werden, aber mit den Skripts läuft alles wie 
+  automatische Löschen von Aufnahmen. Wer die Skripts nicht anwendet, hat einfach einige überflüssige
+  Aufnahmen mehr ;-). Muss also nicht unbedingt gemacht werden, aber mit den Skripts läuft alles wie
   gewohnt. Danke an Mike Constabel, der die Skripts gebaut hat.
   * neues Skript convert_info_vdr.pl. Dieses konvertiert das Info-File von Aufnahmen und verschiebt die
     Zusatzinfo von epgsearch in das aux-Feld.
@@ -805,10 +825,10 @@ neu:
 - Update der französischen Übersetzung, Danke an Patrice Staudt
 - Update der finnischen Ãœbersetzung, Danke an Rolf Ahrenberg
 fixes:
-- Das done-Feature funktioniert nun auch mit vdr-1.3.44, Danke an Mike Constabel 
+- Das done-Feature funktioniert nun auch mit vdr-1.3.44, Danke an Mike Constabel
 - fix für hohe CPU-Last durch Suchtimer-Thread im 30sek-Abstand, Danke an sledgehammer at vdrportal
 - Das automatische Verlinken des Tarballs wurde wieder entfernt, gewünscht von Distri-Maintainern
-- einige Compiler-Warnings gefixed bei Verwendung von -Wformat=2, Danke an Darren Salt für den Hinweis und 
+- einige Compiler-Warnings gefixed bei Verwendung von -Wformat=2, Danke an Darren Salt für den Hinweis und
   einen Patch
 
 2006-02-28: Version 0.9.13
@@ -822,11 +842,11 @@ neu:
   und legt die Sendungen fest, die in einer Suche oder einem Suchtimer ignoriert werden sollen.
   Ausschlusslisten können im Setup oder in der neuen Such-Aktion 'Ausschlusslisten anzeigen' sowie
   direkt beim Editieren einer Suche verwaltet werden. In der Suche selbst können eine, mehrere oder
-  alle Ausschlusslisten ausgewählt werden. Falls ein Suchergebnis auch in einer der gewählten 
+  alle Ausschlusslisten ausgewählt werden. Falls ein Suchergebnis auch in einer der gewählten
   Ausschlusslisten enthalten ist, wird es ignoriert.
 - Der Hintergrund-Thread für die Umschalttimer läuft jetzt nur noch, wenn auch ein Umschalttimer aktiv ist.
 - Beim entpacken des tar-Files wird der Link zu epgsearch-x.x.x nun automatisch erzeugt (wie bei text2skin)
-- Die Ergebnisliste bei "Wiederholungen anzeigen" zeigt nun nicht mehr auch die laufende Sendung an, 
+- Die Ergebnisliste bei "Wiederholungen anzeigen" zeigt nun nicht mehr auch die laufende Sendung an,
   Vorschlag von Ronny Kornexl
 - Danke fürs Betatesten an Mike Constabel
 - Danke fürs Update der finnischen Übersetzung an Rolf Ahrenberg
@@ -835,8 +855,8 @@ fixes:
 
 2006-02-12: Version 0.9.12
 neu:
-- Neues Feature 'Pause, wenn ... Aufnahmen exist." für Suchtimer. Sobald die 
-  angegebene Anzahl (>0) von Aufnahmen existiert, erzeugt epgsearch keine 
+- Neues Feature 'Pause, wenn ... Aufnahmen exist." für Suchtimer. Sobald die
+  angegebene Anzahl (>0) von Aufnahmen existiert, erzeugt epgsearch keine
   weiteren Timer mehr für diesen Suchtimer. Erst wenn eine oder mehrere Auf-
   nahmen gelöscht wurden, werden erneut Timer angelegt.
 fixes:
@@ -860,7 +880,7 @@ neu:
   werden diese in die Umschaltliste aufgenommen. Es wird kein echter Timer erzeugt.
 - Suchkriterium 'Verwende Kanal' hat nun einen weiteren Wert 'nur FTA', um die Suche
   auf alle nicht verschlüsselten Programme einzuschränken.
-- Neue Setup-Option 'Zeige Tagesseparatoren', zur Anzeige von Trennlinien zwischen 
+- Neue Setup-Option 'Zeige Tagesseparatoren', zur Anzeige von Trennlinien zwischen
   den Tagen im Menu Programm
 - epgsearch hat jetzt ein SVDRP-Interface mit folgenden Befehlen
   (ab vdr > 1.3.30):
@@ -875,7 +895,7 @@ neu:
   * 'UPDD' zum Nachladen der epgsearchdone.data in den Speicher, z.B. nach einer Änderung
     durch ein externes Tool
   * 'SETS <ON|OFF>' zum Ein-/Ausschalten der Suchtimersuche im Hintergrund
-- weil das Setup allmählich zu groß wird, gibt es dort jetzt die Modi "Standard" und 
+- weil das Setup allmählich zu groß wird, gibt es dort jetzt die Modi "Standard" und
   "Erweitert" (umschaltbar über Taste rot), vorgeschlagen von Rolf Ahrenberg
 - Update der finnischen Ãœbersetzung, Danke an Rolf Ahrenberg
 - Update der italienischen Ãœbersetzung, Danke an Reelbox User
@@ -885,8 +905,8 @@ neu:
   vorgeschlagen von Thiemo Gehrke
 - neues Skript recordingdone.sh für die reccmds.conf, um eine Aufnahme als erlegigt zu
   kennzeichnen (für epgsearch's done-Feature), Danke an Patrice Staudt, Christian Jacobsen
-  und Mike Constabel 
-- neues Skript mtdone2epgsearchdone.sh zur Ãœbernahme von erledigten Aufnahmen von 
+  und Mike Constabel
+- neues Skript mtdone2epgsearchdone.sh zur Ãœbernahme von erledigten Aufnahmen von
   mastertimer in epgsearch's done-Datei, Danke an Christian Jacobsen.
 - Danke an Mike Constabel und Andreas Brugger fürs Testen und die Bug Reports
 fixes:
@@ -902,10 +922,10 @@ neu:
 - Im Timer-Edit-Menu von epgsearch (Setup-Einstellung beachten!) wird nun bei
   einer laufenden Aufnahme angezeigt, über welche Karte der Timer aufnimmt
 - Neue Setup-Option: 'Untertitel in manuellen Timern'
-  Betrifft das autom. Ergänzen des Untertitels bei einem manuell angelegten 
-  Timer. Die Einstellung 'intelligent' verwirft den Untertitel, falls die 
+  Betrifft das autom. Ergänzen des Untertitels bei einem manuell angelegten
+  Timer. Die Einstellung 'intelligent' verwirft den Untertitel, falls die
   Sendung länger als 80min ist. Ist noch nicht sooo intelligent ;-)
-- Das Menü zum Editieren der Suche wurde für zukünftige Erweiterungen 
+- Das Menü zum Editieren der Suche wurde für zukünftige Erweiterungen
   geändert: 'Aktion' bestimmt nun, was mit den Suchergebnissen gemacht werden
   soll, im Moment gibts 'Aufnehmen' als Standard und 'Nur Ankündigen'
 - Danke an Rolf Ahrenberg für das Update der finnischen Übersetzung
@@ -922,12 +942,12 @@ neu:
   definiert werden, wodurch deren Einträge beim Anlegen einer Suche auto-
   matisch übernommen werden.
 - Setup um 'Suchvorlagen' erweitert (zur Verwaltung der Vorlagen)
-- Neue Aktion 'Als Vorlage verwenden', um eine Suche in die Vorlagen zu 
+- Neue Aktion 'Als Vorlage verwenden', um eine Suche in die Vorlagen zu
   kopieren
 - Neue Setup-Option, um die Anzeige der Untertitel in der Ãœbersicht zu steuern,
   danke an Darren Salt für den Patch
-- Erweiterung des Features 'Aufnahmen nach ... Tagen löschen' um 'Erhalte 
-  ... Aufnahmen'. Dadurch werden die letzten x Aufnahmen immer erhalten, auch 
+- Erweiterung des Features 'Aufnahmen nach ... Tagen löschen' um 'Erhalte
+  ... Aufnahmen'. Dadurch werden die letzten x Aufnahmen immer erhalten, auch
   wenn diese bereits das Zeitlimit überschritten haben.
 fixes:
 - Das Feature 'Aufnahmen nach ... Tagen löschen' hat auch editierte/ge-
@@ -937,21 +957,21 @@ fixes:
 2005-11-27: Version 0.9.8
 neu:
 ACHTUNG!: diese Version konvertiert die epgsearch.conf (die Datei, in der
-  die Sucheinträge gespeichert werden) in ein NEUES FORMAT. Es wird ein 
+  die Sucheinträge gespeichert werden) in ein NEUES FORMAT. Es wird ein
   Backup der alten Datei unter epgsearch.conf.bak angelegt.Geht man also auf
   eine alte Version zurück, muss das Backup nach epgsearch.conf zurückkopiert
   werden.
 - Neues Feature 'Wiederholungen vermeiden' (aka done-Feature) für Suchtimer
   (bitte die README.DE vor dem ersten Gebrauch lesen!). Ein besonderer Dank an
   Mike Constable (vejoun at vdrportal) für viele viele Test-Stunden und Bug-
-  Reports. 
+  Reports.
     * Vorschau von geplanten Timern
     * Erkennung unvollständiger Aufnahmen
     * Fuzzy-Vergleich von Sendungen
 - Das Menü der Suchergebnisse hat bei Suchtimern mit 'Wiederh. vermeiden' nun
   eine zusätzliche Belegung für die Taste 'Blau', um sich die geplanten Timer
   anzeigen zu lassen, die mit dem nächsten Suchtimer-Update programmiert werden.
-- Neue Setup-Option zur Anzeige von Sendern ohne EPG in 'Was läuft jetzt?', 
+- Neue Setup-Option zur Anzeige von Sendern ohne EPG in 'Was läuft jetzt?',
   Idee von 'Nordlicht's EPG plugin' übernommen
 - Neue Setup-Option 'Zeige Kanal-Separatoren' in 'Was läuft jetzt?'
   Idee von 'Nordlicht's EPG plugin' übernommen
@@ -959,7 +979,7 @@ ACHTUNG!: diese Version konvertiert die epgsearch.conf (die Datei, in der
   nahmen nach den eingestellen Tagen automatisch gelöscht. Praktisch z.B. für
   Nachrichtensendungen wie Tagesschau, die nur für einige Tage interessieren.
 - Die Inhaltsangabe von Timern (über ok im Timermenu), die epgsearch erzeugt hat,
-  enthalten nun zusätzliche Infos: Titel und Untertitel (falls vorhanden) am 
+  enthalten nun zusätzliche Infos: Titel und Untertitel (falls vorhanden) am
   Anfang, sowie Name und ID des Suchtimers und den Sender am Ende
 - Die Inhaltsangabe von manuell programmierten Timern enthält nun:
   Titel und Untertitel (falls vorhanden) am Anfang, sowie Sender am Ende
@@ -968,7 +988,7 @@ ACHTUNG!: diese Version konvertiert die epgsearch.conf (die Datei, in der
     * 'Als Suchtimer verwenden' an/aus
     * Suchtimer-Update ausführen
     * Erledigte Aufnahmen anzeigen
-  Es können natürlich genauso die Tasten als Abkürzung verwendet werden, ohne 
+  Es können natürlich genauso die Tasten als Abkürzung verwendet werden, ohne
   das Menu aufzurufen. '0' ruft das Menü auf.
 - Einführung eines Logfiles (Standard ist plugin-configdir/epgsearch.log, kann
   aber über den Startparameter '-l /path/to/logfile' geändert werden. Der Para-
@@ -977,34 +997,34 @@ ACHTUNG!: diese Version konvertiert die epgsearch.conf (die Datei, in der
 - Im Setup gibts nun ein Standard-Aufnahmeverzeichnis, das beim manuellen Pro-
   grammieren von Timern vorgegeben wird. Unterstützt werden auch Einträge der
   Form '%Category%~%Genre%'.
-- abhängig vom aufrufenden Menu sind nun die Tasten 'Grün/Geld' im Event-Menu 
+- abhängig vom aufrufenden Menu sind nun die Tasten 'Grün/Geld' im Event-Menu
   (also der Inhaltsangabe) nun mit dem vorh./nächsten Sender bzw. der vorh./
   nächsten Startzeit beschriftet, danke an Andreas Brugger (brougs78 at vdrportal)
-- Sendernummern werden nun auch im Menü Suchergebnisse gelistet, falls die 
-  Option im Setup geschaltet ist, danke an Gerhard Steiner (gestein at vdrportal). 
+- Sendernummern werden nun auch im Menü Suchergebnisse gelistet, falls die
+  Option im Setup geschaltet ist, danke an Gerhard Steiner (gestein at vdrportal).
 - Kurztasten (1,2,...) für EPG-Befehle sind nun auch im Menu der Inhaltsangabe
   verfügbar, danke an Frank Krömmelbein (frank99 at vdrportal)
 - Ab VDR version >= 1.3.31 kann im Setup nun eingestellt werden, ob man für die
   manuelle Timerprogrammierung das Timer-Editmenü von epgsearch oder von VDR ver-
   wenden will.(evtl. sinnvoll, wenn man einen gepatchten VDR benutzt). Danke an
-  Frank Krömmelbein (frank99 at vdrportal) 
+  Frank Krömmelbein (frank99 at vdrportal)
 - Falls ein Untertitel existiert wird er beim manuellen Timer-Programmieren nun
-  automatisch ans Verzeichnis angehängt. Danke an Gerhard Steiner 
+  automatisch ans Verzeichnis angehängt. Danke an Gerhard Steiner
   (gestein at vdrportal)
 - Aufteilung von Verzeichnis und File beim erneuten Bearbeiten von Timern opti-
   miert, Danke Andreas Brugger (brougs78 at vdrportal)
 - In den Hauptmenus werden Untertitel nun immer angezeigt, in der Form 'Titel ~
-  Untertitel', falls vorhanden 
-- Neue service-Funktion 'Epgsearch-updatesearchtimers-v1.0' zum Aufruf eines 
+  Untertitel', falls vorhanden
+- Neue service-Funktion 'Epgsearch-updatesearchtimers-v1.0' zum Aufruf eines
   Suchtimer-Updates
 - Falls ein Suchtimer-Update über das Aktionenmenu aufgerufen wird, gibt es nun
-  im OSD eine Nachricht, sobald das Update fertig ist. (Ebenso bei Verwendung von 
+  im OSD eine Nachricht, sobald das Update fertig ist. (Ebenso bei Verwendung von
   des Services 'Epgsearch-updatesearchtimers-v1.0'
 - Das Such-Menü zeigt nun die Anzahl der (aktiven) Suchen im Titel an
 - Danke an Rolf Ahrenberg für die Aktualisierung der finnischen Übersetzung.
 - Danke an Mike Constabel für die Überarbeitung der READMEs und des MANUALs.
 fixes:
-- epgsearch springt nun zum Hauptmenu zurück, falls es nicht über eine Kurztaste 
+- epgsearch springt nun zum Hauptmenu zurück, falls es nicht über eine Kurztaste
   aufgerufen wurde. Danke an Andreas Brugger (brougs78 at vdrportal)
 - Eingabe von Suchbegriffen bei englischem OSD korrigiert
 - Sortierung von Suchtimern nach dem Editieren einer Suche korrigiert, Danke an
@@ -1027,7 +1047,7 @@ fixes:
 
 neu:
 - Suchkriterium 'Verw. Kanal' um 'Kanalgruppen' erweitert. Diese Kanalgruppen können über ein eigenes Menu verwaltet werden (im Suchtimer oder im Setup) und erlauben eine flexiblere Kanalauswahl für Suchtimer als bisher. (s. Screenshot)
-- epgsearch stellt das erweiterte Timer-Editmenu und die Suche im EPG jetzt als 'Service' anderen Plugins zur Verfügung (ab 1.3.30 oder mit Udo Richters backport, s. MANUAL oder mail an mich, falls jemand Interesse hat)	
+- epgsearch stellt das erweiterte Timer-Editmenu und die Suche im EPG jetzt als 'Service' anderen Plugins zur Verfügung (ab 1.3.30 oder mit Udo Richters backport, s. MANUAL oder mail an mich, falls jemand Interesse hat)
 - Beim Programmieren eines Timers (manuell oder per Suchtimer) wird nun die Inhaltsangabe an den Timer übergeben (damit kann im VDR-Timermenu mit 'ok' die Inhaltsangabe angezeigt werden), Danke an TomG
 - Nach dem Umschalten der Farbtasten mit '0' im Menu 'Programm' kann mit den Farbtasten Grün/Gelb zum Programm des vorherigen/nächsten Senders gewechselt werden (s. Farbtasten im Screenshot)
 - patch von Uwe/egal hinzugefügt, der es erlaubt, das VDR-Programmmenu durch epgsearch zu ersetzen. Danke an Uwe auch für die Anpassungen in epgsearch (Nach dem Patchen von VDR muss der patch noch im epgsearch-Setup aktiviert werden!)
diff --git a/INSTALL b/INSTALL
index 7e7944e..b9bd242 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 Theres nothing special about it. Install it like any other standard
-plugin (unpack, soft link, make plugins). 
+plugin (unpack, soft link, make plugins).
 
 Optional libraries:
 -------------------
@@ -7,7 +7,7 @@ Optional libraries:
 libpcre
 -------
 For support of Perl compatible regular expressions in a search you have to use
-libpcre:  
+libpcre:
 simply edit the plugins Makefile and uncomment '#REGEXLIB = pcre' to
 'REGEXLIB = pcre' or append 'REGEXLIB=pcre' to your 'make plugins'
 call. (you will need pcreposix installed, comes with libpcre from
@@ -27,7 +27,7 @@ libtre
 epgsearch has a fuzzy search algorithm. Unfortunately it's rescrited to
 search patterns with a maximum of 31 characters. This results in empty results
 if more than 31 characters are used. To avoid this limitation you can use the
-TRE package (http://laurikari.net/tre/). Install tre (on debian: 
+TRE package (http://laurikari.net/tre/). Install tre (on debian:
 apt-get install tre-agrep libtre4 libtre-dev) and activate epgsearch's support
 for it in the Makefile by uncommenting '#REGEXLIB = pcre' to 'REGEXLIB = tre' or append
 it to your 'make plugins' call. After recompiling epgsearch will now use an
diff --git a/INSTALL.DE b/INSTALL.DE
index 25e92c7..e51dada 100644
--- a/INSTALL.DE
+++ b/INSTALL.DE
@@ -12,7 +12,7 @@ folgendes kommt:
 
  ERROR: /usr/lib/libpcreposix.so.0: undefined symbol: pcre_free).
 
-dann bitte libpcre von www.pcre.org updaten und das Plugin neu 
+dann bitte libpcre von www.pcre.org updaten und das Plugin neu
 kompilieren.
 
 Scheinbar gibt es auf manchen Systemen Probleme mit PCRE, die sich in einem
diff --git a/Makefile b/Makefile
index 43e0cef..e8f42a4 100644
--- a/Makefile
+++ b/Makefile
@@ -6,11 +6,11 @@
 
 ### ------------
 ### CONFIG START
-### 
+###
 ### to comment an option just place a '#' at the beginning of the line
 ### to uncomment an option please remove the leading '#'
 
-### uncomment one of these lines, if you don't want the addon epgsearchonly, 
+### uncomment one of these lines, if you don't want the addon epgsearchonly,
 ### conflictcheckonly or quickepgsearch
 
 #WITHOUT_EPGSEARCHONLY=1
@@ -20,7 +20,7 @@
 ### comment this if you don't want epgsearch to auto config itself
 AUTOCONFIG=1
 
-### if AUTOCONFIG is not active (i.e. commented) you can manually enable the 
+### if AUTOCONFIG is not active (i.e. commented) you can manually enable the
 ### optional modules or patches for other plugins
 ifndef AUTOCONFIG
 # if you want to use Perl compatible regular expressions (PCRE) or libtre for
@@ -64,7 +64,7 @@ CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses -Wno-format-y2k
 
 ### The directory environment:
 
-DVBDIR = ../../../../DVB
+#DVBDIR = ../../../../DVB
 VDRDIR = ../../..
 LIBDIR = ../../lib
 TMPDIR = /tmp
@@ -125,15 +125,11 @@ EPGSEARCH_DEFINES += -D_GNU_SOURCE
 ifneq ($(SENDMAIL),)
 EPGSEARCH_DEFINES += -DSENDMAIL='"$(SENDMAIL)"'
 endif
-DEFINES += $(EPGSEARCH_DEFINES) -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
-DEFINES1 += $(EPGSEARCH_DEFINES) -DPLUGIN_NAME_I18N='"$(MAINMENUSHORTCUT)"'
-DEFINES2 += $(EPGSEARCH_DEFINES) -DPLUGIN_NAME_I18N='"$(PLUGIN2)"'
-DEFINES3 += $(EPGSEARCH_DEFINES) -DPLUGIN_NAME_I18N='"$(PLUGIN3)"'
-DEFINES4 += $(EPGSEARCH_DEFINES) -DPLUGIN_NAME_I18N='"$(PLUGIN4)"'
+DEFINES += $(EPGSEARCH_DEFINES)
 
 ### The object files (add further files here):
 
-OBJS = afuzzy.o blacklist.o changrp.o confdloader.o conflictcheck.o conflictcheck_thread.o distance.o $(PLUGIN).o epgsearchcats.o epgsearchcfg.o epgsearchext.o epgsearchsetup.o  epgsearchsvdrp.o epgsearchtools.o i18n.o mail.o md5.o menu_announcelist.o menu_blacklistedit.o menu_blacklists.o menu_commands.o menu_conflictcheck.o menu_deftimercheckmethod.o menu_dirselect.o menu_event.o menu_favorites.o menu_main.o menu_myedittimer.o menu_quicksearch.o menu_recsdone.o menu_search.o menu_searchactions.o menu_searchedit.o menu_searchresults.o menu_searchtemplate.o menu_switchtimers.o menu_templateedit.o menu_timersdone.o menu_whatson.o noannounce.o pending_notifications.o rcfile.o  recdone.o recstatus.o searchtimer_thread.o services.o switchtimer.o switchtimer_thread.o templatefile.o timer_thread.o timerdone.o timerstatus.o uservars.o varparser.o  
+OBJS = afuzzy.o blacklist.o changrp.o confdloader.o conflictcheck.o conflictcheck_thread.o distance.o $(PLUGIN).o epgsearchcats.o epgsearchcfg.o epgsearchext.o epgsearchsetup.o  epgsearchsvdrp.o epgsearchtools.o mail.o md5.o menu_announcelist.o menu_blacklistedit.o menu_blacklists.o menu_commands.o menu_conflictcheck.o menu_deftimercheckmethod.o menu_dirselect.o menu_event.o menu_favorites.o menu_main.o menu_myedittimer.o menu_quicksearch.o menu_recsdone.o menu_search.o menu_searchactions.o menu_searchedit.o menu_searchresults.o menu_searchtemplate.o menu_switchtimers.o menu_templateedit.o menu_timersdone.o menu_whatson.o noannounce.o pending_notifications.o rcfile.o  recdone.o recstatus.o searchtimer_thread.o services.o switchtimer.o switchtimer_thread.o templatefile.o timer_thread.o timerdone.o timerstatus.o uservars.o varparser.o
 
 ifeq ($(REGEXLIB), pcre)
 LIBS += $(shell pcre-config --libs-posix)
@@ -155,7 +151,7 @@ ifdef USE_GRAPHTFT
 DEFINES += -DUSE_GRAPHTFT
 endif
 
-ifdef CFLC 
+ifdef CFLC
 DEFINES += -DCFLC
 endif
 
@@ -163,6 +159,18 @@ ifdef DEBUG_CONFL
 DEFINES += -DDEBUG_CONFL
 endif
 
+ifdef PLUGIN_EPGSEARCH_MAX_SUBTITLE_LENGTH
+DEFINES += -DMAX_SUBTITLE_LENGTH='$(PLUGIN_EPGSEARCH_MAX_SUBTITLE_LENGTH)'
+endif
+
+### length of the filling '-' in the channel separators, defaults to
+### "----------------------------------------"
+### overwrite this with PLUGIN_EPGSEARCH_SEP_ITEMS=--- in your Make.config
+### to avoid problems with graphlcd
+ifdef PLUGIN_EPGSEARCH_SEP_ITEMS
+DEFINES += -DMENU_SEPARATOR_ITEMS='"$(PLUGIN_EPGSEARCH_SEP_ITEMS)"'
+endif
+
 OBJS2    = mainmenushortcut.o epgsearchonly.o
 LIBS2    =
 
@@ -179,15 +187,15 @@ all: $(ALL) i18n
 ### Implicit rules:
 
 %.o: %.c
-	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
+	$(CXX) $(CXXFLAGS) -c $(DEFINES) -DPLUGIN_NAME_I18N='"$(PLUGIN)"' $(INCLUDES) $<
 mainmenushortcut.o: mainmenushortcut.c
-	$(CXX) $(CXXFLAGS) -c $(DEFINES1) $(INCLUDES) $<
+	$(CXX) $(CXXFLAGS) -c $(DEFINES) -DPLUGIN_NAME_I18N='"$(MAINMENUSHORTCUT)"' $(INCLUDES) $<
 epgsearchonly.o: epgsearchonly.c
-	$(CXX) $(CXXFLAGS) -c $(DEFINES2) $(INCLUDES) $<
+	$(CXX) $(CXXFLAGS) -c $(DEFINES) -DPLUGIN_NAME_I18N='"$(PLUGIN2)"' $(INCLUDES) $<
 conflictcheckonly.o: conflictcheckonly.c
-	$(CXX) $(CXXFLAGS) -c $(DEFINES3) $(INCLUDES) $<
+	$(CXX) $(CXXFLAGS) -c $(DEFINES) -DPLUGIN_NAME_I18N='"$(PLUGIN3)"' $(INCLUDES) $<
 quickepgsearch.o: quickepgsearch.c
-	$(CXX) $(CXXFLAGS) -c $(DEFINES4) $(INCLUDES) $<
+	$(CXX) $(CXXFLAGS) -c $(DEFINES) -DPLUGIN_NAME_I18N='"$(PLUGIN4)"' $(INCLUDES) $<
 
 # Dependencies:
 
@@ -210,7 +218,7 @@ I18Npot   = $(PODIR)/$(PLUGIN).pot
 	msgfmt -c -o $@ $<
 
 $(I18Npot): $(wildcard *.[ch])
-	xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<cwieninger at gmx.de>' -o $@ `ls $^`
+	xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP -kI18nTranslate --msgid-bugs-address='<cwieninger at gmx.de>' -o $@ `ls $^`
 
 %.po: $(I18Npot)
 	msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
@@ -223,9 +231,6 @@ $(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
 .PHONY: i18n
 i18n: $(I18Nmsgs) $(I18Npot)
 
-generate-i18n: i18n-template.h $(I18Npot) $(I18Npo) buildutil/pot2i18n.pl
-	buildutil/pot2i18n.pl $(I18Npot) i18n-template.h > i18n-generated.h
-
 ### Targets:
 
 libvdr-$(PLUGIN).so: $(OBJS)
@@ -247,7 +252,7 @@ libvdr-$(PLUGIN4).so: $(OBJS4)
 createcats: createcats.o Makefile
 	$(CXX) $(CXXFLAGS) $(LDFLAGS) createcats.o -o $@
 
-dist: generate-i18n docs clean
+dist: clean docs
 	@-rm -rf $(TMPDIR)/$(ARCHIVE)
 	@mkdir $(TMPDIR)/$(ARCHIVE)
 	@cp -a * $(TMPDIR)/$(ARCHIVE)
@@ -260,7 +265,7 @@ dist: generate-i18n docs clean
 	@ln -sf README.git README
 	@echo Distribution package created as $(PACKAGE).tgz
 
-distfull: generate-i18n docs clean 
+distfull: docs clean
 	@-rm -rf $(TMPDIR)/$(ARCHIVE)
 	@mkdir $(TMPDIR)/$(ARCHIVE)
 	@cp -a * $(TMPDIR)/$(ARCHIVE)
@@ -293,3 +298,4 @@ clean:
 	@-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
 	@-rm -f $(OBJS) $(OBJS2) $(OBJS3) $(OBJS4) $(DEPFILE) *.so *.tgz core* createcats createcats.o pod2*.tmp
 	@-find . \( -name "*~" -o -name "#*#" \) -print0 | xargs -0r rm -f
+	@-rm -rf doc html man
diff --git a/README.Translators b/README.Translators
index 5682e64..19c756d 100644
--- a/README.Translators
+++ b/README.Translators
@@ -2,9 +2,9 @@
 Building and maintaining translations for EPGSearch
 ---------------------------------------------------
 
-If your language is not yet supported in EPGSearch or any 
-updates are needed it would be great if you could give your 
-support for this. 
+If your language is not yet supported in EPGSearch or any
+updates are needed it would be great if you could give your
+support for this.
 
 To do so please follow these steps:
 
@@ -14,23 +14,13 @@ To do so please follow these steps:
 
    If not please use the latest known release.
 
-2. Copy the original po file for your language to any backup 
-   destination. Now edit the original po file for your language in 
-   the po subdirectory. All entries with 'msgstr ""' should be filled 
+2. Copy the original po file for your language to any backup
+   destination. Now edit the original po file for your language in
+   the po subdirectory. All entries with 'msgstr ""' should be filled
    with your translation.
 
-3. To test your translations:
-   in vdr > 1.5.6: 
-   simply recompile EPGSearch and check your changes.
-   in vdr < 1.5.7: 
-   for backwards compatibility the translation is built from the 
-   po files. To do so call
-
-   make generate-i18n
-
-   from EPGSearch's source directory and then recompile EPGSearch.
-   (this calls buildutil/pot2i18n.pl which may need to install Locale::PO 
-   in the pearl cpan shell)
+3. To test your translations, simply recompile EPGSearch and check
+   your changes.
 
 4. When done please send me your po file or even better a patch for it,
    created like
diff --git a/README.git b/README.git
index 4d3ae36..4193128 100644
--- a/README.git
+++ b/README.git
@@ -1,11 +1,11 @@
 Note:
-This is a dummy README needed by some maintainers that use the git 
-repository to fetch epgsearch. In the official or beta tar balls it 
-is replaced by a symbolic link to 
+This is a dummy README needed by some maintainers that use the git
+repository to fetch epgsearch. In the official or beta tar balls it
+is replaced by a symbolic link to
 
-./doc/en/epgsearch.1.txt 
+./doc/en/epgsearch.1.txt
 
-which is not part of the git repository since it is built from the 
+which is not part of the git repository since it is built from the
 sources (via 'make docs').
 
 If its in the way, just remove it.
diff --git a/afuzzy.c b/afuzzy.c
index e78404e..5684335 100644
--- a/afuzzy.c
+++ b/afuzzy.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -30,21 +30,21 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 static int afuzzy_checkFLT(const char *t, AFUZZY *fuzzy);
 
 /******************************************************************************
-FUNCTION afuzzy_init() 
+FUNCTION afuzzy_init()
 	Initialization of the fuzzy search routine. This applies to the consequent
 	calls of the afuzzy_CheckRTR (whole string matching) and afuzzy_CheckSUB
 	(substring match) routines. afuzzy_init() should be called for each
 	new pattern or error length. The search is case sensitive
 
-ARGUMENTS: 
+ARGUMENTS:
 	p			Pattern
 	kerr		Number of possible errors. Shouldn't exceed pattern length
 	UseFilter	Use agrep filter algorithm that speeds up search.
 	fuzzy		pointer to the structure that will be later passes to Check*
 					(the first 6 elements should be NULLs for the first call)
-	
+
 RETURN VALUE:
-	none	
+	none
 
 ALGORITHM
 	see. the article on agrep algorithms.
@@ -141,14 +141,14 @@ void afuzzy_init(const char *p, int kerr, int UseFilter, AFUZZY *fuzzy)
 }
 
 /******************************************************************************
-FUNCTION afuzzy_free() 
+FUNCTION afuzzy_free()
 	Cleaning up after previous afuzzy_init() call.
 
-ARGUMENTS: 
+ARGUMENTS:
 	fuzzy		pointer to the afuzzy parameters structure
-	
+
 RETURN VALUE:
-	none	
+	none
 ******************************************************************************/
 void afuzzy_free(AFUZZY *fuzzy)
 {
@@ -186,14 +186,14 @@ void afuzzy_free(AFUZZY *fuzzy)
 
 
 /******************************************************************************
-FUNCTION afuzzy_CheckSUB() 
-	Perform a fuzzy pattern substring matching. afuzzy_init() should be 
-	called previously to initialize the pattern and error length. 
-	Positive result means that some part of the string given matches the 
-	pattern with no more than afuzzy->k errors (1 error = 1 letter 
+FUNCTION afuzzy_CheckSUB()
+	Perform a fuzzy pattern substring matching. afuzzy_init() should be
+	called previously to initialize the pattern and error length.
+	Positive result means that some part of the string given matches the
+	pattern with no more than afuzzy->k errors (1 error = 1 letter
 	replacement or transposition)
 
-ARGUMENTS: 
+ARGUMENTS:
 	t			the string to test
 	fuzzy		pointer to the afuzzy parameters structure
 
@@ -234,10 +234,10 @@ int afuzzy_checkSUB(const char *t, AFUZZY *fuzzy)
 	{
 		for (d = 0; d <= fuzzy->k; d++)
 		{
-			fuzzy->R1[d] = (((fuzzy->R[d]<<1) | 1) & 
+			fuzzy->R1[d] = (((fuzzy->R[d]<<1) | 1) &
 										fuzzy->S[fuzzy->Map[(unsigned char)c]]);
 			if (d > 0)
-				fuzzy->R1[d] |= ((fuzzy->R[d-1] | fuzzy->R1[d-1])<<1) | 1 | 
+				fuzzy->R1[d] |= ((fuzzy->R[d-1] | fuzzy->R1[d-1])<<1) | 1 |
 															fuzzy->R[d-1];
 		}
 		if (fuzzy->R1[fuzzy->k] & fuzzy->mask_ok)
@@ -258,7 +258,7 @@ static int afuzzy_checkFLT(const char *t, AFUZZY *fuzzy)
 
 	for (j = 0; t[j] != '\0'; j++)
 	{
-		FilterR1 = ( ((FilterR<<(fuzzy->k+1)) | fuzzy->filter_shift) & 
+		FilterR1 = ( ((FilterR<<(fuzzy->k+1)) | fuzzy->filter_shift) &
 						fuzzy->FilterS[fuzzy->FilterMap[(unsigned char)t[j]]]);
 		if (FilterR1 & fuzzy->filter_ok)
 			return 1;
diff --git a/afuzzy.h b/afuzzy.h
index d060578..3357930 100644
--- a/afuzzy.h
+++ b/afuzzy.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/blacklist.c b/blacklist.c
index 1ffa8a1..62979ed 100644
--- a/blacklist.c
+++ b/blacklist.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -67,7 +67,7 @@ cBlacklist::cBlacklist(void)
     catvalues = (char**) malloc(SearchExtCats.Count() * sizeof(char*));
     cSearchExtCat *SearchExtCat = SearchExtCats.First();
     int index = 0;
-    while (SearchExtCat) 
+    while (SearchExtCat)
     {
 	catvalues[index] = (char*)malloc(MaxFileName);
 	*catvalues[index] = 0;
@@ -88,7 +88,7 @@ cBlacklist::~cBlacklist(void)
   {
       cSearchExtCat *SearchExtCat = SearchExtCats.First();
       int index = 0;
-      while (SearchExtCat) 
+      while (SearchExtCat)
       {
 	  free(catvalues[index]);
 	  SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -101,10 +101,13 @@ cBlacklist::~cBlacklist(void)
 
 cBlacklist& cBlacklist::operator= (const cBlacklist &Blacklist)
 {
+  char**   catvaluesTemp = this->catvalues;
   memcpy(this, &Blacklist, sizeof(*this));
+  this->catvalues = catvaluesTemp;
+
   cSearchExtCat *SearchExtCat = SearchExtCats.First();
   int index = 0;
-  while (SearchExtCat) 
+  while (SearchExtCat)
   {
       *catvalues[index] = 0;
       strcpy(catvalues[index], Blacklist.catvalues[index]);
@@ -136,7 +139,7 @@ void cBlacklist::CopyFromTemplate(const cSearchExt* templ)
 
   cSearchExtCat *SearchExtCat = SearchExtCats.First();
   int index = 0;
-  while (SearchExtCat) 
+  while (SearchExtCat)
   {
       strcpy(catvalues[index], templ->catvalues[index]);
       SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -172,7 +175,7 @@ const char *cBlacklist::ToText(void)
   free(buffer);
   tmp_search = strdup(search);
   while(strstr(tmp_search, "|"))
-    tmp_search = strreplace(tmp_search, "|", "!^pipe^!"); // ugly: replace a pipe with something, that should not happen to be part of a regular expression 
+    tmp_search = strreplace(tmp_search, "|", "!^pipe^!"); // ugly: replace a pipe with something, that should not happen to be part of a regular expression
 
   strreplace(tmp_search, ':', '|');
 
diff --git a/blacklist.h b/blacklist.h
index dafd317..baddde3 100644
--- a/blacklist.h
+++ b/blacklist.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -79,7 +79,7 @@ public:
   bool ParseExtEPGValues(const char *s);
   bool ParseExtEPGEntry(const char *s);
   bool Save(FILE *f);
-  cSearchResults* Run(cSearchResults* pSearchResults = NULL, int MarginStop = 0);  
+  cSearchResults* Run(cSearchResults* pSearchResults = NULL, int MarginStop = 0);
   void CopyFromTemplate(const cSearchExt* templ);
 };
 
diff --git a/buildutil/pot2i18n.pl b/buildutil/pot2i18n.pl
deleted file mode 100755
index 600879b..0000000
--- a/buildutil/pot2i18n.pl
+++ /dev/null
@@ -1,157 +0,0 @@
-#!/usr/bin/perl
-#
-#  File:	pot2i18n.pl - Convert plugin pot file into i18n.c-format
-#  Author:	Dieter Hametner
-#  Version:	0.1
-#
-#  based on po2i18n.pl version 0.1 from Udo Richter
-#
-#  See the po2i18n/README file for copyright information and how to
-#  reach the original author. Also general use is described there.
-#
-#  This version uses the CPAN module Locale::PO to read the .pot and .po files
-#  which ensures, that these files are read correctly.
-#
-#  The usage of pot2i18n.pl differs from po2i18n.pl that it requires as first
-#  argument the path to the plugins .pot file. There it then looks also for
-#  the translated .po files which are used to create the result.
-#  This version does not sort the msgids lexicaly (in contrast to po2i18n.pl)
-
-use strict;
-use warnings;
-
-use Locale::PO;
-use File::Basename;
-
-my @LANGS = (
-  "en_US",
-  "de_DE",
-  "sl_SI",
-  "it_IT",
-  "nl_NL",
-  "pt_PT",
-  "fr_FR",
-  "nn_NO",
-  "fi_FI",
-  "pl_PL",
-  "es_ES",
-  "el_GR",
-  "sv_SE",
-  "ro_RO",
-  "hu_HU",
-  "ca_ES",
-  "ru_RU",
-  "hr_HR",
-  "et_EE",
-  "da_DK",
-  "cs_CZ",
-  "tr_TR"
-  );
-
-my %VERS = (
-  "en_US" => 10200,
-  "de_DE" => 10200,
-  "sl_SI" => 10200,
-  "it_IT" => 10200,
-  "nl_NL" => 10200,
-  "pt_PT" => 10200,
-  "fr_FR" => 10200,
-  "nn_NO" => 10200,
-  "fi_FI" => 10200,
-  "pl_PL" => 10200,
-  "es_ES" => 10200,
-  "el_GR" => 10200,
-  "sv_SE" => 10200,
-  "ro_RO" => 10200,
-  "hu_HU" => 10200,
-  "ca_ES" => 10200,
-  "ru_RU" => 10302,
-  "hr_HR" => 10307,
-  "et_EE" => 10313,
-  "da_DK" => 10316,
-  "cs_CZ" => 10342,
-  "tr_TR" => 10502
-  );
-
-die "Missing .pot file argument" unless $#ARGV >= 0;
-
-my $potfile = $ARGV[0];
-my $podir = dirname($potfile);
-
-my $potRef = Locale::PO->load_file_asarray($potfile);
-shift;
-
-my %translations;
-
-foreach my $lang (@LANGS) {
-    $translations{$lang} = Locale::PO->load_file_ashash("$podir/$lang.po");
-}
-
-# debugging code: (may be removed)
-#for my $po (@{$potRef}) {
-#    my $msgid = $po->msgid;
-#
-#    print "UNTRANSLATED: ", $msgid, "\n";
-#    next if $msgid eq "\"\"";
-#    foreach my $lang (@LANGS) {
-#	my $lhref = $translations{$lang};
-#	my $lpo = ${$lhref}{$msgid};
-#	$lpo = $po if !defined $lpo;
-#
-#	my $msg = $lpo->msgstr;
-#	$msg = $lpo->msgid if !defined $msg;
-#	$msg = $msgid if ($lang eq "en_US");
-#	print $lang, ": ", $msg, "\n";
-#    }
-#    print "\n";
-#}
-#
-#exit;
-
-my $silent = 0;
-
-while (<>) {
-    my $line = $_;
-
-    if ($line =~ /^\/\/ START I18N/) {
-        print "// START I18N - automatically generated by pot2i18n.pl\n";
-	foreach my $po (@{$potRef}) {
-	    my $msgid = $po->msgid;
-            next if $msgid eq "\"\"";
-
-            my $head = "  { ";
-            my $endif = "";
-            my $versnum = 10200;
-
-            for my $lang (@LANGS) {
-                if ($VERS{$lang} ne $versnum) {
-                    $versnum = $VERS{$lang};
-                    print $endif;
-                    print "#if VDRVERSNUM >= $versnum\n";
-                    $endif = "#endif\n";
-                }
-
-		my $lhref = $translations{$lang};
-		my $lpo = ${$lhref}{$msgid};
-		$lpo = $po if !defined $lpo;
-
-		my $msgstr = $lpo->msgstr;
-		$msgstr = $lpo->msgid if !defined $msgstr;
-		$msgstr = $msgid if ($lang eq "en_US");
-
-                print "$head$msgstr,\n";
-                $head = "    ";
-            }
-            print $endif;
-            print "  },\n";
-        }
-        $silent = 1;
-    }
-
-    if (!$silent) { print $line; }
-
-    if ($line =~ /^\/\/ END I18N/) {
-        print "// END I18N - automatically generated by pot2i18n.pl\n";
-        $silent = 0;
-    }
-}
diff --git a/changrp.c b/changrp.c
index c484fde..d9e6a43 100644
--- a/changrp.c
+++ b/changrp.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -61,9 +61,9 @@ bool cChannelGroup::Parse(const char *s)
         if (!pos_next)
           pos_next = pos + strlen(pos);
         valuelen = pos_next - pos + 1;
-        if (valuelen > MAXVALUELEN) 
+        if (valuelen > MAXVALUELEN)
 	{
-	    LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);  
+	    LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);
 	    valuelen = MAXVALUELEN;
 	}
         strn0cpy(value, pos, valuelen);
@@ -98,7 +98,7 @@ bool cChannelGroup::Parse(const char *s)
     }
     if (*pos) pos++;
   } //while
-  
+
   free(line);
   return (parameter >= 1) ? true : false;
 }
@@ -108,19 +108,19 @@ const char *cChannelGroup::ToText(void)
     char* channelbuffer = NULL;
     cChannelGroupItem* ChannelGroupItem = channels.First();
     int index = 0;
-    while (ChannelGroupItem) 
+    while (ChannelGroupItem)
     {
 	cChannel* channel = ChannelGroupItem->channel;
 	if (index++ == 0)
 	    channelbuffer = strdup(CHANNELSTRING(channel));
 	else
 	{
-	    char* temp = channelbuffer;	      
+	    char* temp = channelbuffer;
 	    msprintf(&channelbuffer, "%s|%s", channelbuffer, CHANNELSTRING(channel));
 	    free(temp);
 	}
 	ChannelGroupItem = channels.Next(ChannelGroupItem);
-    }	
+    }
     char* buffer = NULL;
     msprintf(&buffer, "%s|%s", name, channelbuffer);
     free(channelbuffer);
@@ -132,7 +132,7 @@ int* cChannelGroup::CreateChannelSel()
     int* channelSel = (int*) malloc(Channels.Count() * sizeof(int));
     cChannel* channel = Channels.First();
     int index = 0;
-    while (channel) 
+    while (channel)
     {
 	if (channel->GroupSep())
 	{
@@ -141,18 +141,18 @@ int* cChannelGroup::CreateChannelSel()
 	}
 	channelSel[index] = 0;
 	cChannelGroupItem* channelInGroup = channels.First();
-	while (channelInGroup) 
-	{	
+	while (channelInGroup)
+	{
 	    if (channel == channelInGroup->channel)
 	    {
 		channelSel[index] = 1;
 		break;
 	    }
 	    channelInGroup = channels.Next(channelInGroup);
-	}	
+	}
 	index++;
 	channel = Channels.Next(channel);
-    }	
+    }
     return channelSel;
 }
 
@@ -161,7 +161,7 @@ void cChannelGroup::CreateChannelList(int* channelSel)
     channels.Clear();
     cChannel* channel = Channels.First();
     int index = 0;
-    while (channel) 
+    while (channel)
     {
 	if (!channel->GroupSep())
 	{
@@ -170,7 +170,7 @@ void cChannelGroup::CreateChannelList(int* channelSel)
 	    index++;
 	}
 	channel = Channels.Next(channel);
-    }	
+    }
 }
 
 bool cChannelGroup::Save(FILE *f)
@@ -181,12 +181,12 @@ bool cChannelGroup::Save(FILE *f)
 bool cChannelGroup::ChannelInGroup(cChannel* channel)
 {
     cChannelGroupItem* channelInGroup = channels.First();
-    while (channelInGroup) 
+    while (channelInGroup)
     {
 	if (channel == channelInGroup->channel)
 	    return true;
 	channelInGroup = channels.Next(channelInGroup);
-    }	
+    }
     return false;
 }
 
@@ -197,13 +197,13 @@ int cChannelGroups::GetIndex(char* channelGroup)
 	return -1;
     cChannelGroup* ChannelGroup = First();
     int index = 0;
-    while (ChannelGroup) 
+    while (ChannelGroup)
     {
 	if (strcmp(channelGroup, ChannelGroup->name) == 0)
 	    return index;
 	index++;
 	ChannelGroup = Next(ChannelGroup);
-    }	
+    }
     return -1;
 }
 
@@ -212,12 +212,12 @@ cChannelGroup* cChannelGroups::GetGroupByName(const char* channelGroup)
     if (!channelGroup)
 	return NULL;
     cChannelGroup* ChannelGroup = First();
-    while (ChannelGroup) 
+    while (ChannelGroup)
     {
 	if (strcmp(channelGroup, ChannelGroup->name) == 0)
 	    return ChannelGroup;
 	ChannelGroup = Next(ChannelGroup);
-    }	
+    }
     return NULL;
 }
 
@@ -231,7 +231,7 @@ cSearchExt* cChannelGroups::Used(cChannelGroup* group)
 
     cMutexLock SearchExtsLock(&SearchExts);
     cSearchExt *SearchExt = SearchExts.First();
-    while (SearchExt) 
+    while (SearchExt)
     {
 	if (SearchExt->useChannel == 2 && strcmp(SearchExt->channelGroup, group->name) == 0)
 	    return SearchExt;
@@ -246,7 +246,7 @@ char** cChannelGroups::CreateMenuitemsList()
     cChannelGroup* ChannelGroup = First();
     menuitemsChGr[0] = strdup("");
     int index = 1;
-    while (ChannelGroup) 
+    while (ChannelGroup)
     {
 	menuitemsChGr[index++] = ChannelGroup->name;
 	ChannelGroup = Next(ChannelGroup);
@@ -265,9 +265,9 @@ void cMenuChannelGroupItem::Set(void)
 {
     cString channelbuffer;
 
-    cChannelGroupItem* channelInGroup = group->channels.First(); 
+    cChannelGroupItem* channelInGroup = group->channels.First();
     int channelNr, chIntBegin = -1, chIntEnd = -1, chLast = -1;
-    while (channelInGroup) 
+    while (channelInGroup)
     {
 	channelNr = channelInGroup->channel->Number();
 	if (chIntBegin == -1)
@@ -308,17 +308,17 @@ cMenuChannelGroups::cMenuChannelGroups(char** GroupName)
     groupSel = -1;
     groupName = GroupName;
     if (groupName && *groupName)
-	groupSel = ChannelGroups.GetIndex(*groupName); 
+	groupSel = ChannelGroups.GetIndex(*groupName);
 
     cChannelGroup* ChannelGroup = ChannelGroups.First();
     int index = 0;
-    while (ChannelGroup) 
+    while (ChannelGroup)
     {
 	Add(new cMenuChannelGroupItem(ChannelGroup), (index == groupSel?true:false));
 	ChannelGroup = ChannelGroups.Next(ChannelGroup);
 	index++;
-    }	
-    
+    }
+
     if (groupName && *groupName)
 	SetHelp(trVDR("Button$Edit"), trVDR("Button$New"), trVDR("Button$Delete"), tr("Button$Select"));
     else
@@ -364,13 +364,13 @@ eOSState cMenuChannelGroups::Delete(void)
 eOSState cMenuChannelGroups::ProcessKey(eKeys Key)
 {
     int GroupNumber = HasSubMenu() ? Count() : -1;
-    
+
     eOSState state = cOsdMenu::ProcessKey(Key);
-    if (state == osUnknown) 
+    if (state == osUnknown)
     {
 	if (HasSubMenu())
 	    return osContinue;
-	switch (Key) 
+	switch (Key)
 	{
 	    case kRed:
 		if (CurrentGroup())
@@ -392,14 +392,14 @@ eOSState cMenuChannelGroups::ProcessKey(eKeys Key)
 	    default: break;
 	}
     }
-    if (GroupNumber >= 0 && !HasSubMenu() && ChannelGroups.Get(GroupNumber)) 
+    if (GroupNumber >= 0 && !HasSubMenu() && ChannelGroups.Get(GroupNumber))
     {
 	// a newly created group was confirmed with Ok
 	cChannelGroup* group = ChannelGroups.Get(GroupNumber);
 	Add(new cMenuChannelGroupItem(group), true);
 	Display();
     }
-    
+
     return state;
 }
 
@@ -411,7 +411,7 @@ cMenuEditChannelGroup::cMenuEditChannelGroup(cChannelGroup *Group, bool New)
     channelSel = group->CreateChannelSel();
     strcpy(name, group->name);
     addIfConfirmed = New;
-    if (group) 
+    if (group)
 	Set();
 }
 
@@ -428,7 +428,7 @@ void cMenuEditChannelGroup::Set()
     Add(new cMenuEditStrItem( tr("Group name"), name, sizeof(group->name), trVDR(FileNameChars)));
     cChannel* channel = Channels.First();
     int index = 0;
-    while (channel) 
+    while (channel)
     {
 	if (channel->GroupSep())
 	{
@@ -437,8 +437,8 @@ void cMenuEditChannelGroup::Set()
 	}
 	Add(new cMenuEditBoolItem( CHANNELNAME(channel), &channelSel[index++], trVDR("no"), trVDR("yes")));
 	channel = Channels.Next(channel);
-    }	
-    
+    }
+
     SetCurrent(Get(current));
 
 }
@@ -466,7 +466,7 @@ eOSState cMenuEditChannelGroup::ProcessKey(eKeys Key)
 		  Skins.Message(mtError, tr("Group name already exists!"));
 		  return osContinue;
 	      }
-	      
+
 	      {
 		  bool saveSearchExts = false;
 		  if (strcmp(group->name, name) != 0 && !addIfConfirmed) // if group name changed, update searches
@@ -474,8 +474,8 @@ eOSState cMenuEditChannelGroup::ProcessKey(eKeys Key)
 		      cMutexLock SearchExtsLock(&SearchExts);
 		      cSearchExt *SearchExt = SearchExts.First();
 		      while (SearchExt) {
-			  if (SearchExt->useChannel == 2 && 
-			      SearchExt->channelGroup && 
+			  if (SearchExt->useChannel == 2 &&
+			      SearchExt->channelGroup &&
 			      strcmp(SearchExt->channelGroup, group->name) == 0)
 			  {
 			      free(SearchExt->channelGroup);
@@ -498,12 +498,12 @@ eOSState cMenuEditChannelGroup::ProcessKey(eKeys Key)
 	      return osBack;
 	      break;
 	  case kRed:
-	  case kGreen:	      
+	  case kGreen:
 	  case kYellow:
 	  {
 	      cChannel* channel = Channels.First();
 	      int index = 0;
-	      while (channel) 
+	      while (channel)
 	      {
 		  if (channel->GroupSep())
 		  {
@@ -514,7 +514,7 @@ eOSState cMenuEditChannelGroup::ProcessKey(eKeys Key)
 		  channelSel[index] = (Key == kGreen?1:(Key == kRed?1-channelSel[index]:0));
 		  index++;
 		  channel = Channels.Next(channel);
-	      }	
+	      }
 	      Set();
 	      Display();
 	      return osContinue;
diff --git a/changrp.h b/changrp.h
index e10b550..8f40aa6 100644
--- a/changrp.h
+++ b/changrp.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/conf/epgsearchconflmail.templ b/conf/epgsearchconflmail.templ
index a34bd2e..046c763 100644
--- a/conf/epgsearchconflmail.templ
+++ b/conf/epgsearchconflmail.templ
@@ -1,9 +1,9 @@
 #########################################################################
 # This is a sample template for email notifications about timer conflicts.
-# 
+#
 # There are 4 sections to be defined:
 #  - "subject" to be used as mail subject
-#  - "mailbody" the body of the mail (put %conflicts% in the place where the 
+#  - "mailbody" the body of the mail (put %conflicts% in the place where the
 #           list of conflicts should appear!)
 #  - "conflictsat" the description of one time where one or more conflicts
 #           exists (put %confltimers% in the place where the list of conflict
diff --git a/conf/epgsearchmenu.conf b/conf/epgsearchmenu.conf
index 3d3658d..d5b0f22 100644
--- a/conf/epgsearchmenu.conf
+++ b/conf/epgsearchmenu.conf
@@ -20,11 +20,11 @@
 #                    epgsearchcats.conf, like %genre% or %category%
 #
 # for the 'Whats on...' menus there is also:
-# 
+#
 # %chnr%       - channel number
 # %chsh%       - the short channel name
 # %chlng%      - the 'normal' channel name
-# %progr%      - graphical progress bar 
+# %progr%      - graphical progress bar
 # %progrT2S%   - progress bar in text2skin style
 #
 #########################################################
@@ -34,4 +34,4 @@ MenuWhatsOnNext=%chnr%:4|%time% %t_status%:8|%category%:8| %title% ~ %subtitle%:
 MenuWhatsOnElse=%chnr%:4|%time% %t_status%:8|%category%:8| %title% ~ %subtitle%:35
 MenuSchedule=%time% %t_status%:8|%genre%:14| %title% ~ %subtitle%:35
 MenuSearchResults=%chsh%:12|%datesh%:6|%time%:6|%t_status%:2|%title% ~ %subtitle%:35
-# WarEagleIcons=1
\ No newline at end of file
+# WarEagleIcons=1
diff --git a/conf/epgsearchupdmail-html.templ b/conf/epgsearchupdmail-html.templ
index beab4b8..4e4103c 100644
--- a/conf/epgsearchupdmail-html.templ
+++ b/conf/epgsearchupdmail-html.templ
@@ -7,11 +7,11 @@
 #  - "subject" to be used as mail subject
 #  - "mailbody" the body of the mail:
 #    put %update.newtimers% in the place where the list of new timers should
-#    appear. The same for %update.modtimers%, %update.deltimers% and 
+#    appear. The same for %update.modtimers%, %update.deltimers% and
 #    %update.newevents& for the list of changed or deleted timers and event
 #    announcements.
 #  - "timer" the description of one timer and "event" with the description of
-#    one event. This section is used to display one timer within a timer list, 
+#    one event. This section is used to display one timer within a timer list,
 #    e.g. in %update.newtimers%. The same for "event".
 #
 # All sections are optional, e.g. if you don't use event announcements you
@@ -163,7 +163,7 @@ a.rightspace {
 </html></mailbody>
 
 ##############################################################################
-# here's the timer definition, which is used to display information about 
+# here's the timer definition, which is used to display information about
 # a timer within one of the timer lists. You can use any variables that refer
 # to an event or timer. (Please note, that a timer may have no event assigned
 # to it, resulting in an empty variable substitution!). You can also use 'user
@@ -188,9 +188,9 @@ a.rightspace {
 </timer>
 
 ##############################################################################
-# here's the event definition, which is used to display information about 
+# here's the event definition, which is used to display information about
 # an event in the announcement list. You can use any variables that refer
-# to an event. You can also use 'user defined' variables from 
+# to an event. You can also use 'user defined' variables from
 # epgsearchuservars.conf.
 ##############################################################################
 <event>
diff --git a/conf/epgsearchupdmail.templ b/conf/epgsearchupdmail.templ
index 5d547e9..ec01738 100644
--- a/conf/epgsearchupdmail.templ
+++ b/conf/epgsearchupdmail.templ
@@ -7,11 +7,11 @@
 #  - "subject" to be used as mail subject
 #  - "mailbody" the body of the mail:
 #    put %update.newtimers% in the place where the list of new timers should
-#    appear. The same for %update.modtimers%, %update.deltimers% and 
+#    appear. The same for %update.modtimers%, %update.deltimers% and
 #    %update.newevents& for the list of changed or deleted timers and event
 #    announcements.
 #  - "timer" the description of one timer and "event" with the description of
-#    one event. This section is used to display one timer within a timer list, 
+#    one event. This section is used to display one timer within a timer list,
 #    e.g. in %update.newtimers%. The same for "event".
 #
 # All sections are optional, e.g. if you don't use event announcements you
@@ -60,17 +60,17 @@ the following events where found:
 Have fun!</mailbody>
 
 ##############################################################################
-# here's the timer definition, which is used to display information about 
+# here's the timer definition, which is used to display information about
 # a timer within one of the timer lists. You can use any variables that refer
 # to an event or timer. (Please note, that a timer may have no event assigned
 # to it, resulting in an empty variable substitution!). You can also use 'user
 # defined' variables from epgsearchuservars.conf.
 ##############################################################################
 <timer>
-       Title: %title% ~ %subtitle% 
+       Title: %title% ~ %subtitle%
    Start/End: %time_w% %date% %time%-%timeend% (Timer: %timer.start%-%timer.stop%)
      Channel: %timer.chlng% (%timer.chnr%)
-        File: %timer.file%     
+        File: %timer.file%
 Modification: %timer.modreason%
       Search: %timer.search% (%timer.searchid%)
 
@@ -81,13 +81,13 @@ Summary:
 </timer>
 
 ##############################################################################
-# here's the event definition, which is used to display information about 
-# an event within the list of event announcements. You can use any variables 
-# that refer to an event. You can also use 'user defined' variables from 
+# here's the event definition, which is used to display information about
+# an event within the list of event announcements. You can use any variables
+# that refer to an event. You can also use 'user defined' variables from
 # epgsearchuservars.conf.
 ##############################################################################
 <event>
-       Title: %title% ~ %subtitle% 
+       Title: %title% ~ %subtitle%
    Start/End: %time_w% %date% %time%-%timeend%
      Channel: %chlng% (%chnr%)
       Search: %search% (%searchid%)
diff --git a/confdloader.c b/confdloader.c
index d740a71..5513fa3 100644
--- a/confdloader.c
+++ b/confdloader.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -132,11 +132,11 @@ bool cConfDLoader::LoadFile(const char *FileName)
 	  }
 	}
       }
+      fclose(f);
     }
-    fclose(f);
     return true;
   }
-  else 
+  else
     {
       LOG_ERROR_STR(FileName);
       return false;
diff --git a/confdloader.h b/confdloader.h
index c543be5..fa1b896 100644
--- a/confdloader.h
+++ b/confdloader.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -24,7 +24,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #ifndef VDR_EPGSEARCH_CONFDLOADER_INC
 #define VDR_EPGSEARCH_CONFDLOADER_INC
 
-class cConfDLoader {  
+class cConfDLoader {
  public:
   cConfDLoader() {}
   bool Load();
diff --git a/conflictcheck.c b/conflictcheck.c
index 7b30326..1d46fa5 100644
--- a/conflictcheck.c
+++ b/conflictcheck.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -219,7 +219,7 @@ void cConflictCheck::Check()
 	{
 	    LogFile.Log(2,"result of conflict check for %s:", DAYDATETIME(checkTime->evaltime));
 	    std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-	    for (it = checkTime->failedTimers.begin(); it != checkTime->failedTimers.end(); it++)
+	    for (it = checkTime->failedTimers.begin(); it != checkTime->failedTimers.end(); ++it)
 		LogFile.Log(2,"timer '%s' (%s, channel %s) failed", (*it)->timer->File(), DAYDATETIME((*it)->timer->StartTime()), CHANNELNAME((*it)->timer->Channel()));
 	}
     }
@@ -242,7 +242,7 @@ cList<cConflictCheckTimerObj>* cConflictCheck::CreateCurrentTimerList()
         // already recording?
 	int deviceNr = gl_recStatusMonitor->TimerRecDevice(ti)-1;
 
-        // create a copy of this timer 
+        // create a copy of this timer
         cTimer* clone = new cTimer(*ti);
         clone->SetEvent(ti->Event());
 
@@ -294,7 +294,7 @@ cList<cConflictCheckTimerObj>* cConflictCheck::CreateCurrentTimerList()
 		    continue;
 		}
 
-		// create a copy of this timer 
+		// create a copy of this timer
 		cTimer* clone = new cTimer(*ti);
 		clone->SetEvent(ti->Event());
 
@@ -401,13 +401,13 @@ cList<cConflictCheckTime>* cConflictCheck::CreateConflictList(cList<cConflictChe
     for(cConflictCheckTime* checkTime = EvalTimeList->First(); checkTime;) // clear the list
     {
 	cConflictCheckTime* checkTimeNext = EvalTimeList->Next(checkTime);
-	if (checkTime->failedTimers.size() == 0)
+	if (checkTime->failedTimers.empty())
 	    EvalTimeList->Del(checkTime);
 	else
 	{
 	    bool allTimersIgnored = true;
 	    std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-	    for (it = checkTime->failedTimers.begin(); it != checkTime->failedTimers.end(); it++)
+	    for (it = checkTime->failedTimers.begin(); it != checkTime->failedTimers.end(); ++it)
 	    {
 		numConflicts++;
 		if (!(*it)->ignore)
@@ -449,7 +449,7 @@ int cConflictCheck::ProcessCheckTime(cConflictCheckTime* checkTime)
     int Conflicts = 0;
     // detach all stopping timers from their devices
     std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-    for (it = checkTime->stoppingTimers.begin(); it != checkTime->stoppingTimers.end(); it++)
+    for (it = checkTime->stoppingTimers.begin(); it != checkTime->stoppingTimers.end(); ++it)
 	if ((*it) && (*it)->device >= 0)
 	{
 	  LogFile.Log(3,"detach device %d from  timer '%s' (%s, channel %s) at %s", ((*it)->device)+1, (*it)->timer->File(), DAYDATETIME((*it)->start), CHANNELNAME((*it)->timer->Channel()), DAYDATETIME(checkTime->evaltime));
@@ -466,7 +466,7 @@ int cConflictCheck::ProcessCheckTime(cConflictCheckTime* checkTime)
 
     LogFile.Log(3,"add pending timers");
     // if we have pending timers add them to the current start list
-    for (it = pendingTimers.begin(); it != pendingTimers.end(); it++)
+    for (it = pendingTimers.begin(); it != pendingTimers.end(); ++it)
     {
 	if ((*it) && (*it)->stop > checkTime->evaltime)
 	    checkTime->startingTimers.insert(*it);
@@ -475,7 +475,7 @@ int cConflictCheck::ProcessCheckTime(cConflictCheckTime* checkTime)
 
     LogFile.Log(3,"attach starting timers");
     // handle starting timers
-    for (it = checkTime->startingTimers.begin(); it != checkTime->startingTimers.end(); it++)
+    for (it = checkTime->startingTimers.begin(); it != checkTime->startingTimers.end(); ++it)
     {
 	bool NeedsDetachReceivers = false;
 	if (!(*it) || (*it)->device >= 0) continue; // already has a device
@@ -486,7 +486,7 @@ int cConflictCheck::ProcessCheckTime(cConflictCheckTime* checkTime)
 	    {
 		// disable running timers
 		std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it2 = devices[device].recTimers.begin();
-		for(; it2 != devices[device].recTimers.end(); it2++)
+		for(; it2 != devices[device].recTimers.end(); ++it2)
 		{
 		    LogFile.Log(3,"stopping timer '%s' (%s, channel %s) at %s on device %d because of higher priority", (*it2)->timer->File(), DAYDATETIME((*it2)->start), CHANNELNAME((*it2)->timer->Channel()), DAYDATETIME(checkTime->evaltime), device+1);
 		    AddConflict((*it2), checkTime, pendingTimers);
@@ -510,13 +510,11 @@ int cConflictCheck::ProcessCheckTime(cConflictCheckTime* checkTime)
     return Conflicts;
 }
 
-#if APIVERSNUM >= 10500
-
 eModuleStatus cConflictCheck::CamSlotModuleStatus(cCamSlot *CamSlot)
 {
   if (!CamSlot) return msNone;
   if ((int)camSlotStatusArray.size() != CamSlots.Count())
-    for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) 
+    for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot))
       camSlotStatusArray.push_back(CamSlot->ModuleStatus());
   if (CamSlot->Index() < (int)camSlotStatusArray.size())
     return camSlotStatusArray[CamSlot->Index()];
@@ -577,25 +575,23 @@ int cConflictCheck::GetDevice(cConflictCheckTimerObj* TimerObj, bool* NeedsDetac
              // difference, because it results in the most significant bit of the result.
              uint32_t imp = 0;
 	     // prefer the primary device for live viewing if we don't need to detach existing receivers
-             imp <<= 1; ;                                  
+             imp <<= 1; ;
              // use receiving devices if we don't need to detach existing receivers
-             imp <<= 1; imp |= !devices[i].Receiving() || ndr;                     
-	     // avoid devices that are receiving                     
-             imp <<= 1; imp |= devices[i].Receiving();                             
+             imp <<= 1; imp |= !devices[i].Receiving() || ndr;
+	     // avoid devices that are receiving
+             imp <<= 1; imp |= devices[i].Receiving();
 	     // use the device with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
              imp <<= 8; imp |= min(max(devices[i].Priority() + MAXPRIORITY, 0), 0xFF);
 	     // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
-             imp <<= 8; imp |= min(max((NumUsableSlots ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF);  
+             imp <<= 8; imp |= min(max((NumUsableSlots ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF);
 	     // avoid devices if we need to detach existing receivers
-             imp <<= 1; imp |= ndr;                                  
-	     // avoid the primary device                                             
+             imp <<= 1; imp |= ndr;
+	     // avoid the primary device
              imp <<= 1; imp |= devices[i].IsPrimaryDevice();
-	     // avoid cards with Common Interface for FTA channels         
-#if APIVERSNUM >= 10501
-	     imp <<= 1; imp |= NumUsableSlots ? 0 : devices[i].HasCi();                                  
-#endif
+	     // avoid cards with Common Interface for FTA channels
+	     imp <<= 1; imp |= NumUsableSlots ? 0 : devices[i].HasCi();
 	     // avoid full featured cards
-             imp <<= 1; imp |= devices[i].HasDecoder();              
+             imp <<= 1; imp |= devices[i].HasDecoder();
 	     // prefer CAMs that are known to decrypt this channel
              imp <<= 1; imp |= NumUsableSlots ? !ChannelCamRelations.CamDecrypt(Channel->GetChannelID(), j + 1) : 0;
              if (imp < Impact) {
@@ -612,36 +608,6 @@ int cConflictCheck::GetDevice(cConflictCheckTimerObj* TimerObj, bool* NeedsDetac
       }
   return selDevice;
 }
-#else
-// retrieves a free device (nearly a copy of the original cDevice::GetDevice)
-int cConflictCheck::GetDevice(cConflictCheckTimerObj* TimerObj, bool *NeedsDetachReceivers)
-{
-  int selDevice = -1;
-  int Priority = TimerObj->timer->Priority();
-  const cChannel* Channel = TimerObj->timer->Channel();
-  uint Impact = 0xFFFFFFFF;
-  for (int i = 0; i < numDevices; i++) {
-      bool ndr;
-      if (devices[i].ProvidesChannel(Channel, Priority, &ndr)) { // this device is basicly able to do the job
-         uint imp = 0;
-         imp <<= 1; imp |= !devices[i].Receiving() || ndr;
-         imp <<= 1; imp |= devices[i].Receiving();
-         imp <<= 1; //imp |= devices[i] == ActualDevice(); // cannot be handled
-         imp <<= 8; imp |= min(max(devices[i].Priority() + MAXPRIORITY, 0), 0xFF);
-         imp <<= 8; imp |= min(max(devices[i].ProvidesCa(Channel), 0), 0xFF);
-         imp <<= 1; imp |= devices[i].IsPrimaryDevice();
-         imp <<= 1; imp |= devices[i].HasDecoder();
-         if (imp < Impact) {
-            Impact = imp;
-	    selDevice = i;
-            if (NeedsDetachReceivers)
-               *NeedsDetachReceivers = ndr;
-            }
-         }
-      }
-  return selDevice;
-}
-#endif
 
 void cConflictCheck::AddConflict(cConflictCheckTimerObj* TimerObj, cConflictCheckTime* CheckTime, std::set<cConflictCheckTimerObj*>& pendingTimers)
 {
@@ -680,14 +646,14 @@ bool cConflictCheck::TimerInConflict(cTimer* timer)
     for(cConflictCheckTime* checkTime = failedList->First(); checkTime; checkTime = failedList->Next(checkTime))
     {
 	std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-	for (it = checkTime->failedTimers.begin(); it != checkTime->failedTimers.end(); it++)
+	for (it = checkTime->failedTimers.begin(); it != checkTime->failedTimers.end(); ++it)
 	{
 	    if (!(*it)->ignore)
 	    {
 		std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it2;
 		if ((*it)->concurrentTimers)
 		{
-		    for (it2 = (*it)->concurrentTimers->begin(); it2 != (*it)->concurrentTimers->end(); it2++)
+		    for (it2 = (*it)->concurrentTimers->begin(); it2 != (*it)->concurrentTimers->end(); ++it2)
 		    {
 			if ((*it2)->OrigTimer() == timer)
 			    return true;
@@ -708,18 +674,18 @@ void cConflictCheck::EvaluateConflCheckCmd()
 	{
 	  if (ct->ignore) continue;
 	  std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-	  for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); it++) 
+	  for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); ++it)
 	    if ((*it) && !(*it)->ignore)
 	      {
 		string result = EPGSearchConfig.conflCheckCmd;
-		if (!(*it)->OrigTimer()) 
+		if (!(*it)->OrigTimer())
 		  {
 		    LogFile.Log(3,"timer has disappeared meanwhile");
 		    continue;
 		  }
 		else
 		  LogFile.Log(3,"evaluating conflict check command for timer '%s' (%s, channel %s)", (*it)->timer->File(), DAYDATETIME((*it)->start), CHANNELNAME((*it)->timer->Channel()));
-		
+
 		if ((*it)->Event())
 		  {
 		    cVarExpr varExprEvent(result);
diff --git a/conflictcheck.h b/conflictcheck.h
index 58df933..7e6fb7a 100644
--- a/conflictcheck.h
+++ b/conflictcheck.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -36,7 +36,7 @@ class cConflictCheckTime;
 class TimerObjSort;
 
 // --- cConflictCheckTimerObj --------------------------------------------------------
-class cConflictCheckTimerObj : public cTimerObj 
+class cConflictCheckTimerObj : public cTimerObj
 {
     const cEvent* event;
  public:
@@ -72,7 +72,7 @@ public:
 
 
 // --- cConflictCheckTime --------------------------------------------------------
-class cConflictCheckTime : public cListObject 
+class cConflictCheckTime : public cListObject
 {
  public:
     time_t evaltime;
@@ -81,7 +81,7 @@ class cConflictCheckTime : public cListObject
     std::set<cConflictCheckTimerObj*,TimerObjSort> failedTimers;
     std::set<cConflictCheckTimerObj*,TimerObjSort> concurrentRecs;
     bool ignore;
-    
+
     cConflictCheckTime(time_t EvalTime) : evaltime(EvalTime), ignore(false) {}
     int Compare(const cListObject &ListObject) const
 	{
@@ -90,10 +90,9 @@ class cConflictCheckTime : public cListObject
 	}
 };
 
-#if APIVERSNUM < 10500
 // --- cConflictCheckDevice --------------------------------------------------------
 // This class tries to emulate the behaviour of a DVB device
-// NOTE: The case device == NULL is only for debugging purposes 
+// NOTE: The case device == NULL is only for debugging purposes
 class cConflictCheckDevice
 {
  public:
@@ -101,115 +100,20 @@ class cConflictCheckDevice
     cDevice* device;
     int devicenr;
 
-    cConflictCheckDevice() {}    
+    cConflictCheckDevice() {}
     int Priority() const
 	{
 	    int prio = -1;
-	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); it++)
-		prio = max(prio, (*it)->timer->Priority());
-	    return prio;
-	};
-    bool Receiving() const { return (recTimers.size() > 0); }
-    bool IsTunedTo (const cChannel* Channel) const
-	{
-	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); it++)
-		if ((*it)->timer->Channel()->Source() == Channel->Source() && 
-		    (*it)->timer->Channel()->Transponder() == Channel->Transponder())
-		    return true;
-	    return false;
-	}
-    bool HasDecoder() const { if (device) return device->HasDecoder(); else return (devicenr == 3); }
-    bool IsPrimaryDevice() const { if (device) return device->IsPrimaryDevice(); else return (devicenr == 3); }
-    bool ProvidesSource(int Source) const 
-	{ 
-	    if (device) return device->ProvidesSource(Source);
-	    else 
-	    {
-//		int type = Source & cSource::st_Mask;
-//		if (devicenr == 0) return type == cSource::stCable;
-//		if (devicenr > 0) return type == cSource::stTerr;
-//		return false; 
-		return true;
-	    }
-	}
-    int ProvidesCa(const cChannel* Channel) const { if (device) return device->ProvidesCa(Channel); else return true; }
-    int Ca() const
-	{
-	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); it++)
-		return (*it)->timer->Channel()->Ca();
-	    return 0;
-	}
-    bool HasPid(int Pid) const { return true; }
-    bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const
-	{
-	    bool result = false;
-	    bool hasPriority = Priority < 0 || Priority > this->Priority();
-	    bool needsDetachReceivers = false;
-
-#ifdef CFLC
-	    if (ProvidesSource(Channel->Source()))
-#else
-	    if (ProvidesSource(Channel->Source()) && ProvidesCa(Channel)) 
-#endif
-	    {
-		result = hasPriority;
-		if (Priority >= 0 && Receiving()) 
-		{
-		    if (IsTunedTo(Channel)) 
-		    {
-		      if ((Channel->Vpid() && !HasPid(Channel->Vpid())) || (Channel->Apid(0) && ! HasPid(Channel->Apid(0)))) 
-			{
-#ifdef DO_MULTIPLE_RECORDINGS
-#ifndef DO_MULTIPLE_CA_CHANNELS
-			    if (Ca() >= CA_ENCRYPTED_MIN || Channel->Ca() >= CA_ENCRYPTED_MIN)
-				needsDetachReceivers = Ca() != Channel->Ca();
-			    else
-#endif
-				if (!IsPrimaryDevice())
-				    result = true;
-#ifdef DO_REC_AND_PLAY_ON_PRIMARY_DEVICE
-				else
-				    result = Priority >= Setup.PrimaryLimit;
-#endif
-#endif
-			}
-			else
-			    result = !IsPrimaryDevice() || Priority >= Setup.PrimaryLimit;
-		    }
-		    else
-			needsDetachReceivers = true;
-		}
-	    }
-	    if (NeedsDetachReceivers)
-		*NeedsDetachReceivers = needsDetachReceivers;
-	    return result;	    
-	}
-};
-#else
-// --- cConflictCheckDevice --------------------------------------------------------
-// This class tries to emulate the behaviour of a DVB device
-// NOTE: The case device == NULL is only for debugging purposes 
-class cConflictCheckDevice
-{
- public:
-    std::set<cConflictCheckTimerObj*,TimerObjSort> recTimers;
-    cDevice* device;
-    int devicenr;
-
-    cConflictCheckDevice() {}    
-    int Priority() const
-	{
-	    int prio = -1;
-	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); it++)
+	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); ++it)
 		prio = max(prio, (*it)->timer->Priority());
 	    return prio;
 	};
     int CardIndex(void) const { if (device) return device->CardIndex(); else return devicenr;}
-    bool Receiving() const { return (recTimers.size() > 0); }
+    bool Receiving() const { return !recTimers.empty(); }
     bool IsTunedTo (const cChannel* Channel) const
 	{
-	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); it++)
-		if ((*it)->timer->Channel()->Source() == Channel->Source() && 
+	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); ++it)
+		if ((*it)->timer->Channel()->Source() == Channel->Source() &&
 		    (*it)->timer->Channel()->Transponder() == Channel->Transponder())
 		    return true;
 	    return false;
@@ -217,22 +121,22 @@ class cConflictCheckDevice
     bool HasDecoder() const { if (device) return device->HasDecoder(); else return (devicenr == 3); }
     bool HasCi() const { if (device) return device->HasCi(); else return (devicenr == 3); }
     bool IsPrimaryDevice() const { if (device) return device->IsPrimaryDevice(); else return (devicenr == 3); }
-    bool ProvidesSource(int Source) const 
-	{ 
+    bool ProvidesSource(int Source) const
+	{
 	    if (device) return device->ProvidesSource(Source);
-	    else 
+	    else
 	    {
 //		int type = Source & cSource::st_Mask;
 //		if (devicenr == 0) return type == cSource::stCable;
 //		if (devicenr > 0) return type == cSource::stTerr;
-//		return false; 
+//		return false;
 		return true;
 	    }
 	}
     cCamSlot *CamSlot(void) const { if (device) return device->CamSlot(); else return NULL;}
     int Ca() const
 	{
-	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); it++)
+	    for(std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it = recTimers.begin(); it != recTimers.end(); ++it)
 		return (*it)->timer->Channel()->Ca();
 	    return 0;
 	}
@@ -259,12 +163,20 @@ class cConflictCheckDevice
 				result = true;
 #ifdef DO_REC_AND_PLAY_ON_PRIMARY_DEVICE
 			    else
+#if APIVERSNUM < 10725
 				result = Priority >= Setup.PrimaryLimit;
+#else
+				result = Priority >= 0;
+#endif
 #endif
 #endif
 			}
 			else
+#if APIVERSNUM < 10725
 			    result = !IsPrimaryDevice() || Priority >= Setup.PrimaryLimit;
+#else
+			    result = !IsPrimaryDevice() || Priority >= 0;
+#endif
 		    }
 		    else
 			needsDetachReceivers = true;
@@ -276,10 +188,8 @@ class cConflictCheckDevice
 	}
 };
 
-#endif
-
 // --- cConflictCheck --------------------------------------------------------
-class cConflictCheck 
+class cConflictCheck
 {
     cList<cConflictCheckTimerObj>* timerList;
     cList<cConflictCheckTime>* evaltimeList;
@@ -287,7 +197,7 @@ class cConflictCheck
     std::set<cConflictCheckTimerObj*> pendingTimers;
     cConflictCheckDevice *devices;
 
-    int numDevices;   
+    int numDevices;
     time_t maxCheck;
     std::vector<eModuleStatus> camSlotStatusArray;
  public:
@@ -309,9 +219,7 @@ class cConflictCheck
     int ProcessCheckTime(cConflictCheckTime* checkTime);
     bool TimerInConflict(cTimer*);
     void EvaluateConflCheckCmd();
-#if APIVERSNUM >= 10500
     eModuleStatus CamSlotModuleStatus(cCamSlot *CamSlot);
-#endif
 };
 
 #endif
diff --git a/conflictcheck_thread.c b/conflictcheck_thread.c
index d5c9cdb..c7398db 100644
--- a/conflictcheck_thread.c
+++ b/conflictcheck_thread.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -33,7 +33,7 @@ cConflictCheckThread *cConflictCheckThread::m_Instance = NULL;
 time_t cConflictCheckThread::m_cacheNextConflict = 0;
 int cConflictCheckThread::m_cacheRelevantConflicts = 0;
 int cConflictCheckThread::m_cacheTotalConflicts = 0;
-bool cConflictCheckThread::m_runOnce = false; 
+bool cConflictCheckThread::m_runOnce = false;
 bool cConflictCheckThread::m_forceUpdate = false;
 
 cConflictCheckThread::cConflictCheckThread(cPluginEpgsearch* thePlugin)
@@ -47,15 +47,15 @@ cConflictCheckThread::cConflictCheckThread(cPluginEpgsearch* thePlugin)
 }
 
 cConflictCheckThread::~cConflictCheckThread() {
-    if (m_Active) 
+    if (m_Active)
 	Stop();
 }
 
-void cConflictCheckThread::Init(cPluginEpgsearch* thePlugin, bool runOnce) 
+void cConflictCheckThread::Init(cPluginEpgsearch* thePlugin, bool runOnce)
 {
    if (EPGSearchConfig.checkTimerConflictsAfterUpdate || EPGSearchConfig.conflictCheckIntervall == 0)
    {
-      if (!runOnce) return;    
+      if (!runOnce) return;
       m_runOnce = true;
    }
 
@@ -81,7 +81,7 @@ void cConflictCheckThread::Stop(void) {
     Cancel(6);
 }
 
-void cConflictCheckThread::Action(void) 
+void cConflictCheckThread::Action(void)
 {
     SetPriority(CONFLICTCHECK_NICE);
 
@@ -96,7 +96,7 @@ void cConflictCheckThread::Action(void)
       }
 
     time_t nextUpdate = time(NULL);
-    while (m_Active) 
+    while (m_Active)
     {
 	time_t now = time(NULL);
 	if (now >= nextUpdate || m_forceUpdate)
@@ -115,25 +115,25 @@ void cConflictCheckThread::Action(void)
 	    time_t nextConflict = 0;
 	    if (conflictCheck.relevantConflicts > 0)
 	    {
-	      cString msgfmt = cString::sprintf(tr("%d timer conflict(s)! First at %s. Show them?"), 
+	      cString msgfmt = cString::sprintf(tr("%d timer conflict(s)! First at %s. Show them?"),
 						conflictCheck.relevantConflicts,
 						*DateTime(conflictCheck.nextRelevantConflictDate));
-	      bool doMessage = EPGSearchConfig.noConflMsgWhileReplay == 0 || 
-		!cDevice::PrimaryDevice()->Replaying() || 
+	      bool doMessage = EPGSearchConfig.noConflMsgWhileReplay == 0 ||
+		!cDevice::PrimaryDevice()->Replaying() ||
 		conflictCheck.nextRelevantConflictDate - now < 2*60*60;
-	      if (doMessage && SendMsg(msgfmt, true,7) == kOk)			
+	      if (doMessage && SendMsg(msgfmt, true,7) == kOk)
 		{
 		  m_plugin->showConflicts = true;
-		  cRemote::CallPlugin("epgsearch");	
+		  cRemote::CallPlugin("epgsearch");
 		}
-	      
+
 	      if (EPGSearchConfig.sendMailOnConflicts)
 		{
 		  cMailConflictNotifier mailNotifier;
 		  mailNotifier.SendConflictNotifications(conflictCheck);
 		}
 	      conflictCheck.EvaluateConflCheckCmd();
-	    }	    
+	    }
 	    // store for external access
 	    cConflictCheckThread::m_cacheNextConflict = conflictCheck.nextRelevantConflictDate;
 	    cConflictCheckThread::m_cacheRelevantConflicts = conflictCheck.relevantConflicts;
diff --git a/conflictcheck_thread.h b/conflictcheck_thread.h
index 6edaa06..7c7889a 100644
--- a/conflictcheck_thread.h
+++ b/conflictcheck_thread.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -33,7 +33,7 @@ class cConflictCheckThread: public cThread {
     bool m_Active;
     time_t m_lastUpdate;
     cPluginEpgsearch* m_plugin;
-    static bool m_runOnce; 
+    static bool m_runOnce;
     static bool m_forceUpdate;
     cCondWait Wait;
  protected:
@@ -50,4 +50,4 @@ class cConflictCheckThread: public cThread {
     static void Exit(void);
 };
 
-#endif 
+#endif
diff --git a/conflictcheckonly.c b/conflictcheckonly.c
index 334b536..30a8056 100644
--- a/conflictcheckonly.c
+++ b/conflictcheckonly.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -24,10 +24,6 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include <string>
 #include <list>
 #include <vdr/plugin.h>
-#if APIVERSNUM < 10507
-#include "i18n.h"
-#define trNOOP(s) (s)
-#endif
 #include "services.h"
 #include "mainmenushortcut.h"
 
@@ -36,104 +32,6 @@ static const char DESCRIPTION[]   = trNOOP("Direct access to epgsearch's conflic
 static const char MAINMENUENTRY[] = trNOOP("Timer conflicts");
 static const char SETUPTEXT[]     = trNOOP("Conflict info in main menu");
 
-#if APIVERSNUM < 10507
-const tI18nPhrase PhrasesLocal[] = {
-  {
-   "Direct access to epgsearch's conflict check menu",
-   "Direkter Zugriff auf epgsearch's Konflikt-Prüfungs-Menü",	// Deutsch
-   "",				// TODO 
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO 
-   "",				// TODO
-   "",				// TODO 
-   "Suoratoiminto EPGSearch-laajennoksen ajastimien tarkistukselle",
-   "",				// TODO Polski
-   "Acceso directo al menú de conflictos EPGSearch",			// Español
-   "",				// TODO ÅëëçíéêÜ (Greek)
-   "",				// TODO Svenska
-   "",				// TODO Romaneste
-   "",				// TODO Magyar
-   "",				// TODO Català
-   "",				// TODO ÀãááÚØÙ (Russian)
-   "",				// TODO Hrvatski (Croatian)
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {
-   "Timer conflicts",
-   "Timer-Konflikte",
-   "",				// TODO
-   "",				// TODO
-   "",
-   "",				// TODO
-   "",
-   "",				// TODO
-   "Ajastimien päällekkäisyydet",
-   "",				// TODO
-   "Conflictos de programación",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {
-   "next",
-   "nächster",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "seuraava",
-   "",				// TODO
-   "siguiente",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {
-   "Conflict info in main menu",
-   "Konflikt-Info im Hauptmenü",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "Näytä päällekkäisyydet päävalikossa",
-   "",				// TODO
-   "Mostrar conflictos en menú principal",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {NULL}
-};
-#endif
-
 cString DateTime(time_t t)
 {
   char buffer[32];
@@ -157,30 +55,18 @@ public:
   virtual const char *Version() {
     return VERSION;
   }
-#if APIVERSNUM < 10507
-  virtual const char *Description() {
-    return tr(DESCRIPTION);
-  }
-#else
   virtual const char *Description() {
     return I18nTranslate(DESCRIPTION, I18nEpgsearch);
   }
-#endif
   virtual bool Initialize();
   virtual cOsdObject *MainMenuAction() {
     return GetEpgSearchMenu("Epgsearch-conflictmenu-v1.0");
   }
 
 protected:
-#if APIVERSNUM < 10507
-  virtual const char *SetupText() {
-    return tr(SETUPTEXT);
-  }
-#else
   virtual const char *SetupText() {
     return I18nTranslate(SETUPTEXT, I18nEpgsearch);
   }
-#endif
   virtual const char *MainMenuText(void);
 };
 
@@ -195,11 +81,7 @@ cPluginConflictcheckonly::~cPluginConflictcheckonly()
 
 const char *cPluginConflictcheckonly::MainMenuText(void)
 {
-#if APIVERSNUM < 10507
-  const char *menuText = tr(MAINMENUENTRY);
-#else
   const char *menuText = I18nTranslate(MAINMENUENTRY, I18nEpgsearch);
-#endif
 
   cPlugin *epgSearchPlugin = cPluginManager::GetPlugin("epgsearch");
   if (epgSearchPlugin) {
@@ -208,11 +90,7 @@ const char *cPluginConflictcheckonly::MainMenuText(void)
       if (serviceData->relevantConflicts > 0) {
 	free(_menuText);
 	if (asprintf(&_menuText, "%s (%d, %s: %s)", menuText, serviceData->relevantConflicts,
-#if APIVERSNUM < 10507
-		     tr("next"), *DateTime(serviceData->nextConflict)))
-#else
-	    I18nTranslate("next", I18nEpgsearch), *DateTime(serviceData->nextConflict)))
-#endif	
+		     I18nTranslate(trNOOP("next"), I18nEpgsearch), *DateTime(serviceData->nextConflict)))
             menuText = _menuText;
       }
     }
@@ -223,9 +101,6 @@ const char *cPluginConflictcheckonly::MainMenuText(void)
 
 bool cPluginConflictcheckonly::Initialize(void)
 {
-#if APIVERSNUM < 10507
-  RegisterI18n(PhrasesLocal);
-#endif
   return cMainMenuShortcut::Initialize();
 }
 
diff --git a/createcats.c b/createcats.c
index a17b5f0..c83866c 100644
--- a/createcats.c
+++ b/createcats.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -93,9 +93,9 @@ class cCat {
     int appeared;
     char name[MAXPARSEBUFFER];
     int numvalues;
-    char** values; 
-    
-    cCat(char* n) 
+    char** values;
+
+    cCat(char* n)
 	:appeared(0), numvalues(0), values(NULL)
 	{
 	    strcpy(name, n);
@@ -137,9 +137,9 @@ class cCats {
     cCat** cats;
  public:
     cCats():numcats(0), cats(NULL) {}
-    
+
     int num() {return numcats;}
-    
+
     cCat* add(char* name)
 	{
 	    cCat* newCat = new cCat(name);
@@ -147,7 +147,7 @@ class cCats {
 	    cats[numcats++] = newCat;
 	    return newCat;
 	}
-    
+
     cCat* get(int i)
 	{
 	    if (i>=0 && i<numcats)
@@ -155,7 +155,7 @@ class cCats {
 	    else
 		return NULL;
 	}
-    
+
     cCat* exists(char* name)
 	{
 	    for(int i=0; i<numcats; i++)
@@ -187,13 +187,13 @@ int main(int argc, char *argv[])
       { NULL,     no_argument,       NULL, 0 }
     };
 
-    int c;    
-    while ((c = getopt_long(argc, argv, "m:v:l:h", long_options, NULL)) != -1) 
+    int c;
+    while ((c = getopt_long(argc, argv, "m:v:l:h", long_options, NULL)) != -1)
     {
-        switch (c) 
+        switch (c)
 	{
 	    case 'm':
-		if (isnumber(optarg)) 
+		if (isnumber(optarg))
 		{
 		    minappearance = atoi(optarg);
 		    break;
@@ -202,7 +202,7 @@ int main(int argc, char *argv[])
 		return 2;
 		break;
 	    case 'v':
-		if (isnumber(optarg)) 
+		if (isnumber(optarg))
 		{
 		    maxvalues = atoi(optarg);
 		    break;
@@ -211,7 +211,7 @@ int main(int argc, char *argv[])
 		return 2;
 		break;
 	    case 'l':
-		if (isnumber(optarg)) 
+		if (isnumber(optarg))
 		{
 		    maxlength = atoi(optarg);
 		    break;
@@ -234,22 +234,22 @@ int main(int argc, char *argv[])
 	}
     }
 
-    if (argc < 2)	
+    if (argc < 2)
     {
 	fprintf(stderr, "ERROR: please pass your epg.data\nusage: createcats epg.data\n");
 	return 1;
     }
-    
+
     f = fopen(argv[argc-1], "r");
     if (f == NULL)
     {
 	fprintf(stderr, "ERROR: could not open: %s\n", argv[1]);
 	return 1;
     }
-    
+
     char *s;
     cReadLine ReadLine;
-    while ((s = ReadLine.Read(f)) != NULL) 
+    while ((s = ReadLine.Read(f)) != NULL)
     {
         if (*s == 'D')
 	{
@@ -261,7 +261,7 @@ int main(int argc, char *argv[])
 	    char *pstrSearch=strdup(s);
 	    pstrSearchToken=strtok(pstrSearch, "|");
 
-	    while(pstrSearchToken) 
+	    while(pstrSearchToken)
 	    {
 		// must have a ':'
 		char* szPos = NULL;
@@ -270,34 +270,34 @@ int main(int argc, char *argv[])
 		    pstrSearchToken=strtok(NULL, "|");
 		    continue;
 		}
-		
+
 		char catname[MAXPARSEBUFFER] = "";
 		char catvalue[MAXPARSEBUFFER] = "";
-		
+
 		strncpy(catname, pstrSearchToken, szPos - pstrSearchToken);
 		catname[szPos - pstrSearchToken] = 0;
 		strcpy(catvalue, skipspace(szPos+1));
-		
+
 		cCat* cat = catlist.exists(catname);
 		if (!cat && strlen(catname) < maxlength) // accept only names up to 30 chars
 		    cat = catlist.add(catname);
-		
+
 		if (cat)
 		{
 		    cat->appeared++;
 		    if (strlen(catvalue) < maxlength) // accept only values up to 30 chars
 			cat->addvalue(catvalue);
 		}
-		
+
 		pstrSearchToken=strtok(NULL, "|");
 	    }
 	    free(pstrSearch);
         }
-    }	
+    }
     fclose(f);
 
     catlist.sort();
-    
+
     f = fopen("epgsearchcats.conf", "w");
     if (f == NULL)
     {
@@ -322,9 +322,9 @@ int main(int argc, char *argv[])
     fprintf(f, "# - 'searchmode' is an optional parameter specifying the mode of search:\n");
     fprintf(f, "#     text comparison:\n");
     fprintf(f, "#     0 - the whole term must appear as substring\n");
-    fprintf(f, "#     1 - all single words (delimiters are ',', ';', '|' or '~')\n"); 
+    fprintf(f, "#     1 - all single words (delimiters are ',', ';', '|' or '~')\n");
     fprintf(f, "#         must exist as substrings. This is the default search mode.\n");
-    fprintf(f, "#     2 - at least one word (delimiters are ',', ';', '|' or '~')\n"); 
+    fprintf(f, "#     2 - at least one word (delimiters are ',', ';', '|' or '~')\n");
     fprintf(f, "#         must exist as substring.\n");
     fprintf(f, "#     3 - matches exactly\n");
     fprintf(f, "#     4 - regular expression\n");
@@ -344,7 +344,7 @@ int main(int argc, char *argv[])
 	{
 	    fprintf(f, "# '%s' found %d times with %d different values %s\n", cat->name, cat->appeared, cat->numvalues, cat->numvalues>=(int)maxvalues?"(values omitted, too much)":"");
 	    fprintf(f, "%d|%s|%s|", id++, cat->name, cat->name);
-	    for(int j=0; cat->numvalues < (int)maxvalues && j<cat->numvalues; j++) 
+	    for(int j=0; cat->numvalues < (int)maxvalues && j<cat->numvalues; j++)
 		fprintf(f, "%s%s", cat->values[j], (j == cat->numvalues-1?"":","));
 	    fprintf(f, "|1\n\n");
 	}
diff --git a/distance.c b/distance.c
index 688fbb1..f790b7b 100644
--- a/distance.c
+++ b/distance.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -61,7 +61,7 @@ int mi;
 
 //**************************************************
 // Get a pointer to the specified cell of the matrix
-//************************************************** 
+//**************************************************
 
 int *Distance::GetCellPointer (int *pOrigin, int col, int row, int nCols)
 {
@@ -69,7 +69,7 @@ int *Distance::GetCellPointer (int *pOrigin, int col, int row, int nCols)
 }
 
 //*****************************************************
-// Get the contents of the specified cell in the matrix 
+// Get the contents of the specified cell in the matrix
 //*****************************************************
 
 int Distance::GetAt (int *pOrigin, int col, int row, int nCols)
@@ -115,7 +115,7 @@ int left; // contents of cell immediately to left
 int diag; // contents of cell immediately above and to left
 int sz; // number of cells in matrix
 
-  // Step 1     
+  // Step 1
 
   n = min((int)strlen(s), maxLength);
   m = min((int)strlen(t), maxLength);
@@ -159,7 +159,7 @@ int sz; // number of cells in matrix
         cost = 1;
       }
 
-      // Step 6 
+      // Step 6
 
       above = GetAt (d,i-1,j, n);
       left = GetAt (d,i, j-1, n);
@@ -174,6 +174,6 @@ int sz; // number of cells in matrix
   result = GetAt (d, n, m, n);
   free (d);
   return result;
-        
+
 }
 
diff --git a/distance.h b/distance.h
index e38ba3a..247ec2f 100644
--- a/distance.h
+++ b/distance.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -42,6 +42,6 @@ class Distance
     int *GetCellPointer (int *pOrigin, int col, int row, int nCols);
     int GetAt (int *pOrigin, int col, int row, int nCols);
     void PutAt (int *pOrigin, int col, int row, int nCols, int x);
-}; 
+};
 
 #endif
diff --git a/doc/de/epgsearch.1.txt b/doc/de/epgsearch.1.txt
index 57110f8..d80bf41 100644
--- a/doc/de/epgsearch.1.txt
+++ b/doc/de/epgsearch.1.txt
@@ -1,4 +1,4 @@
-epgsearch(1)                Epgsearch Version 1.0.0               epgsearch(1)
+epgsearch(1)                Epgsearch Version 1.0.1               epgsearch(1)
 
 
 
@@ -54,8 +54,6 @@ BESCHREIBUNG
 
         - Email-Benachrichtigungen ueber Suchtimer-Updates und Timer-Konflikte
 
-       Funktioniert nur mit >= vdr-1.3.46.
-
        Teile der Quelltexte basieren auf dem repeating-epg-patch von Gerhard
        Steiner, der mir die Erlaubnis gab, diese zu verwenden. Danke fuer
        seine Arbeit!
@@ -392,12 +390,7 @@ Inhalt
        existieren, kann diese Funktion durch Umschalten mit '0' erreicht
        werden. Die Tasten Gruen und Gelb wechseln dann zu '<<' und '>>'. Das
        Umschalten kann ueber das Setup angepasst werden.  Man kann einen
-       Fortschrittsbalken im Menue 'Jetzt'/'Naechste' anzeigen lassen.  Falls
-       text2skin verwendet wird, sollte die Option "text2skin" in den Setup-
-       Optionen "Zeige Fortschrittsbalken in 'Jetzt'"/"Zeige
-       Fortschrittsbalken in 'Naechste'" verwendet werden (Die Option
-       'graphisch' kann ebenfalls mit text2skin funktionieren, das ist aber
-       abhaengig vom gewaehlten skin)
+       Fortschrittsbalken im Menue 'Jetzt'/'Naechste' anzeigen lassen.
 
    1.4 Menue Setup
        1.4.1 Allgemein
@@ -437,10 +430,7 @@ Inhalt
 
        - Zeige Fortschrittsbalken in 'Jetzt':
            Im Menue 'Jetzt' kann ein Fortschrittsbalken angezeigt werden, der
-           den Fortschritt der laufenden Sendung anzeigt. Falls text2skin
-           verwendet wird, sollte die Option "pipes" verwendet werden (Die
-           Option 'graphisch' kann ebenfalls mit text2skin funktionieren, das
-           ist aber abhaengig vom gewaehlten skin)
+           den Fortschritt der laufenden Sendung anzeigt.
 
        - Zeige Kanalnummer:
            auswaehlen, um eine fuehrende Programmnummer vor jedem EPG-Eintrag
@@ -466,8 +456,7 @@ Inhalt
 
        - Timer mit 'Aufnehmen' sofort anlegen:
            Falls 'Ja' wird ein Timer sofort erzeugt, sobald man 'Aufnehmen'
-           drueckt, wie in vdr-1.3.38 eingefuehrt, sonst wird das
-           Timer-Edit-Menue angezeigt.
+           drueckt, sonst wird das Timer-Edit-Menue angezeigt.
 
        - Zeige Kanaele ohne EPG:
            zur Anzeige von Programmen ohne EPG, um auf diese umschalten zu
@@ -475,8 +464,7 @@ Inhalt
 
        - Timer mit 'Aufnehmen' sofort anlegen:
            Falls 'Ja' wird nach Druecken von 'Aufnahme' sofort ein Timer
-           angelegt, wie in vdr-1.3.38 eingefuehrt, falls 'Nein' erscheint das
-           Timer-Edit-Menue.
+           angelegt, falls 'Nein' erscheint das Timer-Edit-Menue.
 
        - Zeitintervall fuer FR/FF [min]:
            In den Menues 'Programm', 'Jetzt', 'Naechste', 'Benutzerdef. Zeit
@@ -990,11 +978,6 @@ Inhalt
        in die keymacros.conf schreiben, wobei x die Position von epgsearch
        innerhalb des launcher listings ist.
 
-       Achtung: Versteckt man das Plugin ohne die Verwendung des launcher
-       plugins oder anderer Patches, die das Aufrufen versteckter Plugins
-       erlauben, erhaelt man das VDR-Standard-Menue beim Druecken von Gruen.
-       Ab VDR 1.3.32 sind dazu keine Patches oder Plugins mehr notwendig.
-
        Ein weiterer Ansatz ist ein Patch gegen VDR, der das Standardmenue
        'Programm' gegen epgsearch austauscht.  Hierzu VDR mit dem Patch
        vdr-replace-schedulemenu.diff.gz aus dem Patches-Verzeichnis patchen.
@@ -1041,11 +1024,14 @@ Ausfuehrliche Beschreibung
        Sollte Deine Distribution diese Dateien nicht enthalten, kannst Du sie
        dir online durchlesen
 
-       <http://winni.vdr-developer.org/epgsearch/README.DE>
+       http://winni.vdr-developer.org/epgsearch/README.DE <http://winni.vdr-
+       developer.org/epgsearch/README.DE>
 
-       <http://winni.vdr-developer.org/epgsearch/README>
+       http://winni.vdr-developer.org/epgsearch/README <http://winni.vdr-
+       developer.org/epgsearch/README>
 
-       <http://winni.vdr-developer.org/epgsearch/MANUAL>
+       http://winni.vdr-developer.org/epgsearch/MANUAL <http://winni.vdr-
+       developer.org/epgsearch/MANUAL>
 
 SIEHE AUCH
        "epgsearch.conf(5)", "epgsearchcats.conf(5)", "epgsearchcmds.conf(5)",
@@ -1110,10 +1096,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -1146,4 +1134,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04                      epgsearch(1)
+perl v5.14.2                      2012-03-25                      epgsearch(1)
diff --git a/doc/de/epgsearch.conf.5.txt b/doc/de/epgsearch.conf.5.txt
index 2c6e64e..091752a 100644
--- a/doc/de/epgsearch.conf.5.txt
+++ b/doc/de/epgsearch.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearch.conf(5)           Epgsearch Version 1.0.0          epgsearch.conf(5)
+epgsearch.conf(5)           Epgsearch Version 1.0.1          epgsearch.conf(5)
 
 
 
@@ -107,10 +107,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -143,4 +145,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04                 epgsearch.conf(5)
+perl v5.14.2                      2012-03-25                 epgsearch.conf(5)
diff --git a/doc/de/epgsearchblacklists.conf.5.txt b/doc/de/epgsearchblacklists.conf.5.txt
index 44c3fdb..ae63a2e 100644
--- a/doc/de/epgsearchblacklists.conf.5.txt
+++ b/doc/de/epgsearchblacklists.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchblacklists.conf(5) Epgsearch Version 1.0.0epgsearchblacklists.conf(5)
+epgsearchblacklists.conf(5) Epgsearch Version 1.0.1epgsearchblacklists.conf(5)
 
 
 
@@ -35,10 +35,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -71,4 +73,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04       epgsearchblacklists.conf(5)
+perl v5.14.2                      2012-03-25       epgsearchblacklists.conf(5)
diff --git a/doc/de/epgsearchcats.conf.5.txt b/doc/de/epgsearchcats.conf.5.txt
index 810d014..34eb222 100644
--- a/doc/de/epgsearchcats.conf.5.txt
+++ b/doc/de/epgsearchcats.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchcats.conf(5)       Epgsearch Version 1.0.0      epgsearchcats.conf(5)
+epgsearchcats.conf(5)       Epgsearch Version 1.0.1      epgsearchcats.conf(5)
 
 
 
@@ -103,10 +103,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -139,4 +141,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04             epgsearchcats.conf(5)
+perl v5.14.2                      2012-03-25             epgsearchcats.conf(5)
diff --git a/doc/de/epgsearchchangrps.conf.5.txt b/doc/de/epgsearchchangrps.conf.5.txt
index 31917a1..7ea0e1f 100644
--- a/doc/de/epgsearchchangrps.conf.5.txt
+++ b/doc/de/epgsearchchangrps.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchchangrps.conf(5)   Epgsearch Version 1.0.0  epgsearchchangrps.conf(5)
+epgsearchchangrps.conf(5)   Epgsearch Version 1.0.1  epgsearchchangrps.conf(5)
 
 
 
@@ -34,10 +34,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -70,4 +72,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04         epgsearchchangrps.conf(5)
+perl v5.14.2                      2012-03-25         epgsearchchangrps.conf(5)
diff --git a/doc/de/epgsearchcmds.conf.5.txt b/doc/de/epgsearchcmds.conf.5.txt
index 2b28918..5aa0cc0 100644
--- a/doc/de/epgsearchcmds.conf.5.txt
+++ b/doc/de/epgsearchcmds.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchcmds.conf(5)       Epgsearch Version 1.0.0      epgsearchcmds.conf(5)
+epgsearchcmds.conf(5)       Epgsearch Version 1.0.1      epgsearchcmds.conf(5)
 
 
 
@@ -39,10 +39,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -75,4 +77,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04             epgsearchcmds.conf(5)
+perl v5.14.2                      2012-03-25             epgsearchcmds.conf(5)
diff --git a/doc/de/epgsearchdirs.conf.5.txt b/doc/de/epgsearchdirs.conf.5.txt
index 1de8a3c..ce6dbb9 100644
--- a/doc/de/epgsearchdirs.conf.5.txt
+++ b/doc/de/epgsearchdirs.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchdirs.conf(5)       Epgsearch Version 1.0.0      epgsearchdirs.conf(5)
+epgsearchdirs.conf(5)       Epgsearch Version 1.0.1      epgsearchdirs.conf(5)
 
 
 
@@ -60,10 +60,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -96,4 +98,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04             epgsearchdirs.conf(5)
+perl v5.14.2                      2012-03-25             epgsearchdirs.conf(5)
diff --git a/doc/de/epgsearchmenu.conf.5.txt b/doc/de/epgsearchmenu.conf.5.txt
index 854c521..644367e 100644
--- a/doc/de/epgsearchmenu.conf.5.txt
+++ b/doc/de/epgsearchmenu.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchmenu.conf(5)       Epgsearch Version 1.0.0      epgsearchmenu.conf(5)
+epgsearchmenu.conf(5)       Epgsearch Version 1.0.1      epgsearchmenu.conf(5)
 
 
 
@@ -97,10 +97,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -133,4 +135,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04             epgsearchmenu.conf(5)
+perl v5.14.2                      2012-03-25             epgsearchmenu.conf(5)
diff --git a/doc/de/epgsearchswitchtimers.conf.5.txt b/doc/de/epgsearchswitchtimers.conf.5.txt
index 63e17b4..e6a8c3d 100644
--- a/doc/de/epgsearchswitchtimers.conf.5.txt
+++ b/doc/de/epgsearchswitchtimers.conf.5.txt
@@ -35,10 +35,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -71,4 +73,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04     epgsearchswitchtimers.conf(5)
+perl v5.14.2                      2012-03-25     epgsearchswitchtimers.conf(5)
diff --git a/doc/de/epgsearchtemplates.conf.5.txt b/doc/de/epgsearchtemplates.conf.5.txt
index 24711a1..daa3e9d 100644
--- a/doc/de/epgsearchtemplates.conf.5.txt
+++ b/doc/de/epgsearchtemplates.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchtemplates.conf(5)  Epgsearch Version 1.0.0 epgsearchtemplates.conf(5)
+epgsearchtemplates.conf(5)  Epgsearch Version 1.0.1 epgsearchtemplates.conf(5)
 
 
 
@@ -22,10 +22,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -58,4 +60,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04        epgsearchtemplates.conf(5)
+perl v5.14.2                      2012-03-25        epgsearchtemplates.conf(5)
diff --git a/doc/de/epgsearchuservars.conf.5.txt b/doc/de/epgsearchuservars.conf.5.txt
index 07c014c..a6fd6af 100644
--- a/doc/de/epgsearchuservars.conf.5.txt
+++ b/doc/de/epgsearchuservars.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchuservars.conf(5)   Epgsearch Version 1.0.0  epgsearchuservars.conf(5)
+epgsearchuservars.conf(5)   Epgsearch Version 1.0.1  epgsearchuservars.conf(5)
 
 
 
@@ -148,10 +148,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LIZENZ
@@ -184,4 +186,4 @@ COPYRIGHT and LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04         epgsearchuservars.conf(5)
+perl v5.14.2                      2012-03-25         epgsearchuservars.conf(5)
diff --git a/doc/de/noannounce.conf.5.txt b/doc/de/noannounce.conf.5.txt
index 8699785..7c12798 100644
--- a/doc/de/noannounce.conf.5.txt
+++ b/doc/de/noannounce.conf.5.txt
@@ -1,4 +1,4 @@
-noannounce.conf(5)          Epgsearch Version 1.0.0         noannounce.conf(5)
+noannounce.conf(5)          Epgsearch Version 1.0.1         noannounce.conf(5)
 
 
 
@@ -38,10 +38,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT und LIZENZ
@@ -53,4 +55,4 @@ COPYRIGHT und LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04                noannounce.conf(5)
+perl v5.14.2                      2012-03-25                noannounce.conf(5)
diff --git a/doc/de/timersdone.conf.5.txt b/doc/de/timersdone.conf.5.txt
index 4fc2c65..481da43 100644
--- a/doc/de/timersdone.conf.5.txt
+++ b/doc/de/timersdone.conf.5.txt
@@ -1,4 +1,4 @@
-timersdone.conf(5)          Epgsearch Version 1.0.0         timersdone.conf(5)
+timersdone.conf(5)          Epgsearch Version 1.0.1         timersdone.conf(5)
 
 
 
@@ -36,10 +36,12 @@ AUTOR (man pages)
 FEHLER MELDEN
        Fehlerberichte bitte im Bugtracker.
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT und LIZENZ
@@ -72,4 +74,4 @@ COPYRIGHT und LIZENZ
 
 
 
-perl v5.10.1                      2011-09-04                timersdone.conf(5)
+perl v5.14.2                      2012-03-25                timersdone.conf(5)
diff --git a/doc/en/createcats.1.txt b/doc/en/createcats.1.txt
index 4ccaac4..e5e6b38 100644
--- a/doc/en/createcats.1.txt
+++ b/doc/en/createcats.1.txt
@@ -1,4 +1,4 @@
-createcats(1)               Epgsearch Version 1.0.0              createcats(1)
+createcats(1)               Epgsearch Version 1.0.1              createcats(1)
 
 
 
@@ -79,10 +79,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bugreports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -112,4 +114,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04                     createcats(1)
+perl v5.14.2                      2012-03-25                     createcats(1)
diff --git a/doc/en/epgsearch.1.txt b/doc/en/epgsearch.1.txt
index e3adf6d..4816de2 100644
--- a/doc/en/epgsearch.1.txt
+++ b/doc/en/epgsearch.1.txt
@@ -1,4 +1,4 @@
-epgsearch(1)                Epgsearch Version 1.0.0               epgsearch(1)
+epgsearch(1)                Epgsearch Version 1.0.1               epgsearch(1)
 
 
 
@@ -52,8 +52,6 @@ OVERVIEW
 
         - Email notifications about search timer updates and timer conflicts
 
-       Works only with >= vdr-1.3.46 or newer.
-
        Parts of the sources are based on the repeating-ECG patch from Gerhard
        Steiner, who gave me the permission to use them. Thanks for his work!
 
@@ -373,11 +371,7 @@ CONTENT
        can access this function by pressing '0' to toggle the green and yellow
        button to '<<' and '>>'. This toggling can be adjusted by setup.
 
-       You can display a progress bar in 'now' and 'next'. When using
-       text2skin you should use the setup option "text2skin" in the setup
-       option "Show progress in 'Now'"/Show progress in 'Next'" (the setting
-       'graphical' may also work with text2skin, but this depends on the
-       selected skin).
+       You can display a progress bar in 'now' and 'next'.
 
        Furthermore you can enable in the setup an favorites list. You can
        configure your searchtimers ("Use in favorite list") to display their
@@ -420,10 +414,7 @@ CONTENT
 
        - Show progress in 'Now':
            In the menu 'what's on now' you can display a progress bar, that
-           displays the progress of the current item. When using text2skin you
-           should use the setup option "text2skin" (the setting 'graphical'
-           may also work with text2skin, but this depends on the selected
-           skin).
+           displays the progress of the current item.
 
        - Show channel numbers:
            Select this if you like to have a leading channel number before
@@ -448,8 +439,7 @@ CONTENT
 
        - 'One press' timer creation:
            If set to 'yes' a timer is immediately created when pressing
-           'Record' as introduced in vdr-1.3.38, else the timer edit menu is
-           displayed.
+           'Record', else the timer edit menu is displayed.
 
        - Show channels without EPG:
            Display channels without EPG to allow switching or create a timer.
@@ -699,8 +689,8 @@ CONTENT
            minutes' in the conflict check setup to be activated.)
 
        - Send to:
-           The mail adress of the recipient. Note: Some providers (like Arcor)
-           don't allow the same adresse for sender and recipient.
+           The mail address of the recipient. Note: Some providers (like
+           Arcor) don't allow the same address for sender and recipient.
 
        - Mail method:
            You can choose between:
@@ -907,17 +897,12 @@ CONTENT
        in your keymacros.conf, where x is the position of the Epgsearch plugin
        within launchers menu listing.
 
-       Attention: Hiding the plugin without using the launcher plugin or other
-       patches that enable calling hidden plugins will show the standard
-       schedules menu when you press the green key. This is not needed anymore
-       after VDR >= 1.3.32.
-
        Another approach is using a patch to VDR that replaces vdr's standard
        schedule menu with epgsearch (vdr-replace-schedulemenu.diff.gz in the
        patches subdir, thanks to the author Uwe/egal at vdrportal). When using
        this patch the entry should look like
 
-        Gree Schedule
+        Green Schedule
 
        This patch is already included in some patch collections, like the
        Bigpatch.
@@ -947,11 +932,14 @@ CONTENT
 Advanced description
        See epgsearch(4) or read online
 
-       <http://winni.vdr-developer.org/epgsearch/README.DE>
+       http://winni.vdr-developer.org/epgsearch/README.DE <http://winni.vdr-
+       developer.org/epgsearch/README.DE>
 
-       <http://winni.vdr-developer.org/epgsearch/README>
+       http://winni.vdr-developer.org/epgsearch/README <http://winni.vdr-
+       developer.org/epgsearch/README>
 
-       <http://winni.vdr-developer.org/epgsearch/MANUAL>
+       http://winni.vdr-developer.org/epgsearch/MANUAL <http://winni.vdr-
+       developer.org/epgsearch/MANUAL>
 
 SEE ALSO
        "epgsearch.conf(5)", "epgsearchcats.conf(5)", "epgsearchcmds.conf(5)",
@@ -1013,10 +1001,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bugreports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailinglist:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -1046,4 +1036,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04                      epgsearch(1)
+perl v5.14.2                      2012-03-25                      epgsearch(1)
diff --git a/doc/en/epgsearch.4.txt b/doc/en/epgsearch.4.txt
index c561b9a..7e40353 100644
--- a/doc/en/epgsearch.4.txt
+++ b/doc/en/epgsearch.4.txt
@@ -1,4 +1,4 @@
-epgsearch(4)                Epgsearch Version 1.0.0               epgsearch(4)
+epgsearch(4)                Epgsearch Version 1.0.1               epgsearch(4)
 
 
 
@@ -61,7 +61,7 @@ CONTENT
 
        Attention: Automatically appending title and subtitle will not be done,
        if you use the variables %Title% or %Subtitle% in the directory entry.
-       This allows to form directory entries like this one:
+       This allows one to form directory entries like this one:
 
         %Category%~%Genre%~%Title%~%Episode%~%Subtitle%
 
@@ -195,12 +195,13 @@ CONTENT
        time, duration, week day) are checked.
 
 4. How do Search Timers work?
-       With each update, the plugin searches for new matches of your search
-       timers. If a new match is found then a new timer is created. For serial
-       recordings, the subtitle is appended to the recording directory. Many
-       providers deliver the subtitle just 1-2 days before the event. The
-       plugin uses then a date/time string for the subtitle, but replaces this
-       one later if the subtitle is present.
+       With each update, the plugin first sorts the search timers by timer
+       priority (descending) and search term and then searches for new matches
+       of your search timers. If a new match is found then a new timer is
+       created.  For serial recordings, the subtitle is appended to the
+       recording directory. Many providers deliver the subtitle just 1-2 days
+       before the event. The plugin uses then a date/time string for the
+       subtitle, but replaces this one later if the subtitle is present.
 
        Start and end times of a broadcasting often vary a little bit. To avoid
        getting many different timers for the same event, the plugin checks
@@ -524,11 +525,11 @@ CONTENT
        for the 'Whats on...' and 'Search results' menu there are also:
 
         %chnr%           - channel number
-        %chsh%           - the short channel name (>=vdr-1.3.15)
+        %chsh%           - the short channel name
         %chlng%          - the 'normal' channel name
         %chdata%         - VDR's internal channel representation (e.g. 'S19.2E-1-1101-28106')
         %progr%          - graphical progress bar (not for menu 'Search results'),
-                           requires VDRSymbols font for vdr>=1.5.3
+                           requires VDRSymbols font
         %progrT2S%       - progress bar in text2skin style (not for menu 'Search results')
 
        some independent variables:
@@ -565,13 +566,12 @@ CONTENT
        quick try copy it to your epgsearch config directory (e.g.
        /etc/vdr/plugins/epgsearch).
 
-       To enable icons from WarEagleIcon-Patch simply put the line
+       To enable icons from the VDRSymbols font simply put the line
 
         WarEagleIcons=1
 
-       to epgsearchmenu.conf. This also works for vdr>=1.5.3, which uses true
-       type fonts, if you have installed and selected the font VDRSymbols.ttf
-       (available at http://andreas.vdr-developer.org/fonts/download.html)
+       to epgsearchmenu.conf. The VDRSymbols font is available at
+       http://andreas.vdr-developer.org/fonts/download.html
 
        NOTE: As long as there is a file epgsearchmenu.conf with an entry for a
        special menu, all setup settings regarding the look of this menu are
@@ -918,10 +918,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -951,4 +953,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-08                      epgsearch(4)
+perl v5.14.2                      2012-03-25                      epgsearch(4)
diff --git a/doc/en/epgsearch.conf.5.txt b/doc/en/epgsearch.conf.5.txt
index 37d1ed5..3e3b9a5 100644
--- a/doc/en/epgsearch.conf.5.txt
+++ b/doc/en/epgsearch.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearch.conf(5)           Epgsearch Version 1.0.0          epgsearch.conf(5)
+epgsearch.conf(5)           Epgsearch Version 1.0.1          epgsearch.conf(5)
 
 
 
@@ -117,10 +117,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -150,4 +152,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04                 epgsearch.conf(5)
+perl v5.14.2                      2012-03-25                 epgsearch.conf(5)
diff --git a/doc/en/epgsearchblacklists.conf.5.txt b/doc/en/epgsearchblacklists.conf.5.txt
index 4294db2..2a2bcfc 100644
--- a/doc/en/epgsearchblacklists.conf.5.txt
+++ b/doc/en/epgsearchblacklists.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchblacklists.conf(5) Epgsearch Version 1.0.0epgsearchblacklists.conf(5)
+epgsearchblacklists.conf(5) Epgsearch Version 1.0.1epgsearchblacklists.conf(5)
 
 
 
@@ -38,10 +38,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -71,4 +73,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04       epgsearchblacklists.conf(5)
+perl v5.14.2                      2012-03-25       epgsearchblacklists.conf(5)
diff --git a/doc/en/epgsearchcats.conf.5.txt b/doc/en/epgsearchcats.conf.5.txt
index fbd3a13..9a90715 100644
--- a/doc/en/epgsearchcats.conf.5.txt
+++ b/doc/en/epgsearchcats.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchcats.conf(5)       Epgsearch Version 1.0.0      epgsearchcats.conf(5)
+epgsearchcats.conf(5)       Epgsearch Version 1.0.1      epgsearchcats.conf(5)
 
 
 
@@ -98,10 +98,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -131,4 +133,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04             epgsearchcats.conf(5)
+perl v5.14.2                      2012-03-25             epgsearchcats.conf(5)
diff --git a/doc/en/epgsearchchangrps.conf.5.txt b/doc/en/epgsearchchangrps.conf.5.txt
index ca17da0..8e7a44f 100644
--- a/doc/en/epgsearchchangrps.conf.5.txt
+++ b/doc/en/epgsearchchangrps.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchchangrps.conf(5)   Epgsearch Version 1.0.0  epgsearchchangrps.conf(5)
+epgsearchchangrps.conf(5)   Epgsearch Version 1.0.1  epgsearchchangrps.conf(5)
 
 
 
@@ -31,10 +31,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -64,4 +66,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04         epgsearchchangrps.conf(5)
+perl v5.14.2                      2012-03-25         epgsearchchangrps.conf(5)
diff --git a/doc/en/epgsearchcmds.conf.5.txt b/doc/en/epgsearchcmds.conf.5.txt
index ed1e67a..443a9c0 100644
--- a/doc/en/epgsearchcmds.conf.5.txt
+++ b/doc/en/epgsearchcmds.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchcmds.conf(5)       Epgsearch Version 1.0.0      epgsearchcmds.conf(5)
+epgsearchcmds.conf(5)       Epgsearch Version 1.0.1      epgsearchcmds.conf(5)
 
 
 
@@ -39,10 +39,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -72,4 +74,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04             epgsearchcmds.conf(5)
+perl v5.14.2                      2012-03-25             epgsearchcmds.conf(5)
diff --git a/doc/en/epgsearchdirs.conf.5.txt b/doc/en/epgsearchdirs.conf.5.txt
index 0162ce0..d492153 100644
--- a/doc/en/epgsearchdirs.conf.5.txt
+++ b/doc/en/epgsearchdirs.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchdirs.conf(5)       Epgsearch Version 1.0.0      epgsearchdirs.conf(5)
+epgsearchdirs.conf(5)       Epgsearch Version 1.0.1      epgsearchdirs.conf(5)
 
 
 
@@ -68,10 +68,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -101,4 +103,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04             epgsearchdirs.conf(5)
+perl v5.14.2                      2012-03-25             epgsearchdirs.conf(5)
diff --git a/doc/en/epgsearchmenu.conf.5.txt b/doc/en/epgsearchmenu.conf.5.txt
index a663ffc..a548248 100644
--- a/doc/en/epgsearchmenu.conf.5.txt
+++ b/doc/en/epgsearchmenu.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchmenu.conf(5)       Epgsearch Version 1.0.0      epgsearchmenu.conf(5)
+epgsearchmenu.conf(5)       Epgsearch Version 1.0.1      epgsearchmenu.conf(5)
 
 
 
@@ -67,7 +67,7 @@ SYNTAX
        for the 'Whats on...' and 'Search results' menu there is also:
 
         %chnr%           - channel number
-        %chsh%           - the short channel name (>=vdr-1.3.15)
+        %chsh%           - the short channel name
         %chlng%          - the 'normal' channel name
         %chdata%         - VDR's internal channel representation (e.g. 'S19.2E-1-1101-28106')
         %progr%          - graphical progress bar (not for menu 'Search results')
@@ -94,11 +94,12 @@ SYNTAX
        quick try copy it to your epgsearch config directory (e.g.
        /etc/vdr/plugins/epgsearch).
 
-       To enable icons from WarEagleIcon-Patch simply put the line
+       To enable icons from the VDRSymbols font simply put the line
 
         WarEagleIcons=1
 
-       to epgsearchmenu.conf.
+       to epgsearchmenu.conf. The VDRSymbols font is available at
+       +http://andreas.vdr-developer.org/fonts/download.html
 
        NOTE: As long as there is a file epgsearchmenu.conf with an entry for a
        special menu, all setup settings regarding the look of this menu are
@@ -113,10 +114,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -146,4 +149,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04             epgsearchmenu.conf(5)
+perl v5.14.2                      2012-03-25             epgsearchmenu.conf(5)
diff --git a/doc/en/epgsearchswitchtimers.conf.5.txt b/doc/en/epgsearchswitchtimers.conf.5.txt
index 6aa23d6..1419afb 100644
--- a/doc/en/epgsearchswitchtimers.conf.5.txt
+++ b/doc/en/epgsearchswitchtimers.conf.5.txt
@@ -36,10 +36,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -69,4 +71,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04     epgsearchswitchtimers.conf(5)
+perl v5.14.2                      2012-03-25     epgsearchswitchtimers.conf(5)
diff --git a/doc/en/epgsearchtemplates.conf.5.txt b/doc/en/epgsearchtemplates.conf.5.txt
index af4b858..8d1f365 100644
--- a/doc/en/epgsearchtemplates.conf.5.txt
+++ b/doc/en/epgsearchtemplates.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchtemplates.conf(5)  Epgsearch Version 1.0.0 epgsearchtemplates.conf(5)
+epgsearchtemplates.conf(5)  Epgsearch Version 1.0.1 epgsearchtemplates.conf(5)
 
 
 
@@ -25,10 +25,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -58,4 +60,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04        epgsearchtemplates.conf(5)
+perl v5.14.2                      2012-03-25        epgsearchtemplates.conf(5)
diff --git a/doc/en/epgsearchuservars.conf.5.txt b/doc/en/epgsearchuservars.conf.5.txt
index 3a018f5..ff80964 100644
--- a/doc/en/epgsearchuservars.conf.5.txt
+++ b/doc/en/epgsearchuservars.conf.5.txt
@@ -1,4 +1,4 @@
-epgsearchuservars.conf(5)   Epgsearch Version 1.0.0  epgsearchuservars.conf(5)
+epgsearchuservars.conf(5)   Epgsearch Version 1.0.1  epgsearchuservars.conf(5)
 
 
 
@@ -107,7 +107,7 @@ SYNTAX
                            F<epgsearchcats.conf>, like %genre% or %category%
 
         %chnr%           - channel number
-        %chsh%           - the short channel name (>=vdr-1.3.15)
+        %chsh%           - the short channel name
         %chlng%          - the 'normal' channel name
         %chdata%         - VDR's internal channel representation (e.g. 'S19.2E-1-1101-28106')
 
@@ -142,10 +142,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -175,4 +177,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04         epgsearchuservars.conf(5)
+perl v5.14.2                      2012-03-25         epgsearchuservars.conf(5)
diff --git a/doc/en/noannounce.conf.5.txt b/doc/en/noannounce.conf.5.txt
index 7c7d6a1..94ab17e 100644
--- a/doc/en/noannounce.conf.5.txt
+++ b/doc/en/noannounce.conf.5.txt
@@ -1,4 +1,4 @@
-noannounce.conf(5)          Epgsearch Version 1.0.0         noannounce.conf(5)
+noannounce.conf(5)          Epgsearch Version 1.0.1         noannounce.conf(5)
 
 
 
@@ -37,10 +37,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -70,4 +72,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04                noannounce.conf(5)
+perl v5.14.2                      2012-03-25                noannounce.conf(5)
diff --git a/doc/en/timersdone.conf.5.txt b/doc/en/timersdone.conf.5.txt
index da20165..1aa335a 100644
--- a/doc/en/timersdone.conf.5.txt
+++ b/doc/en/timersdone.conf.5.txt
@@ -1,4 +1,4 @@
-timersdone.conf(5)          Epgsearch Version 1.0.0         timersdone.conf(5)
+timersdone.conf(5)          Epgsearch Version 1.0.1         timersdone.conf(5)
 
 
 
@@ -35,10 +35,12 @@ AUTHOR (man pages)
 REPORT BUGS
        Bug reports (german):
 
-       <http://www.vdr-developer.org/mantisbt/>
+       http://projects.vdr-developer.org/projects/plg-epgsearch
+       <http://projects.vdr-developer.org/projects/plg-epgsearch>
 
        Mailing list:
 
+       http://www.vdr-developer.org/mailman/listinfo/epgsearch
        <http://www.vdr-developer.org/mailman/listinfo/epgsearch>
 
 COPYRIGHT and LICENSE
@@ -68,4 +70,4 @@ COPYRIGHT and LICENSE
 
 
 
-perl v5.10.1                      2011-09-04                timersdone.conf(5)
+perl v5.14.2                      2012-03-25                timersdone.conf(5)
diff --git a/epgsearch.c b/epgsearch.c
index f6bcf97..b4bcf7c 100644
--- a/epgsearch.c
+++ b/epgsearch.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -37,7 +37,6 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include "menu_event.h"
 #include "menu_main.h"
 #include "menu_whatson.h"
-#include "i18n.h"
 #include "epgsearchsetup.h"
 #include "epgsearchcfg.h"
 #include "epgsearchext.h"
@@ -70,7 +69,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include "confdloader.h"
 #include "pending_notifications.h"
 
-static const char VERSION[]        = "1.0.0";
+static const char VERSION[]        = "1.0.1";
 static const char DESCRIPTION[]    =  trNOOP("search the EPG for repeats and more");
 
 // globals
@@ -106,14 +105,14 @@ cPluginEpgsearch::~cPluginEpgsearch()
    if (ConfigDir) free(ConfigDir);
 }
 
-const char* cPluginEpgsearch::Version(void) 
-{ 
-   return VERSION; 
+const char* cPluginEpgsearch::Version(void)
+{
+   return VERSION;
 }
 
-const char* cPluginEpgsearch::Description(void) 
-{ 
-   return tr(DESCRIPTION); 
+const char* cPluginEpgsearch::Description(void)
+{
+   return tr(DESCRIPTION);
 }
 
 const char *cPluginEpgsearch::CommandLineHelp(void)
@@ -137,7 +136,7 @@ const char *cPluginEpgsearch::MainMenuEntry(void)
    if (isempty(EPGSearchConfig.mainmenuentry))
       return tr("Program guide");
    else
-      return EPGSearchConfig.mainmenuentry;   
+      return EPGSearchConfig.mainmenuentry;
 }
 
 bool cPluginEpgsearch::ProcessArgs(int argc, char *argv[])
@@ -184,23 +183,23 @@ bool cPluginEpgsearch::ProcessArgs(int argc, char *argv[])
    while ((c = getopt_long(argc, argv, "f:c:l:v:m:r", long_options, &i)) != -1) {
       switch (c) {
 
-         case 'f': 
+         case 'f':
             cSVDRPClient::SVDRPSendCmd = optarg;
             EPGSearchConfig.useExternalSVDRP = 1;
             break;
-         case 'c': 
+         case 'c':
             ConfigDir = strdup(optarg);
             break;
-         case 'l': 
+         case 'l':
             cLogFile::LogFileName = optarg;
             break;
-         case 'v': 
+         case 'v':
             cLogFile::loglevellimit = atoi(optarg);
             break;
-         case 'r': 
+         case 'r':
             reloadMenuConf = true;
             break;
-         case 'm': 
+         case 'm':
             cMailNotifier::MailCmd = optarg;
             break;
          default:  return false;
@@ -218,7 +217,7 @@ bool cPluginEpgsearch::ProcessArgs(int argc, char *argv[])
 
 bool cPluginEpgsearch::Service(const char *Id, void *Data)
 {
-   if (strcmp(Id, "MainMenuHooksPatch-v1.0::osSchedule") == 0 && EPGSearchConfig.ReplaceOrgSchedule!=0) 
+   if (strcmp(Id, "MainMenuHooksPatch-v1.0::osSchedule") == 0 && EPGSearchConfig.ReplaceOrgSchedule!=0)
    {
       if (Data == NULL)
          return true;
@@ -227,12 +226,12 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
          *menu = (cOsdMenu*) MainMenuAction();
       return true;
    }
- 
+
    if (strcmp(Id, "Epgsearch-search-v1.0") == 0) {
       if (Data == NULL)
          return true;
       cSearchExt* SearchExt = new cSearchExt;
-      
+
       Epgsearch_search_v1_0* searchData = (Epgsearch_search_v1_0*) Data;
       searchData->pResultMenu = NULL;
       strcpy(SearchExt->search,searchData->query);
@@ -253,7 +252,7 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
    if (strcmp(Id, "Epgsearch-exttimeredit-v1.0") == 0 && !EPGSearchConfig.useVDRTimerEditMenu) {
       if (Data == NULL)
          return true;
-      
+
       Epgsearch_exttimeredit_v1_0* serviceData = (Epgsearch_exttimeredit_v1_0*) Data;
       serviceData->pTimerMenu = new cMenuMyEditTimer(serviceData->timer, serviceData->bNew, serviceData->event);
 
@@ -284,7 +283,7 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
    if (strcmp(Id, "Epgsearch-searchmenu-v1.0") == 0) {
       if (Data == NULL)
          return true;
-      
+
       EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data;
       serviceData->Menu = new cMenuEPGSearchExt();
 
@@ -293,7 +292,7 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
    if (strcmp(Id, "Epgsearch-conflictmenu-v1.0") == 0) {
       if (Data == NULL)
          return true;
-      
+
       EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data;
       serviceData->Menu = new cMenuConflictCheck();
 
@@ -302,7 +301,7 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
    if (strcmp(Id, "Epgsearch-lastconflictinfo-v1.0") == 0) {
       if (Data == NULL)
          return true;
-      
+
       Epgsearch_lastconflictinfo_v1_0* serviceData = (Epgsearch_lastconflictinfo_v1_0*) Data;
       serviceData->nextConflict = cConflictCheckThread::m_cacheNextConflict;
       serviceData->relevantConflicts = cConflictCheckThread::m_cacheRelevantConflicts;
@@ -314,7 +313,7 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
       if (Data == NULL)
          return true;
       cSearchExt* SearchExt = new cSearchExt;
-      
+
       Epgsearch_searchresults_v1_0* searchData = (Epgsearch_searchresults_v1_0*) Data;
       searchData->pResultList = NULL;
       strcpy(SearchExt->search,searchData->query);
@@ -336,7 +335,7 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
          results->SortBy(CompareEventTime);
          searchData->pResultList = new cList<Epgsearch_searchresults_v1_0::cServiceSearchResult>;
          cSearchResult *result = results->First();
-         while (result) 
+         while (result)
          {
             searchData->pResultList->Add(new Epgsearch_searchresults_v1_0::cServiceSearchResult(result->event));
             result = results->Next(result);
@@ -368,9 +367,9 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
                   lTimer->switchMinsBefore = serviceData->switchMinsBefore;
                   lTimer->mode             = serviceData->announceOnly;
                } else {
-                  cMutexLock SwitchTimersLock(&SwitchTimers);	
-                  SwitchTimers.Add(new cSwitchTimer(serviceData->event,serviceData->switchMinsBefore,serviceData->announceOnly));  
-                  SwitchTimers.Save(); 
+                  cMutexLock SwitchTimersLock(&SwitchTimers);
+                  SwitchTimers.Add(new cSwitchTimer(serviceData->event,serviceData->switchMinsBefore,serviceData->announceOnly));
+                  SwitchTimers.Save();
                   cSwitchTimerThread::Init();
                } // if
                serviceData->success=true;
@@ -379,14 +378,14 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
             case 2: {// delete
                cSwitchTimer *lTimer = SwitchTimers.InSwitchList(serviceData->event);
                serviceData->success=lTimer!=NULL;
-               if (lTimer) { 
-                  cMutexLock SwitchTimersLock(&SwitchTimers);	
+               if (lTimer) {
+                  cMutexLock SwitchTimersLock(&SwitchTimers);
                   SwitchTimers.Del(lTimer);
-                  SwitchTimers.Save(); 
+                  SwitchTimers.Save();
                } // if
                break;
             } // 2
-            default: 
+            default:
                serviceData->success=false;
                break;
          } // switch
@@ -396,7 +395,7 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
    if (strcmp(Id, "Epgsearch-quicksearch-v1.0") == 0) {
       if (Data == NULL)
          return true;
-      
+
       EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data;
       serviceData->Menu = new cMenuQuickSearch(new cSearchExt);
 
@@ -423,9 +422,6 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data)
 
 bool cPluginEpgsearch::Initialize(void)
 {
-#if APIVERSNUM < 10507
-   RegisterI18n(Phrases);
-#endif
    return true;
 }
 
@@ -461,9 +457,9 @@ bool cPluginEpgsearch::Start(void)
    TimersDone.Load(AddDirectory(CONFIGDIR, "timersdone.conf"));
    PendingNotifications.Load(AddDirectory(CONFIGDIR, "pendingnotifications.conf"));
 
-   cSearchTimerThread::Init(this);    
-   cSwitchTimerThread::Init();    
-   cConflictCheckThread::Init(this);    
+   cSearchTimerThread::Init(this);
+   cSwitchTimerThread::Init();
+   cConflictCheckThread::Init(this);
 
    CheckUTF8();
 
@@ -515,7 +511,7 @@ cOsdObject *cPluginEpgsearch::DoInitialSearch(char* rcFilename)
    }
    else
       LogFile.eSysLog("could not load '%s'", rcFilename);
-	
+
    return NULL;
 }
 
@@ -543,7 +539,7 @@ cOsdObject *cPluginEpgsearch::MainMenuAction(void)
       pMenu = DoInitialSearch(rcFilename);
    else
       pMenu = new cMenuSearchMain();
-    
+
    free(rcFilename);
    return pMenu;
 }
@@ -612,7 +608,7 @@ bool cPluginEpgsearch::SetupParse(const char *Name, const char *Value)
    if      (!strcasecmp(Name, "OnePressTimerCreation")) EPGSearchConfig.onePressTimerCreation = atoi(Value);
    if      (!strcasecmp(Name, "ShowFavoritesMenu"))     EPGSearchConfig.showFavoritesMenu = atoi(Value);
    if      (!strcasecmp(Name, "FavoritesMenuTimespan")) EPGSearchConfig.FavoritesMenuTimespan = atoi(Value);
-  
+
    if      (!strcasecmp(Name, "UserMode1Description"))   EPGSearchConfig.ShowModes[showUserMode1].SetDescription(Value);
    if      (!strcasecmp(Name, "UserMode1Time"))   EPGSearchConfig.ShowModes[showUserMode1].SetTime(atoi(Value));
    if      (!strcasecmp(Name, "UserMode1UseIt"))   EPGSearchConfig.ShowModes[showUserMode1].SetUsage(atoi(Value));
@@ -664,20 +660,20 @@ bool cPluginEpgsearch::SetupParse(const char *Name, const char *Value)
    if      (!strcasecmp(Name, "DefRecordingDir"))  strcpy(EPGSearchConfig.defrecdir, Value);
    if      (!strcasecmp(Name, "UseVDRTimerEditMenu"))  EPGSearchConfig.useVDRTimerEditMenu = atoi(Value);
 
-   if      (!strcasecmp(Name, "ShowChannelGroups"))  EPGSearchConfig.showChannelGroups = atoi(Value); 
-   if      (!strcasecmp(Name, "ShowDaySeparators"))  EPGSearchConfig.showDaySeparators = atoi(Value); 
+   if      (!strcasecmp(Name, "ShowChannelGroups"))  EPGSearchConfig.showChannelGroups = atoi(Value);
+   if      (!strcasecmp(Name, "ShowDaySeparators"))  EPGSearchConfig.showDaySeparators = atoi(Value);
+
+   if      (!strcasecmp(Name, "ShowEmptyChannels"))  EPGSearchConfig.showEmptyChannels = atoi(Value);
 
-   if      (!strcasecmp(Name, "ShowEmptyChannels"))  EPGSearchConfig.showEmptyChannels = atoi(Value); 
+   if      (!strcasecmp(Name, "DefSearchTemplateID"))  EPGSearchConfig.DefSearchTemplateID = atoi(Value);
 
-   if      (!strcasecmp(Name, "DefSearchTemplateID"))  EPGSearchConfig.DefSearchTemplateID = atoi(Value); 
+   if      (!strcasecmp(Name, "AddSubtitleToTimerMode"))  EPGSearchConfig.addSubtitleToTimer = (addSubtitleToTimerMode) atoi(Value);
 
-   if      (!strcasecmp(Name, "AddSubtitleToTimerMode"))  EPGSearchConfig.addSubtitleToTimer = (addSubtitleToTimerMode) atoi(Value); 
-  
-   if      (!strcasecmp(Name, "MailViaScript"))  EPGSearchConfig.mailViaScript = atoi(Value); 
-   if      (!strcasecmp(Name, "MailNotificationSearchtimers"))  EPGSearchConfig.sendMailOnSearchtimers = atoi(Value); 
+   if      (!strcasecmp(Name, "MailViaScript"))  EPGSearchConfig.mailViaScript = atoi(Value);
+   if      (!strcasecmp(Name, "MailNotificationSearchtimers"))  EPGSearchConfig.sendMailOnSearchtimers = atoi(Value);
    if      (!strcasecmp(Name, "MailNotificationSearchtimersHours")) EPGSearchConfig.sendMailOnSearchtimerHours = atoi(Value);
    if      (!strcasecmp(Name, "MailNotificationSearchtimersLastAt")) EPGSearchConfig.lastMailOnSearchtimerAt = atol(Value);
-   if      (!strcasecmp(Name, "MailNotificationConflicts"))  EPGSearchConfig.sendMailOnConflicts = atoi(Value); 
+   if      (!strcasecmp(Name, "MailNotificationConflicts"))  EPGSearchConfig.sendMailOnConflicts = atoi(Value);
    if      (!strcasecmp(Name, "MailAddress")) strcpy(EPGSearchConfig.MailAddress, Value);
    if      (!strcasecmp(Name, "MailAddressTo")) strcpy(EPGSearchConfig.MailAddressTo, Value);
 
diff --git a/epgsearch.h b/epgsearch.h
index 7aac36e..048037e 100644
--- a/epgsearch.h
+++ b/epgsearch.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/epgsearchcats.c b/epgsearchcats.c
index 83a472e..3c628ec 100644
--- a/epgsearchcats.c
+++ b/epgsearchcats.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -72,9 +72,9 @@ bool cSearchExtCat::Parse(const char *s)
         if (!pos_next)
           pos_next = pos + strlen(pos);
         valuelen = pos_next - pos + 1;
-        if (valuelen > MAXVALUELEN) 
+        if (valuelen > MAXVALUELEN)
 	{
-	    LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);  
+	    LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);
 	    valuelen = MAXVALUELEN;
 	}
         strn0cpy(value, pos, valuelen);
@@ -86,12 +86,12 @@ bool cSearchExtCat::Parse(const char *s)
 	      break;
 	    case 3:  menuname = strdup(value);
 	      break;
-	    case 4:  
+	    case 4:
 	    {
 		char* szBuffer = strdup(value);
 		char* pptr;
 		char* pstrToken=strtok_r(szBuffer, ",", &pptr);
-		while(pstrToken) 
+		while(pstrToken)
 		{
 		    nvalues++;
 		    values = (char**) realloc(values, nvalues * sizeof(char*));
@@ -101,7 +101,7 @@ bool cSearchExtCat::Parse(const char *s)
 		free(szBuffer);
 		break;
 	    }
-	    case 5:  
+	    case 5:
 	      searchmode = atoi(value);
 	      break;
 	    default:
@@ -123,8 +123,8 @@ const char *cSearchExtCat::ToText(void)
     string sValues = "";
     for(int i=0; i<nvalues; i++)
 	sValues += string(values[i]) + ((i<nvalues-1)?", ":"");
-    
-    msprintf(&buffer, "%d|%s|%s|%s|%d", 
+
+    msprintf(&buffer, "%d|%s|%s|%s|%d",
 	     id, name, menuname, sValues.c_str(), searchmode);
     return buffer;
 }
@@ -134,7 +134,7 @@ int cSearchExtCats::GetIndexFromID(int id)
 {
   cSearchExtCat *SearchExtCat = SearchExtCats.First();
   int index = 0;
-  while (SearchExtCat) 
+  while (SearchExtCat)
   {
       if (SearchExtCat->id == id)
 	  break;
diff --git a/epgsearchcats.h b/epgsearchcats.h
index f50c01c..7909c90 100644
--- a/epgsearchcats.h
+++ b/epgsearchcats.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -35,10 +35,10 @@ public:
     char*    name;
     char*    menuname;
     int      searchmode; // text comarison:
-                         // 0 - substring, 
-                         // 1 - substring-and, 
-                         // 2 - substring or, 
-                         // 3 - equal, 
+                         // 0 - substring,
+                         // 1 - substring-and,
+                         // 2 - substring or,
+                         // 3 - equal,
                          // 4 - regular expression,
                          // 5 - fuzzy (not available for categories)
                          // numerical comparison:
diff --git a/epgsearchcfg.c b/epgsearchcfg.c
index ff45aaa..fffd60b 100644
--- a/epgsearchcfg.c
+++ b/epgsearchcfg.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -35,7 +35,7 @@ cEPGSearchConfig::cEPGSearchConfig(void)
   showChannelNr     = 0;
   useSearchTimers   = 0;
   UpdateIntervall   = 30;
-#if APIVERSNUM >= 10715 
+#if APIVERSNUM >= 10715
   SVDRPPort         = 6419;
 #else
   SVDRPPort         = 2001;
@@ -133,4 +133,4 @@ int cShowMode::Compare(const cListObject &ListObject) const
 	return seekTime - p->seekTime;
     else
 	return mode - p->mode;
-} 
+}
diff --git a/epgsearchcfg.h b/epgsearchcfg.h
index 42f7b26..b4c908b 100644
--- a/epgsearchcfg.h
+++ b/epgsearchcfg.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -46,17 +46,17 @@ class cShowMode: public cListObject
 {
     showMode mode;
     time_t seekTime;
- public:    
+ public:
     char description[30];
     int useIt;
     int itime;
 
     cShowMode() : mode(showNow), seekTime(0), useIt(0), itime(0)  { description[0]=0;}
-    cShowMode(showMode Mode, const char* Description, int UseIt=1, int iTime=0, time_t SeekTime=0) 
-	: mode(Mode), seekTime(SeekTime), useIt(UseIt), itime(iTime)  
-	{ 
+    cShowMode(showMode Mode, const char* Description, int UseIt=1, int iTime=0, time_t SeekTime=0)
+	: mode(Mode), seekTime(SeekTime), useIt(UseIt), itime(iTime)
+	{
 	    if (strlen(Description) > 0)
-		SetDescription(Description); 
+		SetDescription(Description);
 	    else
 		sprintf(description, "%02d:%02d", iTime/100, iTime%100);
 	}
@@ -130,11 +130,11 @@ cEPGSearchConfig(void);
     int sendMailOnConflicts;
     char MailAddressTo[MaxFileName];
     char MailAddress[MaxFileName];
-    char MailServer[MaxFileName];    
+    char MailServer[MaxFileName];
     int MailUseAuth;
     char MailAuthUser[MaxFileName];
-    char MailAuthPass[MaxFileName];    
-    char LastMailConflicts[MaxFileName];    
+    char MailAuthPass[MaxFileName];
+    char LastMailConflicts[MaxFileName];
     int mailViaScript;
     int manualTimerCheckDefault;
     int noAnnounceWhileReplay;
@@ -147,7 +147,7 @@ cEPGSearchConfig(void);
     int checkEPGWarnByMail;
     int checkEPGchannelGroupNr;
     time_t lastMailOnSearchtimerAt;
-    char conflCheckCmd[MaxFileName*10];    
+    char conflCheckCmd[MaxFileName*10];
 };
 
 extern cEPGSearchConfig EPGSearchConfig;
diff --git a/epgsearchext.c b/epgsearchext.c
index 80fa558..b1ecb56 100644
--- a/epgsearchext.c
+++ b/epgsearchext.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -28,11 +28,11 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include "epgsearchtools.h"
 #include <vdr/tools.h>
 #include "menu_searchresults.h"
-#include "menu_dirselect.h" 
+#include "menu_dirselect.h"
 #include "changrp.h"
-#include "menu_search.h" 
-#include "menu_searchedit.h" 
-#include "menu_recsdone.h" 
+#include "menu_search.h"
+#include "menu_searchedit.h"
+#include "menu_recsdone.h"
 #include "searchtimer_thread.h"
 #include "timer_thread.h"
 #include "uservars.h"
@@ -42,7 +42,9 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 cSearchExts SearchExts;
 cSearchExts SearchTemplates;
 
-#define MAX_SUBTITLE_LENGTH 40
+#ifndef MAX_SUBTITLE_LENGTH
+  #define MAX_SUBTITLE_LENGTH 40
+#endif
 
 // -- cSearchExt -----------------------------------------------------------------
 char *cSearchExt::buffer = NULL;
@@ -58,7 +60,7 @@ cSearchExt::cSearchExt(void)
    useChannel = false;
    channelMin = Channels.GetByNumber(cDevice::CurrentChannel());
    channelMax = Channels.GetByNumber(cDevice::CurrentChannel());
-   channelGroup = NULL; 
+   channelGroup = NULL;
    useCase = false;
    mode = 0;
    useTitle = true;
@@ -84,7 +86,7 @@ cSearchExt::cSearchExt(void)
    catvalues = (char**) malloc(SearchExtCats.Count() * sizeof(char*));
    cSearchExtCat *SearchExtCat = SearchExtCats.First();
    int index = 0;
-   while (SearchExtCat) 
+   while (SearchExtCat)
    {
       catvalues[index] = (char*)malloc(MaxFileName);
       *catvalues[index] = 0;
@@ -130,7 +132,7 @@ cSearchExt::~cSearchExt(void)
    {
       cSearchExtCat *SearchExtCat = SearchExtCats.First();
       int index = 0;
-      while (SearchExtCat) 
+      while (SearchExtCat)
       {
 	free(catvalues[index]);
 	SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -149,7 +151,7 @@ cSearchExt& cSearchExt::operator= (const cSearchExt &SearchExt)
 
    cSearchExtCat *SearchExtCat = SearchExtCats.First();
    int index = 0;
-   while (SearchExtCat) 
+   while (SearchExtCat)
    {
       *catvalues[index] = 0;
       strcpy(catvalues[index], SearchExt.catvalues[index]);
@@ -194,13 +196,13 @@ cSearchExt& cSearchExt::operator= (const cSearchExt &SearchExt)
 
    cSearchExtCat *SearchExtCat = SearchExtCats.First();
    int index = 0;
-   while (SearchExtCat) 
+   while (SearchExtCat)
    {
       strcpy(catvalues[index], templ->catvalues[index]);
       SearchExtCat = SearchExtCats.Next(SearchExtCat);
       index++;
    }
-  
+
    if (!ignoreChannelSettings)
      {
        channelMin = templ->channelMin;
@@ -254,7 +256,7 @@ char* replaceSpecialChars(const char* in)
 {
    char* tmp_in = strdup(in);
    while(strstr(tmp_in, "|"))
-      tmp_in = strreplace(tmp_in, "|", "!^pipe^!"); // ugly: replace a pipe with something, 
+      tmp_in = strreplace(tmp_in, "|", "!^pipe^!"); // ugly: replace a pipe with something,
    strreplace(tmp_in, ':', '|');
    return tmp_in;
 }
@@ -308,46 +310,46 @@ const char *cSearchExt::ToText()
    {
       cSearchExtCat *SearchExtCat = SearchExtCats.First();
       int index = 0;
-      while (SearchExtCat) 
+      while (SearchExtCat)
       {
          char* catvalue = NULL;
          msprintf(&catvalue, "%s", catvalues[index]);
          while(strstr(catvalue, ":"))
             catvalue = strreplace(catvalue, ":", "!^colon^!"); // ugly: replace with something, that should not happen to be part ofa category value
          while(strstr(catvalue, "|"))
-            catvalue = strreplace(catvalue, "|", "!^pipe^!"); // ugly: replace with something, that should not happen to be part of a regular expression 
+            catvalue = strreplace(catvalue, "|", "!^pipe^!"); // ugly: replace with something, that should not happen to be part of a regular expression
 
          if (index == 0)
             msprintf(&tmp_catvalues, "%d#%s", SearchExtCat->id, catvalue);
          else
          {
-            char* temp = tmp_catvalues;	      
+            char* temp = tmp_catvalues;
             msprintf(&tmp_catvalues, "%s|%d#%s", tmp_catvalues, SearchExtCat->id, catvalue);
             free(temp);
          }
-         SearchExtCat = SearchExtCats.Next(SearchExtCat);	 
+         SearchExtCat = SearchExtCats.Next(SearchExtCat);
          index++;
          free(catvalue);
-      }      
+      }
    }
 
    if (blacklistMode == blacklistsSelection && blacklists.Count() > 0)
    {
       cBlacklistObject *blacklistObj = blacklists.First();
       int index = 0;
-      while (blacklistObj) 
+      while (blacklistObj)
       {
          if (index == 0)
             msprintf(&tmp_blacklists, "%d", blacklistObj->blacklist->ID);
          else
          {
-            char* temp = tmp_blacklists;	      
+            char* temp = tmp_blacklists;
             msprintf(&tmp_blacklists, "%s|%d", tmp_blacklists, blacklistObj->blacklist->ID);
             free(temp);
          }
-         blacklistObj = blacklists.Next(blacklistObj);	 
+         blacklistObj = blacklists.Next(blacklistObj);
          index++;
-      }      
+      }
    }
 
    msprintf(&buffer, "%d:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d:%d:%d:%s:%s:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%ld:%d:%d:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%d:%ld:%ld:%d:%d:%d:%s:%d",
@@ -400,7 +402,7 @@ const char *cSearchExt::ToText()
             delAfterDaysOfFirstRec,
 	    useAsSearchTimerFrom,
 	    useAsSearchTimerTil,
-	    ignoreMissingEPGCats, 
+	    ignoreMissingEPGCats,
 	    unmuteSoundOnSwitch,
 	    compareSummaryMatchInPercent,
 	    contentsFilter.c_str(),
@@ -421,10 +423,10 @@ bool cSearchExt::Parse(const char *s)
    char *pos;
    char *pos_next;
    int parameter = 1;
-   int valuelen; 
+   int valuelen;
    char value[MaxFileName];
    bool disableSearchtimer = false;
-  
+
    *directory = 0;
    *search = 0;
 
@@ -443,7 +445,7 @@ bool cSearchExt::Parse(const char *s)
             strn0cpy(value, pos, valuelen);
             pos = pos_next;
             switch (parameter) {
-               case 1:  
+               case 1:
                   if (!isnumber(value)) return false;
                   ID = atoi(value);
                   break;
@@ -457,7 +459,7 @@ bool cSearchExt::Parse(const char *s)
                   break;
                case 6:  useChannel = atoi(value);
                   break;
-               case 7:  
+               case 7:
                   if (useChannel == 0)
                   {
                      channelMin = NULL;
@@ -479,7 +481,7 @@ bool cSearchExt::Parse(const char *s)
                         int channels = sscanf(value, "%a[^|]|%a[^|]", &channelMinbuffer, &channelMaxbuffer);
 #endif
                         channelMin = Channels.GetByChannelID(tChannelID::FromString(channelMinbuffer), true, true);
-                        if (!channelMin) 
+                        if (!channelMin)
                         {
                            LogFile.eSysLog("ERROR: channel '%s' not defined", channelMinbuffer);
                            channelMin = channelMax = NULL;
@@ -491,7 +493,7 @@ bool cSearchExt::Parse(const char *s)
                         else
                         {
                            channelMax = Channels.GetByChannelID(tChannelID::FromString(channelMaxbuffer), true, true);
-                           if (!channelMax) 
+                           if (!channelMax)
                            {
                               LogFile.eSysLog("ERROR: channel '%s' not defined", channelMaxbuffer);
                               channelMin = channelMax = NULL;
@@ -546,7 +548,7 @@ bool cSearchExt::Parse(const char *s)
                   break;
                case 27: useExtEPGInfo = atoi(value);
                   break;
-               case 28: 
+               case 28:
                   if (!ParseExtEPGValues(value))
                   {
                      LogFile.eSysLog("ERROR reading ext. EPG values - 1");
@@ -578,14 +580,14 @@ bool cSearchExt::Parse(const char *s)
                   break;
                case 40: blacklistMode = atoi(value);
                   break;
-               case 41: 
+               case 41:
                   if (blacklistMode == blacklistsSelection && !ParseBlacklistIDs(value))
                   {
                      LogFile.eSysLog("ERROR parsing blacklist IDs");
                      free(line);
                      return false;
                   }
-                  break;		
+                  break;
                case 42: fuzzyTolerance = atoi(value);
                   break;
                case 43: useInFavorites = atoi(value);
@@ -651,20 +653,20 @@ bool cSearchExt::Parse(const char *s)
 char* cSearchExt::BuildFile(const cEvent* pEvent) const
 {
    char* file = NULL;
-    
+
    if (!pEvent)
       return file;
-    
+
    const char *Subtitle = pEvent ? pEvent->ShortText() : NULL;
    char SubtitleBuffer[Utf8BufSize(MAX_SUBTITLE_LENGTH)];
    if (isempty(Subtitle))
    {
      time_t Start = pEvent->StartTime();
      struct tm tm_r;
-     strftime(SubtitleBuffer, sizeof(SubtitleBuffer), "%Y.%m.%d-%R-%a", localtime_r(&Start, &tm_r));      
+     strftime(SubtitleBuffer, sizeof(SubtitleBuffer), "%Y.%m.%d-%R-%a", localtime_r(&Start, &tm_r));
      Subtitle = SubtitleBuffer;
    }
-   else if (Utf8StrLen(Subtitle) > MAX_SUBTITLE_LENGTH) 
+   else if (Utf8StrLen(Subtitle) > MAX_SUBTITLE_LENGTH)
    {
       Utf8Strn0Cpy(SubtitleBuffer, Subtitle, sizeof(SubtitleBuffer));
       SubtitleBuffer[Utf8SymChars(SubtitleBuffer, MAX_SUBTITLE_LENGTH)] = 0;
@@ -703,7 +705,7 @@ char* cSearchExt::BuildFile(const cEvent* pEvent) const
       if (file) free(file);
       file = strdup(pFile);
       free(pFile);
-   }    
+   }
 // replace some special chars
    if (file)
    {
@@ -720,7 +722,7 @@ bool cSearchExt::ParseBlacklistIDs(const char *s)
    char *line;
    char *pos;
    char *pos_next;
-   int valuelen; 
+   int valuelen;
    char value[MaxFileName];
 
    cMutexLock BlacklistLock(&Blacklists);
@@ -759,7 +761,7 @@ bool cSearchExt::ParseExtEPGValues(const char *s)
    char *line;
    char *pos;
    char *pos_next;
-   int valuelen; 
+   int valuelen;
    char value[MaxFileName];
 
    pos = line = strdup(s);
@@ -797,7 +799,7 @@ bool cSearchExt::ParseExtEPGEntry(const char *s)
    char *pos;
    char *pos_next;
    int parameter = 1;
-   int valuelen; 
+   int valuelen;
    char value[MaxFileName];
    int currentid = -1;
 
@@ -816,7 +818,7 @@ bool cSearchExt::ParseExtEPGEntry(const char *s)
             strn0cpy(value, pos, valuelen);
             pos = pos_next;
             switch (parameter) {
-               case 1:  
+               case 1:
                {
                   currentid = atoi(value);
                   int index = SearchExtCats.GetIndexFromID(currentid);
@@ -824,7 +826,7 @@ bool cSearchExt::ParseExtEPGEntry(const char *s)
                      strcpy(catvalues[index], "");
                }
                break;
-               case 2:  
+               case 2:
                   if (currentid > -1)
                   {
                      int index = SearchExtCats.GetIndexFromID(currentid);
@@ -856,7 +858,7 @@ bool cSearchExt::Save(FILE *f)
    return fprintf(f, "%s\n", ToText()) > 0;
 }
 
-cEvent * cSearchExt::GetEventBySearchExt(const cSchedule *schedules, const cEvent *Start, bool inspectTimerMargin) 
+cEvent * cSearchExt::GetEventBySearchExt(const cSchedule *schedules, const cEvent *Start, bool inspectTimerMargin)
 {
    if (!schedules) return NULL;
 
@@ -893,7 +895,7 @@ cEvent * cSearchExt::GetEventBySearchExt(const cSchedule *schedules, const cEven
 
    for (cEvent *p = p1; p; p = Events->Next(p))
    {
-      if(!p) 
+      if(!p)
       {
          break;
       }
@@ -904,21 +906,21 @@ cEvent * cSearchExt::GetEventBySearchExt(const cSchedule *schedules, const cEven
       // ignore events without title
       if (!p->Title() || !*p->Title())
          continue;
-        
-      if (tNow < p->EndTime() + (inspectTimerMargin?(MarginStop * 60):0)) 
-      {	    
+
+      if (tNow < p->EndTime() + (inspectTimerMargin?(MarginStop * 60):0))
+      {
          if (useTime)
          {
             time_t tEvent = p->StartTime();
             struct tm tmEvent;
             localtime_r(&tEvent, &tmEvent);
-	    
-            int eventStart = tmEvent.tm_hour*100 + tmEvent.tm_min;	
-            int eventStart2 = eventStart + 2400;	
+
+            int eventStart = tmEvent.tm_hour*100 + tmEvent.tm_min;
+            int eventStart2 = eventStart + 2400;
             if ((eventStart < searchStart || eventStart > searchStop) &&
                 (eventStart2 < searchStart || eventStart2 > searchStop))
                continue;
-	    
+
             if (useDayOfWeek)
             {
                if (DayOfWeek >= 0)
@@ -959,7 +961,7 @@ cEvent * cSearchExt::GetEventBySearchExt(const cSchedule *schedules, const cEven
             if (DayOfWeek >= 0 && DayOfWeek != tmEvent.tm_wday)
                continue;
             if (DayOfWeek < 0)
-            {	      
+            {
                int iFound = 0;
                for(int i=0; i<7; i++)
                   if (abs(DayOfWeek) & (int)pow(2,i) && i == tmEvent.tm_wday)
@@ -975,11 +977,11 @@ cEvent * cSearchExt::GetEventBySearchExt(const cSchedule *schedules, const cEven
 	 char* szTest = NULL;
 	 msprintf(&szTest, "%s%s%s%s%s", (useTitle?(p->Title()?p->Title():""):""), (useSubtitle||useDescription)?"~":"",
                (useSubtitle?(p->ShortText()?p->ShortText():""):""),useDescription?"~":"",
-               (useDescription?(p->Description()?p->Description():""):""));     
-	
+               (useDescription?(p->Description()?p->Description():""):""));
+
          if (!useCase)
             ToLower(szTest);
-	
+
          if (szTest && *szTest)
          {
             if (!MatchesSearchMode(szTest, searchText, mode," ,;|~", fuzzyTolerance))
@@ -1027,7 +1029,7 @@ cSearchResults* cSearchExt::Run(int PayTVMode, bool inspectTimerMargin, int eval
    const cSchedule *Schedule = schedules->First();
    cSearchResults* pSearchResults = pPrevResults;
    cSearchResults* pBlacklistResults = GetBlacklistEvents(inspectTimerMargin?MarginStop:0);
-    
+
    int counter = 0;
    while (Schedule) {
       cChannel* channel = Channels.GetByChannelID(Schedule->ChannelID(),true,true);
@@ -1036,7 +1038,7 @@ cSearchResults* cSearchExt::Run(int PayTVMode, bool inspectTimerMargin, int eval
          Schedule = (const cSchedule *)schedules->Next(Schedule);
          continue;
       }
-	
+
       if (useChannel == 1 && channelMin && channelMax)
       {
          if (channelMin->Number() > channel->Number() || channelMax->Number() < channel->Number())
@@ -1054,7 +1056,7 @@ cSearchResults* cSearchExt::Run(int PayTVMode, bool inspectTimerMargin, int eval
             continue;
          }
       }
-	
+
       if (useChannel == 3 && noPayTV)
       {
          if (channel->Ca() >= CA_ENCRYPTED_MIN)
@@ -1071,7 +1073,7 @@ cSearchResults* cSearchExt::Run(int PayTVMode, bool inspectTimerMargin, int eval
             Schedule = (const cSchedule *)schedules->Next(Schedule);
             continue;
          }
-      }       
+      }
 
       const cEvent *pPrevEvent = NULL;
       do {
@@ -1085,7 +1087,7 @@ cSearchResults* cSearchExt::Run(int PayTVMode, bool inspectTimerMargin, int eval
          if (event && Channels.GetByChannelID(event->ChannelID(),true,true))
          {
             if (pBlacklistResults && pBlacklistResults->Lookup(event))
-            {		    
+            {
                LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d): matches blacklist", event->Title()?event->Title():"no title", event->ShortText()?event->ShortText():"no subtitle", GETDATESTRING(event), GETTIMESTRING(event), ChannelNrFromEvent(event));
                continue;
             }
@@ -1115,7 +1117,7 @@ cSearchResults* cSearchExt::GetBlacklistEvents(int MarginStop)
    if (blacklistMode == blacklistsNone) return NULL;
 
    cMutexLock BlacklistLock(&Blacklists);
-   cSearchResults* blacklistEvents = NULL; 
+   cSearchResults* blacklistEvents = NULL;
    if (blacklistMode == blacklistsOnlyGlobal)
    {
       cBlacklist* tmpblacklist = Blacklists.First();
@@ -1145,7 +1147,7 @@ cSearchResults* cSearchExt::GetBlacklistEvents(int MarginStop)
       }
    }
    return blacklistEvents;
-     
+
 }
 
 void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
@@ -1161,31 +1163,31 @@ void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
       LogFile.Log(3,"search timer not set to 'record', so skip all");
       return;
    }
-   
+
    cSearchResult* pResultObj = NULL;
    for (pResultObj = pResults->First(); pResultObj; pResultObj = pResults->Next(pResultObj))
    {
       if (action != searchTimerActionRecord) // only announce if there is no timer for the event
       {
-         pResultObj->needsTimer = false; 		
+         pResultObj->needsTimer = false;
          continue;
       }
-      
+
       const cEvent* pEvent = pResultObj->event;
       // check if this event was already recorded
       int records = 0;
       cRecDone* firstRec = NULL;
       LogFile.Log(3,"get count recordings with %d%% match", compareSummaryMatchInPercent);
       records = RecsDone.GetCountRecordings(pEvent, this, &firstRec, compareSummaryMatchInPercent);
-      LogFile.Log(3,"recordings: %d", records);	
-      
+      LogFile.Log(3,"recordings: %d", records);
+
       if (records > allowedRepeats) // already recorded
       {
          LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d): already recorded %d equal event(s)", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent), records);
          pResultObj->needsTimer = false; // first asume we need no timer
          continue;
       }
-      
+
       int plannedTimers = 0;
       LogFile.Log(3,"get planned recordings");
       cSearchResult* pFirstResultMatching = NULL;
@@ -1193,12 +1195,12 @@ void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
       for (cSearchResult* pResultObjP = pResults->First(); pResultObjP; pResultObjP = pResults->Next(pResultObjP))
       {
          if (pResultObj == pResultObjP) break;
-         
+
          const cEvent* pEventP = pResultObjP->event;
          if (!pEventP) continue;
-         
+
          if (!pResultObjP->needsTimer) continue;
-         
+
          if (EventsMatch(pEvent, pEventP, compareTitle, compareSubtitle, compareSummary, compareDate, catvaluesAvoidRepeat))
          {
             if (!pFirstResultMatching) pFirstResultMatching = pResultObjP;
@@ -1206,11 +1208,11 @@ void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
          }
       }
       LogFile.Log(3,"planned: %d", plannedTimers);
-      
+
       if (plannedTimers + records > allowedRepeats)
       {
          LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d): events planned(%d), recorded(%d), allowed(%d)", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent), plannedTimers, records, allowedRepeats);
-         pResultObj->needsTimer = false; 		
+         pResultObj->needsTimer = false;
          continue;
       }
       else if (allowedRepeats > 0 && repeatsWithinDays > 0) // if we only allow repeats with in a given range
@@ -1220,14 +1222,14 @@ void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
             if (firstRec->startTime > pEvent->StartTime() - pEvent->Duration()) // no repeat
             {
                LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d); no repeat for event already recorded at %s, channel %d", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent), DAYDATETIME(firstRec->startTime), firstRec->ChannelNr());
-               pResultObj->needsTimer = false; 		
+               pResultObj->needsTimer = false;
                continue;
             }
             int daysFromFirstRec = int(double((pEvent->StartTime() - firstRec->startTime)) / (60*60*24) + 0.5);
             if (daysFromFirstRec  > repeatsWithinDays)
             {
                LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d); first recording at %s is %d days before, limit is %d days", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent), DAYDATETIME(firstRec->startTime),daysFromFirstRec, repeatsWithinDays);
-               pResultObj->needsTimer = false; 		
+               pResultObj->needsTimer = false;
                continue;
             }
          }
@@ -1237,15 +1239,15 @@ void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
             if (pFirst->StartTime() > pEvent->StartTime() - pEvent->Duration()) // no repeat
             {
                LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d); no repeat for event already recorded at %s - %s, channel %d", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent), GETDATESTRING(pFirst), GETTIMESTRING(pFirst), ChannelNrFromEvent(pFirst));
-               pResultObj->needsTimer = false; 		
+               pResultObj->needsTimer = false;
                continue;
             }
-            
+
             int daysBetween = int(double((pEvent->StartTime() - pFirst->StartTime())) / (60*60*24) + 0.5);
             if (daysBetween  > repeatsWithinDays)
             {
                LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d); first event '%s~%s' (%s - %s) is %d days before, limit is %d days", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent), GETDATESTRING(pFirst), GETTIMESTRING(pFirst),daysBetween, repeatsWithinDays);
-               pResultObj->needsTimer = false; 		
+               pResultObj->needsTimer = false;
                continue;
             }
          }
@@ -1255,7 +1257,7 @@ void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
       if (timer && !timer->HasFlags(tfActive))
       {
          LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d), existing timer disabled", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent));
-         pResultObj->needsTimer = false; 		
+         pResultObj->needsTimer = false;
          continue;
       }
       else
@@ -1264,7 +1266,7 @@ void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
    int needsTimer = 0;
    for (pResultObj = pResults->First(); pResultObj; pResultObj = pResults->Next(pResultObj))
       if (pResultObj->needsTimer) needsTimer++;
-   
+
    LogFile.Log(2,"%d/%d events need a timer for search timer '%s'", needsTimer, pResults->Count(), search);
 }
 
@@ -1277,18 +1279,18 @@ void cSearchExt::CheckExistingRecordings(cSearchResults* pResults)
 
    // how many recordings do we already have?
    int num = GetCountRecordings();
-    
+
    cSearchResult* pResultObj = NULL;
    int remain = pauseOnNrRecordings - num;
    for (pResultObj = pResults->First(); pResultObj; pResultObj = pResults->Next(pResultObj), remain--)
    {
-      if (!pResultObj->needsTimer) 
+      if (!pResultObj->needsTimer)
 	{
 	  remain++;
 	  continue; // maybe already disabled because of done feature
 	}
-      pResultObj->needsTimer = (remain > 0); 		
-      if (remain <= 0)	    
+      pResultObj->needsTimer = (remain > 0);
+      if (remain <= 0)
       {
          const cEvent* pEvent = pResultObj->event;
          LogFile.Log(3,"skip '%s~%s' (%s - %s, channel %d): only %d recordings are allowed", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent), pauseOnNrRecordings);
@@ -1301,7 +1303,7 @@ bool cSearchExt::MatchesExtEPGInfo(const cEvent* e)
    if (!e || !e->Description())
       return false;
    cSearchExtCat* SearchExtCat = SearchExtCats.First();
-   while (SearchExtCat) 
+   while (SearchExtCat)
    {
       char* value = NULL;
       int index = SearchExtCats.GetIndexFromID(SearchExtCat->id);
@@ -1335,7 +1337,7 @@ bool cSearchExt::MatchesExtEPGInfo(const cEvent* e)
 
 void cSearchExt::OnOffTimers(bool bOn)
 {
-   for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti)) 
+   for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti))
    {
       if (((!bOn && ti->HasFlags(tfActive)) || (bOn && !ti->HasFlags(tfActive))) && TriggeredFromSearchTimerID(ti) == ID)
          ti->OnOff();
@@ -1356,7 +1358,7 @@ void cSearchExt::DeleteAllTimers()
          Timers.Del(ti);
          Timers.SetModified();
          ti = tiNext;
-      }	
+      }
       else
          ti = Timers.Next(ti);
    };
@@ -1366,14 +1368,14 @@ cTimerObjList* cSearchExt::GetTimerList(cTimerObjList* timerList)
 {
    if (!timerList)
       timerList = new cTimerObjList;
- 
-   for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti)) 
+
+   for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti))
    {
       if (TriggeredFromSearchTimerID(ti) == ID)
       {
          // check if already in list
          bool found = false;
-         for (cTimerObj *tObj = timerList->First(); tObj; tObj = timerList->Next(tObj)) 
+         for (cTimerObj *tObj = timerList->First(); tObj; tObj = timerList->Next(tObj))
          {
             if (tObj->timer == ti)
             {
@@ -1393,7 +1395,7 @@ int cSearchExt::GetCountRecordings()
 {
    int countRecs = 0;
 
-   for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) 
+   for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording))
    {
       if (recording->IsEdited()) continue; // ignore recordings edited
       if (!recording->Info()) continue;
@@ -1415,7 +1417,7 @@ bool cSearchExt::IsActiveAt(time_t t)
     {
       if (useAsSearchTimerFrom > 0 && t < useAsSearchTimerFrom) return false;
       if (useAsSearchTimerTil > 0 && t > useAsSearchTimerTil) return false;
-    } 
+    }
   return true;
 }
 
@@ -1451,7 +1453,7 @@ void cSearchExt::SetContentFilter(int* contentStringsFlags)
 
 bool cSearchExt::MatchesContentsFilter(const cEvent* e)
 {
-#if APIVERSNUM < 10711 
+#if APIVERSNUM < 10711
   return true;
 #else
   if (!e) return false;
@@ -1466,7 +1468,7 @@ bool cSearchExt::MatchesContentsFilter(const cEvent* e)
     int c=0, eventContentID=0;
     bool found = false;
     while((eventContentID=e->Contents(c++)) > 0)
-      if (eventContentID == searchContentID) 
+      if (eventContentID == searchContentID)
 	{
 	  found = true;
 	  break;
@@ -1592,7 +1594,7 @@ void cSearchExts::RemoveBlacklistID(int ID)
    bool changed = false;
    cMutexLock SearchExtsLock(this);
    cSearchExt *l = (cSearchExt *)First();
-   while (l) 
+   while (l)
    {
       cBlacklistObject* blacklistObj = l->blacklists.First();
       while(blacklistObj)
@@ -1606,7 +1608,7 @@ void cSearchExts::RemoveBlacklistID(int ID)
          blacklistObj = blacklistObjNext;
       }
       l = (cSearchExt *)l->Next();
-   }   
+   }
    if (changed)
       Save();
 }
@@ -1615,7 +1617,7 @@ bool cSearchExts::Exists(const cSearchExt* SearchExt)
 {
    cMutexLock SearchExtsLock(this);
    cSearchExt *l = (cSearchExt *)First();
-   while (l) 
+   while (l)
    {
       if (l == SearchExt)
          return true;
@@ -1630,7 +1632,7 @@ cSearchExts* cSearchExts::Clone()
 
    cMutexLock SearchExtsLock(this);
    cSearchExt *l = (cSearchExt *)First();
-   while (l) 
+   while (l)
    {
       cSearchExt* clone = new cSearchExt();
       *clone = *l;
@@ -1643,7 +1645,7 @@ cSearchExts* cSearchExts::Clone()
 bool cSearchExts::CheckForAutoDelete(cSearchExt* SearchExt)
 {
    if (!SearchExt || SearchExt->delMode == 0) return false;
-   
+
    cRecDone* firstRec = NULL;
    bool delSearch = false;
    int recs = RecsDone.GetTotalCountRecordings(SearchExt, &firstRec);
@@ -1663,7 +1665,26 @@ bool cSearchExts::CheckForAutoDelete(cSearchExt* SearchExt)
    return delSearch;
 }
 
-cSearchResult::cSearchResult(const cEvent* Event, int searchID) : event(Event), blacklist(NULL), needsTimer(true) 
+void cSearchExts::SortBy(int(*compar)(const void *, const void *))
+{
+  int n = Count();
+  cListObject *a[n];
+  cListObject *object = objects;
+  int i = 0;
+  while (object && i < n) {
+    a[i++] = object;
+    object = object->Next();
+  }
+  qsort(a, n, sizeof(cListObject *), compar);
+  objects = lastObject = NULL;
+  for (i = 0; i < n; i++) {
+    a[i]->Unlink();
+    count--;
+    Add(a[i]);
+  }
+}
+
+cSearchResult::cSearchResult(const cEvent* Event, int searchID) : event(Event), blacklist(NULL), needsTimer(true)
 {
   search = SearchExts.GetSearchFromID(searchID);
 }
diff --git a/epgsearchext.h b/epgsearchext.h
index 16a4c49..cfdd131 100644
--- a/epgsearchext.h
+++ b/epgsearchext.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -194,7 +194,7 @@ public:
   bool ParseBlacklistIDs(const char *s);
   bool Save(FILE *f);
   char* BuildFile(const cEvent* pEvent) const;
-  cSearchResults* Run(int PayTVMode = -1, bool inspectTimerMargin = false, int evalLimitMins = 0, cSearchResults* pPrevResults = NULL, bool suppressRepeatCheck = false); 
+  cSearchResults* Run(int PayTVMode = -1, bool inspectTimerMargin = false, int evalLimitMins = 0, cSearchResults* pPrevResults = NULL, bool suppressRepeatCheck = false);
   void CheckRepeatTimers(cSearchResults* pResults);
   void CheckExistingRecordings(cSearchResults* pResults);
   void CopyFromTemplate(const cSearchExt* templ, bool ignoreChannelSettings = false);
@@ -234,6 +234,7 @@ public:
     bool Exists(const cSearchExt* SearchExt);
     cSearchExts* Clone();
     bool CheckForAutoDelete(cSearchExt* SearchExt);
+    void SortBy(int(*compar)(const void *, const void *));
 };
 
 extern cSearchExts SearchExts;
diff --git a/epgsearchonly.c b/epgsearchonly.c
index a56d513..4f6380f 100644
--- a/epgsearchonly.c
+++ b/epgsearchonly.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -24,10 +24,6 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include <string>
 #include <list>
 #include <vdr/plugin.h>
-#if APIVERSNUM < 10507
-#include <vdr/i18n.h>
-#define trNOOP(s) (s)
-#endif
 #include "services.h"
 #include "mainmenushortcut.h"
 
@@ -36,123 +32,30 @@ static const char *DESCRIPTION   = trNOOP("Direct access to epgsearch's search m
 static const char *MAINMENUENTRY = trNOOP("Search");
 static const char *SETUPTEXT     = trNOOP("EpgSearch-Search in main menu");
 
-#if APIVERSNUM < 10507
-const tI18nPhrase PhrasesLocal[] = {
-  {
-   "Direct access to epgsearch's search menu",
-   "Direkter Zugriff auf epgsearch's Suchenmenu",	// Deutsch
-   "",				// TODO 
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO 
-   "",				// TODO
-   "",				// TODO 
-   "Suoratoiminto EPGSearch-laajennoksen haulle",
-   "",				// TODO Polski
-   "Acceso directo al menú de búsquedas en EPG",	// Español
-   "",				// TODO ÅëëçíéêÜ (Greek)
-   "",				// TODO Svenska
-   "",				// TODO Romaneste
-   "",				// TODO Magyar
-   "",				// TODO Català
-   "",				// TODO ÀãááÚØÙ (Russian)
-   "",				// TODO Hrvatski (Croatian)
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {
-   "Search",
-   "Suche",
-   "",				// TODO
-   "Ricerca",
-   "Zoek",
-   "",				// TODO
-   "Recherche",
-   "",				// TODO
-   "Etsi ohjelmaoppaasta",
-   "",				// TODO
-   "Búsquedas en EPG",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {
-   "EpgSearch-Search in main menu",
-   "EpgSearch-Suche im Hauptmenü",	// Deutsch
-   "",				// TODO 
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO 
-   "",				// TODO
-   "",				// TODO 
-   "EpgSearch-laajennoksen hakutoiminto päävalikossa",
-   "",				// TODO Polski
-   "Búsquedas en EPG en menú principal",
-   "",				// TODO ÅëëçíéêÜ (Greek)
-   "",				// TODO Svenska
-   "",				// TODO Romaneste
-   "",				// TODO Magyar
-   "",				// TODO Català
-   "",				// TODO ÀãááÚØÙ (Russian)
-   "",				// TODO Hrvatski (Croatian)
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {NULL}
-};
-#endif
-
 class cPluginEpgsearchonly:public cMainMenuShortcut {
 public:
   virtual const char *Version() {
     return VERSION;
   }
-#if APIVERSNUM < 10507
-  virtual const char *Description() {
-    return tr(DESCRIPTION);
-  }
-#else
   virtual const char *Description() {
     return I18nTranslate(DESCRIPTION, I18nEpgsearch);
   }
-#endif
   virtual bool Initialize();
   virtual cOsdObject *MainMenuAction() {
     return GetEpgSearchMenu("Epgsearch-searchmenu-v1.0");
   };
 
 protected:
-#if APIVERSNUM < 10507
-  virtual const char *SetupText() {
-    return tr(SETUPTEXT);
-  }
-  virtual const char *MainMenuText() {
-    return tr(MAINMENUENTRY);
-  };
-#else
   virtual const char *SetupText() {
     return I18nTranslate(SETUPTEXT, I18nEpgsearch);
   }
   virtual const char *MainMenuText() {
     return I18nTranslate(MAINMENUENTRY, I18nEpgsearch);
   }
-#endif
 };
 
 bool cPluginEpgsearchonly::Initialize()
 {
-#if APIVERSNUM < 10507
-  RegisterI18n(PhrasesLocal);
-#endif
   return cMainMenuShortcut::Initialize();
 }
 
diff --git a/epgsearchservices.h b/epgsearchservices.h
index 38f5e7c..85ca1ff 100644
--- a/epgsearchservices.h
+++ b/epgsearchservices.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -44,8 +44,8 @@ class cEpgsearchServiceHandler: public cServiceHandler_v1_2
     virtual std::set<std::string> DirectoryList();
     virtual std::string ReadSetupValue(const std::string& entry);
     virtual bool WriteSetupValue(const std::string& entry, const std::string& value);
-    virtual std::list<std::string> TimerConflictList(bool relOnly=false);    
-    virtual bool IsConflictCheckAdvised();    
+    virtual std::list<std::string> TimerConflictList(bool relOnly=false);
+    virtual bool IsConflictCheckAdvised();
     virtual std::set<std::string> ShortDirectoryList();
     virtual std::string Evaluate(const std::string& expr, const cEvent* event);
 };
diff --git a/epgsearchsetup.c b/epgsearchsetup.c
index 29b9f84..dac35fe 100644
--- a/epgsearchsetup.c
+++ b/epgsearchsetup.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -28,7 +28,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include "searchtimer_thread.h"
 #include "epgsearchtools.h"
 #include "changrp.h"
-#include "menu_dirselect.h" 
+#include "menu_dirselect.h"
 #include "menu_searchtemplate.h"
 #include "menu_blacklists.h"
 #include "templatefile.h"
@@ -39,7 +39,6 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 const char *OkKeyMode[2];
 const char *RedKeyMode[2];
 const char *BlueKeyMode[2];
-const char *ProgressbarMode[3];
 const char *StartMenuMode[2];
 const char *AddSubtitleMode[3];
 const char *FavoritesMenuMode[4];
@@ -55,7 +54,7 @@ const char *cMenuSetupMailNotification::MailBoxChars     = " abcdefghijklmnopqrs
 cMenuSetupSubMenu::cMenuSetupSubMenu(const char* Title, cEPGSearchConfig* Data)
     : cOsdMenu(Title, 33)
 {
-    data = Data;  
+    data = Data;
 }
 
 eOSState cMenuSetupSubMenu::ProcessKey(eKeys Key)
@@ -105,13 +104,9 @@ cMenuEPGSearchSetup::cMenuEPGSearchSetup(void)
 
     RedKeyMode[0] = tr("Standard");
     RedKeyMode[1] = tr("Button$Commands");
-    
+
     BlueKeyMode[0] = tr("Standard");
     BlueKeyMode[1] = tr("Button$Search");
-    
-    ProgressbarMode[0] = trVDR("no");
-    ProgressbarMode[1] = tr("pipes");
-    ProgressbarMode[2] = tr("graphical");
 
     StartMenuMode[0] = trVDR("Button$Schedule");
     StartMenuMode[1] = trVDR("Button$Now");
@@ -136,7 +131,7 @@ void cMenuEPGSearchSetup::Setup(void)
     data = EPGSearchConfig;
     if (isempty(EPGSearchConfig.mainmenuentry))
 	strcpy(data.mainmenuentry,tr("Program guide"));
-    
+
     Set();
     SetHelp(NULL, NULL, NULL, trVDR("Button$Open"));
 }
@@ -145,7 +140,7 @@ void cMenuEPGSearchSetup::Set()
 {
   int current = Current();
   Clear();
- 
+
   Add(new cOsdItem(tr("General")));
   Add(new cOsdItem(tr("EPG menus")));
   Add(new cOsdItem(tr("User-defined EPG times")));
@@ -176,9 +171,9 @@ void cMenuEPGSearchSetup::Store(void)
     }
 
     EPGSearchConfig = data;
-    if (strcmp(EPGSearchConfig.mainmenuentry, tr("Program guide")) == 0) 
+    if (strcmp(EPGSearchConfig.mainmenuentry, tr("Program guide")) == 0)
 	strcpy(EPGSearchConfig.mainmenuentry,"");
-    
+
    if (isempty(EPGSearchConfig.MailAddressTo))
       strcpy(EPGSearchConfig.MailAddressTo, EPGSearchConfig.MailAddress);
 
@@ -199,15 +194,15 @@ void cMenuEPGSearchSetup::Store(void)
     SetupStore("UserMode1UseIt",  EPGSearchConfig.ShowModes[showUserMode1].GetUsage());
     SetupStore("UserMode1Description",  EPGSearchConfig.ShowModes[showUserMode1].GetDescription());
     SetupStore("UserMode1Time",  EPGSearchConfig.ShowModes[showUserMode1].GetTime());
-    
+
     SetupStore("UserMode2UseIt",  EPGSearchConfig.ShowModes[showUserMode2].GetUsage());
     SetupStore("UserMode2Description",  EPGSearchConfig.ShowModes[showUserMode2].GetDescription());
     SetupStore("UserMode2Time",  EPGSearchConfig.ShowModes[showUserMode2].GetTime());
-  
+
     SetupStore("UserMode3UseIt",  EPGSearchConfig.ShowModes[showUserMode3].GetUsage());
     SetupStore("UserMode3Description",  EPGSearchConfig.ShowModes[showUserMode3].GetDescription());
     SetupStore("UserMode3Time",  EPGSearchConfig.ShowModes[showUserMode3].GetTime());
-    
+
     SetupStore("UserMode4UseIt",  EPGSearchConfig.ShowModes[showUserMode4].GetUsage());
     SetupStore("UserMode4Description",  EPGSearchConfig.ShowModes[showUserMode4].GetDescription());
     SetupStore("UserMode4Time",  EPGSearchConfig.ShowModes[showUserMode4].GetTime());
@@ -298,7 +293,7 @@ eOSState cMenuEPGSearchSetup::ProcessKey(eKeys Key)
     int iOnEmailNotification = 0;
 
     if (!HasSubMenu())
-    { 
+    {
 	if (strstr(ItemText, tr("General")) == ItemText)
 	    iOnGeneral = 1;
 	else if (strstr(ItemText, tr("EPG menus")) == ItemText)
@@ -315,7 +310,7 @@ eOSState cMenuEPGSearchSetup::ProcessKey(eKeys Key)
 	    iOnEmailNotification = 1;
     }
 
-    if (!HasSubMenu() && (state == osUnknown || Key == kOk)) 
+    if (!HasSubMenu() && (state == osUnknown || Key == kOk))
     {
 	if ((Key == kOk && !hadSubMenu) || Key == kBlue)
 	{
@@ -410,7 +405,7 @@ void cMenuSetupEPGMenus::Set()
     int current = Current();
     Clear();
     helpTexts.clear();
-    
+
     Add(new cMenuEditStraItem(  tr("Ok key"), &data->useOkForSwitch, 2, OkKeyMode));
     AddHelp(tr("Help$Choose here the behaviour of key 'Ok'. You can use it to display the summary or to switch to the corresponding channel.\nNote: the functionality of key 'blue' (Switch/Info/Search) depends on this setting."));
 
@@ -419,12 +414,8 @@ void cMenuSetupEPGMenus::Set()
     Add(new cMenuEditStraItem(tr("Blue key"), &data->bluekeymode, 2, BlueKeyMode));
     AddHelp(tr("Help$Choose which standard function ('Switch'/'Info' or 'Search') you like to have on the blue key.\n(Can be toggled with key '0')"));
 
-#if VDRVERSNUM < 10503
-    Add(new cMenuEditStraItem(tr("Show progress in 'Now'"), &data->showProgress, 3, ProgressbarMode));
-#else
     Add(new cMenuEditBoolItem(tr("Show progress in 'Now'"), &data->showProgress, trVDR("no"), trVDR("yes")));
-#endif
-    AddHelp(tr("Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\nDepending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."));
+    AddHelp(tr("Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."));
     Add(new cMenuEditBoolItem(  tr("Show channel numbers"), &data->showChannelNr,       trVDR("no"),      trVDR("yes")));
     AddHelp(tr("Help$Display channel numbers in 'Overview - Now'.\n\n(To completely define your own menu look please inspect the MANUAL)"));
     Add(new cMenuEditBoolItem(  tr("Show channel separators"), &data->showChannelGroups,       trVDR("no"),      trVDR("yes")));
@@ -485,7 +476,7 @@ void cMenuSetupUserdefTimes::Set()
       AddHelp(tr("Help$This is the description for your user-defined time as it will appear as label on the green button."));
       Add(new cMenuEditTimeItem(IndentMenuItem(tr("Time")), &data->ShowModes[showUserMode1].itime));
       AddHelp(tr("Help$Specify the user-defined time here in 'HH:MM'."));
-  } 
+  }
 
   szUseUserTime = cString::sprintf("%s %d", tr("Use user-defined time"), 2);
   Add(new cMenuEditBoolItem( szUseUserTime, &data->ShowModes[showUserMode2].useIt,       trVDR("no"),      trVDR("yes")));
@@ -496,7 +487,7 @@ void cMenuSetupUserdefTimes::Set()
       AddHelp(tr("Help$This is the description for your user-defined time as it will appear as label on the green button."));
       Add(new cMenuEditTimeItem(IndentMenuItem(tr("Time")), &data->ShowModes[showUserMode2].itime));
       AddHelp(tr("Help$Specify the user-defined time here in 'HH:MM'."));
-  } 
+  }
 
   szUseUserTime = cString::sprintf("%s %d", tr("Use user-defined time"), 3);
   Add(new cMenuEditBoolItem(szUseUserTime, &data->ShowModes[showUserMode3].useIt,       trVDR("no"),      trVDR("yes")));
@@ -507,7 +498,7 @@ void cMenuSetupUserdefTimes::Set()
       AddHelp(tr("Help$This is the description for your user-defined time as it will appear as label on the green button."));
       Add(new cMenuEditTimeItem(IndentMenuItem(tr("Time")), &data->ShowModes[showUserMode3].itime));
       AddHelp(tr("Help$Specify the user-defined time here in 'HH:MM'."));
-  } 
+  }
 
   szUseUserTime = cString::sprintf("%s %d", tr("Use user-defined time"), 4);
   Add(new cMenuEditBoolItem(szUseUserTime, &data->ShowModes[showUserMode4].useIt,       trVDR("no"),      trVDR("yes")));
@@ -518,7 +509,7 @@ void cMenuSetupUserdefTimes::Set()
       AddHelp(tr("Help$This is the description for your user-defined time as it will appear as label on the green button."));
       Add(new cMenuEditTimeItem(IndentMenuItem(tr("Time")), &data->ShowModes[showUserMode4].itime));
       AddHelp(tr("Help$Specify the user-defined time here in 'HH:MM'."));
-  } 
+  }
 
   SetCurrent(Get(current));
   Display();
@@ -608,7 +599,7 @@ eOSState cMenuSetupTimers::ProcessKey(eKeys Key)
     int iOnDefRecDir = 0;
     int iOnDefTimerCheck = 0;
     if (!HasSubMenu())
-    { 
+    {
 	if (strstr(ItemText, tr("Default recording dir")) == ItemText)
 	    iOnDefRecDir = 1;
 	if (strstr(ItemText, tr("Default timer check method")) == ItemText)
@@ -694,7 +685,7 @@ void cMenuSetupSearchtimers::Set()
       }
   }
 
-  Add(new cMenuEditBoolItem(  tr("Ignore PayTV channels"), &data->ignorePayTV, trVDR("no"), trVDR("yes")));  
+  Add(new cMenuEditBoolItem(  tr("Ignore PayTV channels"), &data->ignorePayTV, trVDR("no"), trVDR("yes")));
   AddHelp(tr("Help$Set this to 'yes' if don't want to see events on PayTV channels when searching for repeats."));
   Add(new cOsdItem(tr("Search templates")));
   AddHelp(tr("Help$Here you can setup templates for your searches."));
@@ -744,7 +735,7 @@ eOSState cMenuSetupSearchtimers::ProcessKey(eKeys Key)
 
     const char* ItemText = Get(Current())->Text();
     if (!HasSubMenu())
-    { 
+    {
 	if (strstr(ItemText, tr("Search templates")) == ItemText)
 	    iOnSearchTemplates = 1;
 	else if (strstr(ItemText, tr("Blacklists")) == ItemText)
@@ -875,14 +866,14 @@ void cMenuSetupMailNotification::Set()
 
   if (data->sendMailOnSearchtimers)
   {
-    Add(new cMenuEditIntItem(IndentMenuItem(tr("Time between mails [h]")), &data->sendMailOnSearchtimerHours,  0, 999999, ""));   
-    AddHelp(tr("Help$Specifiy how much time in [h] you would\nlike to have atleast between two mails.\nWith '0' you get a new mail after each\nsearch timer update with new results.")); 
+    Add(new cMenuEditIntItem(IndentMenuItem(tr("Time between mails [h]")), &data->sendMailOnSearchtimerHours,  0, 999999, ""));
+    AddHelp(tr("Help$Specifiy how much time in [h] you would\nlike to have atleast between two mails.\nWith '0' you get a new mail after each\nsearch timer update with new results."));
   }
   Add(new cMenuEditBoolItem(tr("Timer conflict notification"), &data->sendMailOnConflicts, trVDR("no"), trVDR("yes")));
   AddHelp(tr("Help$Set this to 'yes' if you want to get an email notification about the timer conflicts."));
 
   Add(new cMenuEditStrItem(tr("Send to"), data->MailAddressTo, sizeof(data->MailAddressTo), MailBoxChars));
-  AddHelp(tr("Help$Specify the email adress where notifications should be sent to."));
+  AddHelp(tr("Help$Specify the email address where notifications should be sent to."));
 
   Add(new cMenuEditStraItem(tr("Mail method"), &data->mailViaScript, 2, MailMethod));
   AddHelp(tr("Help$Specify here the method to use when sending mails.\nYou can choose between\n - 'sendmail': requires a properly configured email system\n - 'SendEmail.pl': simple script for mail delivery"));
@@ -893,15 +884,15 @@ void cMenuSetupMailNotification::Set()
      sep->SetSelectable(false);
      Add(sep);
      AddHelp(" dummy");
-     
-     Add(new cMenuEditStrItem(tr("Email adress"), data->MailAddress, sizeof(data->MailAddress), MailBoxChars));
-     AddHelp(tr("Help$Specify the email adress where notifications should be sent from."));
-     
+
+     Add(new cMenuEditStrItem(tr("Email address"), data->MailAddress, sizeof(data->MailAddress), MailBoxChars));
+     AddHelp(tr("Help$Specify the email address where notifications should be sent from."));
+
      Add(new cMenuEditStrItem(tr("SMTP server"), data->MailServer, sizeof(data->MailServer), HostNameChars));
      AddHelp(tr("Help$Specify the SMTP server that should deliver the notifications. If it's using a port different from the default(25) append the port with \":port\"."));
      Add(new cMenuEditBoolItem(tr("Use SMTP authentication"), &data->MailUseAuth, trVDR("no"), trVDR("yes")));
      AddHelp(tr("Help$Set this to 'yes' if your account needs authentication to send mails."));
-     
+
      if (data->MailUseAuth)
      {
         Add(new cMenuEditStrItem(IndentMenuItem(tr("Auth user")), data->MailAuthUser, sizeof(data->MailAuthUser), UserNameChars));
@@ -910,7 +901,7 @@ void cMenuSetupMailNotification::Set()
         AddHelp(tr("Help$Specify the auth password, if this account needs authentication for SMTP."));
      }
   }
-  
+
   SetCurrent(Get(current));
   Display();
 
@@ -936,9 +927,9 @@ void cMenuSetupMailNotification::SetHelpKeys()
    const char* ItemText = Get(Current())->Text();
    if (!HasSubMenu())
    {
-      if (strstr(ItemText, tr("Email adress")) == ItemText)
+      if (strstr(ItemText, tr("Email address")) == ItemText)
       {
-         if (!InEditMode(ItemText, tr("Email adress"), data->MailAddress))
+         if (!InEditMode(ItemText, tr("Email address"), data->MailAddress))
             SetHelp(NULL, NULL, tr("Button$Help"), showTestButton?tr("Button$Test"):NULL);
       }
       else if (strstr(ItemText, tr("SMTP server")) == ItemText)
@@ -968,14 +959,14 @@ eOSState cMenuSetupMailNotification::ProcessKey(eKeys Key)
    int iTemp_MailUseAuth = data->MailUseAuth;
    int iTemp_sendMailOnSearchtimers = data->sendMailOnSearchtimers;
    int iTemp_mailViaScript = data->mailViaScript;
-   
+
    const char* ItemText = Get(Current())->Text();
    bool bAuthPassWasInEditMode = false;
    if (ItemText && strlen(ItemText) > 0 && strstr(ItemText, IndentMenuItem(tr("Auth password"))) == ItemText)
       bAuthPassWasInEditMode = InEditMode(ItemText, IndentMenuItem(tr("Auth password")), tmpMailAuthPass);
- 
+
    eOSState state = cMenuSetupSubMenu::ProcessKey(Key);
-   
+
    ItemText = Get(Current())->Text();
    bool bAuthPassIsInEditMode = false;
    if (ItemText && strlen(ItemText) > 0 && strstr(ItemText, IndentMenuItem(tr("Auth password"))) == ItemText)
@@ -1004,9 +995,9 @@ eOSState cMenuSetupMailNotification::ProcessKey(eKeys Key)
       Set();
       Display();
    }
-   
+
    SetHelpKeys();
-   
+
    if (state == osUnknown) {
       switch (Key) {
          case kOk:
@@ -1019,7 +1010,7 @@ eOSState cMenuSetupMailNotification::ProcessKey(eKeys Key)
          default: break;
       }
    }
-   
+
    return state;
 }
 
diff --git a/epgsearchsetup.h b/epgsearchsetup.h
index a9ec150..0019dc3 100644
--- a/epgsearchsetup.h
+++ b/epgsearchsetup.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -43,7 +43,7 @@ class cMenuSetupSubMenu : public cOsdMenu {
   };
 
 
-class cMenuSetupGeneral : public cMenuSetupSubMenu 
+class cMenuSetupGeneral : public cMenuSetupSubMenu
 {
  protected:
     virtual eOSState ProcessKey(eKeys Key);
@@ -52,7 +52,7 @@ class cMenuSetupGeneral : public cMenuSetupSubMenu
     cMenuSetupGeneral(cEPGSearchConfig* Data);
 };
 
-class cMenuSetupEPGMenus : public cMenuSetupSubMenu 
+class cMenuSetupEPGMenus : public cMenuSetupSubMenu
 {
  protected:
     void Set(void);
@@ -80,7 +80,7 @@ class cMenuSetupTimers : public cMenuSetupSubMenu
     cMenuSetupTimers(cEPGSearchConfig* Data);
 };
 
-class cMenuSetupSearchtimers : public cMenuSetupSubMenu 
+class cMenuSetupSearchtimers : public cMenuSetupSubMenu
 {
      char** menuitemsChGr;
  protected:
@@ -92,7 +92,7 @@ class cMenuSetupSearchtimers : public cMenuSetupSubMenu
     ~cMenuSetupSearchtimers();
 };
 
-class cMenuSetupTimerConflicts : public cMenuSetupSubMenu 
+class cMenuSetupTimerConflicts : public cMenuSetupSubMenu
 {
  protected:
     virtual eOSState ProcessKey(eKeys Key);
@@ -101,9 +101,9 @@ class cMenuSetupTimerConflicts : public cMenuSetupSubMenu
     cMenuSetupTimerConflicts(cEPGSearchConfig* Data);
 };
 
-class cMenuSetupMailNotification : public cMenuSetupSubMenu 
+class cMenuSetupMailNotification : public cMenuSetupSubMenu
 {
-   char tmpMailAuthPass[MaxFileName];      
+   char tmpMailAuthPass[MaxFileName];
    void SetHelpKeys();
   protected:
    virtual eOSState ProcessKey(eKeys Key);
@@ -111,7 +111,7 @@ class cMenuSetupMailNotification : public cMenuSetupSubMenu
   public:
    cMenuSetupMailNotification(cEPGSearchConfig* Data);
    eOSState TestMailAccount();
-   
+
    static const char *HostNameChars;
    static const char *UserNameChars;
    static const char *PasswordChars;
diff --git a/epgsearchsvdrp.c b/epgsearchsvdrp.c
index 930f6fb..6acf10e 100644
--- a/epgsearchsvdrp.c
+++ b/epgsearchsvdrp.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -54,7 +54,7 @@ const char **cPluginEpgsearch::SVDRPHelpPages(void)
       "LSTS [ ID ]\n"
       "    List searches.\n"
       "    If the optional numeric argument ID is passed,\n"
-      "    only the search with the according ID is listed",  
+      "    only the search with the according ID is listed",
       "NEWS <settings>\n"
       "    Add a new search\n",
       "DELS <ID>\n"
@@ -101,7 +101,7 @@ const char **cPluginEpgsearch::SVDRPHelpPages(void)
       "LSTB [ ID ]\n"
       "    List blacklists.\n"
       "    If the optional numeric argument ID is passed,\n"
-      "    only the blacklist with the according ID is listed",  
+      "    only the blacklist with the according ID is listed",
       "NEWB <settings>\n"
       "    Add a new blacklist",
       "DELB <ID>\n"
@@ -117,7 +117,7 @@ const char **cPluginEpgsearch::SVDRPHelpPages(void)
       "    List search templates.\n"
       "    If the optional numeric argument ID is passed,\n"
       "    only the search template with the according ID\n"
-      "    is listed",  
+      "    is listed",
       "NEWT <settings>\n"
       "    Add a new search template\n",
       "DELT <ID>\n"
@@ -142,7 +142,7 @@ const char **cPluginEpgsearch::SVDRPHelpPages(void)
 
 cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
 {
-   if (strcasecmp(Command, "UPDS") == 0) 
+   if (strcasecmp(Command, "UPDS") == 0)
    {
      if (!EPGSearchConfig.useSearchTimers) // enable search timer thread if necessary
        cSearchTimerThread::Init((cPluginEpgsearch*) cPluginManager::GetPlugin("epgsearch"), true);
@@ -151,8 +151,8 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
        {
 	 char *pstrOptionToken, *pptr;
 	 char *pstrOptions=strdup(Option);
-	 pstrOptionToken=strtok_r(pstrOptions, " ", &pptr);     
-	 while(pstrOptionToken) 
+	 pstrOptionToken=strtok_r(pstrOptions, " ", &pptr);
+	 while(pstrOptionToken)
 	   {
 	     if (strcasecmp(Option, "OSD")==0)
 	       updateForced |= UPDS_WITH_OSD;
@@ -164,18 +164,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
        }
      return cString("update triggered");
    }
-   else if (strcasecmp(Command, "UPDD") == 0) 
+   else if (strcasecmp(Command, "UPDD") == 0)
    {
       if (RecsDone.Load(AddDirectory(CONFIGDIR, "epgsearchdone.data")))
-         return cString("reload successful");	    
+         return cString("reload successful");
       else
-         return cString("reload failed");	    
+         return cString("reload failed");
    }
    // -----------------------
    // search timer management
-   else if (strcasecmp(Command, "LSTS") == 0) 
+   else if (strcasecmp(Command, "LSTS") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          if (isnumber(Option))
          {
@@ -191,14 +191,14 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("Error in search ID \"%s\"", Option);	
+            return cString::sprintf("Error in search ID \"%s\"", Option);
          }
       }
-      else if (SearchExts.Count()>0) 
+      else if (SearchExts.Count()>0)
       {
          string sBuffer;
          cMutexLock SearchExtsLock(&SearchExts);
-         for (int i = 0; i < SearchExts.Count(); i++) 
+         for (int i = 0; i < SearchExts.Count(); i++)
          {
             cSearchExt* search = SearchExts.Get(i);
             if (search)
@@ -209,12 +209,12 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       else
       {
          ReplyCode = 901;
-         return cString("no searches defined");	    	
+         return cString("no searches defined");
       }
    }
-   else if (strcasecmp(Command, "DELS") == 0) 
+   else if (strcasecmp(Command, "DELS") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          string sOption = Option;
          bool delTimers = false;
@@ -248,18 +248,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("Error in search ID \"%s\"", Option);	
+            return cString::sprintf("Error in search ID \"%s\"", Option);
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing search ID");	    	
+         return cString("missing search ID");
       }
    }
-   else if (strcasecmp(Command, "NEWS") == 0) 
+   else if (strcasecmp(Command, "NEWS") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cSearchExt* search = new cSearchExt;
          if (search->Parse(Option))
@@ -277,18 +277,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          {
             ReplyCode = 901;
             delete search;
-            return cString("Error in search settings");	
+            return cString("Error in search settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing search settings");	    	
+         return cString("missing search settings");
       }
    }
-   else if (strcasecmp(Command, "EDIS") == 0) 
+   else if (strcasecmp(Command, "EDIS") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cSearchExt* search = new cSearchExt;
          if (search->Parse(Option))
@@ -316,18 +316,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          {
             ReplyCode = 901;
             delete search;
-            return cString("Error in search settings");	
+            return cString("Error in search settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing search settings");	    	
+         return cString("missing search settings");
       }
    }
-   else if (strcasecmp(Command, "MODS") == 0) 
+   else if (strcasecmp(Command, "MODS") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          char *tail;
          int ID = strtol(Option, &tail, 10);
@@ -346,7 +346,7 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
 
             if (searchTemp->useAsSearchTimer && !EPGSearchConfig.useSearchTimers) // enable search timer thread if necessary
                cSearchTimerThread::Init((cPluginEpgsearch*) cPluginManager::GetPlugin("epgsearch"), true);
-		
+
             return cString::sprintf("search '%s' with ID %d modified", searchTemp->search, searchTemp->ID);
          }
          else
@@ -358,25 +358,25 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       else
       {
          ReplyCode = 901;
-         return cString("missing search ID");	    	
+         return cString("missing search ID");
       }
    }
-   else if (strcasecmp(Command, "SETS") == 0) 
+   else if (strcasecmp(Command, "SETS") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          if (strcasecmp(Option, "ON") == 0)
          {
             if (cSearchTimerThread::m_Instance)
             {
                ReplyCode = 901;
-               return cString("search timer thread already active!");	    	
+               return cString("search timer thread already active!");
             }
             else
             {
                LogFile.Log(1,"search timer thread started via SVDRP");
                cSearchTimerThread::Init(this);
-               return cString("search timer activated.");	    	
+               return cString("search timer activated.");
             }
          }
          else if (strcasecmp(Option, "OFF") == 0)
@@ -384,30 +384,30 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
             if (!cSearchTimerThread::m_Instance)
             {
                ReplyCode = 901;
-               return cString("search timer thread already inactive!");	    	
+               return cString("search timer thread already inactive!");
             }
             else
             {
                LogFile.Log(1,"search timer thread canceled via SVDRP");
                cSearchTimerThread::Exit();
-               return cString("search timer thread canceled.");	    	
+               return cString("search timer thread canceled.");
             }
          }
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("unknown option '%s'", Option);	    	
+            return cString::sprintf("unknown option '%s'", Option);
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing option <on|off>");	    	
+         return cString("missing option <on|off>");
       }
    }
-   else if (strcasecmp(Command, "FIND") == 0) 
+   else if (strcasecmp(Command, "FIND") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cSearchExt* search = new cSearchExt;
          if (search->Parse(Option))
@@ -419,7 +419,7 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
             {
                results->SortBy(CompareEventTime);
                cSearchResult *result = results->First();
-               while (result) 
+               while (result)
                {
                   const cEvent* pEvent = result->event;
                   cTimer* Timer = new cTimer(pEvent);
@@ -443,60 +443,56 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
                   strftime(bufStart, sizeof(bufStart), "%H%M", localtime_r(&start, &tm_r));
                   strftime(bufEnd, sizeof(bufEnd), "%H%M", localtime_r(&stop, &tm_r));
 
-		  cString cmdbuf = cString::sprintf("NEWT %d:%d:%s:%s:%s:%d:%d:%s:%s", 
+		  cString cmdbuf = cString::sprintf("NEWT %d:%d:%s:%s:%s:%d:%d:%s:%s",
                            Flags,
                            Timer->Channel()->Number(),
-#if VDRVERSNUM < 10503
-                           *Timer->PrintDay(start, Timer->WeekDays()),
-#else
                            *Timer->PrintDay(start, Timer->WeekDays(), true),
-#endif
                            bufStart,
                            bufEnd,
-                           search->Priority, 
-                           search->Lifetime, 
+                           search->Priority,
+                           search->Lifetime,
                            Timer->File(),
                            "");
-				 
-		      
+
+
                   sBuffer += string(cmdbuf) + string(results->Next(result)?"\n":"");
                   delete(Timer);
                   result = results->Next(result);
                }
-               return sBuffer.c_str();	    
+               return sBuffer.c_str();
             }
             else
             {
                ReplyCode = 901;
                delete search;
-               return cString("no results");	
+               return cString("no results");
             }
          }
          else
          {
             ReplyCode = 901;
             delete search;
-            return cString("Error in search settings");	
+            return cString("Error in search settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing search settings");	    	
+         return cString("missing search settings");
       }
    }
-   else if (strcasecmp(Command, "QRYS") == 0 || strcasecmp(Command, "QRYF") == 0) 
+   else if (strcasecmp(Command, "QRYS") == 0 || strcasecmp(Command, "QRYF") == 0)
    {
       cSearchExt *temp_SearchExt = NULL;
       cSearchResults* pCompleteSearchResults = NULL;
       if (strcasecmp(Command, "QRYS") == 0) // query one or more searches
       {
-         if (*Option) 
+         if (*Option)
          {
             if (strchr(Option, ':'))
             {
                cSearchExt* temp_SearchExt = new cSearchExt;
-               if (temp_SearchExt->Parse(Option))		    
+               if (temp_SearchExt->Parse(Option))
                   pCompleteSearchResults = temp_SearchExt->Run();
             }
             else
@@ -504,8 +500,8 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
                char *pstrSearchToken, *pptr;
                char *pstrSearch=strdup(Option);
                pstrSearchToken=strtok_r(pstrSearch, "|", &pptr);
-		    
-               while(pstrSearchToken) 
+
+               while(pstrSearchToken)
                {
                   cSearchExt* search = SearchExts.GetSearchFromID(atoi(pstrSearchToken));
                   if (search)
@@ -518,39 +514,39 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString("missing search IDs");	    	
+            return cString("missing search IDs");
          }
       }
       else // query the favorites
       {
          int hours = EPGSearchConfig.FavoritesMenuTimespan;
-         if (*Option) 
+         if (*Option)
             hours = atoi(Option);
 
          cMutexLock SearchExtsLock(&SearchExts);
          cSearchExt *SearchExt = SearchExts.First();
-         while (SearchExt) 
+         while (SearchExt)
          {
             if (SearchExt->useInFavorites)
                pCompleteSearchResults = SearchExt->Run(-1, false, 60*hours, pCompleteSearchResults);
             SearchExt = SearchExts.Next(SearchExt);
          }
       }
-	
+
       if (pCompleteSearchResults)
       {
          // transfer to result list
          string sBuffer;
          pCompleteSearchResults->SortBy(CompareEventTime);
          cSearchResult *result = pCompleteSearchResults->First();
-         while (result && result->search) 
+         while (result && result->search)
          {
             const cEvent* pEvent = result->event;
             cTimer* Timer = new cTimer(pEvent);
-		
+
             static char bufStart[25];
             static char bufEnd[25];
-		
+
             struct tm tm_r;    time_t eStart = pEvent->StartTime();
             time_t eStop = pEvent->EndTime();
             time_t start = eStart - (result->search->MarginStart * 60);
@@ -560,18 +556,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
                start = pEvent->Vps();
                stop = start + pEvent->Duration();
             }
-		
+
             strftime(bufStart, sizeof(bufStart), "%H%M", localtime_r(&start, &tm_r));
             strftime(bufEnd, sizeof(bufEnd), "%H%M", localtime_r(&stop, &tm_r));
-		
+
             int timerMatch;
             bool hasTimer = false;
-            if (Timers.GetMatch(pEvent, &timerMatch)) 
+            if (Timers.GetMatch(pEvent, &timerMatch))
                hasTimer = (timerMatch == tmFull);
-		
+
             if (!result->search->useAsSearchTimer)
                result->needsTimer = false;
-		
+
             cChannel *channel = Channels.GetByChannelID(pEvent->ChannelID(), true,true);
             int timerMode = hasTimer?1:(result->needsTimer?2:0);
 
@@ -580,7 +576,7 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
             string shorttext = pEvent->ShortText()?ReplaceAll(pEvent->ShortText(), "|", "!^pipe!^"):"";
             shorttext = ReplaceAll(shorttext, ":", "|");
 
-            cString cmdbuf = cString::sprintf("%d:%u:%s:%s:%ld:%ld:%s:%ld:%ld:%s:%d", 
+            cString cmdbuf = cString::sprintf("%d:%u:%s:%s:%ld:%ld:%s:%ld:%ld:%s:%d",
                      result->search->ID,
                      pEvent->EventID(),
                      title.c_str(),
@@ -591,21 +587,21 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
                      timerMode>0?start:-1,
                      timerMode>0?stop:-1,
                      timerMode>0?result->search->BuildFile(pEvent):"",
-                     timerMode);				 
-		
+                     timerMode);
+
             sBuffer += string(cmdbuf) + string(pCompleteSearchResults->Next(result)?"\n":"");
             delete(Timer);
             result = pCompleteSearchResults->Next(result);
          }
          if (temp_SearchExt) delete temp_SearchExt;
          if (pCompleteSearchResults) delete pCompleteSearchResults;
-         return sBuffer.c_str();	    
+         return sBuffer.c_str();
       }
       else
       {
          ReplyCode = 901;
          if (temp_SearchExt) delete temp_SearchExt;
-         return cString("no results");	
+         return cString("no results");
       }
    }
    else if (strcasecmp(Command, "UPDT") == 0)
@@ -617,7 +613,7 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
    }
    // ---------------------
    // recording directories
-   else if (strcasecmp(Command, "LSRD") == 0) 
+   else if (strcasecmp(Command, "LSRD") == 0)
    {
       cMenuDirSelect::CreateDirSet();
 
@@ -625,7 +621,7 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       {
          cString sBuffer("");
          std::set<string>::iterator it;
-         for (it = cMenuDirSelect::directorySet.begin(); it != cMenuDirSelect::directorySet.end(); it++) 
+         for (it = cMenuDirSelect::directorySet.begin(); it != cMenuDirSelect::directorySet.end(); ++it)
          {
             cString sOldBuffer = sBuffer;
             sBuffer = cString::sprintf("%s%s\n", *sOldBuffer, (*it).c_str());
@@ -638,28 +634,28 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       else
       {
          ReplyCode = 901;
-         return cString("no recording directories found");	    	
+         return cString("no recording directories found");
       }
    }
    // -------------------------
    // channel groups management
-   else if (strcasecmp(Command, "LSTC") == 0) 
+   else if (strcasecmp(Command, "LSTC") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cChannelGroup *changrp = ChannelGroups.GetGroupByName(Option);
          if (changrp)
-            return cString(changrp->ToText());	    
+            return cString(changrp->ToText());
          else
          {
             ReplyCode = 901;
             return cString::sprintf("channel group '%s' not defined", Option);
          }
       }
-      else if (ChannelGroups.Count()>0) 
+      else if (ChannelGroups.Count()>0)
       {
          cString sBuffer("");
-         for (int i = 0; i < ChannelGroups.Count(); i++) 
+         for (int i = 0; i < ChannelGroups.Count(); i++)
          {
             cChannelGroup *changrp = ChannelGroups.Get(i);
             if (changrp)
@@ -676,12 +672,12 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       else
       {
          ReplyCode = 901;
-         return cString("no channel groups defined");	    	
+         return cString("no channel groups defined");
       }
    }
-   else if (strcasecmp(Command, "EDIC") == 0) 
+   else if (strcasecmp(Command, "EDIC") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cChannelGroup *changrp = new cChannelGroup;
          if (changrp->Parse(Option))
@@ -706,18 +702,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          {
             ReplyCode = 901;
             delete changrp;
-            return cString("Error in channel group settings");	
+            return cString("Error in channel group settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing channel group settings");	    	
+         return cString("missing channel group settings");
       }
    }
-   else if (strcasecmp(Command, "DELC") == 0) 
+   else if (strcasecmp(Command, "DELC") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cChannelGroup *changrp = ChannelGroups.GetGroupByName(Option);
          if (changrp)
@@ -742,12 +738,12 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       else
       {
          ReplyCode = 901;
-         return cString("missing channel group");	    	
+         return cString("missing channel group");
       }
    }
-   else if (strcasecmp(Command, "NEWC") == 0) 
+   else if (strcasecmp(Command, "NEWC") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cChannelGroup *changrp = new cChannelGroup;
          if (changrp->Parse(Option))
@@ -761,18 +757,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          {
             ReplyCode = 901;
             delete changrp;
-            return cString("Error in channel group settings");	
+            return cString("Error in channel group settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing channel group settings");	    	
+         return cString("missing channel group settings");
       }
    }
-   else if (strcasecmp(Command, "RENC") == 0) 
+   else if (strcasecmp(Command, "RENC") == 0)
    {
-     if (*Option) 
+     if (*Option)
        {
          const char* pipePos = strchr(Option, '|');
          if (pipePos)
@@ -789,10 +785,10 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
 		     strcpy(changrp->name, newName);
 		     cMutexLock SearchExtsLock(&SearchExts);
 		     cSearchExt *SearchExt = SearchExts.First();
-		     while (SearchExt) 
+		     while (SearchExt)
 		       {
-			 if (SearchExt->useChannel == 2 && 
-			     SearchExt->channelGroup && 
+			 if (SearchExt->useChannel == 2 &&
+			     SearchExt->channelGroup &&
 			     strcmp(SearchExt->channelGroup, oldName) == 0)
 			   {
 			     free(SearchExt->channelGroup);
@@ -805,8 +801,8 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
 		     cString strReturn = cString::sprintf("renamed channel group '%s' to '%s'", oldName, newName);
 		     free(oldName);
 		     return strReturn;
-		     
-		   }		    
+
+		   }
 		 else
 		   {
 		     free(oldName);
@@ -817,19 +813,19 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
 	     free(oldName);
 	   }
          ReplyCode = 901;
-         return cString("Error in channel group parameters");	
+         return cString("Error in channel group parameters");
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing channel group parameters");	    	
+         return cString("missing channel group parameters");
       }
    }
    // --------------------
    // blacklist management
-   else if (strcasecmp(Command, "LSTB") == 0) 
+   else if (strcasecmp(Command, "LSTB") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          if (isnumber(Option))
          {
@@ -845,14 +841,14 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("Error in blacklist ID \"%s\"", Option);	
+            return cString::sprintf("Error in blacklist ID \"%s\"", Option);
          }
       }
-      else if (Blacklists.Count()>0) 
+      else if (Blacklists.Count()>0)
       {
          cMutexLock BlacklistLock(&Blacklists);
          string sBuffer;
-         for (int i = 0; i < Blacklists.Count(); i++) 
+         for (int i = 0; i < Blacklists.Count(); i++)
          {
             cBlacklist *blacklist = Blacklists.Get(i);
             if (blacklist)
@@ -863,12 +859,12 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       else
       {
          ReplyCode = 901;
-         return cString("no blacklists defined");	    	
+         return cString("no blacklists defined");
       }
    }
-   else if (strcasecmp(Command, "DELB") == 0) 
+   else if (strcasecmp(Command, "DELB") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          if (isnumber(Option))
          {
@@ -892,18 +888,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("Error in blacklist ID \"%s\"", Option);	
+            return cString::sprintf("Error in blacklist ID \"%s\"", Option);
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing blacklist ID");	    	
+         return cString("missing blacklist ID");
       }
    }
-   else if (strcasecmp(Command, "NEWB") == 0) 
+   else if (strcasecmp(Command, "NEWB") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cBlacklist *blacklist = new cBlacklist;
          if (blacklist->Parse(Option))
@@ -919,18 +915,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          {
             ReplyCode = 901;
             delete blacklist;
-            return cString("Error in blacklist settings");	
+            return cString("Error in blacklist settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing blacklist settings");	    	
+         return cString("missing blacklist settings");
       }
    }
-   else if (strcasecmp(Command, "EDIB") == 0) 
+   else if (strcasecmp(Command, "EDIB") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cBlacklist *blacklist = new cBlacklist;
          if (blacklist->Parse(Option))
@@ -955,20 +951,20 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          {
             ReplyCode = 901;
             delete blacklist;
-            return cString("Error in blacklist settings");	
+            return cString("Error in blacklist settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing blacklist settings");	    	
+         return cString("missing blacklist settings");
       }
    }
    // ----------------------------------
    // extended EPG categories management
-   else if (strcasecmp(Command, "LSTE") == 0) 
+   else if (strcasecmp(Command, "LSTE") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          if (isnumber(Option))
          {
@@ -986,13 +982,13 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("Error in category ID \"%s\"", Option);	
+            return cString::sprintf("Error in category ID \"%s\"", Option);
          }
       }
-      else if (SearchExtCats.Count()>0) 
+      else if (SearchExtCats.Count()>0)
       {
          string sBuffer;
-         for (int i = 0; i < SearchExtCats.Count(); i++) 
+         for (int i = 0; i < SearchExtCats.Count(); i++)
          {
             cSearchExtCat *SearchExtCat = SearchExtCats.Get(i);
             if (SearchExtCat)
@@ -1003,14 +999,14 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       else
       {
          ReplyCode = 901;
-         return cString("no EPG categories defined");	    	
+         return cString("no EPG categories defined");
       }
    }
    // ------------
    // setup values
-   else if (strcasecmp(Command, "SETP") == 0) 
+   else if (strcasecmp(Command, "SETP") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          if (strcasecmp(Option, "ShowFavoritesMenu") == 0)
             return cString::sprintf("%d", EPGSearchConfig.showFavoritesMenu);
@@ -1023,9 +1019,9 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
             else
             {
                ReplyCode = 901;
-               return cString::sprintf("empty");	
+               return cString::sprintf("empty");
             }
-         }	
+         }
          else if (strcasecmp(Option, "AddSubtitleToTimerMode") == 0)
             return cString::sprintf("%d", EPGSearchConfig.addSubtitleToTimer);
          else if (strcasecmp(Option, "DefPriority") == 0)
@@ -1045,20 +1041,20 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
                if (!chID.Valid())
                {
                   ReplyCode = 901;
-                  return cString::sprintf("invalid channel id");	
+                  return cString::sprintf("invalid channel id");
                }
                cChannel *ch = Channels.GetByChannelID(chID,true,true);
                if (!ch)
                {
                   ReplyCode = 901;
-                  return cString::sprintf("unknown channel");	
+                  return cString::sprintf("unknown channel");
                }
                return cString::sprintf("%s: %d", *ch->GetChannelID().ToString(), DefTimerCheckModes.GetMode(ch));
             }
             else
             {
                string sBuffer;
-               for (int i = 0; i < Channels.Count(); i++) 
+               for (int i = 0; i < Channels.Count(); i++)
                {
                   cChannel* ch = Channels.Get(i);
                   if (ch && !ch->GroupSep())
@@ -1070,7 +1066,7 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("setup option not supported");	
+            return cString::sprintf("setup option not supported");
          }
       }
       else
@@ -1090,9 +1086,9 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
    }
    // ---------------------------------
    // search timer templates management
-   else if (strcasecmp(Command, "LSTT") == 0) 
+   else if (strcasecmp(Command, "LSTT") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          if (isnumber(Option))
          {
@@ -1108,14 +1104,14 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("Error in search template ID \"%s\"", Option);	
+            return cString::sprintf("Error in search template ID \"%s\"", Option);
          }
       }
-      else if (SearchTemplates.Count()>0) 
+      else if (SearchTemplates.Count()>0)
       {
          string sBuffer;
          cMutexLock SearchExtsLock(&SearchTemplates);
-         for (int i = 0; i < SearchTemplates.Count(); i++) 
+         for (int i = 0; i < SearchTemplates.Count(); i++)
          {
             cSearchExt* search = SearchTemplates.Get(i);
             if (search)
@@ -1126,12 +1122,12 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
       else
       {
          ReplyCode = 901;
-         return cString("no search templates defined");	    	
+         return cString("no search templates defined");
       }
    }
-   else if (strcasecmp(Command, "DELT") == 0) 
+   else if (strcasecmp(Command, "DELT") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          if (isnumber(Option))
          {
@@ -1153,18 +1149,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          else
          {
             ReplyCode = 901;
-            return cString::sprintf("Error in search template ID \"%s\"", Option);	
+            return cString::sprintf("Error in search template ID \"%s\"", Option);
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing search template ID");	    	
+         return cString("missing search template ID");
       }
    }
-   else if (strcasecmp(Command, "NEWT") == 0) 
+   else if (strcasecmp(Command, "NEWT") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cSearchExt* search = new cSearchExt;
          if (search->Parse(Option))
@@ -1180,18 +1176,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          {
             ReplyCode = 901;
             delete search;
-            return cString("Error in search template settings");	
+            return cString("Error in search template settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing search template settings");	    	
+         return cString("missing search template settings");
       }
    }
-   else if (strcasecmp(Command, "EDIT") == 0) 
+   else if (strcasecmp(Command, "EDIT") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cSearchExt* search = new cSearchExt;
          if (search->Parse(Option))
@@ -1216,18 +1212,18 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
          {
             ReplyCode = 901;
             delete search;
-            return cString("Error in search template settings");	
+            return cString("Error in search template settings");
          }
       }
       else
       {
          ReplyCode = 901;
-         return cString("missing search template settings");	    	
+         return cString("missing search template settings");
       }
    }
-   else if (strcasecmp(Command, "DEFT") == 0) 
+   else if (strcasecmp(Command, "DEFT") == 0)
    {
-      if (*Option) 
+      if (*Option)
       {
          cSearchExt *searchTemp = SearchTemplates.GetSearchFromID(atoi(Option));
          if (searchTemp)
@@ -1249,15 +1245,15 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
 
    // ---------------------------------
    // timer conflicts
-   else if (strcasecmp(Command, "LSCC") == 0) 
+   else if (strcasecmp(Command, "LSCC") == 0)
    {
      bool relOnly = false;
      if (*Option && strcasecmp(Option, "REL") == 0)
        relOnly = true;
 
      cConflictCheck conflictCheck;
-     conflictCheck.Check(); 
-     
+     conflictCheck.Check();
+
      if ((relOnly && conflictCheck.numConflicts > 0) ||
 	 conflictCheck.relevantConflicts > 0)
        {
@@ -1272,7 +1268,7 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
 	     std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
 
 	     std::ostringstream timerparts;
-	     for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); it++) 
+	     for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); ++it)
 	       {
 		 if (relOnly && (*it)->ignore) continue;
 		 std::ostringstream timerpart;
@@ -1282,7 +1278,7 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
 		 if ((*it)->concurrentTimers)
 		   {
 		   std::ostringstream cctimers;
-		   for (itcc = (*it)->concurrentTimers->begin(); itcc != (*it)->concurrentTimers->end(); itcc++) 
+		   for (itcc = (*it)->concurrentTimers->begin(); itcc != (*it)->concurrentTimers->end(); ++itcc)
 		     cctimers << (cctimers.str().empty()?"":"#") << (*itcc)->origIndex+1;
 		   timerpart << cctimers.str();
 		   }
@@ -1296,10 +1292,10 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
      else
        {
          ReplyCode = 901;
-         return cString("no conflicts found");	    	
+         return cString("no conflicts found");
        }
    }
-   else if (strcasecmp(Command, "MENU") == 0) 
+   else if (strcasecmp(Command, "MENU") == 0)
      {
        if (*Option)
 	 {
@@ -1325,8 +1321,8 @@ cString cPluginEpgsearch::SVDRPCommand(const char *Command, const char *Option,
 	       exitToMainMenu = 1;
 	       return "menu closed";
 	     }
-	 } 
+	 }
      }
-   
+
    return NULL;
 }
diff --git a/epgsearchtools.c b/epgsearchtools.c
index b403656..e1b7fd7 100644
--- a/epgsearchtools.c
+++ b/epgsearchtools.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -40,11 +40,8 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include "distance.h"
 #include "md5.h"
 #include "afuzzy.h"
-#include "i18n.h"
 #include "timerstatus.h"
-#if APIVERSNUM >= 10503 
 #include <langinfo.h>
-#endif
 
 #ifdef HAVE_PCREPOSIX
 #include <pcreposix.h>
@@ -62,7 +59,7 @@ int CompareEventTime(const void *p1, const void *p2)
    time_t time1 = (*(cSearchResult **)p1)->event->StartTime();
    time_t time2 = (*(cSearchResult **)p2)->event->StartTime();
    if (time1 == time2)
-      return (int)(ChannelNrFromEvent((*(cSearchResult **)p1)->event) - 
+      return (int)(ChannelNrFromEvent((*(cSearchResult **)p1)->event) -
                    ChannelNrFromEvent((*(cSearchResult **)p2)->event));
    else
       return (int)(time1 - time2);
@@ -79,6 +76,16 @@ int CompareEventChannel(const void *p1, const void *p2)
       return ch1 - ch2;
 }
 
+int CompareSearchExtPrioDescTerm(const void *p1, const void *p2)
+{
+   int prio1 = (*(cSearchExt **)p1)->Priority;
+   int prio2 = (*(cSearchExt **)p2)->Priority;
+   if (prio2 != prio1)
+     return prio2 - prio1;
+   else
+     return strcmp((*(cSearchExt **)p1)->search, (*(cSearchExt **)p2)->search);
+}
+
 char* IndentMenuItem(const char* szString, int indentions)
 {
    char* szIndented = NULL;
@@ -86,258 +93,39 @@ char* IndentMenuItem(const char* szString, int indentions)
    return szIndented;
 }
 
-// based on Nordlicht's EPG-Plugin
-void PatchFont(eDvbFont DvbFont)
-{
-#if VDRVERSNUM < 10503
-   const cFont *font = cFont::GetFont(DvbFont);
-   int num_rows_global = font->Height();
-   int num_rows = num_rows_global+2;
-   int i,j,num_char;
- 
-   cFont::tPixelData* font_data = new cFont::tPixelData[225*(num_rows)];
- 
-   for (i = 0; i < 225; i++)
-      for (j = 0; j < num_rows; j++)
-         font_data[(i*num_rows)+j]=0x0000000000000000;
-   
-   font_data[0+0]=6;//font->CharData(0)->width;
-   font_data[0+1]=num_rows_global;
- 
-   for(num_char=33, i = 1; num_char<256; i++, num_char++)
-   {
-      const cFont::tCharData* char_data = font->CharData(num_char);
-      font_data[i*num_rows+0] = (num_char>=127 && num_char<=129)?6:char_data->width;
-      font_data[i*num_rows+1] = char_data->height;
-
-      if(num_char==130)
-      {
-         if(DvbFont==fontOsd)
-         {
-            font_data[i*num_rows+ 0]=6;
-            font_data[i*num_rows+ 1]=23;
-            font_data[i*num_rows+ 8]=0x3f; // ## ####
-            font_data[i*num_rows+ 9]=0x3f; // ## ####
-            font_data[i*num_rows+10]=0x30; // ## ....
-            font_data[i*num_rows+11]=0x30; // ## ....
-            font_data[i*num_rows+12]=0x30; // ## ....
-            font_data[i*num_rows+13]=0x30; // ## ....
-            font_data[i*num_rows+14]=0x30; // ## ....
-            font_data[i*num_rows+15]=0x30; // ## ....
-            font_data[i*num_rows+16]=0x30; // ## ....
-            font_data[i*num_rows+17]=0x30; // ## ....
-            font_data[i*num_rows+18]=0x30; // ## ....
-            font_data[i*num_rows+19]=0x30; // ## ....
-            font_data[i*num_rows+20]=0x30; // ## ....
-            font_data[i*num_rows+21]=0x30; // ## ....
-            font_data[i*num_rows+22]=0x30; // ## ....
-            font_data[i*num_rows+23]=0x3f; // ## ####
-            font_data[i*num_rows+24]=0x3f; // ## ####
-         }
-         else
-         {
-            font_data[i*num_rows+ 0]=5;
-            font_data[i*num_rows+ 1]=19;
-            font_data[i*num_rows+ 6]=0x1f; // # ####
-            font_data[i*num_rows+ 7]=0x1f; // # ####
-            font_data[i*num_rows+ 8]=0x18; // # #...
-            font_data[i*num_rows+ 9]=0x18; // # #...
-            font_data[i*num_rows+10]=0x18; // # #...
-            font_data[i*num_rows+11]=0x18; // # #...
-            font_data[i*num_rows+12]=0x18; // # #...
-            font_data[i*num_rows+13]=0x18; // # #...
-            font_data[i*num_rows+14]=0x18; // # #...
-            font_data[i*num_rows+15]=0x18; // # #...
-            font_data[i*num_rows+16]=0x18; // # #...
-            font_data[i*num_rows+17]=0x18; // # #...
-            font_data[i*num_rows+18]=0x18; // # #...
-            font_data[i*num_rows+19]=0x1f; // # #...
-            font_data[i*num_rows+20]=0x1f; // # ####
-         }
-      }
-      else if(num_char==131)
-      {
-         if(DvbFont==fontOsd)
-         {
-            font_data[i*num_rows+ 0]=6;
-            font_data[i*num_rows+ 1]=23;
-            font_data[i*num_rows+ 8]=0x3f; // ## ####
-            font_data[i*num_rows+ 9]=0x3f; // ## ####
-            font_data[i*num_rows+10]=0x0;  // .. ....
-            font_data[i*num_rows+11]=0x0;  // .. ....
-            font_data[i*num_rows+12]=0x0;  // .. ....
-            font_data[i*num_rows+13]=0x0;  // .. ....
-            font_data[i*num_rows+14]=0x0;  // .. ....
-            font_data[i*num_rows+15]=0x0;  // .. ....
-            font_data[i*num_rows+16]=0x0;  // .. ....
-            font_data[i*num_rows+17]=0x0;  // .. ....
-            font_data[i*num_rows+18]=0x0;  // .. ....
-            font_data[i*num_rows+19]=0x0;  // .. ....
-            font_data[i*num_rows+20]=0x0;  // .. ....
-            font_data[i*num_rows+21]=0x0;  // .. ....
-            font_data[i*num_rows+22]=0x0;  // .. ....
-            font_data[i*num_rows+23]=0x3f; // ## ####
-            font_data[i*num_rows+24]=0x3f; // ## ####
-         }
-         else
-         {
-            font_data[i*num_rows+ 0]=5;
-            font_data[i*num_rows+ 1]=19;
-            font_data[i*num_rows+ 6]=0x1f; // # ####
-            font_data[i*num_rows+ 7]=0x1f; // # ####
-            font_data[i*num_rows+ 8]=0x0;  // . ....
-            font_data[i*num_rows+ 9]=0x0;  // . ....
-            font_data[i*num_rows+10]=0x0;  // . ....
-            font_data[i*num_rows+11]=0x0;  // . ....
-            font_data[i*num_rows+12]=0x0;  // . ....
-            font_data[i*num_rows+13]=0x0;  // . ....
-            font_data[i*num_rows+14]=0x0;  // . ....
-            font_data[i*num_rows+15]=0x0;  // . ....
-            font_data[i*num_rows+16]=0x0;  // . ....
-            font_data[i*num_rows+17]=0x0;  // . ....
-            font_data[i*num_rows+18]=0x0;  // . ....
-            font_data[i*num_rows+19]=0x1f; // # ####
-            font_data[i*num_rows+20]=0x1f; // # ####
-         }
-      }
-      else if(num_char==132)
-      {
-         if(DvbFont==fontOsd)
-         {
-            font_data[i*num_rows+ 0]=6;
-            font_data[i*num_rows+ 1]=23;
-            font_data[i*num_rows+ 8]=0x3f; // ## ####
-            font_data[i*num_rows+ 9]=0x3f; // ## ####
-            font_data[i*num_rows+10]=0x03; // .. ..##
-            font_data[i*num_rows+11]=0x03; // .. ..##
-            font_data[i*num_rows+12]=0x03; // .. ..##
-            font_data[i*num_rows+13]=0x03; // .. ..##
-            font_data[i*num_rows+14]=0x03; // .. ..##
-            font_data[i*num_rows+15]=0x03; // .. ..##
-            font_data[i*num_rows+16]=0x03; // .. ..##
-            font_data[i*num_rows+17]=0x03; // .. ..##
-            font_data[i*num_rows+18]=0x03; // .. ..##
-            font_data[i*num_rows+19]=0x03; // .. ..##
-            font_data[i*num_rows+20]=0x03; // .. ..##
-            font_data[i*num_rows+21]=0x03; // .. ..##
-            font_data[i*num_rows+22]=0x03; // .. ..##
-            font_data[i*num_rows+23]=0x3f; // ## ####
-            font_data[i*num_rows+24]=0x3f; // ## ####
-         }
-         else
-         {
-            font_data[i*num_rows+ 0]=5;
-            font_data[i*num_rows+ 1]=19;
-            font_data[i*num_rows+ 6]=0x1f; // # ####
-            font_data[i*num_rows+ 7]=0x1f; // # ####
-            font_data[i*num_rows+ 8]=0x03; // . ..##
-            font_data[i*num_rows+ 9]=0x03; // . ..##
-            font_data[i*num_rows+10]=0x03; // . ..##
-            font_data[i*num_rows+11]=0x03; // . ..##
-            font_data[i*num_rows+12]=0x03; // . ..##
-            font_data[i*num_rows+13]=0x03; // . ..##
-            font_data[i*num_rows+14]=0x03; // . ..##
-            font_data[i*num_rows+15]=0x03; // . ..##
-            font_data[i*num_rows+16]=0x03; // . ..##
-            font_data[i*num_rows+17]=0x03; // . ..##
-            font_data[i*num_rows+18]=0x03; // . ..##
-            font_data[i*num_rows+19]=0x1f; // # ####
-            font_data[i*num_rows+20]=0x1f; // # ####
-         }
-      }
-      else if(num_char==127)
-      {
-         if(DvbFont==fontOsd)
-         {
-            font_data[i*num_rows+ 0]=6;
-            font_data[i*num_rows+ 1]=23;
-            font_data[i*num_rows+ 8]=0x3f; // ## ####
-            font_data[i*num_rows+ 9]=0x3f; // ## ####
-            font_data[i*num_rows+10]=0x3f; // ## ####
-            font_data[i*num_rows+11]=0x3f; // ## ####
-            font_data[i*num_rows+12]=0x3f; // ## ####
-            font_data[i*num_rows+13]=0x3f; // ## ####
-            font_data[i*num_rows+14]=0x3f; // ## ####
-            font_data[i*num_rows+15]=0x3f; // ## ####
-            font_data[i*num_rows+16]=0x3f; // ## ####
-            font_data[i*num_rows+17]=0x3f; // ## ####
-            font_data[i*num_rows+18]=0x3f; // ## ####
-            font_data[i*num_rows+19]=0x3f; // ## ####
-            font_data[i*num_rows+20]=0x3f; // ## ####
-            font_data[i*num_rows+21]=0x3f; // ## ####
-            font_data[i*num_rows+22]=0x3f; // ## ####
-            font_data[i*num_rows+23]=0x3f; // ## ####
-            font_data[i*num_rows+24]=0x3f; // ## ####
-         }
-         else
-         {
-            font_data[i*num_rows+ 0]=5;
-            font_data[i*num_rows+ 1]=19;
-            font_data[i*num_rows+ 6]=0x1f; // ######
-            font_data[i*num_rows+ 7]=0x1f; // # ####
-            font_data[i*num_rows+ 8]=0x1f; // # ####
-            font_data[i*num_rows+ 9]=0x1f; // # ####
-            font_data[i*num_rows+10]=0x1f; // # ####
-            font_data[i*num_rows+11]=0x1f; // # ####
-            font_data[i*num_rows+12]=0x1f; // # ####
-            font_data[i*num_rows+13]=0x1f; // # ####
-            font_data[i*num_rows+14]=0x1f; // # ####
-            font_data[i*num_rows+15]=0x1f; // # ####
-            font_data[i*num_rows+16]=0x1f; // # ####
-            font_data[i*num_rows+17]=0x1f; // # ####
-            font_data[i*num_rows+18]=0x1f; // # ####
-            font_data[i*num_rows+19]=0x1f; // # ####
-            font_data[i*num_rows+20]=0x1f; // # ####
-         }
-      }
-      else if (char_data->width > 0)
-      {
-         for(j = 0; j<(int)char_data->height; j++)
-         {
-            cFont::tPixelData Data = (cFont::tPixelData)char_data->lines[j];    
-            font_data[(i*num_rows)+2+j] = Data;
-         }
-      }
-   }
- 
-   cFont::SetFont(DvbFont, font_data);
-#endif
-}
-
-
 bool MatchesSearchMode(const char* szTest, const char* searchText, int mode, const char* delim, int tolerance)
 {
    if (szTest && *szTest)
    {
       if (mode == 0) // substring
-         return (strstr(szTest, searchText) != NULL); 
+         return (strstr(szTest, searchText) != NULL);
       else if (mode == 1 || mode == 2) // AND or OR
-      { 
+      {
          bool bTesting = false;
          char *pstrSearchToken, *pptr;
          bool bFirst=true;
          char *pstrSearch=strdup(searchText);
          pstrSearchToken=strtok_r(pstrSearch, delim, &pptr);
-         while(pstrSearchToken) 
+         while(pstrSearchToken)
          {
-            if(szTest && strstr(szTest, skipspace(pstrSearchToken))) 
-            { 
-               if(mode==1) 
+            if(szTest && strstr(szTest, skipspace(pstrSearchToken)))
+            {
+               if(mode==1)
                { // means AND
-                  if(bFirst) 
+                  if(bFirst)
                   {
                      bTesting=true;
                      bFirst=false;
-                  } 
+                  }
                   else
                      bTesting&=true;
                }
                else
                   bTesting|=true;
-            } 
-            else 
+            }
+            else
             {// not found!!
-               if(mode==1) 
+               if(mode==1)
                { // means AND
                   bTesting=false;
                   bFirst=false;
@@ -354,7 +142,7 @@ bool MatchesSearchMode(const char* szTest, const char* searchText, int mode, con
             return true;
          else
             return false;
-      } 
+      }
       else if (mode == 4) // regexp
       {
          regex_t re;
@@ -366,7 +154,7 @@ bool MatchesSearchMode(const char* szTest, const char* searchText, int mode, con
             return (status == 0);
          }
          return false;
-      }	
+      }
       else if (mode == 5) // fuzzy
       {
 	 AFUZZY af = { NULL, NULL, NULL, NULL, NULL, NULL, { 0 }, { 0 }, 0, 0, 0, 0, 0, 0 };
@@ -378,13 +166,13 @@ bool MatchesSearchMode(const char* szTest, const char* searchText, int mode, con
          afuzzy_free(&af);
          return (res > 0);
       }
-      else if (mode >= 10 && mode <= 15) 
+      else if (mode >= 10 && mode <= 15)
       {
          int testvalue = atoi(szTest);
          int value = atoi(searchText);
 	 if (value == 0) return true;
 
-         if (mode == 10) // less 
+         if (mode == 10) // less
             return testvalue < value;
          else if (mode == 11) // less or equal
             return testvalue <= value;
@@ -436,7 +224,7 @@ char* GetExtEPGValue(const char* description, const char* catname)
    if (isempty(description))
       return NULL;
    char* tmp = NULL;
-    
+
    // search the category, must be at beginnig of a line
    msprintf(&tmp, "\n%s: ", catname);
    char* descr = strdup(description);
@@ -450,7 +238,7 @@ char* GetExtEPGValue(const char* description, const char* catname)
    else
       cat++; // skip linefeed
 
-   // search the value to appear before the next line feed or end 
+   // search the value to appear before the next line feed or end
    char* end = strchr(cat, '\n');
    int endpos = strlen(cat);
    if (end)
@@ -469,7 +257,7 @@ char* GetAuxValue(const char* aux, const char* name)
 {
    if (isempty(aux))
       return NULL;
-    
+
    char* descr = strdup(aux);
    char* beginaux = strstr(descr, "<epgsearch>");
    char* endaux = strstr(descr, "</epgsearch>");
@@ -477,12 +265,12 @@ char* GetAuxValue(const char* aux, const char* name)
       free(descr);
       return NULL;
       }
-   
+
    beginaux +=  11;  // strlen("<epgsearch>");
    endaux[0] = 0;
    memmove(descr, beginaux, endaux - beginaux + 1);
-   
-   if (strcmp(name, "epgsearch") == 0) 
+
+   if (strcmp(name, "epgsearch") == 0)
       return descr; // full aux
 
    int namelen = strlen(name);
@@ -497,19 +285,19 @@ char* GetAuxValue(const char* aux, const char* name)
       free(descr);
       return NULL;
       }
-      
+
    cat += namelen + 2;
    char* end = strstr(cat, "</");
    if (!end) {
-      free(descr);	
+      free(descr);
       return NULL;
       }
    end[0] = 0;
-   
+
    int catlen = end - cat + 1;
    char* value = (char *) malloc(catlen);
    memcpy(value, cat, catlen);
-   
+
    free(descr);
    return value;
 }
@@ -565,8 +353,8 @@ char *strreplacei(char *s, const char *s1, const char *s2)
 }
 
 std::string strreplace(
-  std::string& result, 
-  const std::string& replaceWhat, 
+  std::string& result,
+  const std::string& replaceWhat,
   const std::string& replaceWithWhat)
 {
   while(1)
@@ -589,13 +377,13 @@ void sleepSec(long s)
    sleepMSec(s * 1000);
 }
 
-bool SendViaSVDRP(cString SVDRPcmd) 
+bool SendViaSVDRP(cString SVDRPcmd)
 {
    bool bSuccess = true;
    cString cmdbuf;
    if (EPGSearchConfig.useExternalSVDRP)
    {
-     cmdbuf = cString::sprintf("%s -p %d \"%s\"", 
+     cmdbuf = cString::sprintf("%s -p %d \"%s\"",
                cSVDRPClient::SVDRPSendCmd,
                EPGSearchConfig.SVDRPPort,
                *SVDRPcmd);
@@ -619,11 +407,11 @@ bool SendViaSVDRP(cString SVDRPcmd)
          bSuccess = false;
       }
    }
-	    
+
    return bSuccess;
 }
 
-int SendMsg(cString Message, bool confirm, int seconds) 
+int SendMsg(cString Message, bool confirm, int seconds)
 {
    int Keys = Skins.QueueMessage(mtInfo, Message, seconds, confirm?seconds+2:0);
    return Keys;
@@ -651,7 +439,7 @@ cSearchExt* TriggeredFromSearchTimer(const cTimer* timer)
    char* searchID = GetAuxValue(timer, "s-id");
    if (!searchID)
       return NULL;
-    
+
    cSearchExt* search = SearchExts.GetSearchFromID(atoi(searchID));
    free(searchID);
    return search;
@@ -660,7 +448,7 @@ cSearchExt* TriggeredFromSearchTimer(const cTimer* timer)
 int TriggeredFromSearchTimerID(const cTimer* timer)
 {
    cSearchExt* trigger = TriggeredFromSearchTimer(timer);
-   if (trigger) 
+   if (trigger)
       return trigger->ID;
    else
       return -1;
@@ -690,7 +478,7 @@ bool DescriptionMatches(const char* eDescr, const char* rDescr, int matchLimit)
    if (100*double(minLength)/double(maxLength) < matchLimit)
       return false;
 
-   // last try with Levenshtein Distance, only compare the first 1000 chars 
+   // last try with Levenshtein Distance, only compare the first 1000 chars
    double fMatch = FuzzyMatch(eDescr, rDescr, 1000);
    double tmp_matchlimit = matchLimit/100.0;
    if(maxLength - minLength < 5)
@@ -711,7 +499,7 @@ const cEvent* GetEvent(cTimer* timer)
    const cEvent* event = NULL;
    const cChannel *channel = timer->Channel();
    time_t Time = timer->StartTime() + (timer->StopTime() - timer->StartTime()) / 2;
-   for (int seconds = 0; seconds <= 3; seconds++) 
+   for (int seconds = 0; seconds <= 3; seconds++)
    {
       {
          cSchedulesLock SchedulesLock;
@@ -720,7 +508,7 @@ const cEvent* GetEvent(cTimer* timer)
             const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID());
             if (Schedule) {
                event = Schedule->GetEventAround(Time);
-               if (event) return event; 
+               if (event) return event;
             }
          }
       }
@@ -733,8 +521,8 @@ const cEvent* GetEvent(cTimer* timer)
 }
 
 // this extracts the real description from a given epg entry cutting all that looks like a category line
-// we asume, that a category has a name not longer than MAXCATNAMELENGTH and a value not longer than 
-// MAXCATVALUELENGTH (so in most cases e.g. the 'cast' category will stay part of the description). name and 
+// we asume, that a category has a name not longer than MAXCATNAMELENGTH and a value not longer than
+// MAXCATVALUELENGTH (so in most cases e.g. the 'cast' category will stay part of the description). name and
 // value are separated with ': '
 #define MAXCATNAMELENGTH 40
 #define MAXCATVALUELENGTH 60
@@ -744,8 +532,8 @@ char* GetRawDescription(const char* descr)
    if (!descr || !*descr) return NULL;
 
    char* rawDescr = (char*) calloc(strlen(descr)+1, sizeof(char));
-   
-   const char* tmp = descr;    
+
+   const char* tmp = descr;
    while(tmp)
    {
       // extract a single line
@@ -758,11 +546,11 @@ char* GetRawDescription(const char* descr)
       //      if (lf) *lf = 0;
       // check for category
       char* delim = strstr(line, ": ");
-      if (!delim || 
+      if (!delim ||
           (delim && (delim - line > MAXCATNAMELENGTH || strlen(line) - (delim - line) + 2 > MAXCATVALUELENGTH)))
          if (*line)
 	   strcat(rawDescr, line);
-	
+
       if (lf) tmp += strlen(line)+1; else tmp = NULL;
       free(line);
    }
@@ -794,7 +582,7 @@ void PrepareTimerFile(const cEvent* event, cTimer* timer)
       strn0cpy(directory, EPGSearchConfig.defrecdir,sizeof(directory));
       cVarExpr varExprDir(directory);
       if (!varExprDir.DependsOnVar("%title%", event))
-      {	    
+      {
          strcat(directory, "~");
          strcat(directory, timer->File());
       }
@@ -842,7 +630,7 @@ bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle,
    bool match = false;
    if ((!compareTitle || Title1 == Title2) &&
        (!compareSubtitle || (Subtitle1 == Subtitle2 && Subtitle1!="")))
-   {	
+   {
       const char* Descr1    = event1->Description();
       const char* Descr2    = event2->Description();
       if (compareSummary)
@@ -856,7 +644,7 @@ bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle,
       }
       if (compareExpression.size() > 0)
       {
-	   cVarExpr varExpr(compareExpression); 
+	   cVarExpr varExpr(compareExpression);
 	   string resEvent1 = varExpr.Evaluate(event1);
 	   string resEvent2 = varExpr.Evaluate(event2);
 	   if (resEvent1 != resEvent2)
@@ -867,7 +655,7 @@ bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle,
          bool bCatMatch = ((Descr1 && Descr2) || (!Descr1 && !Descr2));
          cSearchExtCat *SearchExtCat = SearchExtCats.First();
          int index = 0;
-         while (catvaluesAvoidRepeat > 0 && SearchExtCat && bCatMatch) 	    
+         while (catvaluesAvoidRepeat > 0 && SearchExtCat && bCatMatch)
          {
             if (catvaluesAvoidRepeat & (1<<index))
             {
@@ -882,7 +670,7 @@ bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle,
             }
             SearchExtCat = SearchExtCats.Next(SearchExtCat);
             index++;
-         }		    
+         }
          if (bCatMatch)
             match = true;
       }
@@ -900,15 +688,15 @@ int ChannelNrFromEvent(const cEvent* pEvent)
    if (!channel)
       return -1;
    else
-      return channel->Number();						
+      return channel->Number();
 }
 
 void DelTimer(int index)
 {
-  cString cmdbuf = cString::sprintf("DELT %d", index);    
+  cString cmdbuf = cString::sprintf("DELT %d", index);
   LogFile.Log(2, "delete timer %d", index);
   SendViaSVDRP(cmdbuf);
-  gl_timerStatusMonitor->SetConflictCheckAdvised(); 
+  gl_timerStatusMonitor->SetConflictCheckAdvised();
 }
 
 char* FixSeparators(char* buffer, char sep)
@@ -921,7 +709,7 @@ char* FixSeparators(char* buffer, char sep)
     if (c == sep) {
       for (j = i + 1; (j < l) & (buffer[j] == ' '); j++)
 	;
-      
+
       if ((j <= l) | (i + 1 < j)) {
 	switch (buffer[j]) {
 	case '\t':
@@ -1074,7 +862,6 @@ int msprintf(char **strp, const char *fmt, ...)
 
 std::string GetCodeset()
 {
-#if APIVERSNUM >= 10503 
    // Taken from VDR's vdr.c
    char *CodeSet = NULL;
    if (setlocale(LC_CTYPE, ""))
@@ -1091,9 +878,6 @@ std::string GetCodeset()
      return std::string(CodeSet);
    else
      return "ISO-8859-15";
-#else
-   return "ISO-8859-15";
-#endif
 }
 
 /*  Read a line from a socket  */
@@ -1104,7 +888,7 @@ ssize_t Readline(int sockd, char *vptr, size_t maxlen) {
     buffer = vptr;
 
     for ( n = 1; n < maxlen; n++ ) {
-	
+
 	if ( (rc = read(sockd, &c, 1)) == 1 ) {
 	    if ( c == '\n' )
 		break;
@@ -1153,17 +937,17 @@ ssize_t Writeline(int sockd, const char *vptr, size_t n) {
 long getAddrFromString(const char* hostnameOrIp, struct sockaddr_in* addr)
 {
   unsigned long ip;
-  
+
   struct hostent * he;
-  
+
   if(hostnameOrIp==NULL || addr==NULL)
     return -1;
-  
+
   ip=inet_addr(hostnameOrIp);
-  
+
   if(ip!=INADDR_NONE)
     {
-      addr->sin_addr.s_addr=ip;		
+      addr->sin_addr.s_addr=ip;
       return 0;
     }
   else
diff --git a/epgsearchtools.h b/epgsearchtools.h
index 9f3b48b..b984e94 100644
--- a/epgsearchtools.h
+++ b/epgsearchtools.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -26,10 +26,8 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 
 #include <string>
 #include <vdr/config.h> // For VDRVERSNUM only
-#include <vdr/font.h>
 #include "epgsearchext.h"
 #include "recdone.h"
-#include "i18n.h"
 
 using std::string;
 
@@ -39,31 +37,31 @@ using std::string;
 #define CHANNELNAME(x) (x ? x->ShortName(true) : "")
 
 #undef TIMESTRING
-#define TIMESTRING(x) *(TimeString(x)) 
+#define TIMESTRING(x) *(TimeString(x))
 
 #undef DATESTRING
-#define DATESTRING(x) *(DateString(x)) 
+#define DATESTRING(x) *(DateString(x))
 
 #undef GETDATESTRING
-#define GETDATESTRING(x) *(x->GetDateString()) 
+#define GETDATESTRING(x) *(x->GetDateString())
 
 #undef GETTIMESTRING
-#define GETTIMESTRING(x) *(x->GetTimeString()) 
+#define GETTIMESTRING(x) *(x->GetTimeString())
 
 #undef PRINTDAY
 #define PRINTDAY *cTimer::PrintDay
 
 #undef DAYDATETIME
-#define DAYDATETIME(x) *DayDateTime(x) 
+#define DAYDATETIME(x) *DayDateTime(x)
 
 #undef CHANNELSTRING
-#define CHANNELSTRING(x) (*x->GetChannelID().ToString()) 
+#define CHANNELSTRING(x) (*x->GetChannelID().ToString())
 
 #undef WEEKDAYNAME
-#define WEEKDAYNAME(x) (*WeekDayName(x)) 
+#define WEEKDAYNAME(x) (*WeekDayName(x))
 
 #undef ADDDIR
-#define ADDDIR *AddDirectory 
+#define ADDDIR *AddDirectory
 
 #undef CONFIGDIR
 #define CONFIGDIR (!ConfigDir?cPlugin::ConfigDirectory():ConfigDir)
@@ -76,10 +74,13 @@ using std::string;
 
 #define ISRADIO(x) ((x)->Vpid()==0||(x)->Vpid()==1||(x)->Vpid()==0x1fff)
 
+#ifndef MENU_SEPARATOR_ITEMS
+  #define MENU_SEPARATOR_ITEMS "----------------------------------------"
+#endif
+
 #define UPDS_WITH_OSD (1<<1)
 #define UPDS_WITH_EPGSCAN (1<<2)
 
-#if APIVERSNUM >= 10503 
 // Icons used in VDRSymbols-Font
 #define ICON_REC               0x8B
 #define ICON_RUNNING           0x92
@@ -90,18 +91,6 @@ using std::string;
 #define ICON_BAR_EMPTY         0x89
 #define ICON_BAR_CLOSE         0x8A
 #define ICON_VPS               0x93
-#else
-// previous WAREAGLE icons
-#define ICON_REC               0xF9
-#define ICON_RUNNING           0xFB
-#define ICON_CLOCK             0xFD
-#define ICON_CLOCK_HALF        0x74
-#define ICON_BAR_OPEN          0x82
-#define ICON_BAR_FULL          0x7F
-#define ICON_BAR_EMPTY         0x83
-#define ICON_BAR_CLOSE         0x84
-#define ICON_VPS               0x56
-#endif
 
 // UTF-8 Icons
 #define ICON_BAR_OPEN_UTF8     "\uE007"
@@ -114,10 +103,6 @@ using std::string;
 #define ICON_RUNNING_UTF8      "\uE012"
 #define ICON_VPS_UTF8          "\uE013"
 
-#if APIVERSNUM < 10503 
-#define Utf8BufSize(s) ((s) * 4)
-#endif
-
 #define CONTENT_DESCRIPTOR_MAX 255
 
 extern const char AllowedChars[];
@@ -130,7 +115,6 @@ class cSearchExtCat;
 class cEvent;
 
 char* IndentMenuItem(const char*, int indentions=1);
-void PatchFont(eDvbFont);
 bool MatchesSearchMode(const char* test, const char* values, int searchmode, const char* delim, int tolerance);
 char* GetExtEPGValue(const cEvent* e, cSearchExtCat* SearchExtCat);
 char* GetExtEPGValue(const char* description, const char* catname);
@@ -171,6 +155,7 @@ char* GetRawDescription(const char* descr);
 void PrepareTimerFile(const cEvent* event, cTimer* timer);
 int CompareEventTime(const void *p1, const void *p2);
 int CompareEventChannel(const void *p1, const void *p2);
+int CompareSearchExtPrioDescTerm(const void *p1, const void *p2);
 bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle, int compareSubtitle, bool compareSummary, int compareDate, unsigned long catvaluesAvoidRepeat, int matchLimit=90);
 int ChannelNrFromEvent(const cEvent* pEvent);
 void DelTimer(int index);
diff --git a/i18n-generated.h b/i18n-generated.h
deleted file mode 100644
index ed61bd7..0000000
--- a/i18n-generated.h
+++ /dev/null
@@ -1,13723 +0,0 @@
-/*
-Copyright (C) 2004-2011 Christian Wieninger
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-
-The author can be reached at cwieninger at gmx.de
-
-The project's page is at http://winni.vdr-developer.org/epgsearch
-*/
-
-/*
-  	WARNING: automatically generated content. Changes will get lost!
-
-    If this file is 'i18n-generated.h' then it *really* is automatically
-	generated.
-    If this file is 'i18n-template.h' then it is the base for the
-    autogeneration of the other file.
-
-*/
-
-const tI18nPhrase Phrases[] = {
-// START I18N - automatically generated by pot2i18n.pl
-  { "Channel groups",
-    "Kanalgruppen",
-    "",
-    "Gruppi canali",
-    "Kanaal groepen",
-    "",
-    "Groupe de chaînes",
-    "",
-    "Kanavaryhmät",
-    "",
-    "Grupos de canales",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Select",
-    "Auswahl",
-    "",
-    "Seleziona",
-    "Selecteer",
-    "",
-    "Selection",
-    "",
-    "Valitse",
-    "",
-    "Seleccionar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Channel group used by:",
-    "Gruppe wird verwendet von:",
-    "",
-    "Gruppo canali utilizzato da:",
-    "Kanaalgroep gebruikt door:",
-    "",
-    "Groupe est utilisé par:",
-    "",
-    "Kanavaryhmä käytössä:",
-    "",
-    "Grupo de canales usado por:",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit$Delete group?",
-    "Gruppe löschen?",
-    "",
-    "Eliminare il gruppo?",
-    "Groep wissen?",
-    "",
-    "Effacer groupe $Delete?",
-    "",
-    "Poistetaanko kanavaryhmä?",
-    "",
-    "¿Borrar grupo?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit channel group",
-    "Kanalgruppe editieren",
-    "",
-    "Modifica gruppo canali",
-    "Bewerk kanaalgroep",
-    "",
-    "Editer groupe de chaînes",
-    "",
-    "Muokkaa kanavaryhmää",
-    "",
-    "Editar grupo de canales",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Group name",
-    "Gruppenname",
-    "",
-    "Nome gruppo",
-    "Groep naam",
-    "",
-    "Nom de groupe",
-    "",
-    "Kanavaryhmän nimi",
-    "",
-    "Nombre del grupo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Invert selection",
-    "Ausw. umdrehen",
-    "",
-    "Inverti sel.",
-    "Selectie omdraaien",
-    "",
-    "Inversion de la selection",
-    "",
-    "Päinvastoin",
-    "",
-    "Invertir selección",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$All yes",
-    "Alle ja",
-    "",
-    "Tutti sì",
-    "Alles ja",
-    "",
-    "Tous oui",
-    "",
-    "Kaikki",
-    "",
-    "Todo sí",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$All no",
-    "Alle nein",
-    "",
-    "Tutti no",
-    "Alles nee",
-    "",
-    "Tous non",
-    "",
-    "Ei yhtään",
-    "",
-    "Todo no",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Group name is empty!",
-    "Gruppenname ist leer!",
-    "",
-    "Il nome gruppo è vuoto!",
-    "Groep naam is leeg!",
-    "",
-    "Le nom est vide",
-    "",
-    "Kanavaryhmältä puuttuu nimi!",
-    "",
-    "¡Nombre del grupo vacío!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Group name already exists!",
-    "Gruppe existiert bereits!",
-    "",
-    "Nome gruppo già esistente!",
-    "Groep naam bestaat al!",
-    "",
-    "Le groupe existe déjà!",
-    "",
-    "Samanniminen kanavaryhmä on jo olemassa!",
-    "",
-    "¡Ya existe el nombre del grupo!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Direct access to epgsearch's conflict check menu",
-    "Direkter Zugriff auf epgsearch's Konflikt-Prüfungs-Menü",
-    "",
-    "Accesso diretto al menu di verifica conflitti di epgsearch",
-    "Directe toegang tot epgsearch's conflict controle menu",
-    "",
-    "",
-    "",
-    "Suoratoiminto EPGSearch-laajennoksen ajastimien tarkistukselle",
-    "",
-    "Acceso directo al menú de conflictos EPGSearch",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Timer conflicts",
-    "Timer-Konflikte",
-    "",
-    "Conflitti timer",
-    "Timer conflicten",
-    "",
-    "Conflits de programmation",
-    "",
-    "Päällekkäiset ajastimet",
-    "",
-    "Conflictos de programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Conflict info in main menu",
-    "Konflikt-Info im Hauptmenü",
-    "",
-    "Informazioni conflitto nel menu principale",
-    "Conflict info tonen in hoofdmenu",
-    "",
-    "Conflits infos dans le menu principale",
-    "",
-    "Näytä päällekkäisyydet päävalikossa",
-    "",
-    "Mostrar conflictos en menú principal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "next",
-    "nächster",
-    "",
-    "prossimo",
-    "volgende",
-    "",
-    "prochain",
-    "",
-    "seuraava",
-    "",
-    "siguiente",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "%d timer conflict(s)! First at %s. Show them?",
-    "%d Timer-Konflikt(e)! Erster am %s. Anzeigen?",
-    "",
-    "%d conflitto timer! Primo alle %s. Mostrarli?",
-    "%d timer conflict(en)! eerste op %s. Tonen?",
-    "",
-    "%d de conflits de programmation! Le premier le %s. Afficher?",
-    "",
-    "Päällekkäisiä ajastimia (%d kpl %s)! Näytetäänkö?",
-    "",
-    "¡%d conflicto(s) de programación! El 1º a las %s. ¿Mostrarlos?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "search the EPG for repeats and more",
-    "Suche im EPG nach Wiederholungen und anderem",
-    "",
-    "Cerca nella guida EPG: per parole, repliche e altro",
-    "Zoek in de EPG naar herhalingen en meer",
-    "",
-    "Recherche de répétition dans EPG",
-    "",
-    "Monipuolinen ohjelmaopas hakutoiminnolla",
-    "",
-    "Buscar repeticiones en la EPG",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Program guide",
-    "Programmführer",
-    "",
-    "Guida programmi",
-    "Programmagids",
-    "",
-    "Guide du programme",
-    "",
-    "Ohjelmaopas",
-    "",
-    "Guía de programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "search timer update running",
-    "Suchtimer-Update läuft",
-    "",
-    "aggiornamento timer ricerca in esecuzione",
-    "Verversen zoektimer gereed!",
-    "",
-    "La mise à jours de recherche est effectuée!",
-    "",
-    "hakuajastimien päivitys käynnissä",
-    "/oui",
-    "Actualizando programación por búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Direct access to epgsearch's search menu",
-    "Direkter Zugriff auf epgsearch's Suchenmenu",
-    "",
-    "Accesso diretto al menu di ricerca di epgsearch",
-    "Direct toegang tot epgsearch's zoek menu",
-    "",
-    "Accès direct dans epgsearch dans le menu recherche",
-    "",
-    "Suoratoiminto EPGSearch-laajennoksen haulle",
-    "",
-    "Acceso directo al menú de búsquedas en EPG",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search",
-    "Suche",
-    "",
-    "Cerca",
-    "Zoek",
-    "",
-    "Recherche",
-    "",
-    "Etsi ohjelmaoppaasta",
-    "",
-    "Búsquedas en EPG",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "EpgSearch-Search in main menu",
-    "EpgSearch-Suche im Hauptmenü",
-    "",
-    "Ricerca EpgSearch nel menu principale",
-    "EpgSearch-Search in hoofdmenu",
-    "",
-    "EpgSearch-Recherche dans le menu proncipale",
-    "",
-    "EpgSearch-laajennoksen hakutoiminto päävalikossa",
-    "",
-    "Búsquedas en EPG en menú principal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Help",
-    "Hilfe",
-    "",
-    "Aiuto",
-    "Help",
-    "",
-    "Aide",
-    "",
-    "Opaste",
-    "",
-    "Ayuda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Standard",
-    "Standard",
-    "",
-    "Standard",
-    "Standaard",
-    "",
-    "Standart",
-    "",
-    "Vakio",
-    "",
-    "Estándar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Commands",
-    "Befehle",
-    "",
-    "Comandi",
-    "Commando's",
-    "",
-    "Commandes",
-    "",
-    "Komennot",
-    "",
-    "Órdenes",
-    "ÅããñáöÞ",
-    "Inspelning",
-    "",
-    "",
-    "Gravar",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "Snimi",
-#endif
-#if VDRVERSNUM >= 10313
-    "Salvesta",
-#endif
-#if VDRVERSNUM >= 10316
-    "Optag",
-#endif
-#if VDRVERSNUM >= 10342
-    "Nahrát",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Search",
-    "Suche",
-    "",
-    "Cerca",
-    "Zoek",
-    "",
-    "Recherche",
-    "",
-    "Etsi",
-    "",
-    "Buscar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "pipes",
-    "Pipes",
-    "",
-    "barre verticali",
-    "pipes",
-    "",
-    "barre verticale",
-    "",
-    "teksti",
-    "",
-    "barra vertical",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "graphical",
-    "graphisch",
-    "",
-    "grafica",
-    "grafisch",
-    "",
-    "Graphique",
-    "",
-    "grafiikka",
-    "",
-    "gráfico",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "never",
-    "nie",
-    "",
-    "mai",
-    "nooit",
-    "",
-    "jamais",
-    "",
-    "ei koskaan",
-    "",
-    "nunca",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "always",
-    "immer",
-    "",
-    "sempre",
-    "altijd",
-    "",
-    "toujours",
-    "",
-    "aina",
-    "",
-    "siempre",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "smart",
-    "intelligent",
-    "",
-    "intelligente",
-    "slim",
-    "",
-    "intelligent",
-    "",
-    "älykkäästi",
-    "",
-    "inteligente",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "before user-def. times",
-    "vor ben.-def. Zeiten",
-    "",
-    "prima orari def. da utente",
-    "vóór gebruiker-gedef. tijden",
-    "",
-    "avant le temp utilisateur",
-    "",
-    "ennen ajankohtia",
-    "",
-    "antes hora-def.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "after user-def. times",
-    "nach ben.-def. Zeiten",
-    "",
-    "dopo orari def. da utente",
-    "ná gebruiker-gedef. tijden",
-    "",
-    "après le temp utilisateur",
-    "",
-    "ajankohtien jälkeen",
-    "",
-    "después hora-def.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "before 'next'",
-    "vor 'Nächste'",
-    "",
-    "prima 'prossimi'",
-    "",
-    "",
-    "avant 'le prochain'",
-    "",
-    "ennen seuraavia",
-    "",
-    "antes de 'Después'",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "General",
-    "Allgemein",
-    "",
-    "Generale",
-    "Algemeen",
-    "",
-    "Général",
-    "",
-    "Yleiset",
-    "",
-    "General",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "EPG menus",
-    "EPG Menüs",
-    "",
-    "Menu EPG",
-    "EPG menu's",
-    "",
-    "Menu EPG",
-    "",
-    "Valikot",
-    "",
-    "Menús EPG",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "User-defined EPG times",
-    "Benutzerdef. EPG-Zeiten",
-    "",
-    "Date EPG definite dall'utente",
-    "Gebruiker-gedefinieerde EPG tijden",
-    "",
-    "Date utilisateur pour la progammation",
-    "",
-    "Käyttäjän määrittelemät ajankohdat",
-    "",
-    "Horario EPG definido por el usuario",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Timer programming",
-    "Timer-Programmierung",
-    "",
-    "Programmazione",
-    "Timer programmering",
-    "",
-    "Programmation",
-    "",
-    "Ajastimien luonti",
-    "",
-    "Programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search and search timers",
-    "Suche und Suchtimer",
-    "",
-    "Ricerca e timer ricerca",
-    "Zoek en zoektimers",
-    "",
-    "Recherche et progammation de recherche",
-    "",
-    "Haut ja hakuajastimet",
-    "",
-    "Búsqueda y programaciones por búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Timer conflict checking",
-    "Timer-Konflikt-Prüfung",
-    "",
-    "Verifica conflitti timer",
-    "Timer conflict controle",
-    "",
-    "Vérification-Conflits-Programmation",
-    "",
-    "Päällekkäisten ajastimien tarkistus",
-    "",
-    "Comprobando conflictos de programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Email notification",
-    "Email-Benachrichtigung",
-    "",
-    "Notifica email",
-    "E-mail notificatie",
-    "",
-    "Notification par mail",
-    "",
-    "Ilmoitukset sähköpostilla",
-    "",
-    "Notificación por correo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Hide main menu entry",
-    "Hauptmenüeintrag verstecken",
-    "",
-    "Nascondi voce menu principale",
-    "Verberg vermelding in hoofdmenu",
-    "",
-    "Invisible dans le menu principal",
-    "",
-    "Piilota valinta päävalikosta",
-    "",
-    "Ocultar entrada del menú principal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Hides the main menu entry and may be useful if this plugin is used to replace the original 'Schedule' entry.",
-    "Blendet den Hauptmenüeintrag aus. Das kann nützlich sein, falls dieses Plugin verwendet wird, um den originalen 'Programm'-Eintrag zu ersetzen.",
-    "",
-    "Nascondere la voce nel menu può essere utile se questo plugin è usato per sostituire la voce originale 'Programmi'",
-    "Verbergt de vermelding in het hoofdmenu en kan van pas komen als deze plugin wordt gebruikt om de originele programmagids te vervangen.",
-    "",
-    "Rend le menu invisible. C'est utile lorsque le plugin remplace le menu programmme d'origine",
-    "",
-    "Piilottaa valinnan päävalikosta. Suositellaan asetettavaksi päälle, jos laajennoksella korvataan alkuperäinen ohjelmaopas.",
-    "",
-    "Oculta la entrada del menú principal y puede ser útil si este plugin sustituye a la entrada 'Guía de programación' original.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Main menu entry",
-    "Hauptmenü-Eintrag",
-    "",
-    "Voce nel menu principale",
-    "Hoofdmenu vermelding",
-    "",
-    "Visible dans le menu principal",
-    "",
-    "Valinta päävalikossa",
-    "",
-    "Entrada en el menú principal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$The name of the main menu entry which defaults to 'Programm guide'.",
-    "Der Name des Hauptmenüeintrags. Die Standard-Vorgabe ist 'Programmführer'.",
-    "",
-    "Nome della voce menu che corrisponde a 'Guida programmazione'",
-    "De naam van de regel in het hoofdmenu welke gerelateerd is aan 'programmagids'",
-    "",
-    "Le nom dans le menu principale. La prédéfinition est 'Guide du programme'. ",
-    "",
-    "Päävalikossa sijaitsevan valinnan nimi, joka on oletuksena 'Ohjelmaopas'.",
-    "",
-    "El nombre de la entrada para el menú principal, que por defecto es 'Guía de programación'.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Replace original schedule",
-    "Originale Programmübersicht ersetzen",
-    "",
-    "Sostituisci Programmi originale",
-    "Originele 'Programmagids' vervangen",
-    "",
-    "Remplace le menu d'origine programme",
-    "",
-    "Korvaa alkuperäinen ohjelmaopas",
-    "",
-    "Sustituir guía de prog. original",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$When VDR is patched to allow this plugin to replace the original 'Schedule' entry, you can de/activate this replacement here.",
-    "Falls VDR gepatched wurde, um dem Plugin zu erlauben, den originalen 'Programm'-Eintrag zu ersetzen, so kann hier diese Ersetzung de/aktiviert werden.",
-    "",
-    "Quando VDR è patchato per permettere a questo plugin di sostituire la voce originale 'Programmi', puoi dis/attivare qui la sostituzione.",
-    "Als VDR gepatcht is om deze plugin de originele 'Programmagids' menu te laten vervangen dan kan dat hier ge(de)activeerd worden",
-    "",
-    "Lorsque le VDR est muni du patch pour autoriser le remplacement du menu original 'Programme' , vous pouvez activer ou déactiver celui-ci.",
-    "",
-    "Korvaa alkuperäisen ohjelmaoppaan päävalikossa tällä laajennoksella, jos VDR on paikattu asianmukaisesti.",
-    "",
-    "Aquí puede des/activar que éste plugin sustituya la entrada original 'Guía de programación', pero sólo funciona cuando el VDR está parcheado para permitirlo.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Start menu",
-    "Starte mit",
-    "",
-    "Menu avvio",
-    "Startmenu",
-    "",
-    "Menue de départ",
-    "",
-    "Oletusnäyttö",
-    "",
-    "Menú de inicio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Choose between 'Overview - Now' and 'Schedule' as start menu when this plugin is called.",
-    "Hier kann zwischen 'Übersicht - Jetzt' und 'Programm' als Start-Menü für das Plugin gewählt werden.",
-    "",
-    "Scegli tra 'Sommario - Adesso' e 'Programmi' come menu iniziale quando questo plugin è chiamato.",
-    "Maak een keuze tussen 'Overzicht', 'Nu' en 'programmagids' als startmenu wanneer plugin wordt geactiveerd.",
-    "",
-    "Ici vous pouvez choisir entre 'Maintenant' et 'Programme' comme menu de départ pour le plugin.",
-    "",
-    "Valitsee oletusnäytöksi joko tämänhetkisen yleiskatsauksen tai valitun kanavan ohjelmiston.",
-    "",
-    "Elija entre 'Ahora' y 'Guía de programación' como menú inicial cuando se llama a este plugin.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Ok key",
-    "Taste Ok",
-    "",
-    "Tasto Ok",
-    "OK toets",
-    "",
-    "Touche Ok",
-    "",
-    "OK-näppäin",
-    "",
-    "Botón OK",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Choose here the behaviour of key 'Ok'. You can use it to display the summary or to switch to the corresponding channel.\nNote: the functionality of key 'blue' (Switch/Info/Search) depends on this setting.",
-    "Hier kann das Verhalten der 'Ok'-Taste bestimmt werden. Man kann damit die Inhaltsangabe anzeigen oder zum entsprechenden Sender wechseln.\nHinweis: Die Funktion der Taste 'Blau' (Umschalten/Info/Suche) hängt von dieser Einstellung ab.",
-    "",
-    "Scegli il comportamento del tasto 'Ok'. Puoi usarlo per vedere il sommario o cambiare il canale corrispondente.\nNota: la funzionalità del tasto 'blu' (Cambia/Info/Cerca) dipende da questa impostazione.",
-    "Kies hier het gedrag van de 'OK' toets. Hij kan gebruikt worden om een samenvatting te tonen of om te schakelen naar het betreffende kanaal.\nLetop: de functionaliteit van de 'BLAUW' toets (Schakel/Info/Zoek) is afhankelijk van deze instelling.",
-    "",
-    "Ici vous pouvez influencé le comportement de la touch 'Ok'. On peut afficher le continue d'information ou changer pour la chaînes proposée.\nIndice: La fonction de la touch 'bleu' (changer/Infos/Recherche) dépend de ce réglage.",
-    "",
-    "Valitse toiminto OK-näppäimelle: näytä ohjelman tiedot tai vaihda kyseiselle kanavalle.\nHuomioi: sinisen näppäimen toiminto (Vaihda/Tiedot/Hae) riippuu tästä asetuksesta.",
-    "",
-    "Elija el comportamiento del botón 'OK'. Puede usarse para mostrar el resumen o cambiar al canal correspondiente.\nNota: la funcionalidad del botón 'azul' (Cambiar/Info/Buscar) depende de ésta configuración.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Red key",
-    "Taste Rot",
-    "",
-    "Tasto rosso",
-    "Rode toets",
-    "",
-    "Touche rouge",
-    "",
-    "Punainen näppäin",
-    "",
-    "Botón rojo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Choose which standard function ('Record' or 'Commands') you like to have on the red key.\n(Can be toggled with key '0')",
-    "Hier kann ausgewählt werden, welche Standardfunktion ('Aufnehmen' oder 'Befehle') auf der roten Taste liegen soll.\n(Umschalten auch mit Taste '0' möglich)",
-    "",
-    "Scegli quale funzione standard ('Registrazione' o 'Comandi') vuoi avere nel tasto rosso.\n(Può essere impostata con il tasto '0')",
-    "Kies welke standaard functie (Opname of Commando's) aan de rode toets moet worden toegewezen.\n(Kan worden omgeschakeld met de '0' toets)",
-    "",
-    "Ici vous pouvez choisir entre la fonction standart 'Enregistrer' et 'Commande' comme menu de la touche rouge.\n(Changement possible avec la touch '0')",
-    "",
-    "Valitsee oletustoiminnon ('Tallenna' tai 'Komennot') punaiselle näppäimelle.\nPunaisen näppäimen toimintoa voidaan vaihtaa myös lennossa painamalla näppäintä 0.",
-    "",
-    "Elija la función estándar ('Grabar' u 'Órdenes') que desee tener en el botón rojo.\n(Puede alternarse con el botón '0')",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Blue key",
-    "Taste Blau",
-    "",
-    "Tasto blu",
-    "Blauwe toets",
-    "",
-    "Touche bleu",
-    "",
-    "Sininen näppäin",
-    "",
-    "Botón azul",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Choose which standard function ('Switch'/'Info' or 'Search') you like to have on the blue key.\n(Can be toggled with key '0')",
-    "Hier kann ausgewählt werden, welche Standardfunktion ('Umschalten'/'Info' oder 'Suche') auf der blauen Taste liegen soll.\n(Umschalten auch mit Taste '0' möglich)",
-    "",
-    "Scegli quale funzione standard ('Cambia'/'Info' o 'Cerca') vuoi avere nel tasto blu.\n(Può essere impostata con il tasto '0')",
-    "Kies welke standaard functie ('Schakel'/'Info' of 'Zoek') aan de blauwe toets moet worden toegewezen.\n(Kan worden omgeschakeld met de '0' toets)",
-    "",
-    "Ici vous pouvez choisir entre la fonction standart 'Changer de chaine' et 'Recherche' comme menu de la touche bleu.\n(Changement possible avec la touch '0')",
-    "",
-    "Valitsee oletustoiminnon ('Valitse' tai 'Etsi') siniselle näppäimelle.\nSinisen näppäimen toimintoa voidaan vaihtaa myös lennossa painamalla näppäintä 0.",
-    "",
-    "Elija la función estándar ('Cambiar'/'Info' o 'Buscar') que desee tener en el botón azul.\n(Puede alternarse con el botón '0')",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show progress in 'Now'",
-    "Zeige Fortschritt in 'Jetzt'",
-    "",
-    "Visualizza progresso in 'Adesso'",
-    "Toon voortgang in 'Nu'",
-    "",
-    "Afficher le progrès dans 'Maintenant'",
-    "",
-    "Näytä aikajana 'Nyt'-sivulla",
-    "",
-    "Mostrar progreso en 'Ahora'",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\nDepending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look.",
-    "Zeigt einen Fortschrittsbalken in 'Übersicht - Jetzt' an, der wiedergibt wieweit die Sendung bereits fortgeschritten ist.\nAbhängig vom gewählten Skin kann man zwischen 'Pipes' und 'grafisch' wählen, um die Darstellung zu verbessern.",
-    "",
-    "Mostra una barra d'avanzamento in 'Sommario - Adesso' che informa sul tempo rimanente dell'evento attuale.\nA seconda dell'interfaccia puoi selezionare tra 'Barre verticali' o 'Grafica' per avere una visuale migliore.",
-    "Toont een voortschreidingsbalk in 'Overzicht - Nu' welke de resterende tijd van het huidige programma weergeeft.\nAfhankelijk van de geselecteerde 'Skin' kan gekozen worden voor het beste uiterlijk",
-    "",
-    "Affiche la barre de progression dans le menu 'Maintenant', qui indique l'avancement de l'émission en cours.\nL'afficher est mieu approprié suivant le skin choisi en 'Bar verticale' ou 'graphique'.",
-    "",
-    "Näyttää aikajanan tämänhetkisessä yleiskatsauksessa.\nVoit valita käyttämäsi ulkoasun mukaan joko teksti- tai grafiikkapohjaisen aikajanan.",
-    "",
-    "Muestra una barra de progreso en la pantalla 'Ahora' que informa sobre el tiempo restante de la emisión actual.\nDependiendo del skin seleccionado puede elegir entre 'barra vertical' o 'gráfico' para conseguir la mejor apariencia.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show channel numbers",
-    "Zeige Kanalnummern",
-    "",
-    "Visualizza i numeri dei canali",
-    "Toon kanaal nummers",
-    "",
-    "Afficher le numéro de la chaîne",
-    "",
-    "Näytä kanavien numerointi",
-    "",
-    "Mostrar el número de los canales",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Display channel numbers in 'Overview - Now'.\n\n(To completely define your own menu look please inspect the MANUAL)",
-    "Anzeige von Kanalnummern in 'Übersicht - Jetzt'.\n\n(Zur vollständigen Anpassung einer eigenen Menüdarstellung, bitte das MANUAL lesen)",
-    "",
-    "Visualizza i numeri dei canali in 'Sommario - Adesso'\n\n(Per definire completamente il tuo proprio look del menu leggi il file MANUAL)",
-    "Toon kanaal nummers in 'Overzicht - Nu.\n\n(Raadpleeg de MANUAL om het hele menu naar eigen inzicht te veranderen)",
-    "",
-    "Affiche du numéro de chaîne dans la vue 'Maintenant'.\n\n(Pour les réglages de l'affichage menu propre à l'utilisateur, lire le MANUAL)",
-    "",
-    "Näyttää kanavien numeroinnin tämänhetkisessä yleiskatsauksessa.\n\nLisätietoja valikon muokkauksesta löytyy MANUAL-tiedostosta.",
-    "",
-    "Muestra el número de los canales en la pantalla 'Ahora'.\n\n(Para definir el menú totalmente a su gusto, por favor lea el MANUAL)",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show channel separators",
-    "Zeige Kanal-Separatoren",
-    "",
-    "Mostra separatori canali",
-    "Toon kanaal scheidingstekens",
-    "",
-    "Afficher le separateur de chaînes",
-    "",
-    "Näytä kanavaerottimet",
-    "",
-    "Mostrar separadores de canales",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Display VDR channel groups as separators between your channels in 'Overview - Now'.",
-    "Anzeige von VDR-Kanalgruppen als Trennlinien zwischen den Programmen in 'Übersicht - Jetzt'.",
-    "",
-    "Visualizza i gruppi canali come separatori tra i tuoi canali in 'Sommario - Adesso'.",
-    "Toon VDR kanaal groepen als scheidingstekens tussen de kanalen in 'Overzicht - Nu'.",
-    "",
-    "Afficher les groupes de chaines avec une ligne de séparation dans la vue 'Maintenant'.",
-    "",
-    "Näyttää erottimet yleiskatsauksessa kanaville.",
-    "",
-    "Muestra los grupos de canales VDR como separadores entre sus canales en la pantalla 'Ahora'.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show day separators",
-    "Zeige Tages-Separatoren",
-    "",
-    "Mostra separatori giorni",
-    "Toon schedingstekens tussen dagovergangen",
-    "",
-    "Afficher les séparateur de jours",
-    "",
-    "Näytä päiväerottimet",
-    "",
-    "Mostrar separadores de día",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Display a separator line at day break in 'Schedule'.",
-    "Anzeige von Trennlinien beim Datumswechsel in der Programmübersicht.",
-    "",
-    "Visualizza una linea di separazione al cambio del giorno in 'Programmi'.",
-    "Toon een scheidingsteken tussen dagovergangen in 'Programmaoverzicht'",
-    "",
-    "Afficher une ligne de séparation au changement de date dans la vue 'programme'.",
-    "",
-    "Näyttää erottimet ohjelmistossa päivän vaihtuessa.",
-    "",
-    "Muestra una línea de separación al cambiar de día en la 'Guía de programación'.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show radio channels",
-    "Zeige Radiokanäle",
-    "",
-    "Mostra canali radio",
-    "Toon radiokanalen",
-    "",
-    "Afficher les chaînes de radio",
-    "",
-    "Näytä radiokanavat",
-    "",
-    "Mostrar los canales de radio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Show also radio channels.",
-    "Auch Radio-Kanäle anzeigen.",
-    "",
-    "Mostra anche i canali radio.",
-    "Toon ook radiokanalen",
-    "",
-    "Afficher aussi les chaînes de radio.",
-    "",
-    "Näyttää myös radiokanavat listauksessa.",
-    "",
-    "Mostrar también los canales de radio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Limit channels from 1 to",
-    "Kanäle begrenzen von 1 bis",
-    "",
-    "Limita canali da 1 a",
-    "Beperk aantal kanalenvan 1 tot",
-    "",
-    "Limiter aux chaînes de 1 à",
-    "",
-    "Näytettävien kanavien rajoitus",
-    "",
-    "Limitar canales de 1 a",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$If you have a large channel set you can speed up things when you limit the displayed channels with this setting. Use '0' to disable the limit.",
-    "Bei einer sehr großen Kanalliste läßt sich der Menü-Aufbau mit dieser Einstellung durch eine Einschränkung der angezeigten Kanäle beschleunigen. Mit '0' wird das Limit aufgehoben.",
-    "",
-    "Se hai un gran numero di canali puoi velocizzarli limitando i canali visualizzati con questa impostazione. Utilizza '0' per disabilitare il limite.",
-    "Als er sprake is van een groot aantal kanalen dan kan de snelheid worden bevorderd als het aantal kanalen wordt beperkt. Gebruik '0' om de limitering op te heffen",
-    "",
-    "Avec cette limite vous rendez l'affichage du menu plus rapide si vous avez une liste de chaînes très longue. Avec '0' vous enlevez la limitation.",
-    "",
-    "Voit nopeuttaa toimintoja rajoittamalla näytettävien kanavien lukumäärää tällä asetuksella. Poistat rajoituksen asettamalla arvoksi nollan.",
-    "",
-    "Si tiene un gran número de canales, puede acelerar los menús limitando los canales mostrados con éste parámetro. Use '0' para desactivar el límite.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "'One press' timer creation",
-    "Timer mit 'Aufnehmen' sofort anlegen",
-    "",
-    "Crea timer ad 'una pressione'",
-    "Maak met één toetsdruk een nieuwe timer aan",
-    "",
-    "Programmation immédiate avec enregistrement",
-    "",
-    "Luo ajastimet yhdellä painalluksella",
-    "",
-    "Crear programación inmediata",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$When a timer is created with 'Record' you can choose between an immediate creation of the timer or the display of the timer edit menu.",
-    "Beim Erzeugen eines Timers mit 'Aufnehmen' kann hier zwischen dem sofortigen Anlegen des Timers oder der Anzeige des Timer-Edit-Menüs gewählt werden.",
-    "",
-    "Quando un timer è creato con 'Registra' puoi selezionare tra una creazione immediata del timer o la visualizzazione del menu modifica timer.",
-    "Als er een timer is gemaakt met 'Opname' dan kan er gekozen worden de timer direct aan te maken of eerst het 'Wijzig timer' menu te tonen.",
-    "",
-    "Lors de la programmation avec 'Enregistrer' vous pouvez choisir entre créer directement ou consulter les détails de la programmation.",
-    "",
-    "Valitsee oletustoiminnon ajastimen luonnille. Voit luoda ajastimen joko automaattisesti yhdellä painalluksella tai vaihtoehtoisesti avata ajastinvalikon.",
-    "",
-    "Cuando crea una programación con 'Grabar', puede elegir entre crearla inmediatamente o mostrar el menú para editarla.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show channels without EPG",
-    "Zeige Kanäle ohne EPG",
-    "",
-    "Mostra canali senza EPG",
-    "Toon kanalen zonder EPG",
-    "",
-    "Afficher les chaînes sans EPG",
-    "",
-    "Näytä ohjelmaoppaattomat kanavat",
-    "",
-    "Mostrar canales sin EPG",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Choose 'yes' here if you want to display channels without EPG in 'Overview - Now'. 'Ok' on these entries switches the channel.",
-    "Hier kann eingestellt werden, ob auch Programme ohne EPG in 'Übersicht - Jetzt' erscheinen sollen. Ein 'Ok' auf diesen Einträgen schaltet zu diesem Kanal um.",
-    "",
-    "Scegli 'sì' se vuoi vedere i canali senza EPG in 'Sommario - Adesso'. 'Ok' in questi valori cambia il canale.",
-    "Kies 'ja' als er in 'Overzicht - Nu' kanalen zonder EPG moeten worden getoond. 'OK' op deze regels schakelt het kanaal in",
-    "",
-    "Ici vous pouvez faire disparaitre ou non les chaines sans infos EPG dans la vue 'Maintenant'. Un 'Ok' sur le programme change sur cette chaînes.",
-    "",
-    "Näyttää tämänhetkisessä yleiskatsauksessa myöskin kanavat, joilta ei löydy ohjelmatietoja. Voit vaihtaa tällaiselle kanavalle OK-näppäimellä.",
-    "",
-    "Elija 'sí' cuando desee mostrar los canales sin EPG en la pantalla 'Ahora'. Pulse 'OK' sobre estas entradas para cambiar a ese canal.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Time interval for FRew/FFwd [min]",
-    "Zeitintervall für FRew/FFwd [min]",
-    "",
-    "Intervallo tempo FRew/FFwd [min]",
-    "Tijd interval voor FRew/FFwd [min]",
-    "",
-    "Interval pour FRew/FFwd [min]",
-    "",
-    "Oletusaikasiirtymä [min]",
-    "",
-    "Minutos para Rebobinar/Avanzar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Choose here the time interval which should be used for jumping through the EPG by pressing FRew/FFwd.\n\n(If you don't have those keys, you can toggle to this functionality pressing '0' and get '<<' and '>>' on the keys green and yellow)",
-    "Hier kann die Zeitspanne eingestellt werden, die beim Drücken von FRew/FFwd als Sprung durch den EPG benutzt werden soll.\n\n(Falls diese Tasten nicht vorhanden sind, kann mit '0' ebenfalls diese Funktion erreicht werden. Man erhält dann '<<' und '>>' auf den Tasten Grün/Gelb)",
-    "",
-    "Scegli l'intervallo di tempo che dovrebbe essere usato per spostarsi attraverso l'EPG premendo FRew/FFwd.\n\n(Se non hai questi tasti, puoi impostare questa funzione premendo '0' ed avere '<<' e '>>' sui tasti verde e giallo)",
-    "Kies hier het tijdsinterval wat gebruikt wordt om met FRew/FFwd door de EPG te springen.\n\n(Als deze toetsen niet beschikbaar druk dan eerst op de '0' toets en daarna op 'Groen' en 'Geel' om heen en terug te springem",
-    "",
-    "Ici vous règlez un laps de temps, qui est utilisé avec les touches '<<' et '>>' à travers les EPG.\n\n(Si vous n'avez pas ces touches sur votre télécommande, vous pouvez aussi atteindre ces fonctions par la touche '0' grâce à laquelle on obtient les fonctions '<<' et '>>' sur les touches Vert/Jaune)",
-    "",
-    "Valitsee ohjelmaoppaan oletusaikasiirtymän pikakelausnäppäimille.\n\nJos sinulla ei ole kyseisiä näppäimiä käytössäsi, voit asettaa kyseiset toiminnot vihreälle ja keltaiselle näppäimelle painamalla näppäintä 0.",
-    "",
-    "Elija el intervalo de tiempo que se usará para saltar a través de la EPG pulsando '<<' y '>>'.\n\n(Si no tiene estos botones en su mando a distancia, puede acceder a esta funcionalidad pulsando el botón '0' y tendrá las funciones '<<' y '>>' en los botones verde y amarillo)",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Toggle Green/Yellow",
-    "Grün/Gelb umschalten",
-    "",
-    "Alterna i tasti Verde/Giallo",
-    "Groen/Geel verwisselen",
-    "",
-    "Commuter vert/jaune",
-    "",
-    "Käytä aikasiirtymää värinäppäimillä",
-    "",
-    "Alternar Verde/Amarillo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify if green and yellow shall also be switched when pressing '0'.",
-    "Hiermit wird angegeben, ob die Tasten Grün/Gelb beim Drücken von '0' mitumgeschaltet werden sollen.",
-    "",
-    "Specifica se i tasti verde e giallo si scambieranno anche premendo '0'.",
-    "Geef aan of 'Groen' en 'Geel' ook moeten worden geschakeld als op '0' wordt gedrukt",
-    "",
-    "Ici vous indiquez, si les touches Verte/Jaune sont commutées avec la touches '0'.",
-    "",
-    "Määrittelee vaihdetaanko vihreän ja keltaisen näppäimen toimintoja painamalla näppäintä 0.",
-    "",
-    "Especifique si los botones verde y amarillo también cambian al pulsar '0'.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show favorites menu",
-    "Zeige Favoriten-Menü",
-    "",
-    "Mostra il menu preferiti",
-    "Toon favorieten menu",
-    "",
-    "Afficher le menu favoris",
-    "",
-    "Näytä suosikkivalikko",
-    "",
-    "Mostrar el menú favoritos",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$A favorites menu can display a list of your favorite broadcasts. Enable this if you want an additional menu besides 'Now' and 'Next'\nAny search can be used as a favorite. You only have to set the option 'Use in favorites menu' when editing a search.",
-    "Ein Favoriten-Menü kann eine Liste der Lieblingssendungen anzeigen. Hier auswählen, wenn neben 'Jetzt' und 'Nächste' ein solches Menü gewünscht wird.\nJede Suche kann als Favorit verwendet werden. Dazu einfach die Option 'In Favoritenmenü verw.' beim Editieren einer Suche setzen.",
-    "",
-    "Un menu preferiti può mostrare un elenco delle tue trasmissioni preferite. Abilitalo se vuoi un menu supplementare in 'Adesso' e 'Prossimi'\nQualsiasi ricerca può essere usata come preferita. Devi solo impostare l'opzione 'Utilizza nel menu preferiti' quando modifichi una ricerca.",
-    "Een favorieten menu kan een lijst van favoriete uitzendingen tonen. Activeer dit als er extra menu's naast 'Nu' en 'Next' gewenst zijn\nIedere willekeurige zoekactie kan ingezet worden als favoriet\nDaarvoor hoeft enkel de optie 'Gebruik in favorieten menu' geactiveerd te worden tijdens het aanmaken of wijzigen van een zoekactie.",
-    "",
-    "Un menu favori peut contenir la liste de vos émission préférée. Faire le choix ici, si vous voulez avoir un menu favori à coté de 'Maintenant' et 'plus tard.\nChaque recherche peut être utilisé comme favori. Pour cela simplement utiliser l'option Favori lors de l'édition de recherche.",
-    "",
-    "Suosikkivalikossa listataan suosikiksi merkityt ohjelmat. Jos tämä valinta on aktiivinen, suosikkivalikko löytyy 'Nyt'- ja 'Seuraavaksi'-valikkojen rinnalta. \nMikä tahansa haku voidaan merkitä suosikiksi aktivoimalla 'Käytä suosikkina'-valinta.",
-    "",
-    "Un menú de favoritos puede mostrar una lista de sus emisiones favoritas. Actívelo si desea un menú adicional a los existentes 'Ahora' y 'Después'.\nAlgunas búsquedas pueden ser usadas como favoritos si activa la opción 'Usar en el menú favoritos' cuando edita una búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "for the next ... hours",
-    "für die nächsten ... Stunden",
-    "",
-    "per le prossime ... ore",
-    "de komende ... uur",
-    "",
-    "pour les prochaines ... heures",
-    "",
-    "seuraaville ... tunnille",
-    "",
-    "para las próximas ... horas",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$This value controls the timespan used to display your favorites.",
-    "Mit diesem Wert wird die Zeitspanne eingestellt, für die Favoriten angezeigt werden sollen.",
-    "",
-    "Questo valore controlla il tipo di ora usata per visualizzare i tuoi preferiti.",
-    "Deze waarde regelt het interval dat wordt gebruikt voor het tonen van de favorieten",
-    "",
-    "Avec cette valeur vous réglez un interval, pour afficher les favoris.",
-    "",
-    "Tämä arvo määrittelee käytetyn ajanjakson suosikkien näyttämiselle.",
-    "",
-    "Éste valor controla el intervalo usado para mostrar sus favoritos.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use user-defined time",
-    "Verw. benutzerdef. Zeit",
-    "",
-    "Utilizza ora utente",
-    "Gebruik gebruiker's tijd",
-    "",
-    "Utiliser le temps de l'utilisateur",
-    "",
-    "Määrittele ajankohta",
-    "",
-    "Usar horario definido por usuario",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Besides 'Now' and 'Next' you can specify up to 4 other times in the EPG which can be used by repeatedly pressing the green key, e.g. 'prime time', 'late night',...",
-    "Neben 'Jetzt' und 'Nächste' können bis zu 4 weitere Zeiten im EPG angegeben werden, die durch wiederholtes Drücken der Taste Grün verwendet werden können, z.B. 'Abends', 'Spätabend',...",
-    "",
-    "All'interno di 'Adesso' e 'Prossimi' puoi specificare fino ad altre 4 ore nell'EPG che può essere usato ripetutamente premendo il tasto verde, esempio 'prima serata', 'tarda sera',...",
-    "Naast 'Nu' en 'Straks' kunnen nog 4 andere tijden in de EPG worden gespeficiteerd. Deze kunnen worden benaderd door herhaaldelijk op de 'Groene'toets te drukken, bv 'prime time', 'late night'...",
-    "",
-    "En plus de 'Maintenant' et 'Après' vous pouvez définir encore 4 autres crénaux comme 'Le soir', 'La nuit' ou 'encore plus tard' en appuyant plusieurs fois sur la touche verte...",
-    "",
-    "Määrittelee käyttäjän muokattavissa olevat ajankohdat 'Nyt' ja 'Seuraavaksi' näyttöjen rinnalle ohjelmaoppaan yleiskatsaukseen.",
-    "",
-    "Además de 'Ahora' y 'Después' puede definir hasta 4 horarios distintos en la EPG, que pueden usarse pulsando varias veces el botón verde, p.e. 'hora de mayor audiencia', 'medianoche', ...",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Description",
-    "Beschreibung",
-    "",
-    "Descrizione",
-    "Beschrijving",
-    "",
-    "Description",
-    "",
-    "Kuvaus",
-    "",
-    "Descripción",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$This is the description for your user-defined time as it will appear as label on the green button.",
-    "Dies ist die Beschreibung für die benutzer-definierte Zeit, wie sie als Beschriftung für die Taste Grün verwendet werden soll.",
-    "",
-    "Questa è la descrizione dell'ora definita dall'utente che apparirà come etichetta nel pulsante verde.",
-    "Dit is de beschrijving van de gebruiker-gedefinieerde tijd zoals het als label bij de toets 'Groen' verschijnt",
-    "",
-    "Ici la description des temps utilisateurs, accessible en appuyant plusieurs foix sur la touche verte",
-    "",
-    "Asettaa kuvauksen vihreään näppäimeen käyttäjän muokkaamalle ajankohdalle.",
-    "",
-    "Ésta es la descripción de su horario definido que se mostrará como etiqueta del botón verde.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Time",
-    "Zeit",
-    "",
-    "Orario",
-    "Tijd",
-    "",
-    "Temps",
-    "",
-    "Kellonaika",
-    "",
-    "Horario",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify the user-defined time here in 'HH:MM'.",
-    "Hier wird die benutzer-definierte Zeit im Format 'HH:MM' angegeben.",
-    "",
-    "Specifica l'ora definita qui dall'utente in 'HH:MM'.",
-    "Specificeer hier de gebruiker-gedefinieerde tijd als 'HH:MM'",
-    "",
-    "Ici vous définisez le temps utilisateur dans le format 'HH:MM' par exemple '20:45'",
-    "",
-    "Asettaa kellonajan käyttäjän muokkaamalle ajankohdalle.",
-    "",
-    "Especifique el horario definido en 'HH:MM'.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use VDR's timer edit menu",
-    "VDR's Timer-Edit-Menu verw.",
-    "",
-    "Utilizza menu modifica timer VDR",
-    "Gebruik VDR's timer bewerkingsmenu",
-    "",
-    "Utiliser le menu édition VDR-programme",
-    "",
-    "Käytä alkuperäistä ajastinvalikkoa",
-    "",
-    "Usar menú editar programación VDR",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$This plugin has it's own timer edit menu extending the original one with some extra functionality like\n- an addtional directory entry\n- user-defined days of week for repeating timers\n- adding an episode name\n- support for EPG variables (see MANUAL)",
-    "Diese Plugin hat sein eigenes Timer-Edit-Menü, das das orginale um einige zusätzliche Funktionen erweitert:\n\n- ein zusätzlicher Verzeichniseintrag\n- benutzerdef. Wochentage für Wiederh.-Timer\n- Ergänzung um Episodenname\n- Unterstützung von EPG-Variablen (s.MANUAL)",
-    "",
-    "Questo plugin ha il suo menu modifica timer che estende quello originale con alcune funzionalità extra come:\n- un voce directory supplementare\n- giorni della settimana definiti dall'utente per i timer ripetuti\n- aggiunta nome episodio\n- supporto per variabili EPG (vedi MANUAL)",
-    "Deze plugin beschikt over zijn eigen timer bewerkingsmenu die de originele uitbreid met extra functionaliteit zoals\n- een extra regel voor een map\n- gebruiker-gedefinieerde dagen van de week voor herhaal-timers\n- toevoegen van een 'episode naam'\n- ondersteuning voor EPG variabelen (see MANUAL)",
-    "",
-    "Ce plugin a sont propre éditeur de programmation, qui enrichit l'originale avec beaucoup le fonctions interressantes:\n\n- une entrée de dossier supplèmentaire\n- des programmations hebdomadaires définies par l'utilisateur\n- l'utilisation de variable de l'EPG (voire MANUAL)",
-    "",
-    "Tällä laajennoksella on oma laajennettu ajastinvalikko mm. seuraavilla lisätoiminnoilla:\n\n- hakemiston määritys\n- vapaasti määriteltävät viikonpäivät toistuville ajastimille\n- jakson nimen täydennys\n- erilaisten EPG-muuttujien tuki (ks. MANUAL-tiedostosta)",
-    "",
-    "Este plugin posee un editor de programaciones que amplía el original con ciertas funcionalidades adicionales como:\n- una entrada adicional de directorio\n- definir días de la semana para repetir programaciones\n- añadir el nombre del episodio\n- soporte para variables EPG (ver el MANUAL)",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Default recording dir",
-    "Standard Aufn.-Verzeichnis",
-    "",
-    "Dir. predefinita registrazione",
-    "Standaard map voor opnames",
-    "",
-    "Dossier d'enregistrement standart",
-    "",
-    "Oletushakemisto tallenteille",
-    "",
-    "Dir. de grabación por defecto",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$When creating a timer you can specify here a default recording directory.",
-    "Beim Anlegen eines Timers kann hier ein Standard-Aufnahmeverzeichnis vorgegeben werden.",
-    "",
-    "Quando si crea un timer puoi specificare una directory di registrazione.",
-    "Bij het aanmaken van een timer kan hier de standaard opname map worden opgegeven",
-    "",
-    "Lors de la programmation vous pouvez définir un dossier par défaut.",
-    "",
-    "Määrittelee oletushakemiston tallenteille.",
-    "",
-    "Cuando crea una programación, aquí puede especificar un directorio por defecto para la grabación.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Add episode to manual timers",
-    "Untertitel in manuellen Timern",
-    "",
-    "Aggiungi episodi ai timer manuali",
-    "Voeg episode toe aan handmatige timers",
-    "",
-    "Ajouter sous-titre dans la programmation manuel",
-    "",
-    "Lisää jakson nimi norm. ajastimiin",
-    "",
-    "Añadir episodio a prog. manual",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$If you create a timer for a series, you can automatically add the episode name.\n\n- never: no addition\n- always: always add episode name if present\n- smart: add only if event lasts less than 80 mins.",
-    "Wenn man einen Timer für eine Serie erzeugt, kann mit dieser Option automatisch der Episodenname ergänzt werden.\n\n- niemals: keine Ergänzung\n- immer: immer ergänzen, falls Episodenname vorhanden.\n- intelligent: nur ergänzen, wenn Sendung weniger als 80 min dauert",
-    "",
-    "Se crei un timer per le serie, puoi automaticamente aggiungere il nome episodio.\n\n- mai: nessuna aggiunta\n- sempre: aggiunge sempre un nome episodio se presente\n- veloce: lo aggiunge solo se l'evento termina in meno di 80 minuti",
-    "Als er een herhaaltimer wordt aangemaakt voor series, dan kan er automatisch de episode naam worden toegevoegd.\n\n- nooit: voeg niets toe\n- altijd: voeg altijd de episode naam toe indien aanwezig\n- smart: voeg alleen toe wanneer programma minder dan 80 min duurt.",
-    "",
-    "Lorsque l'on créé une programmation d'une série, on peut voir automatiquement le nom de l'épisode.\n\n- Jamais: sans nom d'épisode\n- Toujours:Compléter toujours avec le noms de l'épisode, si existant.\n- intelligent: compléter, si l'épisode dure moins de 80 min",
-    "",
-    "Asettaa toiminnon sarjatallennuksen jakson nimen lisäykselle:\n\n- ei koskaan: ei lisätä\n- aina: lisätään aina, jos olemassa\n- älykkäästi: lisätään vain, jos tapahtuman kesto on alle 80 min",
-    "",
-    "Cuando crea una programación en serie, puede añadir automáticamente el nombre del episodio.\n\n- nunca: no añadir\n- siempre: si existe, añadir siempre el nombre del episodio\n- inteligente: añadir solamente si la emisión dura menos de 80 minutos.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Default timer check method",
-    "Standard-Timer-Prüfmethode",
-    "",
-    "Metodo verifica timer predefinito",
-    "Standaard timer controle methode",
-    "",
-    "Méthode standart de vérification de programmation",
-    "",
-    "Oletustapa ajastimen valvonnalle",
-    "",
-    "Método de comprobación por defecto",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Manual timers can be checked for EPG changes. Here you can setup the default check method for each channel. Choose between\n\n- no checking\n- by event ID: checks by an event ID supplied by the channel provider.\n- by channel and time: check by the duration match.",
-    "Manuelle Timer können hinsichtlich EPG-Änderungen überwacht werden. Hier kann die Standard-Prüfmethode für jeden Kanal hinterlegt werden. Zur Wahl stehen:\n\n- keine Prüfung\n- anhand Sendungskennung: geprüft wird anhand einer Kennung, die durch den Sender vergeben wird.\n- anhand Sender/Uhrzeit: geprüft wird anhand der Sendung, die am besten zur Dauer der ursprünglichen Sendung passt.",
-    "",
-    "I timer manuali possono essere verificati con le modifiche EPG. Qui puoi impostare il metodo di verifica predefinito per ciascun canale. Scegli tra:\n\n- nessuna verifica\n- ID evento: verifica da un ID evento fornito dall'emittente del canale.\n- canale e ora: verifica la corrispondenza della durata.",
-    "Handmatige timers kunnen worden gecontroleerd op EPG veranderingen. Hier kan de standaard methode voor ieder kanaal ingesteld worden. Kies uit\n\n- geen controle\n- op event-ID: kontroleert m.b.v. een event-ID meegzonden door de TV Provider.\n- op kanaal an tijd: controleer of de tijdsduur overeenkomt.",
-    "",
-    "Des programmations manuelles peuvent être surveillés par rapport au changement d'EPG. Ici vous pouvez définir une méthode de vérification standart pour chaque chaîne. Les choix:\n\n- pas de vérification\n- à partir du numéro d'émission: la vérification se fait à partir d'un numéro délivré par l'émetteur.\n- à partir de la chaîne/heure: vérification à partir de l'émission, qui est la mieux adaptée avec la durée de l'émission initiale.",
-    "",
-    "Käsinluotuja ajastimia voidaan valvoa ohjelmaoppaan muutoksia vasten. Voit asettaa oletustavan jokaista kanavaa kohden:\n\n- ei valvontaa\n- tapahtuman tunniste: ohjelmisto-oppaassa lähetettävän tunnisteen mukaan\n- kanava ja aika: tapahtuman keston ja ajankohdan mukaan",
-    "",
-    "Las programaciones manuales pueden comprobar cambios en la EPG. Aquí puede establecer el método de comprobación por defecto para cada canal. Elija entre\n\n- sin comprobación.\n- por ID de emisión: comprueba un ID de emisión suministrado por el emisor del canal.\n- por canal y hora: comprueba que coincida la duración.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Setup",
-    "Einstellungen",
-    "Nastavitve",
-    "Opzioni",
-    "Instellingen",
-    "Configurar",
-    "Configuration",
-    "Konfigurasjon",
-    "Asetukset",
-    "Nastawy",
-    "Configuración",
-    "Ñõèìéóåéò",
-    "Inställningar",
-    "Configuraþie",
-    "Beállítások",
-    "Configuració",
-#if VDRVERSNUM >= 10302
-    "½ÐáâàÞÙÚÐ",
-#endif
-#if VDRVERSNUM >= 10307
-    "Konfiguracija",
-#endif
-#if VDRVERSNUM >= 10313
-    "Sätted",
-#endif
-#if VDRVERSNUM >= 10316
-    "Indstillinger",
-#endif
-#if VDRVERSNUM >= 10342
-    "Nastavení",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use search timers",
-    "Verwende Suchtimer",
-    "",
-    "Utilizza timer di ricerca",
-    "Gebruik zoektimers",
-    "",
-    "Utiliser le programmeur de recherche",
-    "",
-    "Käytä hakuajastimia",
-    "",
-    "Usar programaciones por búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$'Search timers' can be used to automatically create timers for events that match your search criterions.",
-    "'Suchtimer' können verwendet werden um automatisch Timer für Sendungen zu erstellen, die von einer Suche gefunden werden.",
-    "",
-    "'Cerca timer' può essere usato per creare automaticamente timer per eventi che corrispondano a criteri di ricerca.",
-    "Zoektimers kunnen worden gebruikt om automatisch timers te maken o.b.v. programma's die voldoen aan bepaalde zoekcriteria.",
-    "",
-    "'Programmation de recherche' peut être utilisé pour programmer automatiquement des émissions, qui sont trouvées par la recherche.",
-    "",
-    "Hakuajastimilla luodaan automaattisesti ajastimia hakuehtoihin sopiviin tapahtumiin.",
-    "",
-    "'Programaciones por búsqueda' se usa para crear automáticamente programaciones de emisiones que coincidan con los criterios de búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  Update interval [min]",
-    "  Aktualisierungsintervall [min]",
-    "",
-    "  Intervallo aggiorn. [min]",
-    "  Update interval [min]",
-    "",
-    "  Interval d'actualisation [min]",
-    "",
-    "  Päivitysväli [min]",
-    "",
-    "  Intervalo de actualización [min]",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify here the time intervall to be used when searching for events in the background.",
-    "Hier kann das Zeitintervall angegeben werden, in dem im Hintergrund automatisch nach neuen Sendungen gesucht werden soll.",
-    "",
-    "Specifica l'intervallo di tempo da usare durante la ricerca di eventi in sottofondo.",
-    "Geef hier het tijdsinterval op dat wordt gebruikt om op de achtergrond te zoeken naar programma's",
-    "",
-    "Ici vous indiquez l'interval avec lequel de nouvelles émissions a programmer sont recherchées.",
-    "",
-    "Määrittelee päivitysvälin hakuajastimien taustapäivitykselle.",
-    "",
-    "Especifique el intervalo de tiempo con el que se buscarán nuevas emisiones.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  SVDRP port",
-    "  SVDRP Port",
-    "",
-    "  Porta SVDRP",
-    "  SVDRP poort",
-    "",
-    "  SVDRP Port",
-    "",
-    "  SVDRP-portti",
-    "",
-    "  Puerto SVDRP",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Programming of new timers or timer changes is done with SVDRP. The default value should be correct, so change it only if you know what you are doing.",
-    "Die Programmierung neuer Timer oder Timer-Änderungen erfolgt mit SVDRP. Der Vorgabewert hier sollte immer korrekt sein, also nur ändern, wenn man weiß, was man tut.",
-    "",
-    "La programmazione di nuovi timer o la modifica dei timer viene fatta con SVDRP. Il valore predefinito dovrebbe essere corretto, quindi cambialo solo se sai cosa stai facendo.",
-    "Het programmeren of wijzigen van timers wordt gedaan met SVDRP. De standaard waarde moet goed staan, dus wijzig dit allen als er echt reden toe is.",
-    "",
-    "La programmation de nouveaux enregistrements ou changements de programmation est réalisé avec SVDRP. La valeur par défaut doit absolument être correcte, ne la changez que si vous savez ce que vous faites.",
-    "",
-    "Uusien ajastimien luonti ja olemassa olevien muokkaus on toteutettu SVDRP-protokollan kautta. Suositellaan käytettävän vain oletusarvoa.",
-    "",
-    "Las nuevas programaciones o cambios de programación se realizan con SVDRP. El valor por defecto debe ser correcto, sólo modifíquelo si sabe lo que está haciendo.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify here the default priority of timers created with this plugin. This value can also be adjusted for each search itself.",
-    "Hier wird die Standard-Priorität für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden.",
-    "",
-    "Specifica qui la priorità predefinita dei timer creati con questo plugin. Questo valore può anche essere adattato per ciascuna ricerca.",
-    "Bepaal hier de standaard prioriteit van timers aangemaakt met deze plugin. Deze waarde kan ook worden aangepast voor iedere afzonderlijke zoekactie",
-    "",
-    "Ici vous définissez la priorité standard de la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche.",
-    "",
-    "Määrittelee oletusprioriteetin tämän laajennoksen kautta luotaville ajastimille. Prioriteettia voidaan muokata ajastinkohtaisesti.",
-    "",
-    "Especifique la prioridad por defecto de las programaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify here the default lifetime of timers/recordings created with this plugin. This value can also be adjusted for each search itself.",
-    "Hier wird die Standard-Lebensdauer für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden.",
-    "",
-    "Specifica qui la durata predefinita dei timer/registrazioni creati con questo plugin. Questo valore può anche essere adattato per ciascuna ricerca.",
-    "Bepaal hier de standaard levensduur van timers/opnames aangemaakt door deze plugin. Deze waarde kan ook worden aangepast voor iedere afzonderlijke zoekactie",
-    "",
-    "Ici vous définissez la durée de vie de l'enregistrement crée par le plugin. Cette valeur pe        ut être réglée de facon individuelle pour chaque recherche.",
-    "",
-    "Määrittelee oletuseliniän tämän laajennoksen kautta luotaville ajastimille. Elinaikaa voidaan muokata ajastinkohtaisesti.",
-    "",
-    "Especifique el tiempo de duración por defecto de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify here the default start recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself.",
-    "Hier wird die Standard-Vorlaufzeit für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden.",
-    "",
-    "Specifica qui il margine predefinito di inizio della registrazione dei timer/registrazioni creati con questo plugin. Questo valore può anche essere adattato per ciascuna ricerca.",
-    "Bepaal hier de standaard start opname-marge van timers/opnames aangemaakt door deze plugin. Deze waarde kan ook worden aangepast voor iedere afzonderlijke zoekactie",
-    "",
-    "Ici vous définissez la marge antérieure à la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche.",
-    "",
-    "Määrittelee oletusmarginaalin tallennuksen aloitukselle tämän laajennoksen kautta luotaville ajastimille. Marginaaleja voidaan muokata ajastinkohtaisesti.",
-    "",
-    "Especifique el margen de tiempo por defecto para el inicio de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify here the default stop recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself.",
-    "Hier wird die Standard-Nachlaufzeit für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden.",
-    "",
-    "Specifica qui il margine predefinito di fine registrazione dei timer/registrazioni creati con questo plugin. Questo valore può anche essere adattato per ciascuna ricerca.",
-    "Bepaal hier de standaard stop opname-marge van timers/opnames aangemaakt door deze plugin. Deze waarde kan ook worden aangepast voor iedere afzonderlijke zoekactie",
-    "",
-    "Ici vous définissez la marge postérieure de la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche.",
-    "",
-    "Määrittelee oletusmarginaalin tallennuksen lopetukselle tämän laajennoksen kautta luotaville ajastimille. Marginaaleja voidaan muokata ajastinkohtaisesti.",
-    "",
-    "Especifique el margen de tiempo por defecto para el final de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "No announcements when replaying",
-    "Keine Ankündigungen bei Wiedergabe",
-    "",
-    "Nessun annuncio durante riproduzione",
-    "Geen meldingen tijdens afspelen",
-    "",
-    "Pas d'annonces lors de la lecture",
-    "",
-    "Älä muistuta toiston aikana",
-    "",
-    "Sin avisos mientras se reproduce",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if you don't like to get any announcements of broadcasts if you currently replay anything.",
-    "Bitte auf 'Ja' setzen, wenn während einer Wiedergabe keine Ankündigungen über Sendungen erwünscht sind.",
-    "",
-    "Imposta 'sì' se non ti piace avere degli annunci dalle emittenti se stai attualmente riproducendo qualcosa.",
-    "Kies 'ja' indien er geen meldingen van toekomstige uitzendingen gewenst zijn als er op dat moment iets wordt afgespeeld",
-    "",
-    "Mettez 'oui' si aucune annonce d'émission n'est voulue pendant la lecture.",
-    "",
-    "Laittamalla tämän asetuksen päälle et saa ohjelmista muistutuksia toistettaessa tallenteita.",
-    "",
-    "Establecer a 'sí' cuando no desee recibir ningún aviso de emisiones durante una reproducción.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Recreate timers after deletion",
-    "Timer nach Löschen neuprogrammieren",
-    "",
-    "Ricrea timer dopo eliminazione",
-    "Maak timer opnieuw aan na verwijderen",
-    "",
-    "Recrer la programmation après l'éffacement",
-    "",
-    "Luo ajastimet uudelleen",
-    "",
-    "Recrear programaciones tras borrar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if you want timers to be recreated with the next search timer update after deleting them.",
-    "Hier 'Ja' wählen, wenn gelöschte Timer mit dem nächsten Suchtimer-Update neu programmiert werden sollen.",
-    "",
-    "Imposta 'sì' se vuoi ricreare i timer con la successiva ricerca di aggiornamento timer dopo la loro eliminazione.",
-    "Kies 'ja' als timers na het verwijderen opnieuw moeten worden aangemaakt met een nieuwe zoek-timer update",
-    "",
-    "Choisissez 'oui' pour refaire les programmations de recherche lorsque vous les avez effacés.",
-    "",
-    "Laittamalla tämän asetuksen päälle saat luotua ajastimet uudelleen seuraava hakuajastin päivityksen yhteydessä, jos olet poistanut ne.",
-    "",
-    "Establecer a 'sí' cuando desee que las programaciones se creen de nuevo con la siguiente actualización de programación por búsqueda después de borrarlas.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Check if EPG exists for ... [h]",
-    "Prüfe ob EPG für ... [h] existiert",
-    "",
-    "Verifica se l'EPG esiste per ... [h]",
-    "",
-    "",
-    "",
-    "",
-    "Tarkasta tulevat ohjelmatiedot... [h]",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify how many hours of future EPG there should be and get warned else after a search timer update.",
-    "Hier kann angeben werden wie viele Stunden zukünftigen EPGs existieren sollen und andernfalls nach einem Suchtimer Update gewarnt werden.",
-    "",
-    "Specifica quante ore degli EPG futuri dovrebbero essere notificati anche dopo un aggiornamento del timer di ricerca.",
-    "Kies 'ja' als de conflict controle moet worden uitgevoerd na het verversen van iedere zoek-timer",
-    "",
-    "Avec 'Oui' vous impliquez la vérification de conflits à la mise à jours de la recherche.",
-    "",
-    "Määrittelee vaadittavat tulevat ohjelmatietot tunteina hakuajastimien päivityksen yhteydessä, jonka jälkeen käyttäjää varoitetaan.",
-    "",
-    "Establecer a 'sí' cuando desee comprobar conflictos después de actualizar cada programación por búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Warn by OSD",
-    "per OSD warnen",
-    "",
-    "Notifica tramite OSD",
-    "Alleen aankondigen (geen timer)",
-    "",
-    "Annoncer seulement début d'une programme",
-    "",
-    "Muistuta kuvaruutunäytöllä",
-    "",
-    "Sólo avisar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if you want get warnings from the EPG check via OSD.",
-    "Hier mit 'Ja' auswählen, ob eine Warnung zum EPG Check per OSD gewünscht ist.",
-    "",
-    "Imposta 'sì' se vuoi avere una notifica OSD sulle verifiche EPG.",
-    "Kies 'ja' indien er een notificatie e-mail verstuurd moet worden bij timer conflicten",
-    "",
-    "Mettez 'oui',si les conflits de programmation doivent être notifiés.",
-    "",
-    "Laittamalla tämän asetuksen päälle saat varoitukset ohjelmatietojen tarkastuksesta kuvaruutunäytölle.",
-    "",
-    "Establecer a 'sí' cuando desee recibir una notificación por correo sobre los conflictos de programación.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Warn by mail",
-    "per Mail warnen",
-    "",
-    "Notifica tramite mail",
-    "Alleen aankondigen (geen timer)",
-    "",
-    "Annoncer seulement début d'une programme",
-    "",
-    "Muistuta sähköpostitse",
-    "",
-    "Sólo avisar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if you want get warnings from the EPG check by mail.",
-    "Hier mit 'Ja' auswählen, ob eine Warnung zum EPG Check per Mail gewünscht ist.",
-    "",
-    "Imposta 'sì' se vuoi avere una notifica email sulle verifiche EPG.",
-    "kies 'ja' indien uw abonnement authenticatie vereist voor het verzenden van e-mails.",
-    "",
-    "Mettez 'oui',si le compte mail utilise l'authentification pour les mails sortants.",
-    "",
-    "Laittamalla tämän asetuksen päälle saat varoitukset ohjelmatietojen tarkastuksesta sähköpostitse.",
-    "",
-    "Establecer a 'sí' cuando su cuenta necesite autenticación para enviar correos.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Channel group to check",
-    "zu prüfende Kanalgruppe",
-    "",
-    "Gruppo canali da verificare",
-    "Kanaal groep",
-    "",
-    "Groupe de chaînes",
-    "",
-    "Tarkastettava kanavaryhmä",
-    "",
-    "Grupo de canales",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify the channel group to check.",
-    "Hier die zu prüfende Kanalgruppe auswählen.",
-    "",
-    "Specifica il gruppo canali da verificare.",
-    "Geef de naam op van het sjabloon",
-    "",
-    "Spécifier le nom du modèle.",
-    "",
-    "Määrittelee tarkastettavan kanavaryhmän.",
-    "",
-    "Especifique el nombre de la plantilla.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Ignore PayTV channels",
-    "PayTV-Sender ignorieren",
-    "",
-    "Ignora i canali a pagamento",
-    "Negeer PayTV kanalen",
-    "",
-    "Ignorer les chaînes payantes",
-    "",
-    "Jätä salatut kanavat huomioimatta",
-    "",
-    "Ignorar los canales de pago",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if don't want to see events on PayTV channels when searching for repeats.",
-    "Um bei der Suche nach Wiederholungen Sendungen von PayTV-Kanälen zu ignorieren, kann hier die Option auf 'Ja' gesetzt werden.",
-    "",
-    "Imposta 'sì' se non vuoi vedere gli eventi dei canali a pagamento durante la ricerca delle repliche.",
-    "Kies 'ja' als er geen programma's van payTV kanalen mogen worden getoond tijdens het zoeken naar herhalingen",
-    "",
-    "Pour éviter les recherches sur les chaînes payantes, vous mettez l'option sur 'oui'",
-    "",
-    "Piilottaa salatut kanavat haettaessa uusintoja.",
-    "",
-    "Establecer a 'sí' cuando no desee buscar en los canales de pago.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search templates",
-    "Such-Vorlagen",
-    "",
-    "Cerca modelli",
-    "Zoek sjabloon",
-    "",
-    "Rechercher modèles",
-    "",
-    "Mallipohjat hakuehdoille",
-    "",
-    "Plantillas de búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Here you can setup templates for your searches.",
-    "Hier können Vorlagen für Suchen erstellt werden.",
-    "",
-    "Qui puoi impostare i modelli per le ricerche.",
-    "Hier kunnen sjablonen worden aangemaakt voor zoekacties.",
-    "",
-    "Ici vous créer vos recherches comme modèles",
-    "",
-    "Määrittele mallipohjia hakuehdoille.",
-    "",
-    "Aquí puede configurar las plantillas de búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Blacklists",
-    "Ausschlusslisten",
-    "",
-    "Lista esclusioni",
-    "Blacklists",
-    "",
-    "Listes des exclus",
-    "",
-    "Mustat listat",
-    "",
-    "Listas negras",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Here you can setup blacklists which can be used within a search to exclude events you don't like.",
-    "Hiermit können Ausschlusslisten erstellt werden, die innerhalb einer Suche verwendet werden können, um Sendungen auszuschließen, die man nicht haben will.",
-    "",
-    "Qui puoi impostare le liste di esclusione che possono essere usate all'interno delle ricerche per escludere eventi che non ti piacciono.",
-    "Hier kunnen 'Blacklists' worden aangemaakt die kunnen worden gebruikt om programma's uit te sluiten van zoekactie's ",
-    "",
-    "Avec ceci vous changez les listes d'exclusions, qui sont utilisées par la recherche automatique, pour éviter des emissions que vous ne voulez pas voir.",
-    "",
-    "Määrittele mustia listoja hakuehdoille. Mustien listojen tapahtumia ei näytetä hakutuloksissa.",
-    "",
-    "Aquí puede configurar las listas negras, que pueden ser usadas para excluir emisiones no deseadas.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Here you can setup channel groups which can be used within a search. These are different to VDR channel groups and represent a set of arbitrary channels, e.g. 'FreeTV'.",
-    "Hier können Kanalgruppen erstellt werden, die innerhalb einer Suche verwendet werden können. Die Kanalgruppen sind nicht mit den VDR-Kanalgruppen zu vergleichen, sondern stellen einfach eine Gruppe von beliebigen Sendern dar, z.B. 'FreeTV'.",
-    "",
-    "Qui puoi impostare i gruppi di canali che possono essere usati all'interno di una ricerca. Questi sono diversi dai gruppi canali di VDR e rappresentano un insieme arbitrario di canali, ad esempio 'Gratuiti'.",
-    "Hier kunnen groepen van kanalen worden opgegeven die kunnen worden gebruikt binnen een zoekactie. Deze groepen wijken af van de VDR kanaal groepen en bestaan uit willekeurig kanalen zoals 'FreeTV.",
-    "",
-    "Ici vous définissez des groupes de chaînes qui sont utilisés par la recherche. Ce ne sont pas les groupes de chaînes définis dans VDR comme 'Cinéma', mais une sélection propre de l'utilisateur.",
-    "",
-    "Määrittele kanavaryhmiä hakuehdoille. Tämän laajennoksen kanavaryhmät eivät ole yhteydessä VDR:n omiin kanavaryhmiin.",
-    "",
-    "Aquí puede configurar los grupos de canales que pueden ser usados en una búsqueda. Éstos son diferentes a los grupos de canales del VDR y representan un conjunto de canales arbitrario, p.e.: 'Cine'.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Ignore below priority",
-    "Ignoriere unter Priorität",
-    "",
-    "Ignora priorità bassa",
-    "Negeer onder de prioriteit",
-    "",
-    "Ignorer la priorité inférieure",
-    "",
-    "Sivuuta alhaisemmat prioriteetit",
-    "",
-    "Ignorar la prioridad inferior",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$If a timer with priority below the given value will fail it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check.",
-    "Falls ein Timer fehlschlagen wird, dessen Priorität unter dem angegeben Wert liegt, wird er als 'nicht wichtig' eingestuft. Nur bei wichtigen Konflikten erfolgt eine Nachricht per OSD bei der automatischen Konfliktprüfung.",
-    "",
-    "Se un timer con priorità più bassa di un dato valore fallirà esso non sarà classificato come importante. Solo i conflitti importanti genereranno un messaggio OSD sul conflitto dopo una verifica automatica del conflitto.",
-    "Als een timer met een prioriteit onder de gegeven waarde mislukt dan wordt hij niet gemerkt als 'belangrijk'. Alleen belangrijke conflicten zullen een OSD melding tot gevolg hebben.",
-    "Lorsqu'une programmation dont la prioritée est en dessous de la valeur définie, n'aboutit pas, alors elle est qualifiée de 'non-importante'. Seulement les conflits importants sont affichés à l'écran lors de la vérification automatique.",
-    "",
-    "",
-    "Asetusarvoa korkeammalla prioriteetilla olevat ajastimet ovat merkitseviä. Vain merkitsevät päällekkäisyydet aiheuttavat viestin kuvaruutunäytölle automaattisen tarkistuksen yhteydessä.",
-    "",
-    "Si falla una programación con una prioridad por debajo del valor dado, no será clasificada como importante. Después de una comprobación de conflictos, sólo los conflictos importantes mostrarán un mensaje OSD sobre el conflicto.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Ignore conflict duration less ... min.",
-    "Ignoriere Konfliktdauer unter ... Min.",
-    "",
-    "Ignora durata conflitto minore ... min.",
-    "Negeer conflictduur van minder dan ... min.",
-    "",
-    "Ignorer les conflits inférieurs à ... min.",
-    "",
-    "Sivuuta alle ... min. päällekkäisyydet",
-    "",
-    "Ignorar conflicto inferior a ... min.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$If a conflicts duration is less then the given number of minutes it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check.",
-    "Falls die Konfliktdauer unter der angegebenen Anzahl an Minuten liegt, wird er als 'nicht wichtig' eingestuft. Nur bei wichtigen Konflikten erfolgt eine Nachricht per OSD bei der automatischen Konfliktprüfung.",
-    "",
-    "Se la durata di un conflitto è inferiore al numero di minuti dati non sarà classificato come importante. Solo i conflitti importanti genereranno un messaggio OSD sul conflitto dopo la verifica automatica di ciascun conflitto.",
-    "Indien de duur van conflict(en) kleiner is dan het gegeven aantal minuten dan worden deze niet gemerkt als 'belangrijk' Alleen belangrijke conflicten zullen een OSD melding tot gevolg hebben.",
-    "",
-    "Lorsque le temps de conflit est sous le nombre de minutes indiqué, ceci est considéré comme 'non-important'. Uniquement les conflits importants sont affichés à l'écran lors de la vérification automatique de la programmation.",
-    "",
-    "Jos ajastimien päällekkäisyys on alle asetetun minuuttimäärän, sitä ei pidetä merkitsevänä. Vain merkitsevät päällekkäisyydet aiheuttavat viestin kuvaruutunäytölle tarkistuksen yhteydessä.",
-    "",
-    "Si la duración de un conflicto es menor que el número de minutos dado, no será clasificada como importante. Sólo los conflictos importantes mostrarán un mensaje OSD sobre el conflicto después de una comprobación de conflictos automática.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Only check within next ... days",
-    "Prüfe nur die nächsten ... Tage",
-    "",
-    "Verifica solo entro i prossimi ... giorni",
-    "Controleer alleen vóór de volgende ... dagen",
-    "",
-    "Ne vérifier que les prochains ... jours",
-    "",
-    "Tarkista vain seuraavat ... päivää",
-    "",
-    "Sólo comprobar los próximos ... días",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$This value reduces the conflict check to the given range of days. All other conflicts are classified as 'not yet important'.",
-    "Mit diesem Wert kann der Zeitbereich der Konfliktprüfung eingestellt werden. Alle Konflikte ausserhalb des Bereichs werden als 'noch nicht wichtig' eingestuft.",
-    "",
-    "Questo valore riduce la verifica del conflitto ad un dato range di giorni. Tutti gli altri conflitti sono classificati come 'non ancora importanti'.",
-    "Deze waarde beperkt de conflict controle tot het gegeven aantal dagen. Alle andere conflicten worden als 'nog niet belangrijk' bestempeld.",
-    "",
-    "Avec cette valeur vous définissez l'interval de temps de la vérification de conflits. Tous ces conflits en dehors de cet interval sont qualifés comme 'pas encore importants.",
-    "",
-    "Asettaa ajanjakson päivinä päällekkäisyyksien tarkistukselle. Muita päällekkäisyyksiä ei pidetä vielä merkitsevinä.",
-    "",
-    "Este valor reduce la comprobación de conflictos al rango de días dados. El resto de conflictos son clasificados como 'no importantes'.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "--- Automatic checking ---",
-    "--- Automatische Prüfung ---",
-    "",
-    "--- Verifica automatica ---",
-    "--- Automatische controle ---",
-    "",
-    "--- Vérifications automatiques ---",
-    "",
-    "--- Automaattinen tarkistus ---",
-    "",
-    "--- Comprobación automática ---",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "After each timer programming",
-    "Nach jeder Timer-Programmierung",
-    "",
-    "Dopo program. di ciascun timer",
-    "Na iedere aangemaakte timer",
-    "",
-    "Après chaque programmation",
-    "",
-    "Jokaisen ajastimen luonnin jälkeen",
-    "",
-    "Después de cada programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if the conflict check should be performed after each manual timer programming. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if this timer is involved in any conflict.",
-    "Hier auf 'Ja' setzen, wenn die Konfliktprüfung nach jeder manuellen Timer-Programmierung erfolgen soll. Im Falle eines Konflikts wird dann sofort eine Nachricht angezeigt. Diese erscheint nur, wenn dieser Timer in einen Konflikt verwickelt ist.",
-    "",
-    "Imposta 'sì' se il controllo di conflitto dovrebbe essere eseguito dopo la programmazione di ciascun timer manuale. Nel caso di un conflitto avrai immediatamente un messaggio che ti informa di questo. Il messaggio viene visualizzato solo se questo timer è coinvolto in qualche conflitto.",
-    "Kies 'ja' als de conflict controle bij iedere handmatig aangemaakte timer moet worden uitgevoerd. In het geval van een conflict verschijnt er direct een waarschuwing. Deze waarschuwing wordt alleen getoond als de timer betrokken is bij een willekeurig conflict.",
-    "",
-    "",
-    "",
-    "Päällekkäisten ajastimien tarkistus suoritaan aina jokaisen ajastimen luonnin jälkeen. Jos luodulle ajastimelle löydetään päällekkäisyyksiä, niin siitä tiedotetaan käyttäjälle heti.",
-    "",
-    "Establecer a 'sí' cuando desee ejecutar la comprobación de conflictos después de cada programación manual. En caso de existir un conflicto se mostrará inmediatamente un mensaje que informe de ello. Éste mensaje sólo se mostrará si la programación está implicada en un conflicto.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "When a recording starts",
-    "Beim Beginn einer Aufnahme",
-    "",
-    "Quando inizia una reg.",
-    "Wanneer een opname start",
-    "",
-    "",
-    "",
-    "Tallennuksen alkaessa",
-    "",
-    "Cuando empieza una grabación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if the conflict check should be performed when a recording starts. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if the conflict is within the next 2 hours.",
-    "Hier auf 'Ja' setzen, wenn die Konfliktprüfung beim Beginn jeder Aufnahme erfolgen soll. Im Falle eines Konflikts wird dann sofort eine Nachricht angezeigt. Diese erscheint nur, wenn der Konflikt innerhalb der nächsten 2 Stunden auftritt.",
-    "",
-    "Imposta 'sì' se il controllo di conflitto dovrebbe essere eseguito dopo l'inizio di una registrazione. Nel caso di un conflitto avrai immediatamente un messaggio che ti informa di questo. Il messaggio viene visualizzato solo se questo conflitto avviene nelle prossime 2 ore.",
-    "Kies 'ja' als de conflict controle moet worden uitgevoerd bij iedere startende opname. In het geval van een conflict verschijnt er direct een waarschuwing. Deze waarschuwing wordt alleen getoond als de timer betrokken is bij een willekeurig conflict.",
-    "",
-    "",
-    "",
-    "Päällekkäisten ajastimien tarkistus suoritaan aina tallennuksen alkaessa. Jos luodulle ajastimelle löydetään päällekkäisyyksiä seuraavan kahden tunnin aikana, niin siitä tiedotetaan käyttäjälle heti.",
-    "",
-    "Establecer a 'sí' cuando desee comprobar conflictos al iniciar una grabación. En caso de existir un conflicto se mostrará inmediatamente un mensaje que informe de ello. Éste mensaje sólo se mostrará si el conflicto se produce en las próximas 2 horas.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "After each search timer update",
-    "Nach jedem Suchtimer-Update",
-    "",
-    "Dopo ogni aggiorn. timer ricerca",
-    "Na het verversen van iedere zoek-timer",
-    "",
-    "Mise à jours après chaque recherche",
-    "",
-    "Päivitettäessä hakuajastimia",
-    "",
-    "Después de actualizar programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if the conflict check should be performed after each search timer update.",
-    "Hier auf 'Ja' setzen, wenn die Konfliktprüfung nach jedem Suchtimer-Update erfolgen soll.",
-    "",
-    "Imposta 'sì' se la verifica del conflitto dovrebbe essere eseguita dopo ciascun aggiornamento del timer di ricerca.",
-    "Kies 'ja' als de conflict controle moet worden uitgevoerd na het verversen van iedere zoek-timer",
-    "",
-    "Avec 'Oui' vous impliquez la vérification de conflits à la mise à jours de la recherche.",
-    "",
-    "Suorittaa päällekkäisyyksien tarkistuksen jokaisen hakuajastimen päivityksen yhteydessä.",
-    "",
-    "Establecer a 'sí' cuando desee comprobar conflictos después de actualizar cada programación por búsqueda.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "every ... minutes",
-    "alle ... Minuten",
-    "",
-    "ogni ... minuti",
-    "iedere ... minuten",
-    "",
-    "toutes les ... minutes",
-    "",
-    "joka ... minuutti",
-    "",
-    "cada ... minutos",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify here the time intervall to be used for an automatic conflict check in the background.\n('0' disables an automatic check)",
-    "Hier kann das Zeitintervall angegeben werden, in dem eine automatische Konfliktprüfung im Hintergrund erfolgen soll.\n(mit '0' wird die automatsiche Prüfung deaktiviert.)",
-    "",
-    "Specifica qui l'intervallo da usare per la verifica automatica di un conflitto in sottofondo.\n('0' disabilita la verifica automatica)",
-    "Bepaal hier de tijdsduur gebruikt voor de automatische conflict controle in de achtergrond",
-    "",
-    "Ici vous indiquez l'interval de temps dans lequel la vérification de conflits est effectuée.\n(avec '0' vous déactivez la vérification.)",
-    "",
-    "Määrittää aikajakson taustalla tehtävälle automaattiselle päällekkäisyyksien tarkistukselle.\nArvolla '0' saat asetettua automaattisen tarkistuksen pois päältä",
-    "",
-    "Especifique el intervalo de tiempo a usar para la comprobación de conflictos automática en segundo plano.\n('0' deshabilita la comprobación automática)",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "if conflicts within next ... minutes",
-    "Wenn nächster Konflikt in ... Minuten",
-    "",
-    "in conflitto entro i prossimi ... minuti",
-    "indien conflict optreed binnen ... minuten",
-    "",
-    "Si conflit dans ... minutes suivantes",
-    "",
-    "jos päällekkäisyys ... min. kuluessa",
-    "",
-    "si hay conflictos en próximos ... min.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$If the next conflict will appear in the given number of minutes you can specify here a shorter check intervall to get more OSD notifications about it.",
-    "Wenn der nächste Konflikt innerhalb der angegebenen Anzahl von Minuten liegt, kann man hiermit ein kürzeres Prüfintervall angeben, damit man häufiger über den Konflikt per OSD benachrichtigt wird.",
-    "",
-    "Se il prossimo conflitto comparirà nel numero dato di minuti puoi specificare qui un intervallo di verifica più breve per avere più notifiche OSD su di esso.",
-    "Als het volgende conflict binnen het gegeven aantal minuten optreedt dan kan hier een korter interval worden gespecificeerd om meer OSD notificaties te verkrijgen.",
-    "",
-    "Si le conflit à lieu dans l'interval de temp indiqué, alors il est possible de règler un interval de temps plus petit pour la vérification de conflits avec affichage à lécran.",
-    "",
-    "Jos seuraava päällekkäisyys esiintyy asetetun ajan kuluessa, tällä asetuksella pystyt määrittämään lyhyemmän tarkistusvälin saadaksesi tarkempia kuvaruutuviestejä.",
-    "",
-    "Si el próximo conflicto aparece en el número de minutos indicado, puede especificar un intervalo de comprobación menor para obtener más notificaciones OSD sobre él.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Avoid notification when replaying",
-    "Vermeide Nachricht bei Wiedergabe",
-    "",
-    "Evita notifiche durante riprod.",
-    "Vermijdt notificatie tijdens afspelen",
-    "",
-    "Eviter les messages pendant la lecture",
-    "",
-    "Älä näytä ilmoituksia toiston aikana",
-    "",
-    "Evitar notificación al reproducir",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if the don't want to get OSD messages about conflicts if you currently replay something. Nevertheless messages will be displayed if the first upcoming conflict is within the next 2 hours.",
-    "Bitte auf 'Ja' setzen, wenn während einer Wiedergabe keine OSD-Benachrichtigungen über Timer-Konflikte gewünscht sind. Die Benachrichtigung erfolgt trotzdem, wenn der nächste Konflikt innerhalb der nächsten 2 Stunden auftritt.",
-    "",
-    "Imposta 'sì' se non vuoi avere messaggi OSD sui conflitti se stai riproducendo qualcosa. Tuttavia i messaggi saranno visualizzati se il primo conflitto avviene entro le prossime 2 ore.",
-    "Kies 'ja' indien er geen OSD berichten mogen verschijnen tijdens het afspelen. Desondanks zullen berichten wel verschijnen indien het volgende conflict binnen 2 uur optreedt",
-    "",
-    "Mettez sur 'oui', si pendant la lecture vous ne voulez pas être dérangé par les affichages des conflits de programmation. L'affichage est fait si les conflits on lieu dans le 2 heures à venir.",
-    "",
-    "Laittamalla tämän asetuksen päälle saat estettyä kuvaruutuviestit päällekkäisistä ajastimista toiston aikana. Kuvaruutuviesti näytetään kuitenkin aina, jos päällekkäinen ajastin on alle kahden tunnin kuluttua.",
-    "",
-    "Establecer a 'sí' cuando no desee mostrar mensajes OSD de conflictos mientras está reproduciendo algo. Sin embargo, se mostrarán mensajes si el primer conflicto se produce en las 2 horas siguientes.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search timer notification",
-    "Suchtimer-Benachrichtigung",
-    "",
-    "Notifica timer di ricerca",
-    "Zoektimer notificatie",
-    "",
-    "Notification de recherche",
-    "",
-    "Ilmoitukset hakuajastimista",
-    "/oui",
-    "Notificar prog. por búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if you want to get an email notification about the search timers that where programmed automatically in the background.",
-    "Hier mit 'Ja' auswählen, ob eine Email-Benachrichtigung über automatisch im Hintergrund programmierte Suchtimer versandt werden soll.",
-    "",
-    "Imposta 'sì' se vuoi avere una email di notifica sui timer di ricerca che sono stati programmati automaticamente dal sistema.",
-    "Kies 'ja' wanneer er een notificatie e-mail verstuurd moet worden over zoektimers die automatisch op de achtergrond werden aangenaakt.",
-    "",
-    "Mettez 'oui',si vous voulez que les nouvelles programmations automatiques soient notifiées par mail.",
-    "",
-    "Tällä asetuksella saat ilmoitukset automaattisesti lisätyistä hakuajastimista sähköpostiisi.",
-    "",
-    "Establecer a 'sí' cuando desee tener una notificación por correo de las programaciones por búsqueda que fueron creadas automáticamente.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Time between mails [h]",
-    "Zeit zwischen Mails [h]",
-    "",
-    "Tempo tra le email [h]",
-    "",
-    "",
-    "",
-    "",
-    "Sähköpostin lähetysväli [h]",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specifiy how much time in [h] you would\nlike to have atleast between two mails.\nWith '0' you get a new mail after each\nsearch timer update with new results.",
-    "Hier die gewünschte Zeit in [h] zwischen\nzwei Mails angeben. Mit '0' erhält man eine\nneue Mail nach jedem Suchtimer-Update\nmit neuen Ergebnissen.",
-    "",
-    "Specifica quanto tempo in [h]\nvuoi almeno avere tra due email.\nCon '0' hai una nuova email dopo ogni\naggiornamento del timer di ricerca\ncon nuovi risultati.",
-    "",
-    "",
-    "",
-    "",
-    "Vähimmäisväliaika tunteina sähköpostien\nlähetykselle. Mikäli 0, uusi sähköposti\nlähetetään aina hakuajastimen päivittyessä\nuusilla tuloksilla.",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Timer conflict notification",
-    "Timer-Konflikt-Benachrichtigung",
-    "",
-    "Notifica timer in conflitto",
-    "Timer conflict notificatie",
-    "",
-    "Notification de conflit de programmation",
-    "",
-    "Ilmoitukset päällekkäisistä ajastimista",
-    "",
-    "Notificar conflicto en programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if you want to get an email notification about the timer conflicts.",
-    "Hier mit 'Ja' auswählen, ob eine Email-Benachrichtigung über Timer-Konflikte versändet werden soll.",
-    "",
-    "Imposta 'sì' se vuoi avere una notifica email sui timer in conflitto.",
-    "Kies 'ja' indien er een notificatie e-mail verstuurd moet worden bij timer conflicten",
-    "",
-    "Mettez 'oui',si les conflits de programmation doivent être notifiés.",
-    "",
-    "Tällä asetuksella saat ilmoitukset päällekkäisistä ajastimista sähköpostiisi.",
-    "",
-    "Establecer a 'sí' cuando desee recibir una notificación por correo sobre los conflictos de programación.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Send to",
-    "Senden an",
-    "",
-    "Invia a",
-    "Zend naar",
-    "",
-    "Envoyer à",
-    "",
-    "Vastaanottaja",
-    "",
-    "Enviar a",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify the email adress where notifications should be sent to.",
-    "Hier wird die Email-Adresse angegeben, an welche die Benachrichtigungen versandt werden.",
-    "",
-    "Specifica l'indirizzo di posta al quale le notifiche dovrebbero essere spedite.",
-    "Geef het e-mail adres op waar de notificaties naartoe gestuurd moeen worden",
-    "",
-    "Ici vous indiquez l'adresse mail, a laquelle les notifications sont envoyées.",
-    "",
-    "Määrittelee sähköpostiosoitteen, jonne ilmoitukset lähetetään.",
-    "",
-    "Especifique la dirección de correo donde deben enviarse las notificaciones.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Mail method",
-    "Mail-Methode",
-    "",
-    "Metodo email",
-    "Mail methode",
-    "",
-    "Méthode de couriel",
-    "",
-    "Lähetystapa",
-    "",
-    "Método de correo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify here the method to use when sending mails.\nYou can choose between\n - 'sendmail': requires a properly configured email system\n - 'SendEmail.pl': simple script for mail delivery",
-    "Bitte hier die gewünschte Methode zum Emailversand auswählen. Verfügbar sind:\n - 'sendmail': erfordert ein korrekt konfiguriertes Mailsystem\n - 'SendEmail.pl': ein einfaches Skript zum Mailversand",
-    "",
-    "Specifica qui il metodo da usare per l'invio delle email.\nPuoi scegliere tra:\n- 'sendmail': richiede un proprio sistema email configurato\n- 'SendEmail.pl': semplice script per la consegna delle email",
-    "",
-    "",
-    "",
-    "",
-    "Määrittelee lähetystavan sähköposteille.\nVoit valita kahden vaihtoehdon väliltä:\n - 'sendmail': vaatii oikein konfiguroidun sähköpostisysteemin\n - 'SendEmail.pl': yksinkertainen skriptitiedosto sähköpostin lähetykseen",
-    "",
-    "Especifique el método a usar para enviar correos.\nPuede elegir entre\n - 'sendmail': necesita un sistema de correo correctamente configurado\n - 'SendEmail.pl': script simple para la entrega de correo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "--- Email account ---",
-    "--- Email-Konto ---",
-    "",
-    "--- Account email ---",
-    "--- E-mail gebruiker ---",
-    "",
-    "--- Compte courriel ---",
-    "",
-    "--- Sähköposti ---",
-    "",
-    "--- Cuenta de correo ---",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Email adress",
-    "Email-Adresse",
-    "",
-    "Indirizzo di posta",
-    "E-mail adres",
-    "",
-    "Adresse courriel",
-    "",
-    "Sähköpostiosoite",
-    "",
-    "Dirección de correo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify the email adress where notifications should be sent from.",
-    "Hier wird die Email-Adresse angegeben, mit der die Benachrichtigungen versandt werden.",
-    "",
-    "Specifica l'indirizzo di posta dal quale le notifiche dovrebbero essere spedite.",
-    "Geef het e-mail adres op waar vandaan de e-mail notificaties verzonden worden",
-    "",
-    "Préciser l'adresse courriel de l'envoyeur des notifications",
-    "",
-    "Määrittelee sähköpostiosoitteen, josta ilmoitukset lähetetään.",
-    "",
-    "Especifique la dirección de correo desde donde se enviarán las notificaciones.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "SMTP server",
-    "SMTP Server",
-    "",
-    "Server SMTP",
-    "SMTP server",
-    "",
-    "Serveur SMTP",
-    "",
-    "SMTP-palvelin",
-    "",
-    "Servidor SMTP",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify the SMTP server that should deliver the notifications. If it's using a port different from the default(25) append the port with \":port\".",
-    "Hier wird der SMTP Server hinterlegt, über den die Benachrichtigungen versandt werden. Falls dieser einen anderen Port als den Standard(25) verwendet, dann mit \":port\" anhängen.",
-    "",
-    "Specifica il server SMTP che dovrebbe consegnare le notifiche. Se utilizza una porta diversa da quella di default (25) aggiungi la porta con \":porta\".",
-    "Geef de SMTP server voor het verzenden van de notificaties. Indien een andere dan de standaard poort (25) wordt gebruik voeg dan toe \":port\"",
-    "",
-    "Ici vous indiquez le serveur de mail sortant SMTP, par lequel les notifications vont être envoyées. Si le port standart(25) n'est pas utilisé, alors ajoutez \":port\" par exemple smtp.orange.fr:2525. ",
-    "",
-    "Määrittelee käytettävän SMTP-palvelimen. Portti voidaan määritellä erikseen lisäämällä palvelimen osoitteen loppuun \":portti\", jos se eroaa oletuksesta (25).",
-    "",
-    "Especifique el servidor SMTP que debe entregar las notificaciones. Si está usando un puerto distinto al normal(25) añada el puerto con \":puerto\".",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use SMTP authentication",
-    "Verw. SMTP-Authentifizierung",
-    "",
-    "Utilizza autenticazione SMTP",
-    "Gebruik SMTP authenticatie",
-    "",
-    "Utiliser l'authentification SMTP",
-    "",
-    "Käytä SMTP-autentikointia",
-    "",
-    "Usar autenticación SMTP",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'yes' if your account needs authentication to send mails.",
-    "Hier auf 'Ja' setzen, wenn das Emailkonto SMTP-Authentifizierung zum Emailversand benötigt.",
-    "",
-    "Imposta 'sì' se il tuo account ha bisogno di autenticazione per inviare email.",
-    "kies 'ja' indien uw abonnement authenticatie vereist voor het verzenden van e-mails.",
-    "",
-    "Mettez 'oui',si le compte mail utilise l'authentification pour les mails sortants.",
-    "",
-    "Asettaa SMTP-autentikoinnin päälle sähköpostin lähetystä varten.",
-    "",
-    "Establecer a 'sí' cuando su cuenta necesite autenticación para enviar correos.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Auth user",
-    "Auth-Benutzer",
-    "",
-    "Autenticazione utente",
-    "Auth gebruiker",
-    "",
-    "Authentification: utilisateur",
-    "",
-    "SMTP-käyttäjätunnus",
-    "",
-    "Usuario",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify the auth user, if this account needs authentication for SMTP.",
-    "Hier wird der Auth-Benutzername angegeben, falls dieses Emailkonto eine Authentifizierung für SMTP benötigt.",
-    "",
-    "Specifica l'utente di autenticazione, se questo account ne ha bisogno per SMTP.",
-    "Geef de e-mail gebruikernaam op, indien SMTP authenticatie voor het abonnement vereist is.",
-    "",
-    "Ici vous indiquez l'utilisateur pour l'authentification, lorsque le compte mail sortant SMTP en a besoin.",
-    "",
-    "Määrittelee käyttäjätunnuksen, jos SMTP-palvelimelle pitää autentikoitua.",
-    "",
-    "Si esta cuenta necesita autenticación SMTP, especifique el usuario.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Auth password",
-    "Auth-Passwort",
-    "",
-    "Password autenticazione",
-    "Auth wachtwoord",
-    "",
-    "Authentification: mot de passe",
-    "",
-    "SMTP-salasana",
-    "",
-    "Contraseña",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify the auth password, if this account needs authentication for SMTP.",
-    "Hier wird das Auth-Passwort angegeben, falls dieses Emailkonto eine Authentifizierung für SMTP benötigt.",
-    "",
-    "Specifica la password di autenticazione, se quanto account ne ha bisogno per SMTP.",
-    "Geef het e-mail wachtwoord op, indien SMTP authenticatie voor het abonnement vereist is.",
-    "",
-    "Ici vous indiquez le mot de passe pour l'authentification, lorsque le compte mail sortant SMTP en a besoin.",
-    "",
-    "Määrittelee salasanan, jos SMTP-palvelimelle pitää autentikoitua.",
-    "",
-    "Si esta cuenta necesita autenticación SMTP, especifique la contraseña.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Mail account check failed!",
-    "Mailkonto-Prüfung fehlgeschlagen!",
-    "",
-    "Verifica account email fallita!",
-    "Mail abonnement verificatie mislukt!",
-    "",
-    "La vérification du compte mail a échoué",
-    "",
-    "Sähköpostilaatikon tarkistus epäonnistui!",
-    "",
-    "¡Falló la prueba de cuenta de correo!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Test",
-    "Test",
-    "",
-    "Prova",
-    "Test",
-    "",
-    "Test",
-    "",
-    "Testaa",
-    "",
-    "Probar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_",
-    " aäbcdefghijklmnoöpqrsßtuüvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&",
-    " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&",
-    " aáàbcdeéèfghiíìjklmnoóòpqrstuúùvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&°_",
-    " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&",
-    "",
-    " aàbcçdeéèêfghiîjklmnoôpqrstuùûvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&",
-    "",
-    " abcdefghijklmnopqrstuvwxyzåäö0123456789-.,#~\\^$[]|()*+?{}/:%@&",
-    "",
-    " aábcçdeéfghiíjklmnñoópqrstuúüvwxyz0123456789-_.,#~\\^$[]|()*+?{}/:%@&",
-    "",
-    "",
-    "",
-    " aábcdeéfghiíjklmnoóöõpqrstuúüûvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Start/Stop time has changed",
-    "Start/Stop-Zeit hat sich geändert",
-    "",
-    "L'orario di Inizio/Fine è cambiato",
-    "",
-    "",
-    "Start/Stop date a changé",
-    "",
-    "Ohjelman aloitus/lopetusaika muuttunut",
-    "",
-    "Ha cambiado el tiempo inicial/final",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Title/episode has changed",
-    "Titel/Episode hat sich geändert",
-    "",
-    "Il Titolo/episodio è cambiato",
-    "",
-    "",
-    "Titre/épisode a changé",
-    "",
-    "Ohjelman nimi/kuvaus muuttunut",
-    "",
-    "Ha cambiado el título/episodio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "No new timers were added.",
-    "Es wurden keine neuen Timer angelegt.",
-    "",
-    "Nessun nuovo timer aggiunto.",
-    "Geen nieuwe timers aangemaakt",
-    "",
-    "Il n'y a pas eu de nouvelle programmation.",
-    "",
-    "Yhtään uutta ajastinta ei lisätty.",
-    "",
-    "No se añadieron nuevas programaciones.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "No timers were modified.",
-    "Es wurden keine Timer geändert.",
-    "",
-    "Nessun timer modificato.",
-    "Er zijn geen timers aangepast",
-    "",
-    "La programmation n'a pas été changée.",
-    "",
-    "Yhtään ajastinta ei muokattu.",
-    "",
-    "No se modificaron programaciones.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "No timers were deleted.",
-    "Es wurden keine Timer gelöscht.",
-    "",
-    "Nessun timer eliminato.",
-    "Er zijn geen timers gewist",
-    "",
-    "Aucune programmation n'a été effacée.",
-    "",
-    "Yhtään ajastinta ei poistettu.",
-    "",
-    "No se borraron programaciones.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "No new events to announce.",
-    "Keine neuen Sendungen anzukündigen.",
-    "",
-    "Nessun nuovo evento da annunciare.",
-    "",
-    "",
-    "",
-    "",
-    "Ei uusia ilmoitettavia tapahtumia.",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "This version of EPGSearch does not support this service!",
-    "",
-    "",
-    "Questa versione di EPGSearch non supporta questo servizio!",
-    "Deze versie van EPGSearch ondersteunt deze mogelijkheid niet!",
-    "",
-    "Cette version de EPGSearch ne supporte pas ce service!",
-    "",
-    "EPGSearch-laajennos ei tarjoa vaadittavaa palvelua!",
-    "",
-    "¡Esta versión de EPGSearch no soporta este servicio!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "EPGSearch does not exist!",
-    "",
-    "",
-    "EPGSearch non esiste!",
-    "EPGsearch is niet aanwezig!",
-    "",
-    "EPGSearch n'existe pas!",
-    "",
-    "EPGSearch-laajennosta ei löydy!",
-    "",
-    "¡No existe EPGSearch!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "%d new broadcast",
-    "%d neue Sendung(en)",
-    "",
-    "%d nuova emittente",
-    "%d nieuwe uitzending",
-    "",
-    "%d nouvelle(s) émission(s)",
-    "",
-    "%d uutta lähetystä",
-    "",
-    "%d nuevas emisiones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$by channel",
-    "nach Programm",
-    "",
-    "Per canale",
-    "per kanaal",
-    "",
-    "de programme",
-    "",
-    "Kanavat",
-    "",
-    "por canal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$by time",
-    "nach Beginn",
-    "",
-    "Per orario",
-    "op tijd",
-    "",
-    "de début",
-    "",
-    "Kellonajat",
-    "",
-    "por horario",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Episode",
-    "Episode",
-    "",
-    "Episodio",
-    "Aflevering",
-    "",
-    "Épisode",
-    "",
-    "Jaksot",
-    "",
-    "Episodio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Title",
-    "Titel",
-    "",
-    "Titolo",
-    "Titel",
-    "",
-    "Titre",
-    "",
-    "Nimet",
-    "",
-    "Título",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "announce details",
-    "Ankündigungsdetails",
-    "",
-    "dettagli annuncio",
-    "vermeldt details",
-    "",
-    "annoncer les détails",
-    "",
-    "Muistutuksen tiedot",
-    "",
-    "detalles del aviso",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "announce again",
-    "Erneut ankündigen",
-    "",
-    "annuncia ancora",
-    "vermeldt nogmaals",
-    "",
-    "Annoncer à nouveau",
-    "",
-    "Muistuta uudelleen",
-    "",
-    "avisar otra vez",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "with next update",
-    "beim nächsten Update",
-    "",
-    "con nuovo aggiornamento",
-    "bij volgende herziening",
-    "",
-    "lors de la prochaine mise à jour",
-    "",
-    "Seuraavassa päivityksessä",
-    "",
-    "con la próxima actualización",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "again from",
-    "erneut ab",
-    "",
-    "ancora da",
-    "nogmaals vanaf",
-    "",
-    "recommencer à partir de",
-    "",
-    "Alkaen taas",
-    "",
-    "otra vez desde",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search timer",
-    "Suchtimer",
-    "",
-    "Cerca timer",
-    "Zoektimer",
-    "",
-    "Programmation de recherche",
-    "",
-    "Hakuajastin",
-    "",
-    "Programación por búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit blacklist",
-    "Ausschlussliste editieren",
-    "",
-    "Modifica lista esclusioni",
-    "Wijzig blacklist",
-    "",
-    "Editer la liste des exclus",
-    "",
-    "Muokkaa mustaa listaa",
-    "",
-    "Editar la lista negra",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "phrase",
-    "Ausdruck",
-    "",
-    "frase",
-    "uitdruk",
-    "",
-    "Phrase",
-    "",
-    "fraasi",
-    "",
-    "frase",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "all words",
-    "alle Worte",
-    "",
-    "tutte le parole",
-    "alle woorden",
-    "",
-    "tout les mots",
-    "",
-    "kaikki sanat",
-    "",
-    "palabra completa",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "at least one word",
-    "ein Wort",
-    "",
-    "almeno una parola",
-    "tenminste een woord",
-    "",
-    "un mot",
-    "",
-    "yksi sana",
-    "",
-    "mínimo 1 palabra",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "match exactly",
-    "exakt",
-    "",
-    "corrispondenza esatta",
-    "precies passend",
-    "",
-    "correspond exactement",
-    "",
-    "täsmällinen",
-    "",
-    "exacta",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "regular expression",
-    "regulärer Ausdruck",
-    "",
-    "espressione regolare",
-    "reguliere uitdrukking",
-    "",
-    "expression réguliere",
-    "",
-    "säännöllinen lauseke",
-    "",
-    "expresión regular",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "fuzzy",
-    "unscharf",
-    "",
-    "imprecisa",
-    "fuzzy",
-    "",
-    "imprécis",
-    "",
-    "sumea",
-    "",
-    "imprecisa",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "user-defined",
-    "benutzerdefiniert",
-    "",
-    "definito dall'utente",
-    "gebruiker-gedefinieerd",
-    "",
-    "definition d'utilisateur",
-    "",
-    "valitut",
-    "",
-    "definido por usuario",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "interval",
-    "Bereich",
-    "",
-    "intervallo",
-    "interval",
-    "",
-    "interval",
-    "",
-    "kyllä",
-    "",
-    "intervalo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "channel group",
-    "Kanalgruppe",
-    "",
-    "gruppo canali",
-    "kanaalgroep",
-    "",
-    "Groupe de chaînes",
-    "",
-    "kanavaryhmä",
-    "",
-    "grupo de canales",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "only FTA",
-    "ohne PayTV",
-    "",
-    "solo gratuiti",
-    "alleen FTA",
-    "",
-    "sans TV-Payante",
-    "",
-    "vapaat kanavat",
-    "",
-    "sólo en abierto",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search term",
-    "Suche",
-    "",
-    "Termine ricerca",
-    "Zoekterm",
-    "",
-    "Rechercher",
-    "",
-    "Hakutermi",
-    "",
-    "Buscar palabra",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search mode",
-    "Suchmodus",
-    "",
-    "Modalità di ricerca",
-    "Zoekinstellingen",
-    "",
-    "Mode de recherche",
-    "",
-    "Hakutapa",
-    "",
-    "Modo de búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Tolerance",
-    "Toleranz",
-    "",
-    "Tolleranza",
-    "Tolerantie",
-    "",
-    "Tolérance",
-    "",
-    "Toleranssi",
-    "",
-    "Tolerancia",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Match case",
-    "Groß/klein",
-    "",
-    "Maiuscolo/Minuscolo",
-    "Case sensitive",
-    "",
-    "Maj/Minuscule",
-    "",
-    "Huomioi kirjainkoko",
-    "",
-    "Mayúscula/minúscula",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use title",
-    "Verw. Titel",
-    "",
-    "Utilizza titolo",
-    "Gebruik titel",
-    "",
-    "Utiliser titre",
-    "",
-    "Käytä ohjelmanimeä",
-    "",
-    "Usar título",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use subtitle",
-    "Verw. Untertitel",
-    "",
-    "Utilizza sottotitolo",
-    "Gebruik ondertitel",
-    "",
-    "Utiliser sous-titre",
-    "",
-    "Käytä lyhyttä ohjelmakuvausta",
-    "",
-    "Usar subtítulo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use description",
-    "Verw. Beschreibung",
-    "",
-    "Utilizza descrizione",
-    "Gebruik beschrijving",
-    "",
-    "Utiliser la description",
-    "",
-    "Käytä ohjelmakuvausta",
-    "",
-    "Usar descripción",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use extended EPG info",
-    "Verw. erweiterte EPG Info",
-    "",
-    "Utilizza informazioni EPG estesa",
-    "Gebruik uitgebreide EPG info",
-    "",
-    "Utiliser les infos EPG avancées",
-    "",
-    "Käytä laajennettua ohjelmaopasta",
-    "",
-    "Usar info ampliada de la EPG",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Ignore missing categories",
-    "Ignoriere fehlende Kat.",
-    "",
-    "Ignora categorie mancanti",
-    "Negeer ontbrekende categoriÃen",
-    "",
-    "Ignorer les catégories indisponible",
-    "",
-    "Jätä puuttuvat kategoriat huomioimatta",
-    "",
-    "Ignorar categorías perdidas",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use channel",
-    "Verw. Kanal",
-    "",
-    "Utilizza canale",
-    "Gebruik kanaal",
-    "",
-    "Utiliser les chaînes",
-    "",
-    "Käytä kanavaa",
-    "",
-    "Usar canal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  from channel",
-    "  von Kanal",
-    "",
-    "  da canale",
-    "  van kanaal",
-    "",
-    "  de la Chaîne",
-    "",
-    "  Kanavasta",
-    "",
-    "  desde el canal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  to channel",
-    "  bis Kanal",
-    "",
-    "  a canale",
-    "  tot kanaal",
-    "",
-    "  à la Chaîne",
-    "",
-    "  Kanavaan",
-    "",
-    "  hasta el canal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Channel group",
-    "Kanalgruppe",
-    "",
-    "Gruppo canali",
-    "Kanaal groep",
-    "",
-    "Groupe de chaînes",
-    "",
-    "Kanavaryhmä",
-    "",
-    "Grupo de canales",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use time",
-    "Verw. Uhrzeit",
-    "",
-    "Utilizza orario",
-    "Gebruik tijd",
-    "",
-    "Utiliser l'heure",
-    "",
-    "Käytä aloitusaikaa",
-    "",
-    "Usar horario",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  Start after",
-    "  Start nach",
-    "",
-    "  Inizia dopo",
-    "  Start na",
-    "",
-    "  Départ après",
-    "",
-    "  Aloitusaika aikaisintaan",
-    "",
-    "  Comenzar después",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  Start before",
-    "  Start vor",
-    "",
-    "  Inizia prima",
-    "  Start voor",
-    "",
-    "  Départ avant",
-    "",
-    "  Aloitusaika viimeistään",
-    "",
-    "  Comenzar antes",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use duration",
-    "Verw. Dauer",
-    "",
-    "Utilizza durata",
-    "Gebruik tijdsduur",
-    "",
-    "Durée d'utilisation",
-    "",
-    "Käytä kestoaikaa",
-    "",
-    "Usar duración",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  Min. duration",
-    "  Min. Dauer",
-    "",
-    "   Durata Minima",
-    "  Min. duur",
-    "",
-    "  Durée min.",
-    "",
-    "  Kestoaika vähintään",
-    "",
-    "  Duración mín.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  Max. duration",
-    "  Max. Dauer",
-    "",
-    "   Durata Massima",
-    "  Max. tijdsduur",
-    "",
-    "  Durée max.",
-    "",
-    "  Kestoaika enintään",
-    "",
-    "  Duración máx.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use day of week",
-    "Verw. Wochentag",
-    "",
-    "Utilizza giorno settimana",
-    "Gebruik dag van de week",
-    "",
-    "Utiliser les jours de la semaine",
-    "",
-    "Käytä viikonpäivää",
-    "",
-    "Usar día de la semana",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Day of week",
-    "Wochentag",
-    "",
-    "Giorno settimana",
-    "Dag van de week",
-    "",
-    "Jours de la semaine",
-    "",
-    "Viikonpäivä",
-    "",
-    "Día de la semana",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use global",
-    "Global verwenden",
-    "",
-    "Utilizza globale",
-    "",
-    "",
-    "",
-    "",
-    "Käytä globaalina",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Templates",
-    "Vorlagen",
-    "",
-    "Modelli",
-    "Sjablonen",
-    "",
-    "Modéles",
-    "",
-    "Mallipohjat",
-    "",
-    "Plantillas",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "*** Invalid Channel ***",
-    "",
-    "",
-    "*** Canale NON valido ***",
-    "*** Ongeldig Kanaal ***",
-    "",
-    "*** Chaîne indisponible ***",
-    "",
-    "*** Virheellinen kanavavalinta ***",
-    "",
-    "*** Canal no válido ***",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Please check channel criteria!",
-    "Bitte Senderkriterien prüfen!",
-    "",
-    "Controlla i criteri del canale!",
-    "AUB kanaal criteria nakijken",
-    "",
-    "Vérifier le critère de la chaîne!",
-    "",
-    "Tarkasta hakuehdot!",
-    "",
-    "¡Compruebe requisitos del canal!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit$Delete blacklist?",
-    "Ausschlussliste löschen?",
-    "",
-    "Eliminare lista esclusioni?",
-    "Verwijder blacklist?",
-    "",
-    "Effacer la liste des exclus",
-    "",
-    "Poistetaanko musta lista?",
-    "",
-    "¿Borrar la lista negra?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Repeats",
-    "Wiederholung",
-    "",
-    "Repliche",
-    "Herhalingen",
-    "",
-    "Répétitions",
-    "",
-    "Toistuvat",
-    "",
-    "Repeticiones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Create search",
-    "Suche anlegen",
-    "",
-    "Crea ricerca",
-    "Maak een zoekactie aan",
-    "",
-    "Créer une recherche",
-    "",
-    "Luo haku",
-    "",
-    "Crear una búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search in recordings",
-    "Suche in Aufnahmen",
-    "",
-    "Cerca nelle registrazioni",
-    "Zoek in opname's",
-    "",
-    "Recherche dans enregistrement",
-    "",
-    "Etsi tallenteista",
-    "",
-    "Buscar en las grabaciones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Mark as 'already recorded'?",
-    "als 'bereits aufgezeichnet' markieren?",
-    "",
-    "Segnare come 'già registrato'?",
-    "Markeer als 'reeds opgenomen'?",
-    "",
-    "marquer comme 'déjà enregistré'?",
-    "",
-    "Merkitse tallennetuksi",
-    "",
-    "¿Marcar como 'ya grabado'?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Add/Remove to/from switch list?",
-    "In/Aus Umschaltliste?",
-    "",
-    "Aggiungere/Rimuovere a/dalla lista modifiche?",
-    "",
-    "",
-    "Ajouter/Effacer de la liste de changement?",
-    "",
-    "Lisää/poista kanavanvaihtolistalle",
-    "",
-    "¿Añadir/Borrar a/de la lista de cambio?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Create blacklist",
-    "Ausschlussliste anlegen",
-    "",
-    "Crea lista esclusioni",
-    "Maak nieuwe blacklist",
-    "",
-    "Créer la liste d'exclusions",
-    "",
-    "Lisää mustalle listalle",
-    "",
-    "Crear lista negra",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "EPG Commands",
-    "EPG Befehle",
-    "",
-    "Comandi EPG",
-    "EPG commando's",
-    "",
-    "Commande EPG",
-    "",
-    "Komennot",
-    "",
-    "Órdenes EPG",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Already running!",
-    "Läuft bereits!",
-    "",
-    "In esecuzione!",
-    "Reeds actief!",
-    "",
-    "Est déjà en cours",
-    "",
-    "Nyt menossa!",
-    "",
-    "¡Ya se está ejecutando!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Add to switch list?",
-    "In Umschaltliste aufnehmen?",
-    "",
-    "Aggiungere alla lista modifiche?",
-    "Voeg toe aan schakellijst?",
-    "",
-    "Ajouter à la liste de changement de chaine?",
-    "",
-    "Lisätäänkö kanavanvaihtolistalle?",
-    "",
-    "¿Añadir a la lista de cambio?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Delete from switch list?",
-    "Aus Umschaltliste entfernen?",
-    "",
-    "Eliminare dalla lista modifiche?",
-    "Verwijder van schakellijst?",
-    "",
-    "Effacer de la liste de changement?",
-    "",
-    "Poistetaanko kanavanvaihtolistalta?",
-    "",
-    "¿Borrar de la lista de cambio?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Details",
-    "Details",
-    "",
-    "Dettagli",
-    "Details",
-    "",
-    "Détails",
-    "",
-    "Lisätiedot",
-    "",
-    "Detalles",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Filter",
-    "Filter",
-    "",
-    "Filtro",
-    "Filter",
-    "Filtre",
-    "Filtre",
-    "Suodata",
-    "Suodata",
-    "",
-    "Filtro",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Show all",
-    "Zeige alle",
-    "",
-    "Mostra tutti",
-    "Toon alles",
-    "",
-    "Montrer tous",
-    "",
-    "Näytä kaikki",
-    "",
-    "Mostrar todo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "conflicts",
-    "Konflikte",
-    "",
-    "conflitti",
-    "conflicten",
-    "",
-    "Conflits",
-    "",
-    "päällekkäisyyttä",
-    "",
-    "conflictos",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "no conflicts!",
-    "keine Konflikte!",
-    "",
-    "nessun conflitto!",
-    "geen conflicten!",
-    "",
-    "pas de conflits",
-    "",
-    "ei päällekkäisyyksiä!",
-    "",
-    "¡no hay conflictos!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "no important conflicts!",
-    "keine wichtigen Konflikte!",
-    "",
-    "nessun conflitto importante!",
-    "geen belangrijke conflicten!",
-    "",
-    "pas de conflits importants!",
-    "",
-    "ei merkitseviä päällekkäisyyksiä!",
-    "",
-    "¡no hay conflictos importantes!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "C",
-    "K",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-#if VDRVERSNUM >= 10302
-    "C",
-#endif
-#if VDRVERSNUM >= 10307
-    "C",
-#endif
-#if VDRVERSNUM >= 10313
-    "C",
-#endif
-#if VDRVERSNUM >= 10316
-    "C",
-#endif
-#if VDRVERSNUM >= 10342
-    "C",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Repeats",
-    "Wiederh.",
-    "",
-    "Repliche",
-    "Herhalingen",
-    "",
-    "Répétitions",
-    "",
-    "Toistuvat",
-    "",
-    "Repeticiones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "no check",
-    "ohne Überwachung",
-    "",
-    "nessuna verifica",
-    "geen controle",
-    "",
-    "sans surveillance",
-    "",
-    "ei valvontaa",
-    "",
-    "sin comprobación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "by channel and time",
-    "anhand Sender/Uhrzeit",
-    "",
-    "per canale e ora",
-    "op kanaal en tijd",
-    "",
-    "à partir chaînes/heures",
-    "",
-    "kanava ja aika",
-    "",
-    "por canal y hora",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "by event ID",
-    "anhand Sendungskennung",
-    "",
-    "per ID evento",
-    "op event-ID",
-    "",
-    "à partir du numéro d'émission",
-    "",
-    "tapahtuman tunniste",
-    "",
-    "por ID de emisión",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Select directory",
-    "Verzeichnis wählen",
-    "",
-    "Seleziona directory",
-    "Selecteer map",
-    "",
-    "Selectionner le dossier",
-    "",
-    "Valitse hakemisto",
-    "",
-    "Seleccionar directorio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Level",
-    "Ebene",
-    "",
-    "Livello",
-    "Niveau",
-    "",
-    "Niveau",
-    "",
-    "Taso",
-    "",
-    "Nivel",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Event",
-    "",
-    "",
-    "Evento",
-    "Gebeurtenis",
-    "",
-    "Événement",
-    "",
-    "Tapahtuma",
-    "",
-    "Emisión",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Favorites",
-    "Favoriten",
-    "",
-    "Preferiti",
-    "Favorieten",
-    "",
-    "Favoris",
-    "",
-    "Suosikit",
-    "",
-    "Favoritos",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search results",
-    "Suchergebnisse",
-    "",
-    "Risultati della ricerca",
-    "Zoekresultaten",
-    "",
-    "Résultat de recherche",
-    "",
-    "Hakutulokset",
-    "",
-    "Resultados de la búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Timer conflict! Show?",
-    "Timer-Konflikt! Anzeigen?",
-    "",
-    "Conflitto timer! Mostrare?",
-    "Timerconflict! Tonen?",
-    "",
-    "Afficher les conflits de programmation?",
-    "",
-    "Päällekkäisiä ajastimia! Näytetäänkö?",
-    "",
-    "¿Mostrar conflicto de programación?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Directory",
-    "Verzeichnis",
-    "",
-    "Directory",
-    "Map",
-    "",
-    "Dossier",
-    "",
-    "Hakemisto",
-    "",
-    "Directorio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Channel",
-    "",
-    "",
-    "Canale",
-    "Kanaal",
-    "",
-    "Chaîne",
-    "",
-    "Kanava",
-    "",
-    "Canal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Childlock",
-    "Kindersicherung",
-    "",
-    "Filtro famiglia",
-    "Kinderslot",
-    "",
-    "Adulte",
-    "",
-    "Lapsilukko",
-    "",
-    "Bloqueo niños",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Timer check",
-    "Überwachung",
-    "",
-    "Verifica timer",
-    "Timercontrole",
-    "",
-    "surveiller",
-    "",
-    "Valvontatapa",
-    "",
-    "Comprobación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "recording with device",
-    "Aufnahme mit Gerät",
-    "",
-    "registra con scheda",
-    "neemt op met kaart",
-    "",
-    "Enregistrement avec appareil",
-    "",
-    "Tallennetaan laitteella",
-    "",
-    "grabación con dispositivo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$With subtitle",
-    "Mit Untertitel",
-    "",
-    "Con sottotitoli",
-    "Met ondertitel",
-    "",
-    "Avec les sous-titres",
-    "",
-    "Kuvaus",
-    "",
-    "Con subtítulo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Without subtitle",
-    "Ohne Untertitel",
-    "",
-    "Senza sottotitoli",
-    "Zonder ondertitel",
-    "",
-    "Sans sous-titres",
-    "",
-    "Ei kuvausta",
-    "",
-    "Sin subtítulo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Extended",
-    "Erweitert",
-    "",
-    "Esteso",
-    "Uitgebreid",
-    "",
-    "Extention",
-    "",
-    "Laaja",
-    "",
-    "Ampliado",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Simple",
-    "Einfach",
-    "",
-    "Semplice",
-    "Eenvoudig",
-    "",
-    "Simple",
-    "",
-    "Suppea",
-    "",
-    "Simple",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use blacklists",
-    "Verw. Ausschlusslisten",
-    "",
-    "Utilizza lista esclusioni",
-    "Gebruik blacklists",
-    "",
-    "Utiliser la liste des exclus",
-    "",
-    "Käytä mustia listoja",
-    "",
-    "Usar listas negras",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit$Search text too short - use anyway?",
-    "Suchtext zu kurz - trotzdem verwenden?",
-    "",
-    "Il testo da cercare è troppo corto - continuare?",
-    "Zoektekst te kort - toch gebruiken?",
-    "",
-    "Texte de recherche est trop court - l'utiliser comme même?",
-    "",
-    "Liian suppea hakuehto - etsitäänkö silti?",
-    "",
-    "El texto a buscar es muy corto - ¿usar de todas formas?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$by name",
-    "nach Name",
-    "",
-    "Per nome",
-    "op naam",
-    "",
-    "par nom",
-    "",
-    "Nimi",
-    "",
-    "por nombre",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$by date",
-    "nach Datum",
-    "",
-    "Per data",
-    "op datum",
-    "",
-    "par la date",
-    "",
-    "Päivämäärä",
-    "",
-    "por fecha",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Delete all",
-    "Alle löschen",
-    "",
-    "Elimina tutti",
-    "Verwijder alles",
-    "",
-    "Effacer toutes",
-    "",
-    "Poista kaikki",
-    "",
-    "Borrar todo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Recordings",
-    "",
-    "",
-    "Registrazioni",
-    "Opnames",
-    "",
-    "Enregistrement",
-    "",
-    "Tallenteet",
-    "",
-    "Grabaciones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit$Delete entry?",
-    "Eintrag löschen?",
-    "",
-    "Eliminare voce?",
-    "Verwijder regel?",
-    "",
-    "Effacer l'entrée",
-    "",
-    "Poista hakutermi",
-    "",
-    "¿Borrar entrada?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit$Delete all entries?",
-    "Alle Einträge löschen?",
-    "",
-    "Eliminare tutte le voci?",
-    "Verwijder alle regels?",
-    "",
-    "Effacer toutes les entrées",
-    "",
-    "Poista kaikki hakutermit",
-    "",
-    "¿Borrar todas las entradas?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Summary",
-    "Inhalt",
-    "",
-    "Sommario",
-    "Samenvatting",
-    "",
-    "Contenu",
-    "",
-    "Yhteenveto",
-    "",
-    "Resumen",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Auxiliary info",
-    "Zusatzinfo",
-    "",
-    "Informazioni ausiliarie",
-    "Reserve info",
-    "",
-    "Informations supplémentaires",
-    "",
-    "Lisätiedot",
-    "",
-    "Más información",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Aux info",
-    "Zusatzinfo",
-    "",
-    "Info ausiliarie",
-    "Res. info",
-    "",
-    "Infos supplémentaires",
-    "",
-    "Lisätiedot",
-    "",
-    "Más info",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search actions",
-    "Suchaktionen",
-    "",
-    "Azioni ricerca",
-    "Zoekcriteria acties",
-    "",
-    "Actions de recherche",
-    "",
-    "Hakukomennot",
-    "",
-    "Acciones de búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Execute search",
-    "Suche ausführen",
-    "",
-    "Esegui ricerca",
-    "Voer zoekcriterium uit",
-    "",
-    "Effectuer la recherche",
-    "",
-    "Suorita haku",
-    "",
-    "Realizar búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use as search timer on/off",
-    "Als Suchtimer verwenden an/aus",
-    "",
-    "Utilizza come timer ricerca attivo/disattivo",
-    "Gebruik als zoek-timer aan/uit",
-    "",
-    "Utiliser comme recherche oui/non",
-    "",
-    "Aseta/poista hakuajastintoiminto",
-    "",
-    "Usar como prog. por búsqueda sí/no",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Trigger search timer update",
-    "Suchtimer jetzt aktualisieren",
-    "",
-    "Attiva aggiornamento timer ricerca",
-    "Start verversen zoektimer",
-    "",
-    "Selection",
-    "",
-    "Päivitä hakuajastimet",
-    "",
-    "Actualizar prog. por búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show recordings done",
-    "Zeige erledigte Aufnahmen",
-    "",
-    "Mostra registrazioni completate",
-    "Tonen opnames gereed",
-    "",
-    "Afficher les enregistrements effectués",
-    "",
-    "Näytä tehdyt tallennukset",
-    "",
-    "Mostrar grabaciones realizadas",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show timers created",
-    "Zeige erstellte Timer",
-    "",
-    "Mostra timer creati",
-    "Toon aangemaakte timers",
-    "",
-    "Afficher la programmation effectuée",
-    "",
-    "Näytä luodut ajastimet",
-    "",
-    "Mostrar programaciones creadas",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Create a copy",
-    "Kopie anlegen",
-    "",
-    "Crea una copia",
-    "Maak een kopie",
-    "",
-    "Créer une copie",
-    "",
-    "Kopioi",
-    "",
-    "Crear una copia",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use as template",
-    "Als Vorlage verwenden",
-    "",
-    "Utilizza come modello",
-    "Gebruik als sjabloon",
-    "",
-    "Utiliser comme modèles",
-    "",
-    "Käytä mallipohjana",
-    "",
-    "Usar como plantilla",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show switch list",
-    "Zeige Umschaltliste",
-    "",
-    "Mostra lista modifiche",
-    "Toon schakellijst",
-    "",
-    "Afficher liste de changement",
-    "",
-    "Näytä kanavanvaihtolista",
-    "",
-    "Mostrar lista de cambio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show blacklists",
-    "Zeige Ausschlusslisten",
-    "",
-    "Mostra lista esclusioni",
-    "Toon blacklists",
-    "",
-    "Afficher la liste des exclus",
-    "",
-    "Näytä mustat listat",
-    "",
-    "Mostrar listas negras",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Delete created timers?",
-    "Erstellte Timer löschen?",
-    "",
-    "Eliminare timer creati?",
-    "Verwijder aangemaakte timers?",
-    "",
-    "Effacer les programmations crées",
-    "",
-    "Poista haulla luodut ajastimet",
-    "",
-    "¿Borrar las programaciones creadas?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Timer conflict check",
-    "Auf Timer-Konflikte prüfen",
-    "",
-    "Verifica conflitti timer",
-    "Timerconflict controle",
-    "",
-    "Vérifier les conflits de programmation",
-    "",
-    "Tarkista päällekkäiset ajastimet",
-    "",
-    "Comprobar conflictos de programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Disable associated timers too?",
-    "Zugehörige Timer auch deaktivieren?",
-    "",
-    "Disabilitare anche i timer associati?",
-    "Schakel gemeenschappelijke timers ook uit?",
-    "",
-    "Désactiver la programmation correspondante",
-    "",
-    "Poistetaanko käytöstä myös assosioidut ajastimet?",
-    "",
-    "¿Desactivar las programaciones asociadas?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Activate associated timers too?",
-    "Zugehörige Timer auch aktivieren?",
-    "",
-    "Attivare anche i timer associati?",
-    "Activeer gemeenschappelijke timers ook?",
-    "",
-    "Activer la progammation correspondante",
-    "",
-    "Otetaanko käyttöön myös assosioidut ajastimet?",
-    "",
-    "¿Activar las programaciones asociadas?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search timers activated in setup.",
-    "Suchtimer wurden im Setup aktiviert.",
-    "",
-    "Timer di ricerca attivati nelle opzioni.",
-    "Zoektimers geactiveerd in instellingen",
-    "",
-    "La recherche a été activée dans la configuration.",
-    "",
-    "Hakuajastimet aktivoitu asetuksista",
-    "",
-    "Progs. por búsqueda activas en la configuración.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Run search timer update?",
-    "Suchtimer-Update ausführen?",
-    "",
-    "Eseguire aggiornamento ricerca timer?",
-    "Start verversen zoektimer? ",
-    "",
-    "Mise à jours programmation de recherche?",
-    "",
-    "Päivitetäänkö hakuajastimet?",
-    "",
-    "¿Actualizar programación por búsqueda?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Copy this entry?",
-    "Diesen Eintrag kopieren?",
-    "",
-    "Copiare questo valore?",
-    "KopiÃer deze regel?",
-    "",
-    "Copier cette entrée",
-    "",
-    "Kopioidaanko tämä hakuajastin?",
-    "",
-    "¿Copiar esta entrada?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Copy",
-    "Kopie",
-    "",
-    "Copia",
-    "KopiÃer",
-    "",
-    "Copier",
-    "",
-    "Kopio",
-    "",
-    "Copiar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Copy this entry to templates?",
-    "Diesen Eintrag in Vorlagen kopieren?",
-    "",
-    "Copiare questo valore nei modelli?",
-    "Kopiëer deze regel naar sjablonen",
-    "",
-    "Copier cette entrée dans modèles?",
-    "",
-    "Kopioidaanko hakutermi mallipohjaksi?",
-    "",
-    "¿Copiar esta entrada a plantillas?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Delete all timers created from this search?",
-    "Alle Timer löschen, die von dieser Suche erzeugt wurden?",
-    "",
-    "Eliminare tutti i timer creati da questa ricerca?",
-    "Verwijder alle timers aangemaakt door dit zoekcriterium?",
-    "",
-    "Effacer les programmations issues de cette recherche?",
-    "",
-    "Poistetaanko kaikki tällä haulla luodut ajastimet?",
-    "",
-    "¿Borrar las programaciones creadas por esta búsqueda?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Actions",
-    "Aktionen",
-    "",
-    "Azioni",
-    "Acties",
-    "",
-    "Actions",
-    "",
-    "Komennot",
-    "",
-    "Acciones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search entries",
-    "Sucheinträge",
-    "",
-    "Valori ricerca",
-    "Zoekregels",
-    "",
-    "Entrée de recherche",
-    "",
-    "Hakutermit",
-    "",
-    "Entradas de búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "active",
-    "aktiv",
-    "",
-    "attivo",
-    "actief",
-    "",
-    "actif",
-    "",
-    "aktiivista",
-    "",
-    "activa",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit$Delete search?",
-    "Suche löschen?",
-    "",
-    "Eliminare criteri?",
-    "Zoekcriterium wissen?",
-    "",
-    "Effacer la recherche",
-    "",
-    "Poistetaanko haku?",
-    "",
-    "¿Borrar la búsqueda?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit search",
-    "Suche editieren",
-    "",
-    "Modifica ricerca",
-    "Bewerk zoekcriteria",
-    "",
-    "Edition recherche",
-    "",
-    "Muokkaa hakua",
-    "",
-    "Editar búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Record",
-    "Aufnehmen",
-    "Posnemi",
-    "Registra",
-    "Opnemen",
-    "Gravar",
-    "Enregistre",
-    "Ta opp",
-    "Tallenna",
-    "Nagraj",
-    "Grabar",
-    "ÅããñáöÞ",
-    "Inspelning",
-    "Înregistr.",
-    "Felvenni",
-    "Gravar",
-#if VDRVERSNUM >= 10302
-    "·ÐßØáì",
-#endif
-#if VDRVERSNUM >= 10307
-    "Snimi",
-#endif
-#if VDRVERSNUM >= 10313
-    "Salvesta",
-#endif
-#if VDRVERSNUM >= 10316
-    "Optag",
-#endif
-#if VDRVERSNUM >= 10342
-    "Nahrát",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Announce by OSD",
-    "per OSD ankündigen",
-    "",
-    "Annuncia tramite OSD",
-    "Alleen aankondigen (geen timer)",
-    "",
-    "Annoncer seulement début d'une programme",
-    "",
-    "muistutus kuvaruutunäytölle",
-    "",
-    "Sólo avisar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Switch only",
-    "Nur umschalten",
-    "",
-    "Cambia soltanto",
-    "Alleen schakelen",
-    "",
-    "Seulement changer de chaine",
-    "",
-    "kanavanvaihto",
-    "",
-    "Cambiar de canal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Announce and switch",
-    "Ankündigen und Umschalten",
-    "",
-    "Annuncia e cambia",
-    "Alleen aankondigen (geen timer)",
-    "",
-    "Annoncer seulement début d'une programme",
-    "",
-    "muistutus ja kanavanvaihto",
-    "",
-    "Avisar y cambiar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Announce by mail",
-    "per Mail ankündigen",
-    "",
-    "Annuncia tramite email",
-    "Alleen aankondigen (geen timer)",
-    "",
-    "Annoncer seulement début d'une programme",
-    "",
-    "muistutus sähköpostitse",
-    "",
-    "Sólo avisar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "only globals",
-    "nur globale",
-    "",
-    "solo globali",
-    "",
-    "",
-    "",
-    "",
-    "vain globaalit",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Selection",
-    "Auswahl",
-    "",
-    "Selezione",
-    "Selectie",
-    "",
-    "Selection",
-    "",
-    "valittu",
-    "",
-    "selección",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "all",
-    "alle",
-    "",
-    "tutti",
-    "alles",
-    "",
-    "tous",
-    "",
-    "kaikki",
-    "",
-    "todo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "count recordings",
-    "Anzahl Aufnahmen",
-    "",
-    "conteggia registrazioni",
-    "tel opnames",
-    "",
-    "compter enregistrements",
-    "",
-    "lukumäärän mukaan",
-    "",
-    "incluir grabaciones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "count days",
-    "Anzahl Tage",
-    "",
-    "conteggia giorni",
-    "tel dagen",
-    "",
-    "compter jours",
-    "",
-    "päivien mukaan",
-    "",
-    "incluir días",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "if present",
-    "wenn vorhanden",
-    "",
-    "se presente",
-    "",
-    "",
-    "",
-    "",
-    "jos olemassa",
-    "",
-    "si existe",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "same day",
-    "gleicher Tag",
-    "",
-    "stesso giorno",
-    "Eerste dag",
-    "",
-    "Dernier jour",
-    "",
-    "sama päivä",
-    "",
-    "Último día",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "same week",
-    "gleiche Woche",
-    "",
-    "stessa settimana",
-    "Dag van de week",
-    "",
-    "Jours de la semaine",
-    "",
-    "sama viikko",
-    "",
-    "Día de la semana",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "same month",
-    "gleicher Monat",
-    "",
-    "stesso mese",
-    "",
-    "",
-    "",
-    "",
-    "sama kuukausi",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Template name",
-    "Vorlagenname",
-    "",
-    "Nome modello",
-    "Naam van sjabloon",
-    "",
-    "Nom du modèle",
-    "",
-    "Mallipohjan nimi",
-    "",
-    "Nombre de la plantilla",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify the name of the template.",
-    "Hier den Namen für die Vorlage angeben.",
-    "",
-    "Specifica il nome del modello.",
-    "Geef de naam op van het sjabloon",
-    "",
-    "Spécifier le nom du modèle.",
-    "",
-    "Määrittelee mallipohjan nimen.",
-    "",
-    "Especifique el nombre de la plantilla.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Specify here the term to search for.",
-    "Hier den Begriff angeben, nach dem gesucht werden soll.",
-    "",
-    "Specifica qui il termine da cercare.",
-    "Vul hier de zoekterm in.",
-    "",
-    "Spécifier ici le term de la recherche.",
-    "",
-    "Määrittelee käytettävän hakutermin.",
-    "",
-    "Especifique la palabra a buscar.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$The following search modes exist:\n\n- phrase: searches for sub terms\n- all words: all single words must appear\n- at least one word: at least one single word must appear\n- match exactly: must match exactly\n- regular expression: match a regular expression\n- fuzzy searching: searches approximately",
-    "Es gibt folgende Such-Modi:\n\n- Ausdruck: sucht nach einem Teil-Ausdruck\n- alle Worte: alle einzelnen Worte müssen auftauchen\n- ein Wort: nur ein Wort muss auftauchen\n- exakt: genaue Übereinstimmung\n- regulärer Ausdruck: sucht nach reg. Ausdruck\n- unscharf: sucht nach ungefährer Übereinstimmung",
-    "",
-    "Esistono i seguenti metodi di ricerca:\n\n- frase: ricerca per sotto termini\n- tutte le parole: tutte le singole parole presenti\n- almeno una parola: almeno una parola presente\n- esatta corrispondenza: deve corrispondere esattamente\n- espressione regolare: corrisponde a una espressione regolare\n- ricerca imprecisa: ricerca approssimativamente",
-    "Er kan gekozen worden uit de volgende zoekinstellingen:\n- alle woorden: alle los voorkomende woorden moeten gevonden worden\n- minstens ÃÃn woord: minstens én woord moet worden gevonden\n- past precies: de hele zoekterm komt exact overeen\n- reguliere expressie: resultaat past bij uitkomst expressie\n- 'fuzzy' zoeken: zoek naar mogelijke matches",
-    "",
-    "",
-    "",
-    "Käytössä ovat seuraavat hakutavat:\n\n- fraasi: määritelty fraasi pitää löytyä\n- kaikki sanat: kaikkien määriteltyjen sanojen pitää löytyä\n- yksi sana: yksi määritellyistä sanoista pitää löytyä\n- täsmällinen: ehdon pitää löytyä täsmällisesti\n- säännöllinen lauseke: määritellyn säännöllisen lausekkeen pitää löytyä\n- sumea: samankaltaisia pitää löytyä määriteltyyn ehtoon nähden",
-    "",
-    "Existen los siguientes modos de búsqueda:\n\n- frase: búsquedas por subpalabras\n- palabra completa: deben aparecer todas las palabras\n- mínimo 1 palabra: debe aparecer al menos una palabra\n- exacta: debe coincidir exactamente\n- expresión regular: coincidir con una expresión regular\n- imprecisa: búsquedas por aproximación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$This sets the tolerance of fuzzy searching. The value represents the allowed errors.",
-    "Hiermit wird die Toleranz für die unscharfe Suche angegeben. Der Wert entspricht den erlaubten Fehlern.",
-    "",
-    "Questo imposta la tolleranza della ricerca imprecisa. Il valore rappresenta gli errori ammessi.",
-    "Hier wordt de tolerantie van de 'fuzzy'zoekactie opgegeven. De waarde vertegenwoordigd de toegestane fouten",
-    "",
-    "",
-    "",
-    "Määrittelee toleranssin sumealle haulle. Arvo kertoo sallittujen virheiden lukumäärän.",
-    "",
-    "Establece la tolerancia de la búsqueda imprecisa. El valor representa los errores permitidos.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'Yes' if your search should match the case.",
-    "Auf 'Ja' setzen, wenn die Suche die Groß-/Kleinschreibung beachtet soll.",
-    "",
-    "Imposta 'Sì' nel caso la ricerca dovesse corrispondere.",
-    "Kies 'ja' idien de zoekactie case-sensitive moet zijn",
-    "",
-    "",
-    "",
-    "Tällä asetuksella pystyt huomioimaan kirjainkoon vaikutuksen hakutulokseen.",
-    "",
-    "Establecer a 'Sí' cuando la búsqueda deba coincidir con el valor dado.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'Yes' if you like to search in the title of an event.",
-    "Auf 'Ja' setzen, wenn die Suche im Titel einer Sendung stattfinden soll.",
-    "",
-    "Imposta 'Sì' se vuoi cercare il titolo di un evento.",
-    "Kies 'ja' indien de zoekactie moet zoeken in de titel van het programma",
-    "",
-    "",
-    "",
-    "Tällä asetuksella pystyt etsimään ohjelmanimestä.",
-    "",
-    "Establecer a 'Sí' cuando desee buscar en el título de una emisión.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'Yes' if you like to search in the episode of an event.",
-    "Auf 'Ja' setzen, wenn die Suche im Untertitel einer Sendung stattfinden soll.",
-    "",
-    "Imposta 'Sì' se vuoi cercare l'episodio di un evento.",
-    "Kies 'ja' indien de zoakactie moet zoeken in de aflevering van een programma",
-    "",
-    "",
-    "",
-    "Tällä asetuksella pystyt etsimään lyhyestä ohjelmakuvauksesta.",
-    "",
-    "Establecer a 'Sí' cuando desee buscar en el episodio de una emisión.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'Yes' if you like to search in the summary of an event.",
-    "Auf 'Ja' setzen, wenn die Suche in der Zusammenfassung einer Sendung stattfinden soll.",
-    "",
-    "Imposta 'Sì' se vuoi cercare il sommario di un evento.",
-    "Kies 'ja' indien de zoekactie moet zoeken in de samenvatting van een programma.",
-    "",
-    "",
-    "",
-    "Tällä asetuksella pystyt etsimään ohjelmakuvauksesta.",
-    "",
-    "Establecer a 'Sí' cuando desee buscar en el resumen de una emisión.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use content descriptor",
-    "Verw. Kennung für Inhalt",
-    "",
-    "Utilizza contenuto descrizione",
-    "Gebruik beschrijving",
-    "",
-    "Utiliser la description",
-    "",
-    "Käytä sisältökuvausta",
-    "",
-    "Usar descripción",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$Set this to 'Yes' if you want to search the contents by a descriptor.",
-    "Auf 'Ja' setzen, wenn die Suche anhand Kennungen zum Inhalt der Sendung stattfinden soll.",
-    "",
-    "Imposta 'Sì' se vuoi cercare i contenuti per descrizione.",
-    "Kies 'ja' indien de zoekactie moet zoeken in de titel van het programma",
-    "",
-    "Mettez 'oui',si le compte mail utilise l'authentification pour les mails sortants.",
-    "",
-    "Tällä asetuksella pystyt etsimään sisältökuvauksesta.",
-    "",
-    "Establecer a 'Sí' cuando desee buscar en el título de una emisión.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$The summary of an event, can contain additional information like 'Genre', 'Category', 'Year',... called 'EPG categories' within EPGSearch. External EPG providers often deliver this information. This allows refining a search and other nice things, like searching for the 'tip of the day'. To use it set this to 'Yes'.",
-    "Die Zusammenfassung einer Sendung kann Zusatz-Informationen wie 'Genre', 'Kategorie', 'Jahr', ... enthalten, welche in EPGSearch 'EPG-Kategorien' genannt werden. Externe EPG-Anbieter liefern diese Informationen häufig mit aus. Damit läßt sich eine Suche verfeinern und auch andere Dinge, wie die Suche nach dem Tagestipp, sind möglich. Zur Verwendung auf 'Ja' setzen.",
-    "",
-    "Il sommario di un evento, può contenere informazione addizionale come 'Genere', 'Categoria', 'Anno',... chiamata 'Categorie EPG' all'interno di EPGSearch. I fornitori di EPG esterni spesso inviano questa informazione. Questo ti permette di rifinire una ricerca e altre cosette, come la ricerca per il 'consiglio del giorno'. Per usarlo imposta 'Sì'.",
-    "De samenvatting van een programma kan extra informatie bevatten zoals 'Genre', 'Jaar',... binnen EPGsearch 'EPG categoriÃen' genoemd.  ",
-    "",
-    "",
-    "",
-    "Ohjelmakuvaus voi sisältää ohjelmaoppaan kategoriatietoja ('lajityyppi', 'kategoria', 'valmistumisvuosi', ...), joita ulkoiset ohjelmaoppaat voivat tuottaa. Tällä asetuksella voit hakea myös niiden perusteella.",
-    "",
-    "El resumen de una emisión puede contener información adicional como 'Género', 'Categoría', 'Año', ... llamada 'categorías EPG' en el EPGSearch. A menudo los proveedores EPG externos ofrecen esta información. Esto permite refinar una búsqueda y otras funcionalidades atractivas, como buscar por el 'consejo del día'. Para usarlo, establecer a 'Sí'.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$The file epgsearchcats.conf specifies the search mode for this entry. One can search by text or by value. You can also edit a list of predefined values in this file that can be selected here.",
-    "In der Datei epgsearchcats.conf kann der Suchmodus für diesen Eintrag festgelegt werden. Man kann textuell oder numerisch suchen. Ausserdem kann in dieser Datei eine Liste vordefinierter Werte angegeben werden, die hier zur Auswahl stehen.",
-    "",
-    "Il file epgsearchcats.conf specifica la modalità di ricerca per questo valore. Uno può cercare per testo o per valore. Puoi anche modificare un elenco di valori predefiniti in questo file che può essere qui selezionato.",
-    "Het bestand epgsearchcats.conf omschrijft de zoekinstellingen voor deze regel. Men kan zoeken op tekst of waarde. Er kan ook een lijst van voorgedefinieerde waarden geselecteerd en aangepast worden",
-    "",
-    "",
-    "",
-    "Tiedosto 'epgsearchcats.conf' määrittelee käytettävät hakutavat ja voit viitata niihin joko tekstinä tai pelkällä luvulla. Lisäksi pystyt myöskin muokkaamaan määriteltyjen kategorioiden listaa.",
-    "",
-    "El archivo epgsearchcats.conf especifica el modo de búsqueda de esta entrada. Se puede buscar por texto o por valor. También puede editar una lista de valores predefinidos en este archivo que puede seleccionar aquí.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Help$If a selected category is not part of the summary of an event this normally excludes this event from the search results. To avoid this, set this option to 'Yes', but please handle this with care to avoid a huge amount of results.",
-    "Falls eine gewählte Kategorie nicht in der Zusammenfassung einer Sendung vorhanden ist, wird diese normalerweise aus den Suchergebnissen ausgeschlossen. Um das zu vermeiden, bitte die Option auf 'Ja' setzen. Aber bitte mit Vorsicht verwenden, um eine riesige Menge an Ergebnissen zu vermeiden.",
-    "",
-    "Se una categoria selezionata non è parte del sommario di un evento questo normalmente esclude questo evento dai risultati di ricerca. Per evitare ciò, imposta 'Sì' come opzione, ma gestiscilo con attenzione per evitare una grande quantità di risultati.",
-    "Als een gekozen categorie geen onderdeel is van een samenvatting van een programma, dan zal dit programma niet verschijnen in de zoekresultaten. Om dit te voorkomen kan deze optie worden ingesteld, maar het kan leiden tot heel veel resultaten!",
-    "",
-    "",
-    "",
-    "Jos valittua kategoriaa ei löydy ohjelmakuvauksesta, ei ohjelmaa normaalisti myöskään löydy hakutuloksista. Tällä asetuksella voit estää sen, mutta samalla voit saada huomattavan määrän halutuloksia.",
-    "",
-    "Si una categoría seleccionada no es parte del resumen de una emisión, normalmente ésta no incluye ese evento en los resultados de la búsqueda. Para evitarlo establezca esta opción a 'Sí', pero maneje esto con cuidado para evitar una gran cantidad de resultados.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use in favorites menu",
-    "In Favoritenmenü verw.",
-    "",
-    "Utilizza nel menu preferiti",
-    "Gebruik in favorieten menu",
-    "",
-    "Utiliser dans le menu favoris",
-    "",
-    "Käytä suosikkina",
-    "",
-    "Usar en el menú favoritos",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Result menu layout",
-    "Layout des Ergebnismenüs",
-    "",
-    "Disposizione menu risultati",
-    "Uiterlijk menu resultaten",
-    "",
-    "Dispositon du menu de résultat",
-    "",
-    "Hakutulosten ulkoasu",
-    "",
-    "Presentación de resultados",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Use as search timer",
-    "Als Suchtimer verwenden",
-    "",
-    "Utilizza come timer di ricerca",
-    "Gebruik als zoektimer",
-    "",
-    "Utiliser la recherche",
-    "",
-    "Käytä hakuajastimena",
-    "",
-    "Usar como prog. por búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Action",
-    "Aktion",
-    "",
-    "Azione",
-    "Actie",
-    "",
-    "Action",
-    "",
-    "Toiminto",
-    "",
-    "Acción",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Switch ... minutes before start",
-    "Umschalten ... Minuten vor Start",
-    "",
-    "Cambia ... minuti prima dell'inizio",
-    "Schakel ... minuten voor start",
-    "",
-    "Changer ... minutes avant le début",
-    "",
-    "Vaihda ... minuuttia ennen alkua",
-    "",
-    "Cambiar ... minutos antes del inicio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Unmute sound",
-    "Ton anschalten",
-    "",
-    "Togli suono muto",
-    "",
-    "",
-    "Remettre le son",
-    "",
-    "Ota mykistys pois päältä",
-    "",
-    "Sonido quitar silencio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Ask ... minutes before start",
-    "Nachfrage ... Minuten vor Start",
-    "",
-    "Chiedi ... minuti prima dell'inizio",
-    "Schakel ... minuten voor start",
-    "",
-    "Changer ... minutes avant le début",
-    "",
-    "Kysy ... minuuttia ennen alkua",
-    "",
-    "Preguntar ... minutos antes del inicio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "  Series recording",
-    "  Serienaufnahme",
-    "",
-    "  Registrazione di serie",
-    "  Serie's opnemen",
-    "",
-    "  Enregistrement de serie",
-    "",
-    "  Sarjatallennus",
-    "",
-    "  Grabación en serie",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Delete recordings after ... days",
-    "Aufn. nach ... Tagen löschen",
-    "",
-    "Elimina registrazioni dopo ... giorni",
-    "Verwijder opnames na ... dagen",
-    "",
-    "Effacer l'enregistrement après ... jours",
-    "",
-    "Poista tallenteet ... päivän jälkeen",
-    "",
-    "Borrar grabación a los ... días",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Keep ... recordings",
-    "Behalte ... Aufnahmen",
-    "",
-    "Mantieni ... registrazioni",
-    "Bewaar ... opnames",
-    "",
-    "Garder .... enregistrements",
-    "",
-    "Säilytä ... tallennetta",
-    "",
-    "Mantener ... grabaciones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Pause when ... recordings exist",
-    "Pause, wenn ... Aufnahmen exist.",
-    "",
-    "Pausa, quando ... la registrazione esiste",
-    "Pauzeer wanneer ... opnames bestaan",
-    "",
-    "Pause, lorsque ... l'enregistrement existe.",
-    "",
-    "Keskeytä ... tallenteen jälkeen",
-    "",
-    "Pausar al tener ... grabaciones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Avoid repeats",
-    "Vermeide Wiederholung",
-    "",
-    "Evita repliche",
-    "Vermijdt herhalingen",
-    "",
-    "Eviter les répétions",
-    "",
-    "Estä uusinnat",
-    "",
-    "Evitar repeticiones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Allowed repeats",
-    "Erlaubte Wiederholungen",
-    "",
-    "Permetti repliche",
-    "Toegestane herhalingen",
-    "",
-    "Répétitions autorisées",
-    "",
-    "Sallittujen uusintojen lukumäärä",
-    "",
-    "Permitir repeticiones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Only repeats within ... days",
-    "Nur Wiederh. innerhalb ... Tagen",
-    "",
-    "Solo repliche entro ... giorni",
-    "Alleen herhalingen binnen ... dagen",
-    "",
-    "Que répétion, pendant ... jours",
-    "",
-    "Vain uusinnat ... päivän sisällä",
-    "",
-    "Sólo repetidos dentro de ... días",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Compare title",
-    "Vergleiche Titel",
-    "",
-    "Confronta titolo",
-    "Vergelijk titel",
-    "",
-    "Comparer titres",
-    "",
-    "Vertaa nimeä",
-    "",
-    "Comparar título",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Compare subtitle",
-    "Vergleiche Untertitel",
-    "",
-    "Confronta sottotitolo",
-    "Vergelijk ondertiteling",
-    "",
-    "Comparer les sous-titres",
-    "",
-    "Vertaa jakson nimeä",
-    "",
-    "Comparar subtítulo",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Compare summary",
-    "Vergleiche Beschreibung",
-    "",
-    "Confronta sommario",
-    "Vergelijk samenvatting",
-    "",
-    "Comparer les descriptions",
-    "",
-    "Vertaa kuvausta",
-    "",
-    "Comparar resumen",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Min. match in %",
-    "Min. Übereinstimmung in %",
-    "",
-    "Corrispondenza min. in %",
-    "  Min. duur",
-    "",
-    "  Durée min.",
-    "",
-    "Vaadittava yhdenmukaisuus [%]",
-    "",
-    "  Duración mín.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Compare date",
-    "Vergleiche Zeitpunkt",
-    "",
-    "Confronta date",
-    "Vergelijk titel",
-    "",
-    "Comparer titres",
-    "",
-    "Vertaa päivämäärää",
-    "",
-    "Comparar título",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Compare categories",
-    "Vergl. Kategorien",
-    "",
-    "Confronta categorie",
-    "vergelijk categoriëen",
-    "",
-    "Comparer categories",
-    "",
-    "Vertaa kategorioita",
-    "",
-    "Comparar categorías",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "VPS",
-    "",
-    "",
-    "VPS",
-    "VPS",
-    "",
-    "iVPS",
-    "",
-    "VPS",
-    "",
-    "VPS",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Auto delete",
-    "automatisch löschen",
-    "",
-    "Auto elimina",
-    "Automatisch wissen",
-    "",
-    "Auto effacement",
-    "",
-    "Poista automaattisesti",
-    "",
-    "Auto borrar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "after ... recordings",
-    "nach ... Aufnahmen",
-    "",
-    "dopo ... registrazioni",
-    "na ... opnames",
-    "",
-    "après ... enregistrements",
-    "",
-    "... tallenteen jälkeen",
-    "",
-    "después ... grabaciones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "after ... days after first rec.",
-    "nach ... Tagen nach erster Aufn.",
-    "",
-    "dopo ... giorni dopo prima reg.",
-    "na ... dagen na eerste opname",
-    "",
-    "après ... jours du premier enregistrement",
-    "",
-    "... päivän jälkeen ensimmäisestä",
-    "",
-    "después ... días de la 1ª grab.",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit user-defined days of week",
-    "Benutzerdefinierte Wochentage editieren",
-    "",
-    "Modifica giorni della settimana definiti dall'utente",
-    "Bewerk door gebruiker gedefinieerde dagen van de week",
-    "",
-    "Edition des journées définit par l'utilisateur",
-    "",
-    "Muokkaa valittuja viikonpäiviä",
-    "",
-    "Editar días de la semana definidos por el usuario",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Compare",
-    "Vergleiche",
-    "",
-    "Confronta",
-    "Vergelijk",
-    "",
-    "Comparer",
-    "",
-    "Vertaa",
-    "",
-    "Comparar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Select blacklists",
-    "Ausschlusslisten auswählen",
-    "",
-    "Seleziona lista esclusioni",
-    "Kies blacklists",
-    "",
-    "Choisir la liste des exclus",
-    "",
-    "Valitse mustat listat",
-    "",
-    "Seleccionar las listas negras",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Values for EPG category",
-    "Werte für EPG-Kategorie",
-    "",
-    "Valori per la categoria EPG",
-    "",
-    "",
-    "Valeur pour la catégories EPG",
-    "",
-    "Valinnat ohjelmaoppaan kategorioille",
-    "",
-    "Valores para categorías EPG",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Apply",
-    "Übernehmen",
-    "",
-    "Applica",
-    "Toepassen",
-    "",
-    "Appliquer",
-    "",
-    "Käytä",
-    "",
-    "Aplicar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "less",
-    "kleiner",
-    "",
-    "minore",
-    "minder",
-    "",
-    "plus petit",
-    "",
-    "pienempi",
-    "",
-    "menor",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "less or equal",
-    "kleiner oder gleich",
-    "",
-    "minore o uguale",
-    "minder of gelijk",
-    "",
-    "plus petit ou égale",
-    "",
-    "pienempi tai yhtä suuri",
-    "",
-    "menor o igual",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "greater",
-    "größer",
-    "",
-    "maggiore",
-    "meer",
-    "",
-    "plus grand",
-    "",
-    "suurempi",
-    "",
-    "mayor",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "greater or equal",
-    "größer oder gleich",
-    "",
-    "maggiore o uguale",
-    "meer of gelijk",
-    "",
-    "plus grand ou égale",
-    "",
-    "suurempi tai yhtä suuri",
-    "",
-    "mayor o igual",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "equal",
-    "gleich",
-    "",
-    "uguale",
-    "gelijk",
-    "",
-    "égale",
-    "",
-    "yhtä suuri",
-    "",
-    "igual",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "not equal",
-    "ungleich",
-    "",
-    "non uguale",
-    "niet geljk",
-    "",
-    "pas égale",
-    "",
-    "erisuuri",
-    "",
-    "distinto",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Activation of search timer",
-    "Aktivierung des Suchtimers",
-    "",
-    "Attivazione timer ricerca",
-    "Activering van zoektimer",
-    "",
-    "Activation de la recherche de programmation",
-    "",
-    "Hakuajastimien aktivointi",
-    "",
-    "Activar prog. por búsqueda",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "First day",
-    "Erster Tag",
-    "",
-    "Primo giorno",
-    "",
-    "",
-    "Premier jour",
-    "",
-    "Aloituspäivä",
-    "",
-    "Primer día",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Last day",
-    "Letzter Tag",
-    "",
-    "Ultimo giorno",
-    "Eerste dag",
-    "",
-    "Dernier jour",
-    "",
-    "Lopetuspäivä",
-    "",
-    "Último día",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$all channels",
-    "mit PayTV",
-    "",
-    "Tutti i canali",
-    "alle kanalen",
-    "",
-    "avec TV-Payante",
-    "",
-    "Kaikki",
-    "",
-    "todos los canales",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$only FTA",
-    "ohne PayTV",
-    "",
-    "Solo gratuiti",
-    "alleen FTA",
-    "",
-    "sans TV-Payante",
-    "",
-    "Vapaat",
-    "",
-    "sólo en abierto",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Timer preview",
-    "Timer-Vorsch.",
-    "",
-    "Anteprima timer",
-    "Timer preview",
-    "",
-    "Prévu de programmation",
-    "",
-    "Esikatselu",
-    "",
-    "Previsualizar programación",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Blacklist results",
-    "Ausschluss-Ergebnisse",
-    "",
-    "Risultati lista esclusioni",
-    "Blacklists resultaten",
-    "",
-    "Résultats de la liste des exclus",
-    "",
-    "Mustan listan tulokset",
-    "",
-    "Resultados de la lista negra",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "found recordings",
-    "gefundene Aufnahmen",
-    "",
-    "registrazioni trovate",
-    "gevonden opname's",
-    "",
-    "Enregistrements trouvées",
-    "",
-    "löydetyt tallenteet",
-    "",
-    "grabaciones encontradas",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Error while accessing recording!",
-    "",
-    "",
-    "Errore durante l'accesso alla registrazione!",
-    "Fout tijdens benaderen opnames!",
-    "",
-    "Erreur lors de l'accès à l'enregistrement",
-    "",
-    "Tallenteen toistaminen epäonnistui!",
-    "",
-    "¡Error al acceder a grabación!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Default",
-    "Standard",
-    "",
-    "Predefinito",
-    "",
-    "",
-    "Standart",
-    "",
-    "Oletus",
-    "",
-    "Por defecto",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit$Delete template?",
-    "Vorlage löschen?",
-    "",
-    "Eliminare modello?",
-    "Verwijder sjabloon?",
-    "",
-    "Effacer le modèle",
-    "",
-    "Poistetaanko mallipohja?",
-    "",
-    "¿Borrar plantilla?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Overwrite existing entries?",
-    "Vorhandene Werte überschreiben?",
-    "",
-    "Sovrascrivere valori esistenti?",
-    "Overschrijf bestaande invoer?",
-    "",
-    "Ecraser les informations?",
-    "",
-    "Kirjoitetaanko olemassa olevan päälle?",
-    "",
-    "¿Sobrescribir las entradas existentes?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit entry",
-    "Eintrag editieren",
-    "",
-    "Modifica valore",
-    "Wijzig invoer",
-    "",
-    "Editer l'entrée",
-    "",
-    "Muokkaa valintaa",
-    "",
-    "Editar entrada",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Switch",
-    "Nur umschalten",
-    "",
-    "Cambia",
-    "Alleen schakelen",
-    "",
-    "Seulement changer de chaine",
-    "",
-    "kanavanvaihto",
-    "",
-    "Cambiar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Announce only",
-    "Nur ankündigen",
-    "",
-    "Solo annuncio",
-    "Alleen aankondigen (geen timer)",
-    "",
-    "Annoncer seulement début d'une programme",
-    "",
-    "muistutus",
-    "",
-    "Sólo avisar",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Announce ... minutes before start",
-    "Ankündigen ... Minuten vor Start",
-    "",
-    "Annuncia ... minuti prima dell'inizio",
-    "Schakel ... minuten voor start",
-    "",
-    "Changer ... minutes avant le début",
-    "",
-    "Muistuta ... minuuttia ennen alkua",
-    "",
-    "Avisar ... minutos antes del inicio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "action at",
-    "Ausführung um",
-    "",
-    "azione alle",
-    "actie op",
-    "",
-    "Effectuer à",
-    "",
-    "Kellonaika kanavanvaihdolle",
-    "",
-    "ejecutar a las",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Switch list",
-    "Umschaltliste",
-    "",
-    "Lista modifiche",
-    "Schakellijst",
-    "",
-    "Liste de changement de chaine",
-    "",
-    "Kanavanvaihtolista",
-    "",
-    "Lista de cambio",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Edit template",
-    "Vorlage editieren",
-    "",
-    "Modifica modello",
-    "Wijzig sjabloon",
-    "",
-    "Editer modèles",
-    "",
-    "Muokkaa mallipohjaa",
-    "",
-    "Editar plantilla",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Timers",
-    "",
-    "",
-    "Timer",
-    "Timers",
-    "",
-    "Programmations",
-    "",
-    "Ajastimet",
-    "",
-    "Programaciones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { ">>> no info! <<<",
-    ">>> keine Info! <<<",
-    "",
-    ">>> nessuna informazione! <<<",
-    ">>> geen info! <<<",
-    "",
-    ">>> Pas d'information! <<<",
-    "",
-    ">>> ei tietoja! <<<",
-    "",
-    "   «sin información»  ",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Overview",
-    "Übersicht",
-    "",
-    "Sommario",
-    "Overzicht",
-    "",
-    "Sommaire",
-    "",
-    "Yleiskatsaus",
-    "",
-    "Resumen",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Button$Favorites",
-    "Favoriten",
-    "",
-    "Preferiti",
-    "Favorieten",
-    "",
-    "Favoris",
-    "",
-    "Suosikit",
-    "",
-    "Favoritos",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Quick search for broadcasts",
-    "Schnelle Suche nach Sendungen",
-    "",
-    "Ricerca veloce per emittenti",
-    "Snel zoeken naar uitzendingen",
-    "",
-    "Recherche rapide pour les radios",
-    "",
-    "Pikahaku ohjelmaoppaalle",
-    "",
-    "Búsqueda rápida de emisiones",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Quick search",
-    "Schnellsuche",
-    "",
-    "Ricerca veloce",
-    "Snel zoeken",
-    "",
-    "Recherche rapide",
-    "",
-    "Pikahaku",
-    "",
-    "Búsqueda rápida",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Show in main menu",
-    "Im Hauptmenü anzeigen",
-    "",
-    "Mostra nel menu principale",
-    "Toon vermelding in hoofdmenu",
-    "",
-    "Visible dans le menu principale",
-    "",
-    "Näytä valinta päävalikossa",
-    "",
-    "Mostrar en menú principal",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "%d new broadcast(s) found! Show them?",
-    "%d neue Sendung(en) gefunden! Anzeigen?",
-    "",
-    "%d nuove emittenti trovate! Mostrarle?",
-    "%d nieuwe uitzending(en) gevonden! Tonen?",
-    "",
-    "Afficher les %d nouvelles émissions trouvées?",
-    "",
-    "Löydettiin %d uutta lähetystä! Näytetäänkö?",
-    "",
-    "¡%d nuevas emisiones encontradas! ¿Mostrarlas?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Search timer update done!",
-    "Suchtimer-Update durchgeführt!",
-    "",
-    "Aggiornamento timer ricerca completato!",
-    "Verversen zoektimer gereed!",
-    "",
-    "La mise à jours de recherche est effectuée!",
-    "",
-    "Hakuajastimet päivitetty!",
-    "",
-    "¡Programación por búsqueda actualizada!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "small EPG content on:%s",
-    "wenig EPG Inhalt für:%s",
-    "",
-    "contenuto piccoli EPG su:%s",
-    "",
-    "",
-    "",
-    "",
-    "vajaat ohjelmatiedot: %s",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "VDR EPG check warning",
-    "VDR EPG Check Warnung",
-    "",
-    "Notifica verifica EPG di VDR",
-    "",
-    "",
-    "",
-    "",
-    "Varoitus VDR:n ohjelmatietojen tarkastuksesta",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Switch to (%d) '%s'?",
-    "Umschalten zu (%d) '%s'?",
-    "",
-    "Cambiare a (%d) '%s'?",
-    "",
-    "",
-    "",
-    "",
-    "Vaihdetaanko kanavalle (%d) '%s'?",
-    "",
-    "¿Cambiar a (%d) '%s'?",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "Programming timer failed!",
-    "Timer-Programmierung fehlschlagen!",
-    "",
-    "Programmazione timer fallito!",
-    "Programmeren timer mislukt!",
-    "",
-    "La programmation a échoué",
-    "",
-    "Ajastimen ohjelmointi epäonnistui!",
-    "",
-    "¡La programación ha fallado!",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "in %02ldd",
-    "in %02ldd",
-    "",
-    "in %02ldd",
-    "in %02ldd",
-    "",
-    "en %02ldd",
-    "",
-    "%02ldd",
-    "",
-    "en %02ldd",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "in %02ldh",
-    "in %02ldh",
-    "",
-    "in %02ldh",
-    "in %02ldh",
-    "",
-    "en %02ldh",
-    "",
-    "%02ldh",
-    "",
-    "en %02ldh",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-  { "in %02ldm",
-    "in %02ldm",
-    "",
-    "in %02ldm",
-    "in %02ldm",
-    "",
-    "en %02ldm",
-    "",
-    "%02ldm",
-    "",
-    "en %02ldm",
-    "",
-    "",
-    "",
-    "",
-    "",
-#if VDRVERSNUM >= 10302
-    "",
-#endif
-#if VDRVERSNUM >= 10307
-    "",
-#endif
-#if VDRVERSNUM >= 10313
-    "",
-#endif
-#if VDRVERSNUM >= 10316
-    "",
-#endif
-#if VDRVERSNUM >= 10342
-    "",
-#endif
-#if VDRVERSNUM >= 10502
-    "",
-#endif
-  },
-// END I18N - automatically generated by pot2i18n.pl
-  { NULL }
-};
diff --git a/i18n-template.h b/i18n-template.h
deleted file mode 100644
index 7d18093..0000000
--- a/i18n-template.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright (C) 2004-2011 Christian Wieninger
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-
-The author can be reached at cwieninger at gmx.de
-
-The project's page is at http://winni.vdr-developer.org/epgsearch
-*/
-
-/*
-  	WARNING: automatically generated content. Changes will get lost!
-
-    If this file is 'i18n-generated.h' then it *really* is automatically
-	generated.
-    If this file is 'i18n-template.h' then it is the base for the
-    autogeneration of the other file.
-
-*/
-
-const tI18nPhrase Phrases[] = {
-// START I18N
-// END I18N
-  { NULL }
-};
diff --git a/i18n.c b/i18n.c
deleted file mode 100644
index 139256a..0000000
--- a/i18n.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright (C) 2004-2011 Christian Wieninger
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-
-The author can be reached at cwieninger at gmx.de
-
-The project's page is at http://winni.vdr-developer.org/epgsearch
-*/
-
-#include <vdr/plugin.h>
-
-#if APIVERSNUM < 10507
-
-#include "i18n.h"
-#include "epgsearchtools.h"
-#include "i18n-generated.h"
-
-#endif
diff --git a/i18n.h b/i18n.h
deleted file mode 100644
index 638dc3f..0000000
--- a/i18n.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-Copyright (C) 2004-2011 Christian Wieninger
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-
-The author can be reached at cwieninger at gmx.de
-
-The project's page is at http://winni.vdr-developer.org/epgsearch
-*/
-
-
-#ifndef _I18N__H
-#define _I18N__H
-
-#include <vdr/i18n.h>
-
-#if APIVERSNUM < 10507
-extern const tI18nPhrase Phrases[];
-#define trNOOP(s) (s)
-#endif
-
-#if APIVERSNUM < 10509
-#define trVDR(s) tr(s)
-#endif
-
-#endif //_I18N__H
diff --git a/log.h b/log.h
index cbf1e3d..15441f2 100644
--- a/log.h
+++ b/log.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -43,11 +43,11 @@ class cLogFile: public cFile
     void Log(int LogLevel, const char *text, ...)
 	{
 	    if (LogLevel > loglevellimit) return;
-	    if(IsOpen()) 
+	    if(IsOpen())
 	    {
 		char* buffer = NULL;
-		va_list Arg; 
-		va_start(Arg,text); 
+		va_list Arg;
+		va_start(Arg,text);
 		if (vasprintf(&buffer, text, Arg) < 0)
 		   esyslog("EPGSearch: vasprintf error");
 		va_end(Arg);
@@ -60,7 +60,7 @@ class cLogFile: public cFile
 		char *p = stpcpy(datebuf, WeekDayName(tm->tm_wday));
 		*p++ = ' ';
 		strftime(p, sizeof(datebuf) - (p - datebuf), "%d.%m.%Y", tm);
-		
+
 		char timebuf[25];
 		strftime(timebuf, sizeof(timebuf), "%T", localtime_r(&now, &tm_r));
 
@@ -72,8 +72,8 @@ class cLogFile: public cFile
     void eSysLog(const char *text, ...)
 	{
 	    char* buffer = NULL;
-	    va_list Arg; 
-	    va_start(Arg,text); 
+	    va_list Arg;
+	    va_start(Arg,text);
 	    if (vasprintf(&buffer, text, Arg) < 0)
 	       esyslog("EPGSearch: vasprintf error");
 	    va_end(Arg);
@@ -84,8 +84,8 @@ class cLogFile: public cFile
     void iSysLog(const char *text, ...)
 	{
 	    char* buffer = NULL;
-	    va_list Arg; 
-	    va_start(Arg,text); 
+	    va_list Arg;
+	    va_start(Arg,text);
 	    if (vasprintf(&buffer, text, Arg) < 0)
 	       esyslog("EPGSearch: vasprintf error");
 	    va_end(Arg);
@@ -102,4 +102,4 @@ extern cLogFile LogFile;
 
 #endif
 
- 
+
diff --git a/mail.c b/mail.c
index 840d131..195512d 100644
--- a/mail.c
+++ b/mail.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -58,7 +58,7 @@ string cMailTimerNotification::Format(const string& templ) const
     result =  varExprEvent.Evaluate(pEvent);
     cVarExpr varExprTimer(result);
     result =  varExprTimer.Evaluate(pTimer);
-    
+
     if (timerMod == tmStartStop)
       result = ReplaceAll(result, "%timer.modreason%", tr("Start/Stop time has changed"));
     if (timerMod == tmFile)
@@ -74,7 +74,7 @@ const cEvent* cMailTimerNotification::GetEvent() const
     const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
     if (!schedules) return NULL;
     const cSchedule *schedule = schedules->GetSchedule(channelID);
-    if (!schedule) return NULL;    
+    if (!schedule) return NULL;
     return schedule->GetEvent(eventID);
 }
 
@@ -152,26 +152,26 @@ string cMailAnnounceEventNotification::Format(const string& templ) const
 // -------------
 // cMailNotifier
 cMailNotifier::cMailNotifier(string Subject, string Body)
-: subject(Subject), body(Body) 
+: subject(Subject), body(Body)
 {
   if (subject.size() > 0)
     SendMail(true);
 }
 
-bool cMailNotifier::SendMailViaSendmail() 
+bool cMailNotifier::SendMailViaSendmail()
 {
     char mailcmd[256];
     const char* mailargs = "%s -i -FVDR -oem  %s";
     const char* mailproc = SENDMAIL;
     FILE* mail;
-    
-    string to = EPGSearchConfig.MailAddressTo; 
+
+    string to = EPGSearchConfig.MailAddressTo;
     snprintf(mailcmd, sizeof(mailcmd), mailargs, mailproc, to.c_str());
-    
+
     if (!(mail = popen(mailcmd, "w"))) {
 	return false;
     }
-    
+
     fprintf(mail, "From: VDR\n");
     fprintf(mail, "To: %s\n", to.c_str());
     fprintf(mail, "Subject: %s\n", subject.c_str());
@@ -181,11 +181,11 @@ bool cMailNotifier::SendMailViaSendmail()
       fprintf(mail, "Content-Type: text/plain; charset=%s\n", GetCodeset().c_str());
 
     fprintf(mail, "\n");
-    
+
     fprintf(mail, "%s", body.c_str());
-    
+
     pclose(mail);
-    
+
     return true;
 }
 
@@ -204,16 +204,16 @@ bool cMailNotifier::SendMailViaScript()
 
     string AuthUser = EPGSearchConfig.MailAuthUser;
     string AuthPass = EPGSearchConfig.MailAuthPass;
-    string cmdArgs =  
+    string cmdArgs =
       string(" -f \"VDR <") + EPGSearchConfig.MailAddress + ">\"" +
       " -t " + EPGSearchConfig.MailAddressTo +
       " -s " + EPGSearchConfig.MailServer +
-      " -u \"" + subject + "\""+ 
+      " -u \"" + subject + "\""+
       (EPGSearchConfig.MailUseAuth?
        (AuthUser != "" ?(" -xu " + AuthUser):"") +
        (AuthPass != "" ?(" -xp " + AuthPass):"")
        :"") +
-      " -o message-charset=" + GetCodeset() + 
+      " -o message-charset=" + GetCodeset() +
       " -o message-file=" + filename;
 
     bool success = ExecuteMailScript(cmdArgs);
@@ -236,7 +236,7 @@ bool cMailNotifier::SendMail(bool force)
     }
   else
     {
-      
+
       LogFile.Log(2, "mail delivery delayed until %s", DAYDATETIME(nextMailDelivery));
       return false;
     }
@@ -249,7 +249,7 @@ bool cMailNotifier::ExecuteMailScript(string ScriptArgs)
     if (mailCmd == "sendEmail.pl") // beautify output for standard script
 	ScriptArgs += " | cut -d\" \" -f 6-";
 
-    cCommand cmd; 
+    cCommand cmd;
     string fullcmd = "mailcmd: " + mailCmd;
     if (!cmd.Parse(fullcmd.c_str()))
     {
@@ -266,23 +266,23 @@ bool cMailNotifier::ExecuteMailScript(string ScriptArgs)
 
 bool cMailNotifier::TestMailAccount(string MailAddressTo, string MailAddress, string MailServer, string AuthUser, string AuthPass)
 {
-    string cmdArgs =  
+    string cmdArgs =
 	string("-v -f \"VDR <") + MailAddress + ">\"" +
 	" -t " + MailAddressTo +
 	" -s " + MailServer +
-	" -u \"VDR-Testmail\"" + 
+	" -u \"VDR-Testmail\"" +
 	(AuthUser != "" ?(" -xu " + AuthUser):"") +
 	(AuthPass != "" ?(" -xp " + AuthPass):"") +
         " -m \"Success! ;-)\"";
 
-    return ExecuteMailScript(cmdArgs);    
+    return ExecuteMailScript(cmdArgs);
 }
 
 string cMailNotifier::LoadTemplate(const string& templtype)
 {
     string filename = *AddDirectory(CONFIGDIR, templtype.c_str());
     string templ = "";
-    if (filename != "" && access(filename.c_str(), F_OK) == 0) 
+    if (filename != "" && access(filename.c_str(), F_OK) == 0)
     {
 	LogFile.iSysLog("loading %s", filename.c_str());
 	FILE *f = fopen(filename.c_str(), "r");
@@ -298,7 +298,7 @@ string cMailNotifier::LoadTemplate(const string& templtype)
 		templ += string(s) + "\n";
 	    }
 	    fclose(f);
-	}	
+	}
     }
     return templ;
 }
@@ -306,7 +306,7 @@ string cMailNotifier::LoadTemplate(const string& templtype)
 string cMailNotifier::GetTemplValue(const string& templ, const string& entry)
 {
     if (templ == "" || entry == "") return "";
-    
+
     string start = "<" + entry + ">";
     string end = "</" + entry + ">";
 
@@ -361,9 +361,9 @@ void cMailUpdateNotifier::SendUpdateNotifications()
 {
     // insert pending notifications
     cPendingNotification* p = PendingNotifications.First();
-    while (p) 
+    while (p)
     {
-      if (p->type == 0) 
+      if (p->type == 0)
 	AddNewTimerNotification(p->eventID, p->channelID);
       else if (p->type == 1)
 	AddModTimerNotification(p->eventID, p->channelID, p->timerMod);
@@ -372,12 +372,12 @@ void cMailUpdateNotifier::SendUpdateNotifications()
       else if (p->type == 3)
 	AddAnnounceEventNotification(p->eventID, p->channelID, p->searchID);
       p = PendingNotifications.Next(p);
-    }	    
+    }
 
-    if (newTimers.size() == 0 && 
-	modTimers.size() == 0 && 
-	delTimers.size() == 0 &&
-	announceEvents.size() == 0)
+    if (newTimers.empty() &&
+	modTimers.empty() &&
+	delTimers.empty() &&
+	announceEvents.empty())
 	return;
 
     // extract single templates
@@ -393,10 +393,10 @@ void cMailUpdateNotifier::SendUpdateNotifications()
 
     // create the timer list for new timers
     string newtimers;
-    if (newTimers.size() == 0)
+    if (newTimers.empty())
 	newtimers = tr("No new timers were added.");
     std::set<cMailTimerNotification>::iterator itnt;
-    for (itnt = newTimers.begin(); itnt != newTimers.end(); itnt++) 
+    for (itnt = newTimers.begin(); itnt != newTimers.end(); ++itnt)
     {
 	string message = (*itnt).Format(templTimer);
 	if (message != "") newtimers += message;
@@ -404,10 +404,10 @@ void cMailUpdateNotifier::SendUpdateNotifications()
 
     // create the timer list for modified timers
     string modtimers;
-    if (modTimers.size() == 0)
+    if (modTimers.empty())
 	modtimers = tr("No timers were modified.");
     std::set<cMailTimerNotification>::iterator itmt;
-    for (itmt = modTimers.begin(); itmt != modTimers.end(); itmt++) 
+    for (itmt = modTimers.begin(); itmt != modTimers.end(); ++itmt)
     {
 	string message = (*itmt).Format(templTimer);
 	if (message != "") modtimers += message;
@@ -415,10 +415,10 @@ void cMailUpdateNotifier::SendUpdateNotifications()
 
     // create the timer list for removed timers
     string deltimers;
-    if (delTimers.size() == 0)
+    if (delTimers.empty())
 	deltimers = tr("No timers were deleted.");
     std::set<cMailDelTimerNotification>::iterator itdt;
-    for (itdt = delTimers.begin(); itdt != delTimers.end(); itdt++) 
+    for (itdt = delTimers.begin(); itdt != delTimers.end(); ++itdt)
     {
       string message = (*itdt).Format("");
 	if (message != "") deltimers += message;
@@ -426,10 +426,10 @@ void cMailUpdateNotifier::SendUpdateNotifications()
 
     // create the list of events to announce
     string announceevents;
-    if (announceEvents.size() == 0)
+    if (announceEvents.empty())
 	announceevents = tr("No new events to announce.");
     std::set<cMailAnnounceEventNotification>::iterator itae;
-    for (itae = announceEvents.begin(); itae != announceEvents.end(); itae++) 
+    for (itae = announceEvents.begin(); itae != announceEvents.end(); ++itae)
     {
 	string message = (*itae).Format(templEvent);
 	if (message != "") announceevents += message;
@@ -462,7 +462,7 @@ void cMailUpdateNotifier::SendUpdateNotifications()
     if (SendMail())
     {
       EPGSearchConfig.lastMailOnSearchtimerAt = time(NULL);
-      cPluginManager::GetPlugin("epgsearch")->SetupStore("MailNotificationSearchtimersLastAt",  
+      cPluginManager::GetPlugin("epgsearch")->SetupStore("MailNotificationSearchtimersLastAt",
 							 EPGSearchConfig.lastMailOnSearchtimerAt);
       // remove pending notifications
       while((p = PendingNotifications.First()) != NULL)
@@ -471,28 +471,28 @@ void cMailUpdateNotifier::SendUpdateNotifications()
     else
     {
       // add current notifications to pending ones
-      for (itnt = newTimers.begin(); itnt != newTimers.end(); itnt++) 
+      for (itnt = newTimers.begin(); itnt != newTimers.end(); ++itnt)
 	PendingNotifications.Add(new cPendingNotification(0, itnt->eventID, itnt->channelID, -1));
-      for (itmt = modTimers.begin(); itmt != modTimers.end(); itmt++) 
+      for (itmt = modTimers.begin(); itmt != modTimers.end(); ++itmt)
 	PendingNotifications.Add(new cPendingNotification(1, itmt->eventID, itmt->channelID, -1, itmt->timerMod));
-      for (itdt = delTimers.begin(); itdt != delTimers.end(); itdt++) 
+      for (itdt = delTimers.begin(); itdt != delTimers.end(); ++itdt)
 	PendingNotifications.Add(new cPendingNotification(2, -1, itdt->channelID, itdt->start, -1, -1, itdt->formatted));
-      for (itae = announceEvents.begin(); itae != announceEvents.end(); itae++) 
- 	PendingNotifications.Add(new cPendingNotification(3, itae->eventID, itae->channelID, -1, -1, itae->searchextID));     
-    } 
+      for (itae = announceEvents.begin(); itae != announceEvents.end(); ++itae)
+ 	PendingNotifications.Add(new cPendingNotification(3, itae->eventID, itae->channelID, -1, -1, itae->searchextID));
+    }
     PendingNotifications.Save();
-    
+
     newTimers.clear();
     modTimers.clear();
     delTimers.clear();
     // Add announced events to the "no announce" list
-    for (itae = announceEvents.begin(); itae != announceEvents.end(); itae++) 
+    for (itae = announceEvents.begin(); itae != announceEvents.end(); ++itae)
     {
-      cNoAnnounce* noAnnounce = new cNoAnnounce(itae->GetEvent());             
+      cNoAnnounce* noAnnounce = new cNoAnnounce(itae->GetEvent());
       if (noAnnounce && noAnnounce->Valid())
 	NoAnnounces.Add(noAnnounce);
     }
-    if (announceEvents.size() > 0)
+    if (!announceEvents.empty())
     {
       NoAnnounces.ClearOutdated();
       NoAnnounces.Save();
@@ -515,14 +515,14 @@ void cMailConflictNotifier::SendConflictNotifications(cConflictCheck& conflictCh
 
     for(cConflictCheckTime* ct = failedList->First(); ct; ct = failedList->Next(ct))
     {
-	if (!ct || ct->ignore) continue;	
+	if (!ct || ct->ignore) continue;
 	std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-	for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); it++) 
+	for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); ++it)
 	    if ((*it) && !(*it)->ignore && (*it)->Event())
 	      {
 		std::string channelID = *(*it)->Event()->ChannelID().ToString();
-		newMailConflicts << (*it)->Event()->EventID() 
-				 << "|" 
+		newMailConflicts << (*it)->Event()->EventID()
+				 << "|"
 				 << channelID;
 	      }
     }
@@ -550,11 +550,11 @@ void cMailConflictNotifier::SendConflictNotifications(cConflictCheck& conflictCh
     string templConflictTimer = GetTemplValue(templ, "conflicttimer");
     LogFile.Log(3, "extracting templates - done");
 
-    // create the conflict list 
+    // create the conflict list
     string conflicts;
     for(cConflictCheckTime* ct = failedList->First(); ct; ct = failedList->Next(ct))
     {
-	if (ct->ignore) continue;	
+	if (ct->ignore) continue;
 	// format conflict time
 	string conflictsAt = templConflictsAt;
 	conflictsAt = ReplaceAll(conflictsAt, "%conflict.time%", TIMESTRING(ct->evaltime));
@@ -562,7 +562,7 @@ void cMailConflictNotifier::SendConflictNotifications(cConflictCheck& conflictCh
 
 	string conflicttimers;
 	std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-	for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); it++) 
+	for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); ++it)
 	    if (!(*it)->ignore && (*it)->Event())
 	    {
 		cMailTimerNotification M((*it)->Event()->EventID(), (*it)->Event()->ChannelID());
@@ -575,7 +575,7 @@ void cMailConflictNotifier::SendConflictNotifications(cConflictCheck& conflictCh
 	    }
 	conflictsAt = ReplaceAll(conflictsAt, "%conflict.confltimers%", conflicttimers);
 
-	conflicts += conflictsAt;	
+	conflicts += conflictsAt;
     }
 
     // evaluate variables
diff --git a/mail.h b/mail.h
index 3e432ef..53fbad4 100644
--- a/mail.h
+++ b/mail.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -35,7 +35,7 @@ using std::string;
 using std::set;
 
 // --- cMailNotifier --------------------------------------------------------
-class cMailNotifier 
+class cMailNotifier
 {
  protected:
     string subject;
@@ -68,7 +68,7 @@ class cMailTimerNotification
     virtual const cEvent* GetEvent() const;
 
  public:
- cMailTimerNotification(tEventID EventID, tChannelID ChannelID, uint TimerMod = tmNoChange) 
+ cMailTimerNotification(tEventID EventID, tChannelID ChannelID, uint TimerMod = tmNoChange)
    : eventID(EventID), channelID(ChannelID), timerMod(TimerMod) {}
     virtual bool operator< (const cMailTimerNotification &N) const;
     virtual string Format(const string& templ) const;
@@ -82,7 +82,7 @@ class cMailDelTimerNotification
  public:
     string formatted;
 
-    cMailDelTimerNotification(cTimer* t, const cEvent* pEvent, const string& templ); 
+    cMailDelTimerNotification(cTimer* t, const cEvent* pEvent, const string& templ);
     cMailDelTimerNotification(const string& Formatted, tChannelID ChannelID, time_t Start);
     bool operator< (const cMailDelTimerNotification &N) const;
     string Format(const string& templ) const { return formatted; }
@@ -93,7 +93,7 @@ class cMailAnnounceEventNotification : public cMailTimerNotification
   friend class cMailUpdateNotifier;
   int searchextID;
  public:
- cMailAnnounceEventNotification(tEventID EventID, tChannelID ChannelID, int SearchExtID) 
+ cMailAnnounceEventNotification(tEventID EventID, tChannelID ChannelID, int SearchExtID)
    : cMailTimerNotification(EventID, ChannelID), searchextID(SearchExtID) {}
     string Format(const string& templ) const;
 };
diff --git a/main.c b/main.c
index 8cc6baa..e57ee96 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -25,7 +25,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 // and are included only as a placeholder. Nevertheless,
 // they *will* get included in the static library if you
 // don't remove them :)
-// 
+//
 // Obviously, you 'll have to write yourself the super-duper
 // functions to include in the resulting library...
 // Also, it's not necessary to write every function in this file.
@@ -48,6 +48,6 @@ void SampleFunction1()
 int SampleFunction2()
 {
 	// insert code here
-	
+
 	return 0;
 }
diff --git a/mainmenushortcut.c b/mainmenushortcut.c
index b2d293e..9ff5314 100644
--- a/mainmenushortcut.c
+++ b/mainmenushortcut.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -26,64 +26,11 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include <memory>
 #include <set>
 #include <vdr/plugin.h>
-#include "i18n.h"
 #include "services.h"
 #include "mainmenushortcut.h"
 
 static const char SETUPENTRY[] = "MainMenuEntryEnabled";
 
-#if APIVERSNUM < 10507
-const tI18nPhrase Phrases[] = {
-  {
-   "This version of EPGSearch does not support this service!",
-   "Diese Version von EPGSearch unterstützt diesen Dienst nicht!",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "EPGSearch-laajennos ei tarjoa vaadittavaa palvelua!",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {
-   "EPGSearch does not exist!",
-   "EPGSearch nicht vorhanden!",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "EPGSearch-laajennosta ei löydy!",
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// TODO
-   "",				// Eesti
-   "",				// Dansk
-   "",				// Czech
-   },
-  {NULL}
-};
-#endif
-
 cMainMenuShortcutSetupPage::cMainMenuShortcutSetupPage(const char *setupText,
 						       const char *setupEntry,
 						       int *const setupValue)
@@ -104,9 +51,6 @@ cMainMenuShortcut::cMainMenuShortcut()
 
 cMainMenuShortcut::~cMainMenuShortcut()
 {
-#if APIVERSNUM < 10507
-  I18nRegister(NULL, PLUGIN_NAME_I18N);
-#endif
 }
 
 cOsdMenu *cMainMenuShortcut::GetEpgSearchMenu(const char *serviceName)
@@ -131,9 +75,6 @@ cOsdMenu *cMainMenuShortcut::GetEpgSearchMenu(const char *serviceName)
 
 bool cMainMenuShortcut::Initialize()
 {
-#if APIVERSNUM < 10507
-  I18nRegister(Phrases, PLUGIN_NAME_I18N);
-#endif
   return true;
 }
 
diff --git a/mainmenushortcut.h b/mainmenushortcut.h
index 4be8839..254de03 100644
--- a/mainmenushortcut.h
+++ b/mainmenushortcut.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -26,22 +26,18 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 
 #include <vdr/plugin.h>
 
-#if APIVERSNUM < 10508
-static const char I18nEpgsearch[] = "epgsearch";
-#else
 static const char I18nEpgsearch[] = "vdr-epgsearch";
-#endif
 
-class cMainMenuShortcutSetupPage : public cMenuSetupPage 
+class cMainMenuShortcutSetupPage : public cMenuSetupPage
 {
  private:
   const char* _setupEntry;
   int* const _setupValue;
   int dummy; // don't know why, but this is necessary to avoid a crash with ext-patch and active USE_LIEMIKUUTIO
-  
+
  public:
   cMainMenuShortcutSetupPage(const char* setupText, const char* setupEntry, int* const setupValue);
-  
+
  protected:
   virtual void Store(void);
 };
diff --git a/man/de/epgsearch.1.gz b/man/de/epgsearch.1.gz
index 602c72b..e16d1c8 100644
Binary files a/man/de/epgsearch.1.gz and b/man/de/epgsearch.1.gz differ
diff --git a/man/de/epgsearch.conf.5.gz b/man/de/epgsearch.conf.5.gz
index 9865543..9882217 100644
Binary files a/man/de/epgsearch.conf.5.gz and b/man/de/epgsearch.conf.5.gz differ
diff --git a/man/de/epgsearchblacklists.conf.5.gz b/man/de/epgsearchblacklists.conf.5.gz
index 05ec2cd..91eb3cf 100644
Binary files a/man/de/epgsearchblacklists.conf.5.gz and b/man/de/epgsearchblacklists.conf.5.gz differ
diff --git a/man/de/epgsearchcats.conf.5.gz b/man/de/epgsearchcats.conf.5.gz
index 1f0f78d..c8b48ab 100644
Binary files a/man/de/epgsearchcats.conf.5.gz and b/man/de/epgsearchcats.conf.5.gz differ
diff --git a/man/de/epgsearchchangrps.conf.5.gz b/man/de/epgsearchchangrps.conf.5.gz
index 7675819..b22d261 100644
Binary files a/man/de/epgsearchchangrps.conf.5.gz and b/man/de/epgsearchchangrps.conf.5.gz differ
diff --git a/man/de/epgsearchcmds.conf.5.gz b/man/de/epgsearchcmds.conf.5.gz
index 2f9f4e7..2fae0e5 100644
Binary files a/man/de/epgsearchcmds.conf.5.gz and b/man/de/epgsearchcmds.conf.5.gz differ
diff --git a/man/de/epgsearchdirs.conf.5.gz b/man/de/epgsearchdirs.conf.5.gz
index 9cd2e0c..2bf19f1 100644
Binary files a/man/de/epgsearchdirs.conf.5.gz and b/man/de/epgsearchdirs.conf.5.gz differ
diff --git a/man/de/epgsearchmenu.conf.5.gz b/man/de/epgsearchmenu.conf.5.gz
index dc990b1..0581b88 100644
Binary files a/man/de/epgsearchmenu.conf.5.gz and b/man/de/epgsearchmenu.conf.5.gz differ
diff --git a/man/de/epgsearchswitchtimers.conf.5.gz b/man/de/epgsearchswitchtimers.conf.5.gz
index 2f78a8c..8d9fbfd 100644
Binary files a/man/de/epgsearchswitchtimers.conf.5.gz and b/man/de/epgsearchswitchtimers.conf.5.gz differ
diff --git a/man/de/epgsearchtemplates.conf.5.gz b/man/de/epgsearchtemplates.conf.5.gz
index ab4900f..55b37c3 100644
Binary files a/man/de/epgsearchtemplates.conf.5.gz and b/man/de/epgsearchtemplates.conf.5.gz differ
diff --git a/man/de/epgsearchuservars.conf.5.gz b/man/de/epgsearchuservars.conf.5.gz
index 5bce8ea..e540ad4 100644
Binary files a/man/de/epgsearchuservars.conf.5.gz and b/man/de/epgsearchuservars.conf.5.gz differ
diff --git a/man/de/noannounce.conf.5.gz b/man/de/noannounce.conf.5.gz
index 6e375eb..e286952 100644
Binary files a/man/de/noannounce.conf.5.gz and b/man/de/noannounce.conf.5.gz differ
diff --git a/man/de/timersdone.conf.5.gz b/man/de/timersdone.conf.5.gz
index e0e45b7..7f7a5d3 100644
Binary files a/man/de/timersdone.conf.5.gz and b/man/de/timersdone.conf.5.gz differ
diff --git a/man/en/createcats.1.gz b/man/en/createcats.1.gz
index 69ff70f..7526c84 100644
Binary files a/man/en/createcats.1.gz and b/man/en/createcats.1.gz differ
diff --git a/man/en/epgsearch.1.gz b/man/en/epgsearch.1.gz
index f7bc3a4..d107638 100644
Binary files a/man/en/epgsearch.1.gz and b/man/en/epgsearch.1.gz differ
diff --git a/man/en/epgsearch.4.gz b/man/en/epgsearch.4.gz
index 841d79d..c617781 100644
Binary files a/man/en/epgsearch.4.gz and b/man/en/epgsearch.4.gz differ
diff --git a/man/en/epgsearch.conf.5.gz b/man/en/epgsearch.conf.5.gz
index 4266d58..a24aabe 100644
Binary files a/man/en/epgsearch.conf.5.gz and b/man/en/epgsearch.conf.5.gz differ
diff --git a/man/en/epgsearchblacklists.conf.5.gz b/man/en/epgsearchblacklists.conf.5.gz
index a159dc0..d95df63 100644
Binary files a/man/en/epgsearchblacklists.conf.5.gz and b/man/en/epgsearchblacklists.conf.5.gz differ
diff --git a/man/en/epgsearchcats.conf.5.gz b/man/en/epgsearchcats.conf.5.gz
index 548abc8..5b5ec23 100644
Binary files a/man/en/epgsearchcats.conf.5.gz and b/man/en/epgsearchcats.conf.5.gz differ
diff --git a/man/en/epgsearchchangrps.conf.5.gz b/man/en/epgsearchchangrps.conf.5.gz
index b6ca895..5e0906a 100644
Binary files a/man/en/epgsearchchangrps.conf.5.gz and b/man/en/epgsearchchangrps.conf.5.gz differ
diff --git a/man/en/epgsearchcmds.conf.5.gz b/man/en/epgsearchcmds.conf.5.gz
index 02120b5..70d2724 100644
Binary files a/man/en/epgsearchcmds.conf.5.gz and b/man/en/epgsearchcmds.conf.5.gz differ
diff --git a/man/en/epgsearchdirs.conf.5.gz b/man/en/epgsearchdirs.conf.5.gz
index 6f95649..d74ff4f 100644
Binary files a/man/en/epgsearchdirs.conf.5.gz and b/man/en/epgsearchdirs.conf.5.gz differ
diff --git a/man/en/epgsearchmenu.conf.5.gz b/man/en/epgsearchmenu.conf.5.gz
index 1bb3e63..892a36f 100644
Binary files a/man/en/epgsearchmenu.conf.5.gz and b/man/en/epgsearchmenu.conf.5.gz differ
diff --git a/man/en/epgsearchswitchtimers.conf.5.gz b/man/en/epgsearchswitchtimers.conf.5.gz
index 901b560..d8a636e 100644
Binary files a/man/en/epgsearchswitchtimers.conf.5.gz and b/man/en/epgsearchswitchtimers.conf.5.gz differ
diff --git a/man/en/epgsearchtemplates.conf.5.gz b/man/en/epgsearchtemplates.conf.5.gz
index 1f8bb56..277209d 100644
Binary files a/man/en/epgsearchtemplates.conf.5.gz and b/man/en/epgsearchtemplates.conf.5.gz differ
diff --git a/man/en/epgsearchuservars.conf.5.gz b/man/en/epgsearchuservars.conf.5.gz
index ab4eab0..04f7f55 100644
Binary files a/man/en/epgsearchuservars.conf.5.gz and b/man/en/epgsearchuservars.conf.5.gz differ
diff --git a/man/en/noannounce.conf.5.gz b/man/en/noannounce.conf.5.gz
index 52510e6..7c00b57 100644
Binary files a/man/en/noannounce.conf.5.gz and b/man/en/noannounce.conf.5.gz differ
diff --git a/man/en/timersdone.conf.5.gz b/man/en/timersdone.conf.5.gz
index 2b12101..af0ec32 100644
Binary files a/man/en/timersdone.conf.5.gz and b/man/en/timersdone.conf.5.gz differ
diff --git a/md5.c b/md5.c
index 7a1e068..2e5a1ea 100644
--- a/md5.c
+++ b/md5.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/md5.h b/md5.h
index f4f4a9d..107e91c 100644
--- a/md5.h
+++ b/md5.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_announcelist.c b/menu_announcelist.c
index fc5ff01..feccae1 100644
--- a/menu_announcelist.c
+++ b/menu_announcelist.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -40,7 +40,7 @@ void cMenuAnnounceList::SetHelpKeys(bool Force)
   cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current());
   int NewHelpKeys = 0;
   if (item) {
-    if (item->Selectable() && item->timerMatch == tmFull)	
+    if (item->Selectable() && item->timerMatch == tmFull)
       NewHelpKeys = 2;
     else
       NewHelpKeys = 1;
@@ -48,7 +48,7 @@ void cMenuAnnounceList::SetHelpKeys(bool Force)
 
   bool hasTimer = (NewHelpKeys == 2);
   if (NewHelpKeys != helpKeys || Force)
-    { 
+    {
       if (toggleKeys==0)
 	SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), m_bSort? tr("Button$by channel"):tr("Button$by time"), modeYellow==showTitleEpisode?tr("Button$Episode"):tr("Button$Title"), trVDR("Button$Edit"));
       else
@@ -69,15 +69,15 @@ eOSState cMenuAnnounceList::ProcessKey(eKeys Key)
             if (item)
             {
                if (!HasSubMenu())
-                  return AddSubMenu(new cMenuAnnounceDetails(item->event, item->search)); 
+                  return AddSubMenu(new cMenuAnnounceDetails(item->event, item->search));
                else if (!showsDetails)
                   return Switch();
-               else 
+               else
                   return osContinue;
             }
          }
          break;
-         default:      
+         default:
             break;
       }
    }
@@ -111,7 +111,7 @@ cMenuAnnounceDetails::cMenuAnnounceDetails(const cEvent* Event, const cSearchExt
       else
          announceAgain = 0;
    }
-   Set();   
+   Set();
 }
 
 cMenuAnnounceDetails::~cMenuAnnounceDetails()
@@ -123,13 +123,13 @@ void cMenuAnnounceDetails::Set()
 {
    int current = Current();
    Clear();
-  
+
    Add(new cMenuEditBoolItem(tr("announce again"), &announceAgain, trVDR("no"), trVDR("yes")));
    if (announceAgain)
    {
-      Add(new cMenuEditBoolItem(IndentMenuItem(tr("with next update")), &announceWithNextUpdate, trVDR("no"), trVDR("yes")));      
+      Add(new cMenuEditBoolItem(IndentMenuItem(tr("with next update")), &announceWithNextUpdate, trVDR("no"), trVDR("yes")));
       if (!announceWithNextUpdate)
-         Add(new cMenuEditDateItem(IndentMenuItem(IndentMenuItem(tr("again from"))), &announceAgainDay, NULL));      
+         Add(new cMenuEditDateItem(IndentMenuItem(IndentMenuItem(tr("again from"))), &announceAgainDay, NULL));
    }
    else
       announceAgainDay = 0;
@@ -139,7 +139,7 @@ void cMenuAnnounceDetails::Set()
       cOsdItem* pInfoItem = new cOsdItem("");
       pInfoItem->SetSelectable(false);
       Add(pInfoItem);
-      
+
       cString info = cString::sprintf("%s: %s", tr("Search timer"), search->search);
       pInfoItem = new cOsdItem(info);
       pInfoItem->SetSelectable(false);
@@ -166,7 +166,7 @@ eOSState cMenuAnnounceDetails::ProcessKey(eKeys Key)
 
    if (state == osUnknown) {
       switch (Key) {
-         case kRed: 
+         case kRed:
          case kGreen:
          case kBlue:
          case kYellow:
@@ -182,7 +182,7 @@ eOSState cMenuAnnounceDetails::ProcessKey(eKeys Key)
             {
                if (!noAnnounce)
                {
-                  noAnnounce = new cNoAnnounce(event, announceAgainDay);             
+                  noAnnounce = new cNoAnnounce(event, announceAgainDay);
                   NoAnnounces.Add(noAnnounce);
                }
                else
@@ -191,10 +191,10 @@ eOSState cMenuAnnounceDetails::ProcessKey(eKeys Key)
             }
             if (announceAgain && announceWithNextUpdate && noAnnounce)
                NoAnnounces.Del(noAnnounce);
-            NoAnnounces.Save(); 
+            NoAnnounces.Save();
          }
          return osBack;
-         default:      
+         default:
             break;
       }
    }
diff --git a/menu_announcelist.h b/menu_announcelist.h
index 3e2903a..9dfa2c7 100644
--- a/menu_announcelist.h
+++ b/menu_announcelist.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_blacklistedit.c b/menu_blacklistedit.c
index 68dca0e..de0bd16 100644
--- a/menu_blacklistedit.c
+++ b/menu_blacklistedit.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -48,7 +48,7 @@ cMenuBlacklistEdit::cMenuBlacklistEdit(cBlacklist *Blacklist, bool New)
     SearchModes[3] = strdup(tr("match exactly"));
     SearchModes[4] = strdup(tr("regular expression"));
     SearchModes[5] = strdup(tr("fuzzy"));
-    
+
     DaysOfWeek[0] = strdup(WeekDayName(0));
     DaysOfWeek[1] = strdup(WeekDayName(1));
     DaysOfWeek[2] = strdup(WeekDayName(2));
@@ -57,7 +57,7 @@ cMenuBlacklistEdit::cMenuBlacklistEdit(cBlacklist *Blacklist, bool New)
     DaysOfWeek[5] = strdup(WeekDayName(5));
     DaysOfWeek[6] = strdup(WeekDayName(6));
     DaysOfWeek[7] = strdup(tr("user-defined"));
-    
+
     UseChannelSel[0] = strdup(trVDR("no"));
     UseChannelSel[1] = strdup(tr("interval"));
     UseChannelSel[2] = strdup(tr("channel group"));
@@ -65,15 +65,15 @@ cMenuBlacklistEdit::cMenuBlacklistEdit(cBlacklist *Blacklist, bool New)
 
     if (New)
     {
-	cSearchExt* SearchTempl = NULL; // copy the default settings, if we have a default template	
+	cSearchExt* SearchTempl = NULL; // copy the default settings, if we have a default template
 	cMutexLock SearchTemplatesLock(&SearchTemplates);
 	cSearchExt *SearchExtTempl = SearchTemplates.First();
-	while (SearchExtTempl) 
-	{	
+	while (SearchExtTempl)
+	{
 	    if (SearchExtTempl->ID == EPGSearchConfig.DefSearchTemplateID)
 		SearchTempl = SearchExtTempl;
 	    SearchExtTempl = SearchTemplates.Next(SearchExtTempl);
-	}    
+	}
 	if (SearchTempl)
 	    Blacklist->CopyFromTemplate(SearchTempl);
     }
@@ -81,7 +81,7 @@ cMenuBlacklistEdit::cMenuBlacklistEdit(cBlacklist *Blacklist, bool New)
     blacklist = Blacklist;
     addIfConfirmed = New;
 
-    if (blacklist) 
+    if (blacklist)
     {
 	data = *blacklist;
 	UserDefDayOfWeek = 0;
@@ -95,7 +95,7 @@ cMenuBlacklistEdit::cMenuBlacklistEdit(cBlacklist *Blacklist, bool New)
 	channelGroupName = NULL;
 
 	channelMin = channelMax = cDevice::CurrentChannel();
-	channelGroupNr = 0;  
+	channelGroupNr = 0;
 	if (data.useChannel==1)
 	{
 	    channelMin = data.channelMin->Number();
@@ -115,14 +115,14 @@ cMenuBlacklistEdit::cMenuBlacklistEdit(cBlacklist *Blacklist, bool New)
 		channelGroupName = strdup(data.channelGroup);
 		channelGroupNr++;
 	    }
-	}	
+	}
 	catvaluesNumeric = NULL;
 	if (SearchExtCats.Count() > 0)
 	  {
 	    catvaluesNumeric = (int*) malloc(SearchExtCats.Count() * sizeof(int));
 	    cSearchExtCat *SearchExtCat = SearchExtCats.First();
 	    int index = 0;
-	    while (SearchExtCat) 	    
+	    while (SearchExtCat)
 	      {
 		catvaluesNumeric[index] = atol(blacklist->catvalues[index]);
 		SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -137,7 +137,7 @@ void cMenuBlacklistEdit::Set()
 {
     int current = Current();
     Clear();
-    
+
     Add(new cMenuEditStrItem( tr("Search term"), data.search, sizeof(data.search), tr(AllowedChars)));
     Add(new cMenuEditStraItem(tr("Search mode"),     &data.mode, 6, SearchModes));
     if (data.mode == 5) // fuzzy
@@ -145,8 +145,8 @@ void cMenuBlacklistEdit::Set()
     Add(new cMenuEditBoolItem( tr("Match case"), &data.useCase, trVDR("no"), trVDR("yes")));
     Add(new cMenuEditBoolItem( tr("Use title"), &data.useTitle, trVDR("no"), trVDR("yes")));
     Add(new cMenuEditBoolItem( tr("Use subtitle"), &data.useSubtitle, trVDR("no"), trVDR("yes")));
-    Add(new cMenuEditBoolItem( tr("Use description"), &data.useDescription, trVDR("no"), trVDR("yes")));  
-    
+    Add(new cMenuEditBoolItem( tr("Use description"), &data.useDescription, trVDR("no"), trVDR("yes")));
+
     // show Categories only if we have them
     if (SearchExtCats.Count() > 0)
     {
@@ -155,19 +155,19 @@ void cMenuBlacklistEdit::Set()
 	{
 	    cSearchExtCat *SearchExtCat = SearchExtCats.First();
 	    int index = 0;
-	    while (SearchExtCat) 
+	    while (SearchExtCat)
 	    {
 	      if (SearchExtCat->searchmode >= 10)
 		Add(new cMenuEditIntItem(IndentMenuItem(SearchExtCat->menuname), &catvaluesNumeric[index], 0, 999999, ""));
 	      else
 		Add(new cMenuEditStrItem( IndentMenuItem(SearchExtCat->menuname), data.catvalues[index], MaxFileName, tr(AllowedChars)));
-	      
+
 	      SearchExtCat = SearchExtCats.Next(SearchExtCat);
 	      index++;
 	    }
 	    Add(new cMenuEditBoolItem(IndentMenuItem(tr("Ignore missing categories")), &data.ignoreMissingEPGCats, trVDR("no"), trVDR("yes")));	}
     }
-    
+
     Add(new cMenuEditStraItem(tr("Use channel"), &data.useChannel, 4, UseChannelSel));
     if (data.useChannel==1)
     {
@@ -192,7 +192,7 @@ void cMenuBlacklistEdit::Set()
 	    channelGroupNr++;
 	Add(new cMenuEditStraItem(IndentMenuItem(tr("Channel group")), &channelGroupNr, ChannelGroups.Count()+1, menuitemsChGr));
     }
-    
+
     Add(new cMenuEditBoolItem( tr("Use time"), &data.useTime, trVDR("no"), trVDR("yes")));
     if (data.useTime == true)
     {
@@ -212,7 +212,7 @@ void cMenuBlacklistEdit::Set()
 	{
 	    UserDefDayOfWeek = data.DayOfWeek;
 	    data.DayOfWeek = 7;
-	}	
+	}
 	Add(new cMenuEditStraItem(IndentMenuItem(tr("Day of week")), &data.DayOfWeek, 8, DaysOfWeek));
     }
     Add(new cMenuEditBoolItem( tr("Use global"), &data.isGlobal, trVDR("no"), trVDR("yes")));
@@ -250,9 +250,9 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
     int iTemp_useDuration = data.useDuration;
     int iTemp_useDayOfWeek = data.useDayOfWeek;
     int iTemp_useExtEPGInfo = data.useExtEPGInfo;
-    
+
     eOSState state = cOsdMenu::ProcessKey(Key);
-    
+
     if (iTemp_mode != data.mode ||
 	iTemp_useTime != data.useTime ||
 	iTemp_useChannel != data.useChannel ||
@@ -264,7 +264,7 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 	Display();
     }
     const char* ItemText = Get(Current())->Text();
-    
+
     if (!HasSubMenu())
     {
 	if (strlen(ItemText)>0 && strstr(ItemText, tr("  from channel")) == ItemText && ((Key >= k0 &&  Key <= k9) || Key == kLeft || Key == kRight))
@@ -289,16 +289,16 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 	int iOnExtCatItem = 0;
 	cSearchExtCat *SearchExtCat = SearchExtCats.First();
 	int index = 0;
-	while (SearchExtCat) 
+	while (SearchExtCat)
 	{
 	    if (strstr(ItemText, IndentMenuItem(SearchExtCat->menuname)) == ItemText)
-	    {		
+	    {
 		iOnExtCatItem = 1;
 		if (SearchExtCat->nvalues > 0)
 		    iOnExtCatItemBrowsable = 1;
 		iCatIndex = index;
 		catname = SearchExtCat->menuname;
-		break;		    
+		break;
 	    }
 	    index++;
 	    SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -335,7 +335,7 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 	else if (iOnExtCatItem)
 	{
 	    if (!InEditMode(ItemText, IndentMenuItem(catname), data.catvalues[iCatIndex]) ||
-		 SearchExtCats.Get(iCatIndex)->searchmode >= 10)	    
+		 SearchExtCats.Get(iCatIndex)->searchmode >= 10)
 		SetHelp(NULL, NULL, NULL, iOnExtCatItemBrowsable?tr("Button$Select"):NULL);
 	}
 	else if (strstr(ItemText, tr("Search term")) != ItemText)
@@ -345,13 +345,13 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 	if (HasSubMenu())
 	    return osContinue;
 	switch (Key) {
-	    case kOk: 
-		if (data.useChannel==1) 
+	    case kOk:
+		if (data.useChannel==1)
 		{
 		    cChannel *ch = Channels.GetByNumber(channelMin);
 		    if (ch)
 			data.channelMin = ch;
-		    else 
+		    else
 		    {
 			Skins.Message(mtError, tr("*** Invalid Channel ***"));
 			break;
@@ -359,7 +359,7 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 		    ch = Channels.GetByNumber(channelMax);
 		    if (ch)
 			data.channelMax = ch;
-		    else 
+		    else
 		    {
 			Skins.Message(mtError, tr("*** Invalid Channel ***"));
 			break;
@@ -372,17 +372,17 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 		}
 		if (data.useChannel==2)
 		    data.channelGroup = strdup(menuitemsChGr[channelGroupNr]);
-		
-		if (blacklist) 
+
+		if (blacklist)
 		{
 		    *blacklist = data;
 		    if (data.DayOfWeek == 7)
 			blacklist->DayOfWeek = UserDefDayOfWeek;
-		    
+
 		    // transfer numeric cat values back to search
 		    cSearchExtCat *SearchExtCat = SearchExtCats.First();
 		    int index = 0;
-		    while (SearchExtCat) 
+		    while (SearchExtCat)
 		      {
 			if (SearchExtCat->searchmode >= 10)
 			  {
@@ -399,7 +399,7 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 			blacklist->ID = Blacklists.GetNewID();
 			Blacklists.Add(blacklist);
 		    }
- 
+
 		    Blacklists.Save();
 		    addIfConfirmed = false;
 		}
@@ -408,10 +408,10 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 		if (iOnUserDefDayItem)
 		    state = AddSubMenu(new cMenuEditDaysOfWeek(&UserDefDayOfWeek));
 		break;
-		
-	    case kBlue:   
+
+	    case kBlue:
 		if (iOnUseChannelGroups || iOnChannelGroup)
-		{		    
+		{
 		    if (channelGroupName)
 			free(channelGroupName);
 		    channelGroupName = strdup(menuitemsChGr[channelGroupNr]);
@@ -446,7 +446,7 @@ eOSState cMenuBlacklistEdit::ProcessKey(eKeys Key)
 	  {
 	    cSearchExtCat *SearchExtCat = SearchExtCats.First();
 	    int index = 0;
-	    while (SearchExtCat) 	    
+	    while (SearchExtCat)
 	      {
 		if (SearchExtCat->searchmode >= 10)
 		  catvaluesNumeric[index] = atoi(data.catvalues[index]);
diff --git a/menu_blacklistedit.h b/menu_blacklistedit.h
index 6a3d5a9..c27c38d 100644
--- a/menu_blacklistedit.h
+++ b/menu_blacklistedit.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_blacklists.c b/menu_blacklists.c
index ddc0cde..512a8e1 100644
--- a/menu_blacklists.c
+++ b/menu_blacklists.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -73,7 +73,7 @@ void cMenuBlacklistsItem::Set(void)
   }
   else if (blacklist->useChannel == 2)
       line << setiosflags(ios::left) << setw(11) << blacklist->channelGroup;
-  
+
   line << "\t";
   if (blacklist->useTime)
   {
@@ -85,7 +85,7 @@ void cMenuBlacklistsItem::Set(void)
   }
   else
     line << "--:--\t--:--";
-	
+
   SetText(strdup(line.str().c_str()), false);
 }
 
@@ -101,7 +101,7 @@ cMenuBlacklists::cMenuBlacklists()
 {
     cMutexLock BlacklistLock(&Blacklists);
     cBlacklist *Blacklist = Blacklists.First();
-    while (Blacklist) {	
+    while (Blacklist) {
 	Add(new cMenuBlacklistsItem(Blacklist));
 	Blacklist = Blacklists.Next(Blacklist);
     }
@@ -165,8 +165,8 @@ eOSState cMenuBlacklists::ProcessKey(eKeys Key)
 	  default: break;
       }
   }
-  if (BlacklistNumber >= 0 && !HasSubMenu()) 
-  {      
+  if (BlacklistNumber >= 0 && !HasSubMenu())
+  {
       cMutexLock BlacklistLock(&Blacklists);
       cBlacklist* Blacklist = Blacklists.Get(BlacklistNumber);
       if (Blacklist)       // a newly created search was confirmed with Ok
diff --git a/menu_blacklists.h b/menu_blacklists.h
index dbd0967..b2d6a10 100644
--- a/menu_blacklists.h
+++ b/menu_blacklists.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_commands.c b/menu_commands.c
index ab0ef99..dbd1761 100644
--- a/menu_commands.c
+++ b/menu_commands.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -28,8 +28,8 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include <vdr/plugin.h>
 #include "menu_searchresults.h"
 #include "menu_myedittimer.h"
-#include "menu_search.h" 
-#include "menu_searchedit.h" 
+#include "menu_search.h"
+#include "menu_searchedit.h"
 #include "epgsearchcfg.h"
 #include "recdone.h"
 #include "epgsearchtools.h"
@@ -48,7 +48,7 @@ cMenuSearchCommands::cMenuSearchCommands(const char *Title, const cEvent* Event,
    directCall = DirectCall;
    SetHasHotkeys();
    LoadCommands();
-    
+
    search = Search;
    event = Event;
    Add(new cOsdItem(hk(tr("Repeats"))));
@@ -74,11 +74,7 @@ cMenuSearchCommands::~cMenuSearchCommands()
 
 void cMenuSearchCommands::LoadCommands()
 {
-#if APIVERSNUM >= 10507
   const char* szLanguageCode = I18nLanguageCode(I18nCurrentLanguage());
-#else
-  const char* szLanguageCode = I18nLanguageCode(Setup.OSDLanguage);
-#endif
 
    char *pstrSearchToken, *pptr;
    char *pstrSearch=strdup(szLanguageCode);
@@ -87,7 +83,7 @@ void cMenuSearchCommands::LoadCommands()
    while(pstrSearchToken) // may contain multiple code, e.g. 'ger,deu'
    {
      cString cmdFile = cString::sprintf("%s-%s.conf", ADDDIR(CONFIGDIR, "epgsearchcmds"), pstrSearchToken);
-      if (access(cmdFile, F_OK) == 0) 	
+      if (access(cmdFile, F_OK) == 0)
       {
          commands.Load(cmdFile, true);
          bLoaded = true;
@@ -107,7 +103,7 @@ eOSState cMenuSearchCommands::Switch(void)
       return osEnd;
    else
    {
-      Skins.Message(mtInfo, trVDR("Can't switch channel!")); 
+      Skins.Message(mtInfo, trVDR("Can't switch channel!"));
       return osContinue;
    }
 }
@@ -123,7 +119,7 @@ eOSState cMenuSearchCommands::Record(void)
 
    int timerMatch = tmNone;
    cTimer* timer = Timers.GetMatch(event, &timerMatch);
-   if (timerMatch == tmFull) 
+   if (timerMatch == tmFull)
    {
       if (EPGSearchConfig.useVDRTimerEditMenu)
          return AddSubMenu(new cMenuEditTimer(timer));
@@ -134,18 +130,18 @@ eOSState cMenuSearchCommands::Record(void)
    timer = new cTimer(event);
    PrepareTimerFile(event, timer);
    cTimer *t = Timers.GetTimer(timer);
-    
-   if (EPGSearchConfig.onePressTimerCreation == 0 || t || (!t && event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL))) 
+
+   if (EPGSearchConfig.onePressTimerCreation == 0 || t || (!t && event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL)))
    {
       if (t)
       {
          delete timer;
-         timer = t;      
+         timer = t;
       }
       if (EPGSearchConfig.useVDRTimerEditMenu)
          return AddSubMenu(new cMenuEditTimer(timer, !t));
       else
-         return AddSubMenu(new cMenuMyEditTimer(timer, !t, event));     
+         return AddSubMenu(new cMenuMyEditTimer(timer, !t, event));
    }
    else
    {
@@ -173,7 +169,7 @@ eOSState cMenuSearchCommands::Record(void)
       Timers.Add(timer);
       timer->Matches();
       Timers.SetModified();
-	
+
       LogFile.iSysLog("timer %s added (active)", *timer->ToDescr());
       return osBack;
    }
@@ -196,7 +192,7 @@ eOSState cMenuSearchCommands::MarkAsRecorded(void)
 eOSState cMenuSearchCommands::AddToSwitchList(void)
 {
    if (!event) return osContinue;
-     
+
    time_t now = time(NULL);
    if (now >= event->StartTime())
    {
@@ -208,7 +204,7 @@ eOSState cMenuSearchCommands::AddToSwitchList(void)
    {
       if (!Interface->Confirm(tr("Add to switch list?")))
 	     return osContinue;
-      cMutexLock SwitchTimersLock(&SwitchTimers);	
+      cMutexLock SwitchTimersLock(&SwitchTimers);
       SwitchTimers.Add(new cSwitchTimer(event));
       SwitchTimers.Save();
       cSwitchTimerThread::Init(); // asure the thread is running
@@ -217,11 +213,11 @@ eOSState cMenuSearchCommands::AddToSwitchList(void)
    {
       if (!Interface->Confirm(tr("Delete from switch list?")))
 	     return osContinue;
-      cMutexLock SwitchTimersLock(&SwitchTimers);		 
+      cMutexLock SwitchTimersLock(&SwitchTimers);
       SwitchTimers.Del(switchTimer);
       SwitchTimers.Save();
       if (SwitchTimers.Count() == 0)
-	     cSwitchTimerThread::Exit(); 
+	     cSwitchTimerThread::Exit();
    }
    return osBack;
 }
@@ -253,19 +249,19 @@ eOSState cMenuSearchCommands::Execute(void)
       if (current == 0)
          return AddSubMenu(new cMenuSearchResultsForQuery(event->Title(), true));
       if (current == 1)
-         return Record(); 
+         return Record();
       if (current == 2)
          return Switch();
       if (current == 3)
-         return CreateSearchTimer(); 
+         return CreateSearchTimer();
       if (current == 4)
          return AddSubMenu(new cMenuSearchResultsForRecs(event->Title()));
       if (current == 5)
-         return MarkAsRecorded(); 
+         return MarkAsRecorded();
       if (current == 6)
-         return AddToSwitchList(); 
+         return AddToSwitchList();
       if (current == 7)
-         return CreateBlacklist(); 
+         return CreateBlacklist();
    }
 
    cCommand *command = commands.Get(current-8);
@@ -279,13 +275,13 @@ eOSState cMenuSearchCommands::Execute(void)
       if (confirmed) {
 	buffer = cString::sprintf("%s...", command->Title());
 	Skins.Message(mtStatus, buffer);
-	
-	buffer = cString::sprintf("'%s' %ld %ld %d '%s' '%s'", 
-				  EscapeString(event->Title()).c_str(), 
-				  event->StartTime(), 
-				  event->EndTime(), 
-				  ChannelNrFromEvent(event), 
-				  EscapeString(Channels.GetByChannelID(event->ChannelID(), true, true)->Name()).c_str(), 
+
+	buffer = cString::sprintf("'%s' %ld %ld %d '%s' '%s'",
+				  EscapeString(event->Title()).c_str(),
+				  event->StartTime(),
+				  event->EndTime(),
+				  ChannelNrFromEvent(event),
+				  EscapeString(Channels.GetByChannelID(event->ChannelID(), true, true)->Name()).c_str(),
 				  EscapeString(event->ShortText()?event->ShortText():"").c_str());
 	const char *Result = command->Execute(buffer);
 	Skins.Message(mtStatus, NULL);
@@ -313,7 +309,7 @@ eOSState cMenuSearchCommands::ProcessKey(eKeys Key)
          case kBlue:
             return osContinue;
          case k1...k9:
-         case kOk:  
+         case kOk:
             return Execute();
          default:   break;
       }
diff --git a/menu_commands.h b/menu_commands.h
index ea777cc..e3bdf2e 100644
--- a/menu_commands.h
+++ b/menu_commands.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_conflictcheck.c b/menu_conflictcheck.c
index c31b1c8..e901da8 100644
--- a/menu_conflictcheck.c
+++ b/menu_conflictcheck.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -54,7 +54,7 @@ cMenuConflictCheckItem::cMenuConflictCheckItem(cConflictCheckTime* Ct, cConflict
 	int recPart = timerObj->recDuration * 100 / (timerObj->stop - timerObj->start);
 	buffer = cString::sprintf("%d\t%s\t%d\t%2d%%\t%s", t->Channel()->Number(), t->Channel()->ShortName(true), t->Priority(), recPart, t->File());
     }
-    SetText(buffer);    
+    SetText(buffer);
 }
 
 // --- cMenuConflictCheck -------------------------------------------------------
@@ -65,7 +65,7 @@ cMenuConflictCheck::cMenuConflictCheck()
     showAll = false;
     lastSel = -1;
     BuildList();
-    Update();    
+    Update();
 }
 
 void cMenuConflictCheck::Update()
@@ -82,7 +82,7 @@ void cMenuConflictCheck::Update()
     else
 	SetHelp(NULL, NULL, NULL, NULL);
 
-    cString buffer = cString::sprintf("%s - %d/%d %s", tr("Timer conflicts"), 
+    cString buffer = cString::sprintf("%s - %d/%d %s", tr("Timer conflicts"),
 	     showAll?conflictCheck.numConflicts:conflictCheck.relevantConflicts,
 	     conflictCheck.numConflicts,
 	     tr("conflicts"));
@@ -93,7 +93,7 @@ void cMenuConflictCheck::Update()
 bool cMenuConflictCheck::BuildList()
 {
     Clear();
-    conflictCheck.Check(); 
+    conflictCheck.Check();
 
     if ((showAll && conflictCheck.numConflicts > 0) ||
 	conflictCheck.relevantConflicts > 0)
@@ -104,7 +104,7 @@ bool cMenuConflictCheck::BuildList()
 	    if (!showAll && ct->ignore) continue;
 	    Add(new cMenuConflictCheckItem(ct));
 	    std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-	    for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); it++) 
+	    for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); ++it)
 		if (!(*it)->ignore || showAll)
 		    Add(new cMenuConflictCheckItem(ct, *it));
 	}
@@ -129,15 +129,15 @@ eOSState cMenuConflictCheck::ProcessKey(eKeys Key)
 {
     bool HadSubMenu = HasSubMenu();
     eOSState state = cOsdMenu::ProcessKey(Key);
-    if (state == osUnknown) 
+    if (state == osUnknown)
     {
-       switch (Key) 
+       switch (Key)
        {
           case kOk:
              if (Count() == 1)
                 return osBack;
           case kRed:
-             if (CurrentTimerObj()) 
+             if (CurrentTimerObj())
                 state = AddSubMenu(new cMenuConflictCheckDetails(CurrentTimerObj(), &conflictCheck));
              break;
           case kBlue:
@@ -171,7 +171,7 @@ bool cMenuConflictCheckDetailsItem::Update(bool Force)
     bool oldhasTimer = hasTimer;
     hasTimer = timerObj->OrigTimer()?timerObj->OrigTimer()->HasFlags(tfActive):false;
     if (Force || hasTimer != oldhasTimer)
-    { 	
+    {
 	cTimer* timer = timerObj->timer;
 	char device[2]="";
 	if (hasTimer)
@@ -183,8 +183,8 @@ bool cMenuConflictCheckDetailsItem::Update(bool Force)
 	}
 
 	cString buffer = cString::sprintf("%s\t%d\t%s - %s\t%d\t%s\t%s", hasTimer?">":"", timer->Channel()->Number(), TIMESTRING(timerObj->start), TIMESTRING(timerObj->stop), timer->Priority(), device, timer->File());
-	
-	SetText(buffer);    
+
+	SetText(buffer);
     }
     return true;
 }
@@ -199,18 +199,20 @@ cMenuConflictCheckDetails::cMenuConflictCheckDetails(cConflictCheckTimerObj* Tim
     conflictCheck = ConflictCheck;
     BuildList();
     SetHelpKeys();
-    string title = string(DATESTRING(checktime->evaltime)) + " " +  TIMESTRING(checktime->evaltime);
-    SetTitle(title.c_str());
+    
+    int recPart = timerObj->recDuration * 100 / (timerObj->stop - timerObj->start);
+    cString buffer = cString::sprintf("%s - %s - %d%%", DATESTRING(checktime->evaltime), TIMESTRING(checktime->evaltime), recPart);
+    SetTitle(buffer);
 }
 
 bool cMenuConflictCheckDetails::BuildList()
 {
     Clear();
     int sel = -1;
-    
+
     std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
     if (timerObj->concurrentTimers)
-	for (it = timerObj->concurrentTimers->begin(); it != timerObj->concurrentTimers->end(); it++) 
+	for (it = timerObj->concurrentTimers->begin(); it != timerObj->concurrentTimers->end(); ++it)
 	{
 	    Add(new cMenuConflictCheckDetailsItem(*it));
         if ((*it)->Event())
@@ -242,7 +244,7 @@ eOSState cMenuConflictCheckDetails::Commands(eKeys Key)
     if (HasSubMenu() || Count() == 0)
 	return osContinue;
     cConflictCheckTimerObj* curTimerObj = CurrentTimerObj();
-    if (curTimerObj && curTimerObj->Event()) 
+    if (curTimerObj && curTimerObj->Event())
     {
         cMenuSearchCommands *menu;
         eOSState state = AddSubMenu(menu = new cMenuSearchCommands(tr("EPG Commands"), curTimerObj->Event(), true));
@@ -306,7 +308,7 @@ eOSState cMenuConflictCheckDetails::ShowSummary()
 	return osContinue;
 
     const cEvent *ei = curTimerObj->Event();
-    if (ei) 
+    if (ei)
     {
 	cChannel *channel = Channels.GetByChannelID(ei->ChannelID(), true, true);
 	if (channel)
@@ -316,19 +318,19 @@ eOSState cMenuConflictCheckDetails::ShowSummary()
 }
 
 void cMenuConflictCheckDetails::UpdateCurrent()
-{       
+{
    cEventObj* cureventObj = eventObjects.GetCurrent();
    if (cureventObj && cureventObj->Event())
-      for (cMenuConflictCheckDetailsItem *item = (cMenuConflictCheckDetailsItem *)First(); item; item = (cMenuConflictCheckDetailsItem *)Next(item)) 
+      for (cMenuConflictCheckDetailsItem *item = (cMenuConflictCheckDetailsItem *)First(); item; item = (cMenuConflictCheckDetailsItem *)Next(item))
          if (item->timerObj && item->timerObj->Event() == cureventObj->Event())
          {
             cureventObj->Select(false);
             SetCurrent(item);
             Display();
             break;
-         }               
+         }
 }
- 
+
 eOSState cMenuConflictCheckDetails::ProcessKey(eKeys Key)
 {
     bool HadSubMenu = HasSubMenu();
@@ -337,11 +339,11 @@ eOSState cMenuConflictCheckDetails::ProcessKey(eKeys Key)
     if (!HasSubMenu() && HadSubMenu) // navigation in summary could have changed current item, so update it
        UpdateCurrent();
 
-    if (state == osUnknown) 
+    if (state == osUnknown)
     {
-	switch (Key) 
+	switch (Key)
 	{
-	    case k1...k9: 
+	    case k1...k9:
 		if (!HasSubMenu())
 		    return Commands(Key);
 		else
@@ -352,9 +354,9 @@ eOSState cMenuConflictCheckDetails::ProcessKey(eKeys Key)
 		    return ShowSummary();
 		else
 		    state = osContinue;
-		break;		
+		break;
 	    case kRed:
-		if(!HasSubMenu()) 	     
+		if(!HasSubMenu())
         {
            if (CurrentTimerObj() && CurrentTimerObj()->Event())
               return Commands(k1);
@@ -365,15 +367,15 @@ eOSState cMenuConflictCheckDetails::ProcessKey(eKeys Key)
            state = osContinue;
         break;
 	    case kGreen:
-		if(!HasSubMenu()) 	     
+		if(!HasSubMenu())
            state = ToggleTimer(CurrentTimerObj());
 		break;
 	    case kYellow:
-		if(!HasSubMenu()) 	     
+		if(!HasSubMenu())
            state = DeleteTimer(CurrentTimerObj());
 		break;
 	    case kBlue:
-		if(!HasSubMenu()) 	     
+		if(!HasSubMenu())
         {
            if (CurrentTimerObj() && CurrentTimerObj()->Event())
               return AddSubMenu(new cMenuSearchCommands(tr("EPG Commands"),CurrentTimerObj()->Event()));
@@ -386,7 +388,7 @@ eOSState cMenuConflictCheckDetails::ProcessKey(eKeys Key)
 	    default: break;
 	}
     }
-    if (!HasSubMenu()) 
+    if (!HasSubMenu())
     {
 	// perhaps a timer was deleted, so first check this
 	if (conflictCheck)
@@ -394,13 +396,13 @@ eOSState cMenuConflictCheckDetails::ProcessKey(eKeys Key)
 	    std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
 	    if (timerObj->concurrentTimers)
 	    {
-		for (it = timerObj->concurrentTimers->begin(); it != timerObj->concurrentTimers->end(); it++) 
+		for (it = timerObj->concurrentTimers->begin(); it != timerObj->concurrentTimers->end(); ++it)
 		{
 		    bool found = false;
-		    for(cTimer* checkT = Timers.First(); checkT; checkT = Timers.Next(checkT)) 
+		    for(cTimer* checkT = Timers.First(); checkT; checkT = Timers.Next(checkT))
 		    {
 			checkT->Matches();
-			if (checkT == (*it)->OrigTimer()) // ok -> found, check for changes		    
+			if (checkT == (*it)->OrigTimer()) // ok -> found, check for changes
 			{
 			    if (checkT->IsSingleEvent())
 			    {
@@ -421,7 +423,7 @@ eOSState cMenuConflictCheckDetails::ProcessKey(eKeys Key)
 
 				    time_t Start = cTimer::SetTime((*it)->start, cTimer::TimeToInt(checkT->Start()));
 				    if (Start == (*it)->start && (*it)->stop == (*it)->start + length)
-					found = true; 
+					found = true;
 				}
 			    }
 			}
diff --git a/menu_conflictcheck.h b/menu_conflictcheck.h
index 754bd93..95ff253 100644
--- a/menu_conflictcheck.h
+++ b/menu_conflictcheck.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -30,7 +30,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 
 // --- cMenuConflictCheckItem ------------------------------------------------------
 class cMenuConflictCheckItem : public cOsdItem {
-public: 
+public:
     cConflictCheckTime* checktime;
     cConflictCheckTimerObj* timerObj;
     cMenuConflictCheckItem(cConflictCheckTime* Ct, cConflictCheckTimerObj* TimerObj = NULL);
@@ -39,7 +39,7 @@ public:
 // --- cMenuConflictCheck ------------------------------------------------------
 class cMenuConflictCheck : public cOsdMenu {
 private:
-    cConflictCheck conflictCheck;   
+    cConflictCheck conflictCheck;
     bool showAll;
     int lastSel;
     virtual eOSState ProcessKey(eKeys Key);
@@ -53,7 +53,7 @@ private:
 // --- cMenuConflictCheckDetailsItem ------------------------------------------------------
 class cMenuConflictCheckDetailsItem : public cOsdItem {
     bool hasTimer;
-public: 
+public:
     cConflictCheckTimerObj* timerObj;
     cMenuConflictCheckDetailsItem(cConflictCheckTimerObj* TimerObj = NULL);
     bool Update(bool Force = false);
@@ -63,7 +63,7 @@ public:
 class cMenuConflictCheckDetails : public cOsdMenu {
 private:
     cConflictCheck* conflictCheck;
-    cConflictCheckTimerObj* timerObj;   
+    cConflictCheckTimerObj* timerObj;
     cConflictCheckTime* checktime;
     cEventObjects eventObjects;
 
diff --git a/menu_deftimercheckmethod.c b/menu_deftimercheckmethod.c
index deee8b7..a42bd92 100644
--- a/menu_deftimercheckmethod.c
+++ b/menu_deftimercheckmethod.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -39,11 +39,11 @@ bool cDefTimerCheckMode::Parse(const char *s)
     char *pos_next;
     int parameter = 1;
     int valuelen;
-    
+
 #define MAXVALUELEN (10 * MaxFileName)
-    
+
     char value[MAXVALUELEN];
-    
+
     pos = line = strdup(s);
     pos_next = pos + strlen(pos);
     if (*pos_next == '\n') *pos_next = 0;
@@ -55,9 +55,9 @@ bool cDefTimerCheckMode::Parse(const char *s)
 		if (!pos_next)
 		    pos_next = pos + strlen(pos);
 		valuelen = pos_next - pos + 1;
-		if (valuelen > MAXVALUELEN) 
+		if (valuelen > MAXVALUELEN)
 		{
-		    LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);  
+		    LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);
 		    valuelen = MAXVALUELEN;
 		}
 		strn0cpy(value, pos, valuelen);
@@ -75,7 +75,7 @@ bool cDefTimerCheckMode::Parse(const char *s)
 	}
 	if (*pos) pos++;
     } //while
-    
+
     free(line);
     return (parameter >= 2) ? true : false;
 }
@@ -137,13 +137,13 @@ void cMenuDefTimerCheckMethod::Set()
 {
     int current = Current();
     Clear();
-    
+
     delete modes;
-    modes = new int[Channels.Count()];    
+    modes = new int[Channels.Count()];
     int i=0;
-    for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel), i++) 
+    for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel), i++)
     {
-	if (!channel->GroupSep() && *channel->Name()) 
+	if (!channel->GroupSep() && *channel->Name())
 	{
 	    modes[i] = DefTimerCheckModes.GetMode(channel);
 	    Add(new cMenuEditStraItem(channel->Name(), &modes[i], 3, CheckModes));
@@ -161,8 +161,8 @@ eOSState cMenuDefTimerCheckMethod::ProcessKey(eKeys Key)
 	    case kOk:
 	    {
 		int i=0;
-		for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel), i++) 
-		    if (!channel->GroupSep() && *channel->Name()) 
+		for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel), i++)
+		    if (!channel->GroupSep() && *channel->Name())
 			DefTimerCheckModes.SetMode(channel, modes[i]);
 		DefTimerCheckModes.Save();
 		return osBack;
@@ -173,7 +173,7 @@ eOSState cMenuDefTimerCheckMethod::ProcessKey(eKeys Key)
     return state;
 }
 
- 
+
 
 
 
diff --git a/menu_deftimercheckmethod.h b/menu_deftimercheckmethod.h
index 57f4b0a..f593880 100644
--- a/menu_deftimercheckmethod.h
+++ b/menu_deftimercheckmethod.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_dirselect.c b/menu_dirselect.c
index 387815f..92a21f2 100644
--- a/menu_dirselect.c
+++ b/menu_dirselect.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -32,7 +32,7 @@ cDirExts DirExts;
 cConfDDirExts ConfDDirExts;
 
 // --- cMenuDirItem ---------------------------------------------------------
-class cMenuDirItem : public cOsdItem 
+class cMenuDirItem : public cOsdItem
 {
  private:
     char* directory;
@@ -52,10 +52,10 @@ int cMenuDirItem::Compare(const cListObject &ListObject) const
 	if (hasVars1 != hasVars2)
 	    return hasVars2-hasVars1;
 	else
-	    return strcasecmp(directory, p->directory);	
+	    return strcasecmp(directory, p->directory);
     }
     else
-	return strcasecmp(directory, p->directory);	
+	return strcasecmp(directory, p->directory);
 }
 
 
@@ -105,7 +105,7 @@ void cMenuDirSelect::AddDistinct(const char* szText)
 	return;
 
     for(int i=0; i<Count(); i++)
-    {    
+    {
 	const char* ItemText = Get(i)->Text();
 	char* itemtext = strdup(ItemText);
 	char* sztext = strdup(szText);
@@ -130,7 +130,7 @@ void cMenuDirSelect::CreateDirSet(bool extraDirs)
     // add distinct directories from current recordings
     if (Recordings.Count() == 0)
 	Recordings.Load();
-    for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) 
+    for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording))
     {
 	if (recording->HierarchyLevels() > 0)
 	{
@@ -139,10 +139,10 @@ void cMenuDirSelect::CreateDirSet(bool extraDirs)
 	    char* pos = strrchr(dir, '~');
 	    if (pos)
 	    {
-		*pos=0;	    
-		for(int iLevel = 0; iLevel < recording->HierarchyLevels(); iLevel++)		  
-		{		    
-		    directorySet.insert(dir);	
+		*pos=0;
+		for(int iLevel = 0; iLevel < recording->HierarchyLevels(); iLevel++)
+		{
+		    directorySet.insert(dir);
 		    char* pos = strrchr(dir, '~');
 		    if (pos)
 			*pos=0;
@@ -152,17 +152,17 @@ void cMenuDirSelect::CreateDirSet(bool extraDirs)
 	}
     }
     // add distinct directories from current timers
-    for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) 
+    for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer))
     {
 	char* dir = strdup(timer->File());
 	// strip the trailing name dir
 	char* pos = strrchr(dir, '~');
 	if (pos)
 	{
-	    *pos=0;	    
+	    *pos=0;
 	    do
 	    {
-		directorySet.insert(dir);	
+		directorySet.insert(dir);
 		char* pos = strrchr(dir, '~');
 		if (pos)
 		    *pos=0;
@@ -184,7 +184,7 @@ void cMenuDirSelect::CreateDirSet(bool extraDirs)
 	cMutexLock SearchExtsLock(&SearchExts);
 	cSearchExt *searchExt = SearchExts.First();
 	// add distinct directories from existing search timers
-	while (searchExt) 
+	while (searchExt)
 	  {
 	    if (strlen(searchExt->directory) > 0)
 	      directorySet.insert(searchExt->directory);
@@ -193,16 +193,16 @@ void cMenuDirSelect::CreateDirSet(bool extraDirs)
 	// add distinct directories from epgsearchdirs.conf
 	DirExts.Load(AddDirectory(CONFIGDIR, "epgsearchdirs.conf"), true);
 	cDirExt* DirExt = DirExts.First();
-	while (DirExt) 
+	while (DirExt)
 	  {
-	    directorySet.insert(DirExt->Name());	
+	    directorySet.insert(DirExt->Name());
 	    DirExt = DirExts.Next(DirExt);
 	  }
 	// add distinct directories from conf.d files
 	DirExt = ConfDDirExts.First();
-	while (DirExt) 
+	while (DirExt)
 	  {
-	    directorySet.insert(DirExt->Name());	
+	    directorySet.insert(DirExt->Name());
 	    DirExt = ConfDDirExts.Next(DirExt);
 	  }
       }
@@ -230,7 +230,7 @@ void cMenuDirSelect::Load()
 
     CreateDirSet();
     std::set<string>::iterator it;
-    for (it = directorySet.begin(); it != directorySet.end(); it++) 
+    for (it = directorySet.begin(); it != directorySet.end(); ++it)
 	AddDistinct((*it).c_str());
 
     Sort();
@@ -271,7 +271,7 @@ eOSState cMenuDirSelect::ProcessKey(eKeys Key)
 	 case kRed:
 	     return osContinue;
 	 case kBlue:
-	 case kOk:  
+	 case kOk:
 	     if (Count() > 0)
 		 strn0cpy(Directory,Get(Current())->Text(), MaxFileName);
 	     return osBack;
diff --git a/menu_dirselect.h b/menu_dirselect.h
index a260d16..b8f7cbc 100644
--- a/menu_dirselect.h
+++ b/menu_dirselect.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_event.c b/menu_event.c
index 4753f04..6e7c034 100644
--- a/menu_event.c
+++ b/menu_event.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -34,7 +34,7 @@ cMenuEventSearch::cMenuEventSearch(const cEvent* Event, cEventObjects& EventObje
    eventObjects(EventObjects),
    surfMode(SurfMode)
 {
-   
+
    eventObjects.SetCurrent(Event);
    szGreen = szYellow = NULL;
    Set();
@@ -61,8 +61,8 @@ cEventObj* cMenuEventSearch::GetNext(const cEvent* Event)
       if (*i && (*i)->Event() == Event)
       {
          cEventObjects::iterator nexti = i;
-         nexti++;
-         return nexti != eventObjects.end() ? *nexti : NULL; 
+         ++nexti;
+         return nexti != eventObjects.end() ? *nexti : NULL;
       }
 
    return NULL;
@@ -79,11 +79,11 @@ void cMenuEventSearch::Set()
    if (szYellow) free(szYellow);
    szGreen = szYellow = NULL;
 
-   if (event) 
+   if (event)
    {
       cChannel *channel = Channels.GetByChannelID(event->ChannelID(), true, true);
       bool canSwitch = false;
-      if (channel) 
+      if (channel)
       {
          SetTitle(channel->Name());
          canSwitch = channel->Number() != cDevice::CurrentChannel();
@@ -92,7 +92,7 @@ void cMenuEventSearch::Set()
       cEventObj* eventObjPrev = GetPrev(event);
       cEventObj* eventObjNext = GetNext(event);
 
-      int timerMatch = tmNone;      
+      int timerMatch = tmNone;
       Timers.GetMatch(event, &timerMatch);
       const char* szRed = trVDR("Button$Record");
       if (timerMatch == tmFull)
@@ -108,9 +108,9 @@ void cMenuEventSearch::Set()
       }
       else if (surfMode == SurfModeChannel)
       {
-         if (eventObjPrev && eventObjPrev->Event()) 
+         if (eventObjPrev && eventObjPrev->Event())
             szGreen = strdup(CHANNELNAME(Channels.GetByChannelID(eventObjPrev->Event()->ChannelID(), true, true)));
-         if (eventObjNext && eventObjNext->Event()) 
+         if (eventObjNext && eventObjNext->Event())
             szYellow = strdup(CHANNELNAME(Channels.GetByChannelID(eventObjNext->Event()->ChannelID(), true, true)));
          SetHelp(szRed, szGreen, szYellow, canSwitch ? trVDR("Button$Switch") : NULL);
       }
@@ -166,7 +166,7 @@ eOSState cMenuEventSearch::ProcessKey(eKeys Key)
             DisplayMenu()->Scroll(NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft, NORMALKEY(Key) == kLeft || NORMALKEY(Key) == kRight);
             cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp);
             return osContinue;
-         case k1...k9: 
+         case k1...k9:
             if (!HasSubMenu())
                return Commands(Key);
             else
@@ -178,7 +178,7 @@ eOSState cMenuEventSearch::ProcessKey(eKeys Key)
    }
 
    eOSState state = cOsdMenu::ProcessKey(Key);
-  
+
    if (state == osUnknown) {
       switch (Key) {
          case kOk:     return osBack;
@@ -215,9 +215,9 @@ eOSState cMenuEventSearch::ProcessKey(eKeys Key)
 }
 
 cMenuEventSearchSimple::cMenuEventSearchSimple(const cEvent* Event, cEventObjects& EventObjects)
-     :cMenuEventSearch(Event, EventObjects) 
-{ 
-   Set(); 
+     :cMenuEventSearch(Event, EventObjects)
+{
+   Set();
 }
 
 void cMenuEventSearchSimple::Set()
@@ -231,11 +231,11 @@ void cMenuEventSearchSimple::Set()
    if (szYellow) free(szYellow);
    szGreen = szYellow = NULL;
 
-   if (event) 
+   if (event)
    {
       cChannel *channel = Channels.GetByChannelID(event->ChannelID(), true, true);
       bool canSwitch = false;
-      if (channel) 
+      if (channel)
       {
          SetTitle(channel->Name());
          canSwitch = channel->Number() != cDevice::CurrentChannel();
diff --git a/menu_event.h b/menu_event.h
index 6b76f60..dad3353 100644
--- a/menu_event.h
+++ b/menu_event.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -34,7 +34,7 @@ typedef enum
 } MenuEventSurfMode;
 
 class cEventObj
-{   
+{
    const cEvent *event;
    bool selected;
   public:
diff --git a/menu_favorites.c b/menu_favorites.c
index 4444ca0..4cc5a77 100644
--- a/menu_favorites.c
+++ b/menu_favorites.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -47,7 +47,7 @@ bool cMenuFavorites::BuildList()
    cSearchExt *SearchExt = SearchExts.First();
    int timespan = EPGSearchConfig.FavoritesMenuTimespan*60;
 
-   while (SearchExt) 
+   while (SearchExt)
    {
       if (SearchExt->useInFavorites)
          pCompleteSearchResults = SearchExt->Run(modeBlue == showNoPayTV?1:0, false, timespan, pCompleteSearchResults, true);
@@ -58,9 +58,9 @@ bool cMenuFavorites::BuildList()
    {
       set<const cEvent*> foundEvents;
       pCompleteSearchResults->SortBy(CompareEventTime);
-	
-      for (cSearchResult* pResultObj = pCompleteSearchResults->First(); 
-           pResultObj; 
+
+      for (cSearchResult* pResultObj = pCompleteSearchResults->First();
+           pResultObj;
            pResultObj = pCompleteSearchResults->Next(pResultObj))
       {
          if (foundEvents.find(pResultObj->event) == foundEvents.end())
@@ -69,21 +69,21 @@ bool cMenuFavorites::BuildList()
             Add(new cMenuSearchResultsItem(pResultObj->event, modeYellow == showEpisode, false, menuTemplate));
             eventObjects.Add(pResultObj->event);
         }
-      }	
+      }
       delete pCompleteSearchResults;
    }
-   SetHelpKeys();  
+   SetHelpKeys();
    cString szTitle = cString::sprintf("%s: %d %s", tr("Favorites"), Count(), tr("Search results"));
    SetTitle(szTitle);
    Display();
-    
+
    return true;
 }
 
 eOSState cMenuFavorites::OnGreen()
 {
    eOSState state = osUnknown;
-   if(!HasSubMenu()) 	     
+   if(!HasSubMenu())
    {
       toggleKeys = 0;
       cMenuWhatsOnSearch::currentShowMode = cMenuWhatsOnSearch::GetNextMode();
@@ -95,7 +95,7 @@ eOSState cMenuFavorites::OnGreen()
 eOSState cMenuFavorites::OnYellow()
 {
    eOSState state = osUnknown;
-   if(!HasSubMenu()) 	     
+   if(!HasSubMenu())
    {
       cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current());
       if (item && item->event)
@@ -120,7 +120,7 @@ eOSState cMenuFavorites::ProcessKey(eKeys Key)
    }
 
    eOSState state = cMenuSearchResults::ProcessKey(Key);
-   if (state == osUnknown) 
+   if (state == osUnknown)
    {
       switch (Key) {
          case kRecord:
@@ -128,21 +128,21 @@ eOSState cMenuFavorites::ProcessKey(eKeys Key)
             state = OnRed();
             break;
          case k0:
-            if(!HasSubMenu()) 
+            if(!HasSubMenu())
             {
                toggleKeys = 1 - toggleKeys;
                SetHelpKeys(true);
             }
             state = osContinue;
             break;
-         case k1...k9: 
+         case k1...k9:
             state = HasSubMenu()?osContinue:Commands(Key);
             break;
          case kBlue:
             return EPGSearchConfig.useOkForSwitch?ShowSummary():Switch();
             break;
          case kOk:
-            if(HasSubMenu()) 
+            if(HasSubMenu())
             {
                state = cOsdMenu::ProcessKey(Key);
                break;
@@ -152,7 +152,7 @@ eOSState cMenuFavorites::ProcessKey(eKeys Key)
             else
                state = osBack;
             break;
-         default:      
+         default:
             break;
       }
    }
@@ -164,7 +164,7 @@ void cMenuFavorites::SetHelpKeys(bool Force)
   cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current());
   int NewHelpKeys = 0;
   if (item) {
-    if (item->Selectable() && item->timerMatch == tmFull)	
+    if (item->Selectable() && item->timerMatch == tmFull)
       NewHelpKeys = 2;
     else
       NewHelpKeys = 1;
@@ -172,18 +172,18 @@ void cMenuFavorites::SetHelpKeys(bool Force)
 
   bool hasTimer = (NewHelpKeys == 2);
   if (NewHelpKeys != helpKeys || Force)
-    { 
-      showMode nextShowMode = cMenuWhatsOnSearch::GetNextMode();    
+    {
+      showMode nextShowMode = cMenuWhatsOnSearch::GetNextMode();
       cShowMode* mode = cMenuWhatsOnSearch::GetShowMode(nextShowMode);
       const char* szButtonGreen = NULL;
-      if (mode) 
+      if (mode)
 	szButtonGreen = mode->GetDescription();
-      
+
       if (toggleKeys==0)
       SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), szButtonGreen,trVDR("Button$Schedule"), EPGSearchConfig.useOkForSwitch?trVDR("Button$Info"):trVDR("Button$Switch"));
       else
 	SetHelp((EPGSearchConfig.redkeymode==1?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), szButtonGreen,trVDR("Button$Schedule"), EPGSearchConfig.useOkForSwitch?trVDR("Button$Info"):trVDR("Button$Switch"));
       helpKeys = NewHelpKeys;
-    }    
+    }
 }
 
diff --git a/menu_favorites.h b/menu_favorites.h
index 6347855..45dee76 100644
--- a/menu_favorites.h
+++ b/menu_favorites.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_main.c b/menu_main.c
index 4de14a8..3ee3e74 100644
--- a/menu_main.c
+++ b/menu_main.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -29,7 +29,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include "epgsearchext.h"
 #include "menu_event.h"
 #include "menu_searchresults.h"
-#include "menu_search.h" 
+#include "menu_search.h"
 #include "menu_commands.h"
 #include "epgsearchcfg.h"
 #include "epgsearchtools.h"
@@ -81,14 +81,14 @@ cMenuSearchMain::cMenuSearchMain(void)
 void cMenuSearchMain::Display(void)
 {
    cOsdMenu::Display();
-   
-   if (Count() > 0) 
+
+   if (Count() > 0)
    {
       int i = 0;
 
-      for (cOsdItem *item = First(); item; item = Next(item)) 
-         cStatus::MsgOsdEventItem(!item->Selectable() ? 0 : 
-                                  ((cMenuMyScheduleItem*)item)->event, 
+      for (cOsdItem *item = First(); item; item = Next(item))
+         cStatus::MsgOsdEventItem(!item->Selectable() ? 0 :
+                                  ((cMenuMyScheduleItem*)item)->event,
                                   item->Text(), i++, Count());
    }
 }
@@ -117,7 +117,7 @@ void cMenuSearchMain::PrepareSchedule(cChannel *Channel)
    if (schedules) {
 	const cSchedule *Schedule = schedules->GetSchedule(Channel);
 	currentChannel = Channel->Number();
-	if (Schedule && Schedule->Events()->First()) 
+	if (Schedule && Schedule->Events()->First())
 	{
 	    const cEvent *PresentEvent = Schedule->GetPresentEvent();
 	    time_t now = time(NULL);
@@ -137,11 +137,11 @@ void cMenuSearchMain::PrepareSchedule(cChannel *Channel)
 			struct tm tm_rEvent;
 			struct tm tm_rLastEvent;
 			time_t EventDate = Event->StartTime();
-			struct tm *t_event = localtime_r(&EventDate, &tm_rEvent);			
-			struct tm *t_lastevent = localtime_r(&lastEventDate, &tm_rLastEvent);			
+			struct tm *t_event = localtime_r(&EventDate, &tm_rEvent);
+			struct tm *t_lastevent = localtime_r(&lastEventDate, &tm_rLastEvent);
 			if (t_event->tm_mday != t_lastevent->tm_mday)
 			{
-			  cString szSep = cString::sprintf("----------------------------------\t %s ----------------------------------------------------------------------------------------------", GETDATESTRING(Event));
+			  cString szSep = cString::sprintf("%s\t %s %s", MENU_SEPARATOR_ITEMS, GETDATESTRING(Event), MENU_SEPARATOR_ITEMS);
 			  cOsdItem* pSepItem = new cOsdItem(szSep);
 			  pSepItem->SetSelectable(false);
 			  Add(pSepItem);
@@ -159,7 +159,7 @@ void cMenuSearchMain::PrepareSchedule(cChannel *Channel)
     }
     if (shiftTime)
     {
-      cString buffer = cString::sprintf("%s (%s%dh %dm)", Channel->Name(), shiftTime>0?"+":"", 
+      cString buffer = cString::sprintf("%s (%s%dh %dm)", Channel->Name(), shiftTime>0?"+":"",
 					shiftTime/60, abs(shiftTime)%60);
       SetTitle(buffer);
     }
@@ -179,7 +179,7 @@ eOSState cMenuSearchMain::Record(void)
 {
   cMenuMyScheduleItem *item = (cMenuMyScheduleItem *)Get(Current());
   if (item) {
-      if (item->timerMatch == tmFull) 
+      if (item->timerMatch == tmFull)
       {
 	  int tm = tmNone;
 	  cTimer *timer = Timers.GetMatch(item->event, &tm);
@@ -195,17 +195,17 @@ eOSState cMenuSearchMain::Record(void)
      cTimer *timer = new cTimer(item->event);
      PrepareTimerFile(item->event, timer);
      cTimer *t = Timers.GetTimer(timer);
-     if (EPGSearchConfig.onePressTimerCreation == 0 || t || !item->event || (!t && item->event && item->event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL))) 
+     if (EPGSearchConfig.onePressTimerCreation == 0 || t || !item->event || (!t && item->event && item->event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL)))
      {
 	 if (t)
 	 {
 	     delete timer;
-	     timer = t;      
+	     timer = t;
 	 }
 	 if (EPGSearchConfig.useVDRTimerEditMenu)
 	     return AddSubMenu(new cMenuEditTimer(timer, !t));
 	 else
-	     return AddSubMenu(new cMenuMyEditTimer(timer, !t, item->event));     
+	     return AddSubMenu(new cMenuMyEditTimer(timer, !t, item->event));
      }
      else
      {
@@ -232,7 +232,7 @@ eOSState cMenuSearchMain::Record(void)
 
 	 SetAux(timer, fullaux);
 	 Timers.Add(timer);
-	 gl_timerStatusMonitor->SetConflictCheckAdvised(); 
+	 gl_timerStatusMonitor->SetConflictCheckAdvised();
 	 timer->Matches();
 	 Timers.SetModified();
 	 LogFile.iSysLog("timer %s added (active)", *timer->ToDescr());
@@ -255,7 +255,7 @@ eOSState cMenuSearchMain::Switch(void)
      if (channel && cDevice::PrimaryDevice()->SwitchChannel(channel, true))
         return osEnd;
      }
-  Skins.Message(mtInfo, trVDR("Can't switch channel!")); 
+  Skins.Message(mtInfo, trVDR("Can't switch channel!"));
   return osContinue;
 }
 
@@ -263,7 +263,7 @@ eOSState cMenuSearchMain::ExtendedSearch(void)
 {
     return AddSubMenu(new cMenuEPGSearchExt());
 }
- 
+
 eOSState cMenuSearchMain::Commands(eKeys Key)
 {
   if (HasSubMenu() || Count() == 0)
@@ -284,7 +284,7 @@ eOSState cMenuSearchMain::ShowSummary()
    if (Count())
    {
       cMenuMyScheduleItem *mi = (cMenuMyScheduleItem *)Get(Current());
-      if (mi && mi->event) 
+      if (mi && mi->event)
          return AddSubMenu(new cMenuEventSearch(mi->event, eventObjects, SurfModeTime));
    }
    return osContinue;
@@ -295,7 +295,7 @@ void cMenuSearchMain::SetHelpKeys(bool Force)
     cMenuMyScheduleItem *item = (cMenuMyScheduleItem *)Get(Current());
     int NewHelpKeys = 0;
         if (item) {
-      if (item->Selectable() && item->timerMatch == tmFull)	
+      if (item->Selectable() && item->timerMatch == tmFull)
         NewHelpKeys = 2;
       else
         NewHelpKeys = 1;
@@ -307,12 +307,12 @@ void cMenuSearchMain::SetHelpKeys(bool Force)
 	if (toggleKeys==0)
 	  SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), trVDR("Button$Now"), trVDR("Button$Next"), EPGSearchConfig.bluekeymode==0?trVDR("Button$Switch"):tr("Button$Search"));
 	else
-	  {	
+	  {
 	    const char* szGreenToggled = CHANNELNAME(Channels.GetByNumber(currentChannel-1,-1));
 	    const char* szYellowToggled = CHANNELNAME(Channels.GetByNumber(currentChannel+1,1));
-	    
+
 	    SetHelp((EPGSearchConfig.redkeymode==1?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), (EPGSearchConfig.toggleGreenYellow==0?trVDR("Button$Now"):szGreenToggled), (EPGSearchConfig.toggleGreenYellow==0?trVDR("Button$Next"):szYellowToggled), EPGSearchConfig.bluekeymode==1?trVDR("Button$Switch"):tr("Button$Search"));
-	
+
 	  }
 	helpKeys = NewHelpKeys;
       }
@@ -333,18 +333,18 @@ void cMenuSearchMain::UpdateCurrent()
    // navigation in summary could have changed current item, so update it
    cEventObj* cureventObj = eventObjects.GetCurrent();
    if (cureventObj && cureventObj->Event())
-      for (cMenuMyScheduleItem *item = (cMenuMyScheduleItem *)First(); item; item = (cMenuMyScheduleItem *)Next(item)) 
+      for (cMenuMyScheduleItem *item = (cMenuMyScheduleItem *)First(); item; item = (cMenuMyScheduleItem *)Next(item))
          if (item->event == cureventObj->Event())
          {
             cureventObj->Select(false);
             SetCurrent(item);
             Display();
             break;
-         }               
+         }
 }
 
 eOSState cMenuSearchMain::ProcessKey(eKeys Key)
-{ 
+{
     bool HadSubMenu = HasSubMenu();
     eOSState state = cOsdMenu::ProcessKey(Key);
 
@@ -387,7 +387,7 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key)
             UpdateCurrent();
             state = Record();
             break;
-	     } 
+	     }
 	     if (Count())
 	     {
 		 if (EPGSearchConfig.redkeymode==toggleKeys)
@@ -404,21 +404,21 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key)
 	     }
 	     break;
 	 case k0:
-	     if(!HasSubMenu()) 
+	     if(!HasSubMenu())
 	     {
 		 toggleKeys = 1 - toggleKeys;
 		 SetHelpKeys(true);
 	     }
 	     state = osContinue;
 	     break;
-	 case k1...k9: 
+	 case k1...k9:
 	     if (!HasSubMenu())
 		 return Commands(Key);
 	     else
 		 state = osContinue;
 	     break;
-	 case kGreen:  
-	     if (schedules) 
+	 case kGreen:
+	     if (schedules)
 	     {
 		 if (HasSubMenu() && !InWhatsOnMenu && !InFavoritesMenu)
 		 {
@@ -451,10 +451,10 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key)
 			 return AddSubMenu(new cMenuWhatsOnSearch(schedules, ChannelNr));
 		     }
 		 }
-		 else 
+		 else
 		 {
 		     cChannel *channel = Channels.GetByNumber(currentChannel-1,-1);
-		     
+
 		     if (channel) {
 			 PrepareSchedule(channel);
 			 if (channel->Number() != cDevice::CurrentChannel()) {
@@ -466,7 +466,7 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key)
 		     return osContinue;
 		 }
 	     }
-	 case kYellow: 
+	 case kYellow:
 	     if (schedules)
 	     {
 		 if (HasSubMenu())
@@ -510,7 +510,7 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key)
 		 return ExtendedSearch();
 	     break;
 	case kInfo:
-	case kOk: 
+	case kOk:
 	   if (Count())
 	       return ShowSummary();
 	   break;
@@ -531,7 +531,7 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key)
 	  }
 	else
 	  shiftTime = 0;
- 
+
 	PrepareSchedule(ch);
 	if (ch->Number() != cDevice::CurrentChannel()) {
 	  otherChannel = ch->Number();
@@ -554,7 +554,7 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key)
 	  gl_InfoConflict = 0;
 	  if (Interface->Confirm(tr("Timer conflict! Show?")))
 	      return AddSubMenu(new cMenuConflictCheck());
-      }      
+      }
   }
   return state;
 }
diff --git a/menu_main.h b/menu_main.h
index e046e94..1d3af61 100644
--- a/menu_main.h
+++ b/menu_main.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_myedittimer.c b/menu_myedittimer.c
index b704b06..d3b1e86 100644
--- a/menu_myedittimer.c
+++ b/menu_myedittimer.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -48,14 +48,14 @@ cMenuMyEditTimer::cMenuMyEditTimer(cTimer *Timer, bool New, const cEvent* Event,
     strcpy(directory, "");
     UserDefDaysOfWeek = 0;
     checkmode = 0;
-    if (Timer) 
+    if (Timer)
     {
 	timer = Timer;
 	event = Event;
 	flags = Timer->Flags();
 	day = Timer->Day();
 	weekdays = Timer->WeekDays();
-	
+
 	start = Timer->Start();
 	stop = Timer->Stop();
 	priority = Timer->Priority();
@@ -68,7 +68,7 @@ cMenuMyEditTimer::cMenuMyEditTimer(cTimer *Timer, bool New, const cEvent* Event,
 	if (forcechannel)
 	    channel = forcechannel->Number();
 	SplitFile();
-	
+
 	addIfConfirmed = New;
 	Set();
 	SetHelp(addIfConfirmed?NULL:trVDR("Button$Delete"), NULL, NULL, NULL);
@@ -81,10 +81,10 @@ void cMenuMyEditTimer::SplitFile()
   char* tmp = strrchr(file, '~');
   if (tmp) // split file in real file and directory
     {
-      if (event && !isempty(event->ShortText())) 
+      if (event && !isempty(event->ShortText()))
 	{
 	  cString eventFile = cString::sprintf("%s~%s", event->Title(), event->ShortText());
-	  char* tmp2 = strstr(file, eventFile); 
+	  char* tmp2 = strstr(file, eventFile);
 	  if (tmp2) // file contains title and subtitle
 	    {
 	      if (tmp2 > file)
@@ -119,7 +119,7 @@ void cMenuMyEditTimer::Set()
     int current = Current();
     Clear();
 
-    cSearchExt* search = TriggeredFromSearchTimer(timer);    
+    cSearchExt* search = TriggeredFromSearchTimer(timer);
 
     Add(new cMenuEditStrItem( trVDR("File"), file, MaxFileName, trVDR(FileNameChars)));
     Add(new cMenuEditStrItem( tr("Directory"), directory, MaxFileName, tr(AllowedChars)));
@@ -303,7 +303,7 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key)
 	else
 	    SetHelp(addIfConfirmed?NULL:trVDR("Button$Delete"), NULL, NULL, NULL);
     }
-    
+
     if ((Key == kYellow) && ((iOnDirectoryItem && !InEditMode(ItemText, tr("Directory"), directory)) ||
 			     (iOnFileItem && !InEditMode(ItemText, trVDR("File"), file))))
     {
@@ -314,12 +314,12 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key)
 	RefreshCurrent();
 	Display();
     }
-    
-    if (state == osUnknown) 
+
+    if (state == osUnknown)
     {
-	switch (Key) 
+	switch (Key)
 	{
-	    case kOk:     
+	    case kOk:
 	    {
 		cChannel *ch = Channels.GetByNumber(channel);
 		if (!ch)
@@ -327,7 +327,7 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key)
 		    Skins.Message(mtError, tr("*** Invalid Channel ***"));
 		    break;
 		}
-		
+
 		string fullaux = "";
         string aux = "";
 		if (timer && timer->Aux())
@@ -338,9 +338,9 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key)
 		{
 		    time_t startTime = 0, stopTime = 0;;
 		    int begin  = cTimer::TimeToInt(start); // seconds from midnight
-		    int length = cTimer::TimeToInt(stop) - begin;		  
+		    int length = cTimer::TimeToInt(stop) - begin;
 		    if (length < 0)
-			length += SECSINDAY;	      
+			length += SECSINDAY;
 		    startTime = cTimer::SetTime(day, begin);
 		    stopTime = startTime + length;
 		    bstart = event->StartTime() - startTime;
@@ -351,7 +351,7 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key)
 		    {
 			aux = epgsearchaux;
 			free(epgsearchaux);
-		    }	      
+		    }
 		    aux = UpdateAuxValue(aux, "channel", NumToString(ch->Number()) + " - " + CHANNELNAME(ch));
 		    aux = UpdateAuxValue(aux, "update", checkmode);
 		    aux = UpdateAuxValue(aux, "eventid", event->EventID());
@@ -364,31 +364,27 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key)
 		      }
 		    fullaux = UpdateAuxValue(fullaux, "epgsearch", aux);
 		}
-		
+
 #ifdef USE_PINPLUGIN
         aux = "";
         aux = UpdateAuxValue(aux, "protected", fskProtection ? "yes" : "no");
         fullaux = UpdateAuxValue(fullaux, "pin-plugin", aux);
 #endif
-		
+
 		char* tmpFile = strdup(file);
 		tmpFile = strreplace(tmpFile, ':', '|');
 		char* tmpDir = strdup(directory);
 		tmpDir = strreplace(tmpDir, ':', '|');
 		if (strlen(tmpFile) == 0)
 		    tmpFile = strdup(CHANNELNAME(ch));
-		
+
                 if (timer)
                 {
                     cString cmdbuf;
                     cmdbuf = cString::sprintf("%d:%d:%s:%04d:%04d:%d:%d:%s%s%s:%s",
                        flags,
                        ch->Number(),
-#if VDRVERSNUM < 10503
-		       PRINTDAY(day, weekdays),
-#else
                        PRINTDAY(day, weekdays, true),
-#endif
                        start,
                        stop,
                        priority,
@@ -425,7 +421,7 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key)
 	    case kGreen:
 	    case kYellow:
 		return osContinue;
-	    case kBlue:   
+	    case kBlue:
 		if (HasSubMenu())
 		    return osContinue;
 		if (iOnDirectoryItem && !InEditMode(ItemText, tr("Directory"), directory))
@@ -439,10 +435,10 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key)
 	    default: break;
 	}
     }
-    
+
     if (Key != kNone && !HasSubMenu())
     {
-	if (iOnDirectoryItem && !InEditMode(ItemText, tr("Directory"), directory))		
+	if (iOnDirectoryItem && !InEditMode(ItemText, tr("Directory"), directory))
 	    ReplaceDirVars();
     }
     return state;
@@ -471,4 +467,4 @@ void cMenuMyEditTimer::ReplaceDirVars()
     Display();
     return;
 }
- 
+
diff --git a/menu_myedittimer.h b/menu_myedittimer.h
index 639a00f..66f1f9f 100644
--- a/menu_myedittimer.h
+++ b/menu_myedittimer.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -47,7 +47,7 @@ private:
   char file[MaxFileName];
   char directory[MaxFileName];
 #ifdef USE_PINPLUGIN
-  int fskProtection;  
+  int fskProtection;
 #endif
   int checkmode;
 public:
diff --git a/menu_quicksearch.c b/menu_quicksearch.c
index 7177595..39a92fc 100644
--- a/menu_quicksearch.c
+++ b/menu_quicksearch.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -46,7 +46,7 @@ void cMenuQuickSearch::Set()
 {
     int current = Current();
     Clear();
-    
+
     Add(new cMenuEditStrItem( tr("Search term"), data.search, sizeof(data.search), tr(AllowedChars)));
     if (editmode == QUICKSEARCHEXT)
     {
@@ -58,8 +58,8 @@ void cMenuQuickSearch::Set()
 	Add(new cMenuEditBoolItem( tr("Use title"), &data.useTitle, trVDR("no"), trVDR("yes")));
 	Add(new cMenuEditBoolItem( tr("Use subtitle"), &data.useSubtitle, trVDR("no"), trVDR("yes")));
 	Add(new cMenuEditBoolItem( tr("Use description"), &data.useDescription, trVDR("no"), trVDR("yes")));
-    
-    
+
+
 	// show Categories only if we have them
 	if (SearchExtCats.Count() > 0)
 	{
@@ -68,7 +68,7 @@ void cMenuQuickSearch::Set()
 	    {
 		cSearchExtCat *SearchExtCat = SearchExtCats.First();
 		int index = 0;
-		while (SearchExtCat) 
+		while (SearchExtCat)
 		{
 		    Add(new cMenuEditStrItem( IndentMenuItem(SearchExtCat->menuname), data.catvalues[index], MaxFileName, tr(AllowedChars)));
 		    SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -76,7 +76,7 @@ void cMenuQuickSearch::Set()
 		}
 	    }
 	}
-    
+
 	Add(new cMenuEditStraItem(tr("Use channel"), &data.useChannel, 4, UseChannelSel));
 	if (data.useChannel==1)
 	{
@@ -101,7 +101,7 @@ void cMenuQuickSearch::Set()
 		channelGroupNr++;
 	    Add(new cMenuEditStraItem(IndentMenuItem(tr("Channel group")), &channelGroupNr, ChannelGroups.Count()+1, menuitemsChGr));
 	}
-	
+
 	Add(new cMenuEditBoolItem( tr("Use time"), &data.useTime, trVDR("no"), trVDR("yes")));
 	if (data.useTime == true)
 	{
@@ -121,7 +121,7 @@ void cMenuQuickSearch::Set()
 	    {
 		UserDefDayOfWeek = data.DayOfWeek;
 		data.DayOfWeek = 7;
-	    }	
+	    }
 	    Add(new cMenuEditStraItem(IndentMenuItem(tr("Day of week")),     &data.DayOfWeek, 8, DaysOfWeek));
 	}
 	Add(new cMenuEditStraItem(tr("Use blacklists"), &data.blacklistMode, 3, BlacklistModes));
@@ -143,9 +143,9 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
     int iTemp_allowedRepeats = data.allowedRepeats;
     int iTemp_delAfterDays = data.delAfterDays;
     int iTemp_action = data.action;
-    
+
     eOSState state = cOsdMenu::ProcessKey(Key);
-    
+
     if (iTemp_mode != data.mode ||
 	iTemp_useTime != data.useTime ||
 	iTemp_useChannel != data.useChannel ||
@@ -161,7 +161,7 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
 	Display();
     }
     const char* ItemText = Get(Current())->Text();
-    
+
     if (!HasSubMenu())
     {
 	if (strlen(ItemText)>0 && strstr(ItemText, tr("  from channel")) == ItemText && ((Key >= k0 &&  Key <= k9) || Key == kLeft || Key == kRight))
@@ -187,16 +187,16 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
 	int iOnExtCatItem = 0;
 	cSearchExtCat *SearchExtCat = SearchExtCats.First();
 	int index = 0;
-	while (SearchExtCat) 
+	while (SearchExtCat)
 	{
 	    if (strstr(ItemText, IndentMenuItem(SearchExtCat->menuname)) == ItemText)
-	    {		
+	    {
 		iOnExtCatItem = 1;
 		if (SearchExtCat->nvalues > 0)
 		    iOnExtCatItemBrowsable = 1;
 		iCatIndex = index;
 		catname = SearchExtCat->menuname;
-		break;		    
+		break;
 	    }
 	    index++;
 	    SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -235,7 +235,7 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
 	}
 	else if (iOnExtCatItem)
 	{
-	    if (!InEditMode(ItemText, IndentMenuItem(catname), data.catvalues[iCatIndex]))	    
+	    if (!InEditMode(ItemText, IndentMenuItem(catname), data.catvalues[iCatIndex]))
 		SetHelp(NULL, GREENLABEL, NULL, iOnExtCatItemBrowsable?tr("Button$Select"):NULL);
 	}
 	else if (strstr(ItemText, tr("Search term")) != ItemText)
@@ -245,13 +245,13 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
 	if (HasSubMenu())
 	    return osContinue;
 	switch (Key) {
-	    case kOk: 		
-		if (data.useChannel==1) 
+	    case kOk:
+		if (data.useChannel==1)
 		{
 		    cChannel *ch = Channels.GetByNumber(channelMin);
 		    if (ch)
 			data.channelMin = ch;
-		    else 
+		    else
 		    {
 			Skins.Message(mtError, tr("*** Invalid Channel ***"));
 			break;
@@ -259,7 +259,7 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
 		    ch = Channels.GetByNumber(channelMax);
 		    if (ch)
 			data.channelMax = ch;
-		    else 
+		    else
 		    {
 			Skins.Message(mtError, tr("*** Invalid Channel ***"));
 			break;
@@ -272,18 +272,18 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
 		}
 		if (data.useChannel==2)
 		    data.channelGroup = strdup(menuitemsChGr[channelGroupNr]);
-		
-		if ((data.useTitle || data.useSubtitle || data.useDescription) && 
-		    (int(strlen(data.search)) < 3) && 
+
+		if ((data.useTitle || data.useSubtitle || data.useDescription) &&
+		    (int(strlen(data.search)) < 3) &&
 		    !Interface->Confirm(tr("Edit$Search text too short - use anyway?")))
 		    break;
-				
-		if (searchExt) 
+
+		if (searchExt)
 		{
 		    *searchExt = data;
 		    if (data.DayOfWeek == 7)
 			searchExt->DayOfWeek = UserDefDayOfWeek;
-		    
+
 		    if (data.blacklistMode == blacklistsSelection)
 		    {
 			searchExt->blacklists.Clear();
@@ -304,10 +304,10 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
 		if (iOnUserDefDayItem)
 		    state = AddSubMenu(new cMenuEditDaysOfWeek(&UserDefDayOfWeek));
 		break;
-		
-	    case kBlue:   
+
+	    case kBlue:
 		if (iOnUseChannelGroups || iOnChannelGroup)
-		{		    
+		{
 		    if (channelGroupName)
 			free(channelGroupName);
 		    channelGroupName = strdup(menuitemsChGr[channelGroupNr]);
@@ -323,7 +323,7 @@ eOSState cMenuQuickSearch::ProcessKey(eKeys Key)
 		SetHelp(NULL, GREENLABEL, NULL, NULL);
 		Set();
 		Display();
-		break;		
+		break;
 	    case kYellow: state = osContinue;
 	    default: break;
 	}
diff --git a/menu_quicksearch.h b/menu_quicksearch.h
index 87a9ebc..8838517 100644
--- a/menu_quicksearch.h
+++ b/menu_quicksearch.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -28,12 +28,12 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include "epgsearchtools.h"
 
 // --- cMenuQuickSearch --------------------------------------------------------
-class cMenuQuickSearch : public cMenuEditSearchExt {    
+class cMenuQuickSearch : public cMenuEditSearchExt {
     int editmode;
     virtual void Set();
 public:
     cMenuQuickSearch(cSearchExt*);
     virtual eOSState ProcessKey(eKeys Key);
   };
- 
+
 #endif
diff --git a/menu_recsdone.c b/menu_recsdone.c
index 1e9b210..21209fc 100644
--- a/menu_recsdone.c
+++ b/menu_recsdone.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -38,13 +38,13 @@ void cMenuRecDoneItem::Set()
     if (!recDone)
 	return;
     char *buffer = NULL;
-    
+
     char buf[32];
     struct tm tm_r;
     tm *tm = localtime_r(&recDone->startTime, &tm_r);
     strftime(buf, sizeof(buf), "%d.%m.%y %H:%M", tm);
 
-    msprintf(&buffer, "%s\t%s~%s", buf, recDone->title && !showEpisodeOnly?recDone->title:"", 
+    msprintf(&buffer, "%s\t%s~%s", buf, recDone->title && !showEpisodeOnly?recDone->title:"",
 	     recDone->shortText?recDone->shortText:"");
     SetText(buffer, false);
 }
@@ -64,30 +64,46 @@ int cMenuRecDoneItem::Compare(const cListObject &ListObject) const
 }
 
 // --- cMenuRecsDone ----------------------------------------------------------
+#define SHOW_RECDONE_SEARCH 0
+#define SHOW_RECDONE_ALL 1
+#define SHOW_RECDONE_ORPHANED 2
+
 cMenuRecsDone::cMenuRecsDone(cSearchExt* Search)
 :cOsdMenu("", 16)
 {
     search = Search;
-    showAll = true;
+    showMode = SHOW_RECDONE_ALL;
     showEpisodeOnly = false;
     sortModeRecDone = 0;
-    if (search) showAll = false;
+    if (search) showMode = SHOW_RECDONE_SEARCH;
     Set();
     Display();
 }
 
+const char* cMenuRecsDone::ButtonBlue(cSearchExt* Search)
+{
+  if (showMode==SHOW_RECDONE_SEARCH && Search)
+    return tr("Button$Show all");
+  else if (showMode==SHOW_RECDONE_ALL)
+    return tr("Button$Orphaned");
+  else
+    return Search->search;
+}
+
 void cMenuRecsDone::Set()
 {
     Clear();
     cMutexLock RecsDoneLock(&RecsDone);
     cRecDone* recDone = RecsDone.First();
     while (recDone) {
-	if (showAll || (!showAll && search && recDone->searchID == search->ID))
+	if (showMode == SHOW_RECDONE_ALL || 
+	    (showMode == SHOW_RECDONE_SEARCH && search && recDone->searchID == search->ID) ||
+	    (showMode == SHOW_RECDONE_ORPHANED && recDone->searchID == -1))
 	  Add(new cMenuRecDoneItem(recDone, showEpisodeOnly));
 	recDone = RecsDone.Next(recDone);
     }
     UpdateTitle();
-    SetHelp(sortModeRecDone==0?tr("Button$by name"):tr("Button$by date"), tr("Button$Delete all"), trVDR("Button$Delete"), showAll?search->search:tr("Button$Show all"));
+    SetHelp(sortModeRecDone==0?tr("Button$by name"):tr("Button$by date"), tr("Button$Delete all"), trVDR("Button$Delete"), ButtonBlue(search));
     Sort();
 }
 
@@ -99,7 +115,7 @@ cRecDone *cMenuRecsDone::CurrentRecDone(void)
 
 void cMenuRecsDone::UpdateTitle()
 {
-  cString buffer = cString::sprintf("%d %s%s%s", Count(), tr("Recordings"), showAll?"":" ", showAll?"":search->search);
+  cString buffer = cString::sprintf("%d %s%s%s", Count(), tr("Recordings"), showMode == SHOW_RECDONE_ALL?"":" ", showMode != SHOW_RECDONE_SEARCH ? "":search->search);
   SetTitle(buffer);
   Display();
 }
@@ -166,7 +182,7 @@ eOSState cMenuRecsDone::ProcessKey(eKeys Key)
       state = Delete();
       break;
     case kBlue:
-      showAll = !showAll;
+      showMode = (showMode+1)%3;
       Set();
       Display();
       break;
@@ -185,7 +201,7 @@ eOSState cMenuRecsDone::ProcessKey(eKeys Key)
     default: break;
     }
   }
-  
+
   return state;
 }
 
@@ -195,7 +211,7 @@ eOSState cMenuTextDone::ProcessKey(eKeys Key)
     if (state == osContinue) {
 	switch (Key) {
 	    case kBlue:
-		if (recDone->aux) return AddSubMenu(new cMenuText(tr("Auxiliary info"), recDone->aux));		
+		if (recDone->aux) return AddSubMenu(new cMenuText(tr("Auxiliary info"), recDone->aux));
 		break;
 	    case kOk: return osBack;
 	    default:  state = osContinue;
@@ -205,9 +221,9 @@ eOSState cMenuTextDone::ProcessKey(eKeys Key)
 }
 
 // --- cMenuTextDone ----------------------------------------------------------
-cMenuTextDone::cMenuTextDone(const char *Title, cRecDone* RecDone, eDvbFont Font) 
-: cMenuText(Title, RecDone->description, Font), recDone(RecDone) 
+cMenuTextDone::cMenuTextDone(const char *Title, cRecDone* RecDone, eDvbFont Font)
+: cMenuText(Title, RecDone->description, Font), recDone(RecDone)
 {
   if (recDone->aux) SetHelp(NULL, NULL, NULL, tr("Button$Aux info"));
 }
-  
+
diff --git a/menu_recsdone.h b/menu_recsdone.h
index beec9b9..4305b61 100644
--- a/menu_recsdone.h
+++ b/menu_recsdone.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -39,14 +39,14 @@ class cMenuRecDoneItem : public cOsdItem {
     int Compare(const cListObject &ListObject) const;
 };
 
-
 // --- cMenuRecDone ----------------------------------------------------------
 class cMenuRecsDone : public cOsdMenu {
   private:
     cSearchExt* search;
     eOSState Delete(void);
     eOSState DeleteAll(void);
-    bool showAll;
+    const char* ButtonBlue(cSearchExt* Search);
+    int showMode;
     bool showEpisodeOnly;
   protected:
     void Set();
diff --git a/menu_search.c b/menu_search.c
index ddfb5ac..392ce32 100644
--- a/menu_search.c
+++ b/menu_search.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -82,7 +82,7 @@ void cMenuSearchExtItem::Set(void)
       line << setiosflags(ios::left) << setw(11) << searchExt->channelGroup;
   else
     line << " ";
-  
+
   line << "\t";
   if (searchExt->useTime)
   {
@@ -94,7 +94,7 @@ void cMenuSearchExtItem::Set(void)
   }
   else
     line << "--:--\t--:--";
-	
+
   SetText(strdup(line.str().c_str()), false);
 }
 
@@ -125,7 +125,7 @@ void cMenuEPGSearchExt::UpdateTitle()
     int total=0, active=0;
     cMutexLock SearchExtsLock(&SearchExts);
     cSearchExt *SearchExt = SearchExts.First();
-    while (SearchExt) {	
+    while (SearchExt) {
 	if (SearchExt->useAsSearchTimer) active++;
 	SearchExt = SearchExts.Next(SearchExt);
 	total++;
@@ -196,7 +196,7 @@ eOSState cMenuEPGSearchExt::ProcessKey(eKeys Key)
     switch (Key) {
 	case k0:
 	    if (HasSubMenu())
-		return osContinue;	    
+		return osContinue;
 	    if (CurrentSearchExt())
 		state = AddSubMenu(new cMenuSearchActions(CurrentSearchExt()));
 	    else
@@ -208,7 +208,7 @@ eOSState cMenuEPGSearchExt::ProcessKey(eKeys Key)
 	    state = Actions(k1);
 	case kBlue:
 	    if (HasSubMenu())
-		return osContinue;	    
+		return osContinue;
 	    state = AddSubMenu(new cMenuSearchActions(CurrentSearchExt()));
 	    break;
 	case kRed:
@@ -224,8 +224,8 @@ eOSState cMenuEPGSearchExt::ProcessKey(eKeys Key)
       default: break;
     }
   }
-  if (SearchNumber >= 0 && !HasSubMenu()) 
-  {      
+  if (SearchNumber >= 0 && !HasSubMenu())
+  {
       cMutexLock SearchExtsLock(&SearchExts);
       cSearchExt* search = SearchExts.Get(SearchNumber);
       if (search)       // a newly created search was confirmed with Ok
diff --git a/menu_search.h b/menu_search.h
index e706b28..e8471dd 100644
--- a/menu_search.h
+++ b/menu_search.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_searchactions.c b/menu_searchactions.c
index 92bd1f2..e903392 100644
--- a/menu_searchactions.c
+++ b/menu_searchactions.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -50,7 +50,7 @@ cMenuSearchActions::cMenuSearchActions(cSearchExt* Search, bool DirectCall)
 {
     directCall = DirectCall;
     SetHasHotkeys();
-    
+
     search = Search;
 
     Add(new cOsdItem(hk(tr("Execute search"))));
@@ -84,7 +84,7 @@ eOSState cMenuSearchActions::Search(void)
 
 eOSState cMenuSearchActions::OnOffSearchtimer(void)
 {
-   if (search) 
+   if (search)
    {
       search->useAsSearchTimer = search->useAsSearchTimer?0:1;
 	  SearchExts.Save();
@@ -96,9 +96,9 @@ eOSState cMenuSearchActions::OnOffSearchtimer(void)
          if (!EPGSearchConfig.useSearchTimers) // enable search timer thread if necessary
          {
             cSearchTimerThread::Init((cPluginEpgsearch*) cPluginManager::GetPlugin("epgsearch"), true);
-            Skins.Message(mtInfo, tr("Search timers activated in setup."));			
+            Skins.Message(mtInfo, tr("Search timers activated in setup."));
          }
-      }      
+      }
   }
   return osBack;
 }
@@ -113,18 +113,18 @@ eOSState cMenuSearchActions::Execute()
       if (current == 0)
          return Search();
       if (current == 1)
-         return OnOffSearchtimer(); 
+         return OnOffSearchtimer();
       if (current == 2)
       {
          if (!EPGSearchConfig.useSearchTimers) // enable search timer thread if necessary
          {
             cSearchTimerThread::Init((cPluginEpgsearch*) cPluginManager::GetPlugin("epgsearch"), true);
-            Skins.Message(mtInfo, tr("Search timers activated in setup."));			
+            Skins.Message(mtInfo, tr("Search timers activated in setup."));
          }
          if (Interface->Confirm(tr("Run search timer update?")))
             updateForced = 3; // with message about completion
          return osBack;
-      }	
+      }
       if (current == 3 && search)
          return AddSubMenu(new cMenuRecsDone(search));
       if (current == 4 && search)
@@ -167,7 +167,7 @@ eOSState cMenuSearchActions::Execute()
 	 search->DeleteAllTimers();
 	 return osBack;
      }
-     if (current == 10)	 
+     if (current == 10)
        return AddSubMenu(new cMenuConflictCheck());
   }
   return osContinue;
@@ -191,7 +191,7 @@ eOSState cMenuSearchActions::ProcessKey(eKeys Key)
          case kYellow:
          case kBlue:
             return osContinue;
-         case kOk:  
+         case kOk:
             if (!HasSubMenu())
                return Execute();
          default:   break;
diff --git a/menu_searchactions.h b/menu_searchactions.h
index 97bba72..bed11b4 100644
--- a/menu_searchactions.h
+++ b/menu_searchactions.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_searchedit.c b/menu_searchedit.c
index 4dd24d2..88208d2 100644
--- a/menu_searchedit.c
+++ b/menu_searchedit.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -57,7 +57,7 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
    SearchModes[3] = strdup(tr("match exactly"));
    SearchModes[4] = strdup(tr("regular expression"));
    SearchModes[5] = strdup(tr("fuzzy"));
-    
+
    DaysOfWeek[0] = strdup(WeekDayName(0));
    DaysOfWeek[1] = strdup(WeekDayName(1));
    DaysOfWeek[2] = strdup(WeekDayName(2));
@@ -66,7 +66,7 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
    DaysOfWeek[5] = strdup(WeekDayName(5));
    DaysOfWeek[6] = strdup(WeekDayName(6));
    DaysOfWeek[7] = strdup(tr("user-defined"));
-    
+
    UseChannelSel[0] = strdup(trVDR("no"));
    UseChannelSel[1] = strdup(tr("interval"));
    UseChannelSel[2] = strdup(tr("channel group"));
@@ -99,7 +99,7 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
    CompareDateModes[2] = strdup(tr("same week"));
    CompareDateModes[3] = strdup(tr("same month"));
 
-#if APIVERSNUM > 10710 
+#if APIVERSNUM > 10710
    // collect content string IDs
    std::set<std::string> contentStrings;
    for(unsigned int i=0; i<CONTENT_DESCRIPTOR_MAX;i++)
@@ -116,15 +116,15 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
 
    if (!templateMode && New)
    {
-      cSearchExt* SearchTempl = NULL; // copy the default settings, if we have a default template	
+      cSearchExt* SearchTempl = NULL; // copy the default settings, if we have a default template
       cMutexLock SearchTemplatesLock(&SearchTemplates);
       cSearchExt *SearchExtTempl = SearchTemplates.First();
-      while (SearchExtTempl) 
-      {	
+      while (SearchExtTempl)
+      {
          if (SearchExtTempl->ID == EPGSearchConfig.DefSearchTemplateID)
             SearchTempl = SearchExtTempl;
          SearchExtTempl = SearchTemplates.Next(SearchExtTempl);
-      }    
+      }
       if (SearchTempl)
 	SearchExt->CopyFromTemplate(SearchTempl, FromEPG);
    }
@@ -134,7 +134,7 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
    if (!templateMode)
       SetHelp(NULL, NULL,  tr("Button$Help"), tr("Button$Templates"));
 
-   if (searchExt) 
+   if (searchExt)
    {
       data = *searchExt;
       UserDefDayOfWeek = 0;
@@ -148,7 +148,7 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
       channelGroupName = NULL;
 
       channelMin = channelMax = cDevice::CurrentChannel();
-      channelGroupNr = 0;  
+      channelGroupNr = 0;
       if (data.channelMin)
          channelMin = data.channelMin->Number();
       if (data.channelMax)
@@ -171,7 +171,7 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
       }
 
       contentStringsFlags = NULL;
-#if APIVERSNUM > 10710 
+#if APIVERSNUM > 10710
       // set the flags for the content descriptors
       contentStringsFlags = (int*) malloc((CONTENT_DESCRIPTOR_MAX+1) * sizeof(int));
       for(unsigned int i=0; i<=CONTENT_DESCRIPTOR_MAX;i++)
@@ -188,7 +188,7 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
 	 catvaluesNumeric = (int*) malloc(SearchExtCats.Count() * sizeof(int));
          cSearchExtCat *SearchExtCat = SearchExtCats.First();
          int index = 0;
-         while (SearchExtCat) 	    
+         while (SearchExtCat)
          {
             catarrayAvoidRepeats[index] = (SearchExt->catvaluesAvoidRepeat & (1<<index))?1:0;
 	    catvaluesNumeric[index] = atol(SearchExt->catvalues[index]);
@@ -198,7 +198,7 @@ cMenuEditSearchExt::cMenuEditSearchExt(cSearchExt *SearchExt, bool New, bool Tem
       }
       blacklists.Clear();
       if (data.blacklistMode == blacklistsSelection)
-      {	    
+      {
          cBlacklistObject* blacklistObj = searchExt->blacklists.First();
          while(blacklistObj)
          {
@@ -221,7 +221,7 @@ void cMenuEditSearchExt::Set()
    int current = Current();
    Clear();
    helpTexts.clear();
-    
+
    if (templateMode)
      {
       Add(new cMenuEditStrItem( tr("Template name"), data.search, sizeof(data.search), tr(AllowedChars)));
@@ -249,11 +249,11 @@ void cMenuEditSearchExt::Set()
    Add(new cMenuEditBoolItem( tr("Use subtitle"), &data.useSubtitle, trVDR("no"), trVDR("yes")));
    AddHelp(tr("Help$Set this to 'Yes' if you like to search in the episode of an event."));
    Add(new cMenuEditBoolItem( tr("Use description"), &data.useDescription, trVDR("no"), trVDR("yes")));
-   AddHelp(tr("Help$Set this to 'Yes' if you like to search in the summary of an event."));    
-    
-#if APIVERSNUM > 10710 
+   AddHelp(tr("Help$Set this to 'Yes' if you like to search in the summary of an event."));
+
+#if APIVERSNUM > 10710
    Add(new cMenuEditBoolItem( tr("Use content descriptor"), &useContentDescriptors, trVDR("no"), trVDR("yes")));
-   AddHelp(tr("Help$Set this to 'Yes' if you want to search the contents by a descriptor."));    
+   AddHelp(tr("Help$Set this to 'Yes' if you want to search the contents by a descriptor."));
    if (useContentDescriptors)
      {
        vector<int>::const_iterator it;
@@ -269,7 +269,7 @@ void cMenuEditSearchExt::Set()
    if (SearchExtCats.Count() > 0)
      {
        Add(new cMenuEditBoolItem( tr("Use extended EPG info"), &data.useExtEPGInfo, trVDR("no"), trVDR("yes")));
-       AddHelp(tr("Help$The summary of an event, can contain additional information like 'Genre', 'Category', 'Year',... called 'EPG categories' within EPGSearch. External EPG providers often deliver this information. This allows refining a search and other nice things, like searching for the 'tip of the day'. To use it set this to 'Yes'."));    
+       AddHelp(tr("Help$The summary of an event, can contain additional information like 'Genre', 'Category', 'Year',... called 'EPG categories' within EPGSearch. External EPG providers often deliver this information. This allows refining a search and other nice things, like searching for the 'tip of the day'. To use it set this to 'Yes'."));
        if (data.useExtEPGInfo)
 	 {
 	   cSearchExtCat *SearchExtCat = SearchExtCats.First();
@@ -280,7 +280,7 @@ void cMenuEditSearchExt::Set()
 		 Add(new cMenuEditIntItem(IndentMenuItem(SearchExtCat->menuname), &catvaluesNumeric[index], 0, 999999, ""));
 	       else
 		 Add(new cMenuEditStrItem( IndentMenuItem(SearchExtCat->menuname), data.catvalues[index], MaxFileName, tr(AllowedChars)));
-	       AddHelp(tr("Help$The file epgsearchcats.conf specifies the search mode for this entry. One can search by text or by value. You can also edit a list of predefined values in this file that can be selected here."));    
+	       AddHelp(tr("Help$The file epgsearchcats.conf specifies the search mode for this entry. One can search by text or by value. You can also edit a list of predefined values in this file that can be selected here."));
 
 	       SearchExtCat = SearchExtCats.Next(SearchExtCat);
 	       index++;
@@ -288,7 +288,7 @@ void cMenuEditSearchExt::Set()
 	   Add(new cMenuEditBoolItem(IndentMenuItem(tr("Ignore missing categories")), &data.ignoreMissingEPGCats, trVDR("no"), trVDR("yes")));
 	   AddHelp(tr("Help$If a selected category is not part of the summary of an event this normally excludes this event from the search results. To avoid this, set this option to 'Yes', but please handle this with care to avoid a huge amount of results."));	 }
      }
-    
+
    Add(new cMenuEditStraItem(tr("Use channel"), &data.useChannel, 4, UseChannelSel));
    if (data.useChannel==1)
    {
@@ -313,7 +313,7 @@ void cMenuEditSearchExt::Set()
          channelGroupNr++;
       Add(new cMenuEditStraItem(IndentMenuItem(tr("Channel group")), &channelGroupNr, ChannelGroups.Count()+1, menuitemsChGr));
    }
-    
+
    Add(new cMenuEditBoolItem( tr("Use time"), &data.useTime, trVDR("no"), trVDR("yes")));
    if (data.useTime == true)
    {
@@ -333,7 +333,7 @@ void cMenuEditSearchExt::Set()
       {
          UserDefDayOfWeek = data.DayOfWeek;
          data.DayOfWeek = 7;
-      }	
+      }
       Add(new cMenuEditStraItem(IndentMenuItem(tr("Day of week")),     &data.DayOfWeek, 8, DaysOfWeek));
    }
    Add(new cMenuEditStraItem(tr("Use blacklists"), &data.blacklistMode, 4, BlacklistModes));
@@ -387,19 +387,19 @@ void cMenuEditSearchExt::Set()
                cSearchExtCat *SearchExtCat = SearchExtCats.First();
                int iUsed = 0;
                int index = 0;
-               while (SearchExtCat) 
+               while (SearchExtCat)
 		 {
 		   if (catarrayAvoidRepeats[index])
                      iUsed++;
 		   SearchExtCat = SearchExtCats.Next(SearchExtCat);
 		   index++;
 		 }
-	       
+
                cString itemtext = cString::sprintf("%s (%d/%d)", tr("Compare categories"), iUsed, SearchExtCats.Count());
                Add(new cOsdItem(IndentMenuItem(IndentMenuItem(itemtext))));
 	     }
          }
-	    
+
          Add(new cMenuEditIntItem(IndentMenuItem(trVDR("Priority")), &data.Priority, 0, MAXPRIORITY));
          Add(new cMenuEditIntItem(IndentMenuItem(trVDR("Lifetime")), &data.Lifetime, 0, MAXLIFETIME));
          Add(new cMenuEditIntItem(IndentMenuItem(trVDR("Setup.Recording$Margin at start (min)")), &data.MarginStart, -INT_MAX, INT_MAX));
@@ -488,9 +488,9 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
    int iTemp_action = data.action;
    int iTemp_delMode = data.delMode;
    int iTemp_compareSummary = data.compareSummary;
-    
+
    eOSState state = cOsdMenu::ProcessKey(Key);
-    
+
    if (iTemp_mode != data.mode ||
        iTemp_useTime != data.useTime ||
        iTemp_useChannel != data.useChannel ||
@@ -502,8 +502,8 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
        iTemp_avoidRepeats != data.avoidRepeats ||
        iTemp_allowedRepeats != data.allowedRepeats ||
        iTemp_delAfterDays != data.delAfterDays ||
-       iTemp_action != data.action || 
-       iTemp_delMode != data.delMode || 
+       iTemp_action != data.action ||
+       iTemp_delMode != data.delMode ||
        iTemp_compareSummary != data.compareSummary)
    {
       Set();
@@ -517,7 +517,7 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
       }
    }
    const char* ItemText = Get(Current())->Text();
-    
+
    if (!HasSubMenu())
    {
       if (strlen(ItemText)>0 && strstr(ItemText, tr("  from channel")) == ItemText && ((Key >= k0 &&  Key <= k9) || Key == kLeft || Key == kRight))
@@ -548,21 +548,21 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
       int iOnExtCatItem = 0;
       cSearchExtCat *SearchExtCat = SearchExtCats.First();
       int index = 0;
-      while (SearchExtCat) 
+      while (SearchExtCat)
       {
          if (strstr(ItemText, IndentMenuItem(SearchExtCat->menuname)) == ItemText)
-         {		
+         {
             iOnExtCatItem = 1;
             if (SearchExtCat->nvalues > 0)
                iOnExtCatItemBrowsable = 1;
             iCatIndex = index;
             catname = SearchExtCat->menuname;
-            break;		    
+            break;
          }
          index++;
          SearchExtCat = SearchExtCats.Next(SearchExtCat);
       }
-	
+
       if (strstr(ItemText, tr("Search term")) == ItemText)
       {
          if (!InEditMode(ItemText, tr("Search term"), data.search)) // show template for a new search
@@ -625,7 +625,7 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
       else if (iOnExtCatItem)
       {
          if (!InEditMode(ItemText, IndentMenuItem(catname), data.catvalues[iCatIndex]) ||
-	     SearchExtCats.Get(iCatIndex)->searchmode >= 10)	    
+	     SearchExtCats.Get(iCatIndex)->searchmode >= 10)
             SetHelp(NULL, NULL, tr("Button$Help"), iOnExtCatItemBrowsable?tr("Button$Select"):NULL);
       }
       else if (strstr(ItemText, tr("Search term")) != ItemText)
@@ -635,13 +635,13 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
       if (HasSubMenu())
          return osContinue;
       switch (Key) {
-         case kOk: 		
-            if (data.useChannel==1) 
+         case kOk:
+            if (data.useChannel==1)
             {
                cChannel *ch = Channels.GetByNumber(channelMin);
                if (ch)
                   data.channelMin = ch;
-               else 
+               else
                {
                   Skins.Message(mtError, tr("*** Invalid Channel ***"));
                   break;
@@ -649,7 +649,7 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
                ch = Channels.GetByNumber(channelMax);
                if (ch)
                   data.channelMax = ch;
-               else 
+               else
                {
                   Skins.Message(mtError, tr("*** Invalid Channel ***"));
                   break;
@@ -662,23 +662,23 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
             }
             if (data.useChannel==2)
                data.channelGroup = strdup(menuitemsChGr[channelGroupNr]);
-		
-            if ((data.useTitle || data.useSubtitle || data.useDescription) && 
-                (int(strlen(data.search)) < 3) && 
+
+            if ((data.useTitle || data.useSubtitle || data.useDescription) &&
+                (int(strlen(data.search)) < 3) &&
                 !Interface->Confirm(tr("Edit$Search text too short - use anyway?")))
                break;
-				
-            if (searchExt) 
+
+            if (searchExt)
             {
                *searchExt = data;
                if (data.DayOfWeek == 7)
                   searchExt->DayOfWeek = UserDefDayOfWeek;
-		    
+
                // transfer cat selection for 'avoid repeats' back to search
                cSearchExtCat *SearchExtCat = SearchExtCats.First();
                int index = 0;
                searchExt->catvaluesAvoidRepeat = 0;
-               while (SearchExtCat) 
+               while (SearchExtCat)
                {
                   if (catarrayAvoidRepeats[index])
                      searchExt->catvaluesAvoidRepeat += (1<<index);
@@ -689,7 +689,7 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
 	       // transfer numeric cat values back to search
                SearchExtCat = SearchExtCats.First();
                index = 0;
-               while (SearchExtCat) 
+               while (SearchExtCat)
                {
 		 if (SearchExtCat->searchmode >= 10)
 		   {
@@ -699,7 +699,7 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
 		 SearchExtCat = SearchExtCats.Next(SearchExtCat);
 		 index++;
                }
-	       
+
 	       searchExt->SetContentFilter(useContentDescriptors?contentStringsFlags:NULL);
 
                if (data.blacklistMode == blacklistsSelection)
@@ -724,9 +724,9 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
                if (searchExt->useAsSearchTimer && !EPGSearchConfig.useSearchTimers) // enable search timer thread if necessary
                {
                   cSearchTimerThread::Init((cPluginEpgsearch*) cPluginManager::GetPlugin("epgsearch"), true);
-                  Skins.Message(mtInfo, tr("Search timers activated in setup."));			
+                  Skins.Message(mtInfo, tr("Search timers activated in setup."));
                }
-            
+
                SearchExts.Save();
                addIfConfirmed = false;
             }
@@ -735,12 +735,12 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
             if (iOnUserDefDayItem)
                state = AddSubMenu(new cMenuEditDaysOfWeek(&UserDefDayOfWeek));
             break;
-		
-         case kBlue:   
+
+         case kBlue:
             if (iOnDirectoryItem && !InEditMode(ItemText, IndentMenuItem(tr("Directory")), data.directory))
                state = AddSubMenu(new cMenuDirSelect(data.directory));
             if (iOnUseChannelGroups || iOnChannelGroup)
-            {		    
+            {
                if (channelGroupName)
                   free(channelGroupName);
                channelGroupName = strdup(menuitemsChGr[channelGroupNr]);
@@ -792,7 +792,7 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
          {
             cSearchExtCat *SearchExtCat = SearchExtCats.First();
             int index = 0;
-            while (SearchExtCat) 	    
+            while (SearchExtCat)
             {
                catarrayAvoidRepeats[index] = (data.catvaluesAvoidRepeat & (1<<index))?1:0;
                SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -804,7 +804,7 @@ eOSState cMenuEditSearchExt::ProcessKey(eKeys Key)
 	{
 	  cSearchExtCat *SearchExtCat = SearchExtCats.First();
 	  int index = 0;
-	  while (SearchExtCat) 	    
+	  while (SearchExtCat)
             {
 	      if (SearchExtCat->searchmode >= 10)
 		catvaluesNumeric[index] = atoi(data.catvalues[index]);
@@ -842,7 +842,7 @@ eOSState cMenuEditDaysOfWeek::ProcessKey(eKeys Key)
 {
    int i=0;
    if (Key == kBack && negate)
-      *pDaysOfWeek = -*pDaysOfWeek;		 
+      *pDaysOfWeek = -*pDaysOfWeek;
 
    eOSState state = cOsdMenu::ProcessKey(Key);
 
@@ -870,7 +870,7 @@ cMenuSearchEditCompCats::cMenuSearchEditCompCats(int* catarrayAvoidRepeats)
    edit_catarrayAvoidRepeats = (int*) malloc(SearchExtCats.Count() * sizeof(int));
    cSearchExtCat *SearchExtCat = SearchExtCats.First();
    int index = 0;
-   while (SearchExtCat) 
+   while (SearchExtCat)
    {
       edit_catarrayAvoidRepeats[index] = catarrayAvoidRepeats[index];
       cString menutext = cString::sprintf("%s %s", tr("Compare"), SearchExtCat->menuname);
@@ -894,7 +894,7 @@ eOSState cMenuSearchEditCompCats::ProcessKey(eKeys Key)
          {
             cSearchExtCat *SearchExtCat = SearchExtCats.First();
             int index = 0;
-            while (SearchExtCat) 
+            while (SearchExtCat)
             {
                search_catarrayAvoidRepeats[index] = edit_catarrayAvoidRepeats[index];
                SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -997,7 +997,7 @@ eOSState cMenuBlacklistsSelection::ProcessKey(eKeys Key)
          state = osBack;
          break;
          case kRed:
-         case kGreen:	      
+         case kGreen:
          case kYellow:
          {
             cMutexLock BlacklistLock(&Blacklists);
@@ -1067,13 +1067,13 @@ cMenuCatValuesSelect::cMenuCatValuesSelect(char* CatValues, int CatIndex, int Se
          char *pstrSearchToken, *pptr;
          char *pstrSearch=strdup(catValues);
          pstrSearchToken=strtok_r(pstrSearch, ",;|~", &pptr);
-         while(pstrSearchToken) 
+         while(pstrSearchToken)
          {
-            if(SearchExtCat->values[i] && strcmp(SearchExtCat->values[i], skipspace(pstrSearchToken))==0) 
+            if(SearchExtCat->values[i] && strcmp(SearchExtCat->values[i], skipspace(pstrSearchToken))==0)
                sel_cats[i] = true;
             pstrSearchToken=strtok_r(NULL, ",;|~", &pptr);
          }
-         free(pstrSearch);	    
+         free(pstrSearch);
       }
    }
    Set();
@@ -1085,7 +1085,7 @@ void cMenuCatValuesSelect::Set()
    int current = Current();
    int selCount = 0;
    Clear();
-    
+
    string SearchMode =  string(tr("Search mode")) + ": ";
    if (searchMode == 0)
       SearchMode += tr("phrase");
@@ -1145,7 +1145,7 @@ eOSState cMenuCatValuesSelect::ProcessKey(eKeys Key)
 		  state = osBack;
 		}
 	      else
-		{		
+		{
 		  sel_cats[Current()-1] = !sel_cats[Current()-1];
 		  Set();
 		  Display();
diff --git a/menu_searchedit.h b/menu_searchedit.h
index 43e6b8c..d8cc7b2 100644
--- a/menu_searchedit.h
+++ b/menu_searchedit.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -68,7 +68,7 @@ public:
   virtual eOSState ProcessKey(eKeys Key);
   eOSState Help();
   };
- 
+
 // --- cMenuEditDaysOfWeek --------------------------------------------------------
 class cMenuEditDaysOfWeek : public cOsdMenu {
 private:
diff --git a/menu_searchresults.c b/menu_searchresults.c
index 0f5fb4f..3344da5 100644
--- a/menu_searchresults.c
+++ b/menu_searchresults.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -47,7 +47,7 @@ extern bool isUTF8;
 
 static int CompareRecording(const void *p1, const void *p2)
 {
-#if APIVERSNUM < 10721 
+#if APIVERSNUM < 10721
    return (int)((*(cRecording **)p1)->start - (*(cRecording **)p2)->start);
 #else
    return (int)((*(cRecording **)p1)->Start() - (*(cRecording **)p2)->Start());
@@ -55,8 +55,8 @@ static int CompareRecording(const void *p1, const void *p2)
 }
 
 // --- cMenuSearchResultsItem -------------------------------------------------------
-cMenuSearchResultsItem::cMenuSearchResultsItem(const cEvent *EventInfo, bool EpisodeOnly, 
-                                               bool PreviewTimer, cMenuTemplate* MenuTemplate, 
+cMenuSearchResultsItem::cMenuSearchResultsItem(const cEvent *EventInfo, bool EpisodeOnly,
+                                               bool PreviewTimer, cMenuTemplate* MenuTemplate,
                                                const cSearchExt* Search)
 {
    fileName = NULL;
@@ -74,18 +74,18 @@ bool cMenuSearchResultsItem::Update(bool Force)
 {
    if (!menuTemplate)
       return false;
-    
+
    bool result = false;
 
    int OldTimerMatch = timerMatch;
    bool OldInSwitchList = inSwitchList;
-   bool hasMatch = false; 
+   bool hasMatch = false;
    cTimer* timer = NULL;
    if (event) timer = Timers.GetMatch(event, &timerMatch);
    if (event) inSwitchList = (SwitchTimers.InSwitchList(event)!=NULL);
    if (timer) hasMatch = true;
-    
-   if (Force || timerMatch != OldTimerMatch || inSwitchList != OldInSwitchList)  
+
+   if (Force || timerMatch != OldTimerMatch || inSwitchList != OldInSwitchList)
    {
      char t[Utf8BufSize(2)]="",v[Utf8BufSize(2)]="",r[Utf8BufSize(2)]="";
      char szStatus[Utf8BufSize(4)] = "";
@@ -103,7 +103,7 @@ bool cMenuSearchResultsItem::Update(bool Force)
 	  }
 	else
 	  {
-#if defined(__GNUC__) && __GNUC__ < 3 && __GNUC_MINOR__ < 96 
+#if defined(__GNUC__) && __GNUC__ < 3 && __GNUC_MINOR__ < 96
 #else
 	    sprintf(t, "%s", (event && hasMatch ? (timerMatch == tmFull) ? ((timer && timer->Recording())?ICON_REC_UTF8:ICON_CLOCK_UTF8) : ICON_CLOCK_HALF_UTF8 : " "));
 	    sprintf(v, "%s", event && event->Vps() && (event->Vps() - event->StartTime()) ? ICON_VPS_UTF8 : " ");
@@ -127,20 +127,20 @@ bool cMenuSearchResultsItem::Update(bool Force)
       }
       if (t[0] != 'T' && previewTimer)
          t[0] = 'P';
-	
+
       strcpy(szStatus, t);
       strcat(szStatus, v);
       strcat(szStatus, r);
-	
+
       char* buffer = strdup(menuTemplate->MenuTemplate());
       strreplace(buffer, '|', '\t');
 
-      if (!strcasestr(buffer, "%subtitle%") && cTemplFile::GetTemplateByName("MenuFavorites") != menuTemplate) 
+      if (!strcasestr(buffer, "%subtitle%") && cTemplFile::GetTemplateByName("MenuFavorites") != menuTemplate)
 	// make sure, there is a subtitle
          buffer = strreplacei(buffer, "%title%", "%title% ~ %subtitle%");
       if (episodeOnly)
          buffer = strreplacei(buffer, "%title%", "");
-	    
+
       // parse the epxression and evaluate it
       cVarExpr varExpr(buffer);
       char* tmp = strdup(varExpr.Evaluate(event).c_str());
@@ -155,7 +155,7 @@ bool cMenuSearchResultsItem::Update(bool Force)
       buffer = FixSeparators(buffer, '~');
       buffer = FixSeparators(buffer, ':');
       buffer = FixSeparators(buffer, '-');
-	
+
       SetText(buffer, false);
 
       if (EPGSearchConfig.checkTimerConflAfterTimerProg && !Force && timer && timerMatch && timerMatch != OldTimerMatch)
@@ -163,7 +163,7 @@ bool cMenuSearchResultsItem::Update(bool Force)
          cConflictCheck C;
          C.Check();
          if (C.TimerInConflict(timer))
-            gl_InfoConflict = 1;	  
+            gl_InfoConflict = 1;
       }
 
       return true;
@@ -174,7 +174,7 @@ bool cMenuSearchResultsItem::Update(bool Force)
 cMenuSearchResultsItem::cMenuSearchResultsItem(cRecording *Recording)
 {
    event = NULL;
-   search = NULL; 
+   search = NULL;
    fileName = strdup(Recording->FileName());
    SetText(Recording->Title('\t'));
 }
@@ -215,7 +215,7 @@ eOSState cMenuSearchResults::Record(void)
    UpdateCurrent();
    cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current());
    if (item) {
-      if (item->timerMatch == tmFull) 
+      if (item->timerMatch == tmFull)
       {
          int tm = tmNone;
          cTimer *timer = Timers.GetMatch(item->event, &tm);
@@ -231,17 +231,17 @@ eOSState cMenuSearchResults::Record(void)
       cTimer *timer = new cTimer(item->event);
       PrepareTimerFile(item->event, timer);
       cTimer *t = Timers.GetTimer(timer);
-      if (EPGSearchConfig.onePressTimerCreation == 0 || t || !item->event || (!t && item->event && item->event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL))) 
+      if (EPGSearchConfig.onePressTimerCreation == 0 || t || !item->event || (!t && item->event && item->event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL)))
       {
          if (t)
          {
             delete timer;
-            timer = t;      
+            timer = t;
          }
          if (EPGSearchConfig.useVDRTimerEditMenu)
             return AddSubMenu(new cMenuEditTimer(timer, !t));
          else
-            return AddSubMenu(new cMenuMyEditTimer(timer, !t, item->event));     
+            return AddSubMenu(new cMenuMyEditTimer(timer, !t, item->event));
       }
       else
       {
@@ -269,7 +269,7 @@ eOSState cMenuSearchResults::Record(void)
 
          SetAux(timer, fullaux);
          Timers.Add(timer);
-	 gl_timerStatusMonitor->SetConflictCheckAdvised(); 
+	 gl_timerStatusMonitor->SetConflictCheckAdvised();
          timer->Matches();
          Timers.SetModified();
          LogFile.iSysLog("timer %s added (active)", *timer->ToDescr());
@@ -294,7 +294,7 @@ eOSState cMenuSearchResults::Switch(void)
       if (channel && cDevice::PrimaryDevice()->SwitchChannel(channel, true))
          return osEnd;
    }
-   Skins.Message(mtInfo, trVDR("Can't switch channel!")); 
+   Skins.Message(mtInfo, trVDR("Can't switch channel!"));
    return osContinue;
 }
 
@@ -318,7 +318,7 @@ eOSState cMenuSearchResults::ShowSummary()
    if (Count())
    {
       const cEvent *ei = ((cMenuSearchResultsItem *)Get(Current()))->event;
-      if (ei) 
+      if (ei)
       {
          cChannel *channel = Channels.GetByChannelID(ei->ChannelID(), true, true);
          if (channel)
@@ -332,7 +332,7 @@ eOSState cMenuSearchResults::OnRed(cSearchExt* searchExt)
 {
    eOSState state = osUnknown;
 
-   if(HasSubMenu()) 
+   if(HasSubMenu())
       return Record();
 
    if (Count())
@@ -355,7 +355,7 @@ eOSState cMenuSearchResults::OnRed(cSearchExt* searchExt)
 eOSState cMenuSearchResults::OnGreen()
 {
    eOSState state = osUnknown;
-   if(!HasSubMenu()) 	     
+   if(!HasSubMenu())
    {
       m_bSort=!m_bSort;
       BuildList();
@@ -367,7 +367,7 @@ eOSState cMenuSearchResults::OnGreen()
 eOSState cMenuSearchResults::OnYellow()
 {
    eOSState state = osUnknown;
-   if(!HasSubMenu()) 	     
+   if(!HasSubMenu())
    {
       modeYellow = (modeYellow==showTitleEpisode?showEpisode:showTitleEpisode);
       BuildList();
@@ -380,14 +380,14 @@ void cMenuSearchResults::UpdateCurrent()
 {
    cEventObj* cureventObj = eventObjects.GetCurrent();
    if (cureventObj && cureventObj->Event())
-      for (cMenuSearchResultsItem* item = (cMenuSearchResultsItem*)First(); item; item = (cMenuSearchResultsItem*)Next(item)) 
+      for (cMenuSearchResultsItem* item = (cMenuSearchResultsItem*)First(); item; item = (cMenuSearchResultsItem*)Next(item))
          if (item->event == cureventObj->Event())
          {
             cureventObj->Select(false);
             SetCurrent(item);
             Display();
             break;
-         }               
+         }
 }
 
 eOSState cMenuSearchResults::ProcessKey(eKeys Key)
@@ -401,22 +401,22 @@ eOSState cMenuSearchResults::ProcessKey(eKeys Key)
    if (state == osUnknown) {
       switch (Key) {
          case k0:
-            if(!HasSubMenu()) 
+            if(!HasSubMenu())
             {
                toggleKeys = 1 - toggleKeys;
                SetHelpKeys(true);
             }
             state = osContinue;
             break;
-         case kGreen:  
+         case kGreen:
             state = OnGreen();
             break;
-         case kYellow: 
+         case kYellow:
             state = OnYellow();
             break;
          case kOk:
       case kInfo:
-            if(HasSubMenu()) 
+            if(HasSubMenu())
             {
                state = cOsdMenu::ProcessKey(Key);
                break;
@@ -426,11 +426,11 @@ eOSState cMenuSearchResults::ProcessKey(eKeys Key)
             else
                state = osBack;
             break;
-         default:      
+         default:
             break;
       }
    }
-   if (!HasSubMenu()) 
+   if (!HasSubMenu())
    {
       if ((HadSubMenu || gl_TimerProgged) && Update())
       {
@@ -448,7 +448,7 @@ eOSState cMenuSearchResults::ProcessKey(eKeys Key)
          gl_InfoConflict = 0;
          if (Interface->Confirm(tr("Timer conflict! Show?")))
             state = AddSubMenu(new cMenuConflictCheck());
-      }      
+      }
    }
    return state;
 }
@@ -483,9 +483,9 @@ bool cMenuSearchResultsForSearch::BuildList()
    if (pSearchResults)
    {
       pSearchResults->SortBy(m_bSort? CompareEventTime: CompareEventChannel);
-	
-      for (cSearchResult* pResultObj = pSearchResults->First(); 
-           pResultObj; 
+
+      for (cSearchResult* pResultObj = pSearchResults->First();
+           pResultObj;
            pResultObj = pSearchResults->Next(pResultObj))
       {
          if (ignoreRunning && now > pResultObj->event->StartTime())
@@ -496,19 +496,19 @@ bool cMenuSearchResultsForSearch::BuildList()
          Add(new cMenuSearchResultsItem(pResultObj->event, modeYellow == showEpisode, pResultObj->needsTimer, menuTemplate));
          eventObjects.Add(pResultObj->event);
       }
-	
+
       delete pSearchResults;
    }
    if (Count())
       SetCurrent(Get(0));
-   SetHelpKeys(true);  
+   SetHelpKeys(true);
 
    cString szTitle = cString::sprintf("%d %s - %s", Count(), tr("Search results"), searchExt->search);
    SetTitle(szTitle);
 
    SetCurrent(Get(current));
    Display();
-    
+
    return hasResults;
 }
 
@@ -517,7 +517,7 @@ void cMenuSearchResultsForSearch::SetHelpKeys(bool Force)
    cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current());
   int NewHelpKeys = 0;
   if (item) {
-    if (item->Selectable() && item->timerMatch == tmFull)	
+    if (item->Selectable() && item->timerMatch == tmFull)
       NewHelpKeys = 2;
     else
       NewHelpKeys = 1;
@@ -525,12 +525,12 @@ void cMenuSearchResultsForSearch::SetHelpKeys(bool Force)
 
   bool hasTimer = (NewHelpKeys == 2);
   if (NewHelpKeys != helpKeys || Force)
-    { 
+    {
       ModeBlueSR nextModeBlue = (ModeBlueSR)(((int)modeBlue+1)%3);
-      if (nextModeBlue == showTimerPreview && 
+      if (nextModeBlue == showTimerPreview &&
 	  (searchExt->useAsSearchTimer == 0 || searchExt->avoidRepeats == 0))
 	nextModeBlue = (ModeBlueSR)(((int)nextModeBlue+1)%3);
-      
+
       if (toggleKeys==0)
 	SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), m_bSort? tr("Button$by channel"):tr("Button$by time"), modeYellow==showTitleEpisode?tr("Button$Episode"):tr("Button$Title"), ButtonBlue[(int)nextModeBlue]);
       else
@@ -549,7 +549,7 @@ eOSState cMenuSearchResultsForSearch::ProcessKey(eKeys Key)
          case kRed:
             state = OnRed(searchExt);
             break;
-         case k1...k9: 
+         case k1...k9:
             state = HasSubMenu()?osContinue:Commands(Key, searchExt);
             break;
          case kBlue:
@@ -558,18 +558,18 @@ eOSState cMenuSearchResultsForSearch::ProcessKey(eKeys Key)
             else
             {
                modeBlue = (ModeBlueSR)(((int)modeBlue+1)%3);
-               if (modeBlue == showTimerPreview && 
+               if (modeBlue == showTimerPreview &&
                    (!searchExt || (searchExt && (searchExt->useAsSearchTimer == 0 || searchExt->avoidRepeats == 0))))
                   modeBlue = (ModeBlueSR)(((int)modeBlue+1)%3);
-               
+
                if (modeBlue == showTimerPreview)
                   m_bSort = true; // show always sorted by channel
                BuildList();
-               
-               state = osContinue;			
+
+               state = osContinue;
             }
             break;
-         default:      
+         default:
             break;
       }
    }
@@ -587,7 +587,7 @@ cMenuSearchResultsForBlacklist::cMenuSearchResultsForBlacklist(cBlacklist* Black
    blacklist = Blacklist;
    m_bSort = true;
    modeBlue = blacklist->useChannel==3?showNoPayTV:(EPGSearchConfig.ignorePayTV?showNoPayTV:showAll);
-   
+
    BuildList();
 }
 
@@ -601,9 +601,9 @@ bool cMenuSearchResultsForBlacklist::BuildList()
    if (pSearchResults)
    {
       pSearchResults->SortBy(m_bSort? CompareEventTime: CompareEventChannel);
-	
-      for (cSearchResult* pResultObj = pSearchResults->First(); 
-           pResultObj; 
+
+      for (cSearchResult* pResultObj = pSearchResults->First();
+           pResultObj;
            pResultObj = pSearchResults->Next(pResultObj))
       {
          if (ignoreRunning && now > pResultObj->event->StartTime())
@@ -611,18 +611,18 @@ bool cMenuSearchResultsForBlacklist::BuildList()
          Add(new cMenuSearchResultsItem(pResultObj->event, modeYellow == showEpisode, false));
          eventObjects.Add(pResultObj->event);
       }
-	
+
       delete pSearchResults;
    }
    if (Count())
       SetCurrent(Get(0));
-   SetHelpKeys();  
+   SetHelpKeys();
    cString szTitle = cString::sprintf("%d %s - %s", Count(), tr("Blacklist results"), blacklist->search);
    SetTitle(szTitle);
 
    SetCurrent(Get(current));
    Display();
-    
+
    return true;
 }
 
@@ -632,7 +632,7 @@ eOSState cMenuSearchResultsForBlacklist::ProcessKey(eKeys Key)
 
    if (state == osUnknown) {
       switch (Key) {
-         case k1...k9: 
+         case k1...k9:
             state = HasSubMenu()?osContinue:Commands(Key);
             break;
          case kRecord:
@@ -643,9 +643,9 @@ eOSState cMenuSearchResultsForBlacklist::ProcessKey(eKeys Key)
             if (HasSubMenu())
                state = Switch();
             else
-               state = osContinue;			            
+               state = osContinue;
             break;
-         default:      
+         default:
             break;
       }
    }
@@ -657,7 +657,7 @@ void cMenuSearchResultsForBlacklist::SetHelpKeys(bool Force)
   cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current());
   int NewHelpKeys = 0;
   if (item) {
-    if (item->Selectable() && item->timerMatch == tmFull)	
+    if (item->Selectable() && item->timerMatch == tmFull)
       NewHelpKeys = 2;
     else
       NewHelpKeys = 1;
@@ -665,12 +665,12 @@ void cMenuSearchResultsForBlacklist::SetHelpKeys(bool Force)
 
   bool hasTimer = (NewHelpKeys == 2);
   if (NewHelpKeys != helpKeys || Force)
-    { 
+    {
 
       ModeBlueSR nextModeBlue = (ModeBlueSR)(((int)modeBlue+1)%3);
       if (nextModeBlue == showTimerPreview)
 	nextModeBlue = (ModeBlueSR)(((int)nextModeBlue+1)%3);
-      
+
       if (toggleKeys==0)
 	SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), m_bSort? tr("Button$by channel"):tr("Button$by time"), modeYellow==showTitleEpisode?tr("Button$Episode"):tr("Button$Title"), NULL);
       else
@@ -710,7 +710,7 @@ bool cMenuSearchResultsForQuery::BuildList()
 /*   if (!bRes)
    {
       char* szMessage = NULL;
-      asprintf(&szMessage, tr("No results! Try again with tolerance %d?"), searchExt->mode == 5?searchExt->fuzzyTolerance+1:1);      
+      asprintf(&szMessage, tr("No results! Try again with tolerance %d?"), searchExt->mode == 5?searchExt->fuzzyTolerance+1:1);
       string sMessage = szMessage;
       free(szMessage);
       if (Interface->Confirm(sMessage.c_str()))
@@ -745,7 +745,7 @@ bool cMenuSearchResultsForRecs::BuildList()
 {
    cRecording **pArray = NULL;
    int num = 0;
-    
+
    int current = Current();
    Clear();
    for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
@@ -756,7 +756,7 @@ bool cMenuSearchResultsForRecs::BuildList()
      if (s1.empty() || s2.empty()) continue;
 
      // tolerance for fuzzy searching: 90% of the shorter text length, but at least 1
-     int tolerance = std::max(1, (int)std::min(s1.size(), s2.size()) / 10); 
+     int tolerance = std::max(1, (int)std::min(s1.size(), s2.size()) / 10);
 
      bool match = FindIgnoreCase(s1, s2) >= 0 ||
        FindIgnoreCase(s2, s1) >= 0;
@@ -811,7 +811,7 @@ cRecording *cMenuSearchResultsForRecs::GetRecording(cMenuSearchResultsItem *Item
 eOSState cMenuSearchResultsForRecs::Play(void)
 {
    cMenuSearchResultsItem *ri = (cMenuSearchResultsItem*)Get(Current());
-   if (ri) 
+   if (ri)
    {
       cRecording *recording = GetRecording(ri);
       if (recording) {
@@ -826,7 +826,7 @@ eOSState cMenuSearchResultsForRecs::ProcessKey(eKeys Key)
 {
    eOSState state = cOsdMenu::ProcessKey(Key);
 
-   if (state == osUnknown) 
+   if (state == osUnknown)
    {
       if (Key == kOk)
 	{
@@ -851,7 +851,7 @@ cMenuSearchResultsForList::cMenuSearchResultsForList(cSearchResults& SearchResul
    ignoreRunning = IgnoreRunning;
 
    BuildList();
-    
+
    cString szTitle = cString::sprintf(Title, Count());
    SetTitle(szTitle);
 }
@@ -861,7 +861,7 @@ void cMenuSearchResultsForList::SetHelpKeys(bool Force)
   cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current());
   int NewHelpKeys = 0;
   if (item) {
-    if (item->Selectable() && item->timerMatch == tmFull)	
+    if (item->Selectable() && item->timerMatch == tmFull)
       NewHelpKeys = 2;
     else
       NewHelpKeys = 1;
@@ -869,7 +869,7 @@ void cMenuSearchResultsForList::SetHelpKeys(bool Force)
 
   bool hasTimer = (NewHelpKeys == 2);
   if (NewHelpKeys != helpKeys || Force)
-    { 
+    {
       if (toggleKeys==0)
 	SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), m_bSort? tr("Button$by channel"):tr("Button$by time"), modeYellow==showTitleEpisode?tr("Button$Episode"):tr("Button$Title"), ButtonBlue[0]);
       else
@@ -886,9 +886,9 @@ bool cMenuSearchResultsForList::BuildList()
    Clear();
    eventObjects.Clear();
    searchResults->SortBy(m_bSort? CompareEventTime: CompareEventChannel);
-   
-   for (cSearchResult* pResultObj = searchResults->First(); 
-        pResultObj; 
+
+   for (cSearchResult* pResultObj = searchResults->First();
+        pResultObj;
         pResultObj = searchResults->Next(pResultObj))
    {
       if (ignoreRunning && now > pResultObj->event->StartTime())
@@ -899,7 +899,7 @@ bool cMenuSearchResultsForList::BuildList()
    if (Count())
       SetCurrent(Get(0));
 
-   SetHelpKeys();  
+   SetHelpKeys();
 
    SetCurrent(Get(current));
    Display();
@@ -913,14 +913,14 @@ eOSState cMenuSearchResultsForList::ProcessKey(eKeys Key)
 
    if (state == osUnknown) {
       switch (Key) {
-         case k1...k9: 
+         case k1...k9:
             state = HasSubMenu()?osContinue:Commands(Key);
             break;
          case kRecord:
          case kRed:
             state = OnRed();
             break;
-         default:      
+         default:
             break;
       }
    }
diff --git a/menu_searchresults.h b/menu_searchresults.h
index 868144d..7c98225 100644
--- a/menu_searchresults.h
+++ b/menu_searchresults.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -49,14 +49,14 @@ class cMenuSearchResultsItem : public cOsdItem {
     bool previewTimer;
     bool episodeOnly;
     cMenuTemplate* menuTemplate;
- public: 
+ public:
     int timerMatch;
     bool inSwitchList;
     const cEvent *event;
     const cSearchExt* search;
     const char *FileName(void) { return fileName; }
-    cMenuSearchResultsItem(const cEvent *EventInfo, bool EpisodeOnly = false, 
-                           bool PreviewTimer = false, cMenuTemplate* MenuTemplate = NULL, 
+    cMenuSearchResultsItem(const cEvent *EventInfo, bool EpisodeOnly = false,
+                           bool PreviewTimer = false, cMenuTemplate* MenuTemplate = NULL,
                            const cSearchExt* Search = NULL);
     cMenuSearchResultsItem(cRecording *Recording);
     bool Update(bool Force = false);
@@ -84,13 +84,13 @@ class cMenuSearchResults : public cOsdMenu {
     virtual void SetHelpKeys(bool Force=false)=0;
     bool Update(void);
     void UpdateCurrent();
-    
+
     static const cEvent *scheduleEventInfo;
     ModeYellowSR modeYellow;
     ModeBlueSR modeBlue;
  public:
     bool m_bSort;
-    
+
     cMenuSearchResults(cMenuTemplate* MenuTemplate);
 };
 
diff --git a/menu_searchtemplate.c b/menu_searchtemplate.c
index 3604260..0851bf8 100644
--- a/menu_searchtemplate.c
+++ b/menu_searchtemplate.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -81,7 +81,7 @@ void cMenuSearchTemplateItem::Set(void)
   }
   else if (searchExt->useChannel == 2)
       line << setiosflags(ios::left) << setw(11) << searchExt->channelGroup;
-  
+
   line << "\t";
   if (searchExt->useTime)
   {
@@ -93,7 +93,7 @@ void cMenuSearchTemplateItem::Set(void)
   }
   else
     line << "--:--\t--:--";
-	
+
   SetText(strdup(line.str().c_str()), false);
 }
 
@@ -112,7 +112,7 @@ cMenuEPGSearchTemplate::cMenuEPGSearchTemplate(cSearchExt* Search, cBlacklist* B
     newSearch = New;
     cMutexLock SearchTemplatesLock(&SearchTemplates);
     cSearchExt *SearchExt = SearchTemplates.First();
-    while (SearchExt) {	
+    while (SearchExt) {
 	Add(new cMenuSearchTemplateItem(SearchExt));
 	SearchExt = SearchTemplates.Next(SearchExt);
     }
@@ -201,7 +201,7 @@ eOSState cMenuEPGSearchTemplate::ProcessKey(eKeys Key)
 		  if (!newSearch && !Interface->Confirm(tr("Overwrite existing entries?")))
 		      return osBack;
 		  // duplicate template
-		  cSearchExt* t =CurrentSearchTemplate();	      
+		  cSearchExt* t =CurrentSearchTemplate();
 		  if (!t) return osContinue;
 		  // copy all except the name and id
 		  search->CopyFromTemplate(t);
@@ -211,7 +211,7 @@ eOSState cMenuEPGSearchTemplate::ProcessKey(eKeys Key)
 		  if (!newSearch && !Interface->Confirm(tr("Overwrite existing entries?")))
 		      return osBack;
 		  // duplicate template
-		  cSearchExt* t =CurrentSearchTemplate();	      
+		  cSearchExt* t =CurrentSearchTemplate();
 		  if (!t) return osContinue;
 		  // copy all except the name and id
 		  blacklist->CopyFromTemplate(t);
@@ -230,8 +230,8 @@ eOSState cMenuEPGSearchTemplate::ProcessKey(eKeys Key)
 	  default: break;
       }
   }
-  if (SearchNumber >= 0 && !HasSubMenu()) 
-  {      
+  if (SearchNumber >= 0 && !HasSubMenu())
+  {
       cSearchExt* search = SearchTemplates.Get(SearchNumber);
       if (search)       // a newly created template was confirmed with Ok
 	  Add(new cMenuSearchTemplateItem(search));
diff --git a/menu_searchtemplate.h b/menu_searchtemplate.h
index cc7cf6f..edd300e 100644
--- a/menu_searchtemplate.h
+++ b/menu_searchtemplate.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_switchtimers.c b/menu_switchtimers.c
index 87915fc..d94fbe6 100644
--- a/menu_switchtimers.c
+++ b/menu_switchtimers.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -46,7 +46,7 @@ cMenuEditSwitchTimer::cMenuEditSwitchTimer(cSwitchTimer* SwitchTimer, bool New)
 
   switchTimer = SwitchTimer;
   addIfConfirmed = New;
-  if (switchTimer) 
+  if (switchTimer)
     {
       data = *switchTimer;
       Set();
@@ -66,12 +66,12 @@ void cMenuEditSwitchTimer::Set()
     if (data.mode == 2) // ask for switching
       Add(new cMenuEditIntItem(tr("Ask ... minutes before start"), &data.switchMinsBefore, 0, 99));
 
-    cString info = cString::sprintf("%s:\t%s", tr("action at"), 
+    cString info = cString::sprintf("%s:\t%s", tr("action at"),
 				    TIMESTRING(data.startTime - 60 * data.switchMinsBefore));
     cOsdItem* pInfoItem = new cOsdItem(info);
     pInfoItem->SetSelectable(false);
     Add(pInfoItem);
-    Add(new cMenuEditBoolItem(tr("Unmute sound"), &data.unmute, trVDR("no"), trVDR("yes")));    
+    Add(new cMenuEditBoolItem(tr("Unmute sound"), &data.unmute, trVDR("no"), trVDR("yes")));
     SetCurrent(Get(current));
 }
 
@@ -100,13 +100,13 @@ eOSState cMenuEditSwitchTimer::ProcessKey(eKeys Key)
 		    *switchTimer = data;
 		    cMutexLock SwitchTimersLock(&SwitchTimers);
 		    if (addIfConfirmed)
-			SwitchTimers.Add(switchTimer);	      
+			SwitchTimers.Add(switchTimer);
 		    SwitchTimers.Save();
 		}
 		addIfConfirmed = false;
 		return osBack;
 		break;
-	    } 
+	    }
 	    default: break;
 	}
   }
@@ -142,9 +142,9 @@ void cMenuSwitchTimerItem::Set()
 int cMenuSwitchTimerItem::Compare(const cListObject &ListObject) const
 {
     cMenuSwitchTimerItem *p = (cMenuSwitchTimerItem *)&ListObject;
-    if (switchTimer->startTime > p->switchTimer->startTime) 
-	return 1; 
-    else 
+    if (switchTimer->startTime > p->switchTimer->startTime)
+	return 1;
+    else
 	return -1;
 }
 
@@ -161,7 +161,7 @@ void cMenuSwitchTimers::Set()
     Clear();
     cMutexLock SwitchTimersLock(&SwitchTimers);
     cSwitchTimer* switchTimer = SwitchTimers.First();
-    while (switchTimer) 
+    while (switchTimer)
     {
       const cEvent* event = switchTimer->Event();
       if (event)
@@ -198,10 +198,10 @@ eOSState cMenuSwitchTimers::Delete(void)
 
 eOSState cMenuSwitchTimers::DeleteAll(void)
 {
-    if (Interface->Confirm(tr("Edit$Delete all entries?"))) 
+    if (Interface->Confirm(tr("Edit$Delete all entries?")))
     {
 	cMutexLock SwitchTimersLock(&SwitchTimers);
-	while (SwitchTimers.First()) 
+	while (SwitchTimers.First())
 	    SwitchTimers.Del(SwitchTimers.First());
 	SwitchTimers.Save();
 	Set();
@@ -215,7 +215,7 @@ eOSState cMenuSwitchTimers::Summary(void)
     if (HasSubMenu() || Count() == 0)
 	return osContinue;
     cSwitchTimer *curSwitchTimer = CurrentSwitchTimer();
-    
+
     if (curSwitchTimer)
     {
       const cEvent* event = curSwitchTimer->Event();
diff --git a/menu_switchtimers.h b/menu_switchtimers.h
index 7db3d38..d98fb37 100644
--- a/menu_switchtimers.h
+++ b/menu_switchtimers.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_templateedit.c b/menu_templateedit.c
index 9613c23..9639a86 100644
--- a/menu_templateedit.c
+++ b/menu_templateedit.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -37,7 +37,7 @@ extern cChannelGroups ChannelGroups;
 extern cSearchExtCats SearchExtCats;
 
 cMenuEditTemplate::cMenuEditTemplate(cSearchExt *SearchExt, bool New)
- : cMenuEditSearchExt(SearchExt, New, true) 
+ : cMenuEditSearchExt(SearchExt, New, true)
 {
   SetTitle(tr("Edit template"));
 }
@@ -57,9 +57,9 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
    int iTemp_allowedRepeats = data.allowedRepeats;
    int iTemp_delAfterDays = data.delAfterDays;
    int iTemp_delMode = data.delMode;
-    
+
    eOSState state = cOsdMenu::ProcessKey(Key);
-    
+
    if (iTemp_mode != data.mode ||
        iTemp_useTime != data.useTime ||
        iTemp_useChannel != data.useChannel ||
@@ -76,7 +76,7 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
       Display();
    }
    const char* ItemText = Get(Current())->Text();
-    
+
    if (!HasSubMenu())
    {
       if (strlen(ItemText)>0 && strstr(ItemText, tr("  from channel")) == ItemText && ((Key >= k0 &&  Key <= k9) || Key == kLeft || Key == kRight))
@@ -105,16 +105,16 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
       int iOnExtCatItem = 0;
       cSearchExtCat *SearchExtCat = SearchExtCats.First();
       int index = 0;
-      while (SearchExtCat) 
+      while (SearchExtCat)
       {
          if (strstr(ItemText, IndentMenuItem(SearchExtCat->menuname)) == ItemText)
-         {		
+         {
             iOnExtCatItem = 1;
             if (SearchExtCat->nvalues > 0)
                iOnExtCatItemBrowsable = 1;
             iCatIndex = index;
             catname = SearchExtCat->menuname;
-            break;		    
+            break;
          }
          index++;
          SearchExtCat = SearchExtCats.Next(SearchExtCat);
@@ -174,7 +174,7 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
       else if (iOnExtCatItem)
       {
          if (!InEditMode(ItemText, IndentMenuItem(catname), data.catvalues[iCatIndex]) ||
-	     SearchExtCats.Get(iCatIndex)->searchmode >= 10)	    
+	     SearchExtCats.Get(iCatIndex)->searchmode >= 10)
             SetHelp(NULL, NULL, NULL, iOnExtCatItemBrowsable?tr("Button$Select"):NULL);
       }
       else if (strstr(ItemText, tr("Template name")) != ItemText)
@@ -184,13 +184,13 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
       if (HasSubMenu())
          return osContinue;
       switch (Key) {
-         case kOk: 
-            if (data.useChannel==1) 
+         case kOk:
+            if (data.useChannel==1)
             {
                cChannel *ch = Channels.GetByNumber(channelMin);
                if (ch)
                   data.channelMin = ch;
-               else 
+               else
                {
                   Skins.Message(mtError, tr("*** Invalid Channel ***"));
                   break;
@@ -198,7 +198,7 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
                ch = Channels.GetByNumber(channelMax);
                if (ch)
                   data.channelMax = ch;
-               else 
+               else
                {
                   Skins.Message(mtError, tr("*** Invalid Channel ***"));
                   break;
@@ -211,18 +211,18 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
             }
             if (data.useChannel==2)
                data.channelGroup = strdup(menuitemsChGr[channelGroupNr]);
-		
-            if (searchExt) 
+
+            if (searchExt)
             {
                *searchExt = data;
                if (data.DayOfWeek == 7)
                   searchExt->DayOfWeek = UserDefDayOfWeek;
-		    
+
                // transfer cat selection for 'avoid repeats' back to search
                cSearchExtCat *SearchExtCat = SearchExtCats.First();
                int index = 0;
                searchExt->catvaluesAvoidRepeat = 0;
-               while (SearchExtCat) 
+               while (SearchExtCat)
                {
                   if (catarrayAvoidRepeats[index])
                      searchExt->catvaluesAvoidRepeat += (1<<index);
@@ -233,7 +233,7 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
 	       // transfer numeric cat values back to search
                SearchExtCat = SearchExtCats.First();
                index = 0;
-               while (SearchExtCat) 
+               while (SearchExtCat)
                {
 		 if (SearchExtCat->searchmode >= 10)
 		   {
@@ -271,12 +271,12 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
             if (iOnUserDefDayItem)
                state = AddSubMenu(new cMenuEditDaysOfWeek(&UserDefDayOfWeek));
             break;
-		
-         case kBlue:   
+
+         case kBlue:
             if (iOnDirectoryItem && !InEditMode(ItemText, IndentMenuItem(tr("Directory")), data.directory))
                state = AddSubMenu(new cMenuDirSelect(data.directory));
             if (iOnUseChannelGroups || iOnChannelGroup)
-            {		    
+            {
                if (channelGroupName)
                   free(channelGroupName);
                channelGroupName = strdup(menuitemsChGr[channelGroupNr]);
@@ -304,7 +304,7 @@ eOSState cMenuEditTemplate::ProcessKey(eKeys Key)
 	{
 	  cSearchExtCat *SearchExtCat = SearchExtCats.First();
 	  int index = 0;
-	  while (SearchExtCat) 	    
+	  while (SearchExtCat)
             {
 	      if (SearchExtCat->searchmode >= 10)
 		catvaluesNumeric[index] = atoi(data.catvalues[index]);
diff --git a/menu_templateedit.h b/menu_templateedit.h
index 3face2e..fa70117 100644
--- a/menu_templateedit.h
+++ b/menu_templateedit.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -34,4 +34,4 @@ class cMenuEditTemplate: public cMenuEditSearchExt {
 };
 
 #endif
- 
+
diff --git a/menu_timersdone.c b/menu_timersdone.c
index ab99475..47d7f17 100644
--- a/menu_timersdone.c
+++ b/menu_timersdone.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -38,7 +38,7 @@ void cMenuTimerDoneItem::Set(void)
    if (!timerDone)
       return;
    char *buffer = NULL;
-    
+
    char buf[32];
    struct tm tm_r;
    tm *tm = localtime_r(&timerDone->start, &tm_r);
@@ -107,14 +107,14 @@ void cMenuTimersDone::UpdateCurrent()
    // navigation in summary could have changed current item, so update it
    cEventObj* cureventObj = eventObjects.GetCurrent();
    if (cureventObj && cureventObj->Event())
-      for (cMenuTimerDoneItem *item = (cMenuTimerDoneItem *)First(); item; item = (cMenuTimerDoneItem *)Next(item)) 
+      for (cMenuTimerDoneItem *item = (cMenuTimerDoneItem *)First(); item; item = (cMenuTimerDoneItem *)Next(item))
          if (item->timerDone->GetEvent() == cureventObj->Event())
          {
             cureventObj->Select(false);
             SetCurrent(item);
             Display();
             break;
-         }               
+         }
 }
 
 cTimerDone *cMenuTimersDone::CurrentTimerDone(void)
diff --git a/menu_timersdone.h b/menu_timersdone.h
index 956e2cf..bdd53dd 100644
--- a/menu_timersdone.h
+++ b/menu_timersdone.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/menu_whatson.c b/menu_whatson.c
index aea7fd8..45e8e63 100644
--- a/menu_whatson.c
+++ b/menu_whatson.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -31,10 +31,9 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include "menu_event.h"
 #include "menu_myedittimer.h"
 #include "menu_searchresults.h"
-#include "menu_search.h" 
+#include "menu_search.h"
 #include "menu_commands.h"
 #include "epgsearchcfg.h"
-#include "epgsearchtools.h"
 #include "switchtimer.h"
 #include "epgsearchcats.h"
 #include "conflictcheck.h"
@@ -80,13 +79,13 @@ bool cMenuMyScheduleItem::Update(bool Force)
 
    int OldTimerMatch = timerMatch;
    bool OldInSwitchList = inSwitchList;
-   bool hasMatch = false; 
+   bool hasMatch = false;
    cTimer* timer = NULL;
    if (event) timer = Timers.GetMatch(event, &timerMatch);
    if (event) inSwitchList = (SwitchTimers.InSwitchList(event)!=NULL);
    if (timer) hasMatch = true;
-    
-   if (Force || timerMatch != OldTimerMatch || inSwitchList != OldInSwitchList) 
+
+   if (Force || timerMatch != OldTimerMatch || inSwitchList != OldInSwitchList)
    {
      char szProgressPart[Utf8BufSize(12)] = "";
       char szProgressPartT2S[12] = "";
@@ -107,15 +106,15 @@ bool cMenuMyScheduleItem::Update(bool Force)
 		}
 	      if (mode == showNext)
 		frac = (  ( 30*60 - min((time_t)30*60, startTime - now) ) * 8 + 15*60  ) / (30*60);
-	      
+
 	      frac = min(8,max(0, frac));
-	      
+
 	      szProgressPartT2S[0] = '[';
 	      memset(szProgressPartT2S + 1,'|',frac);
 	      memset(szProgressPartT2S + 1 + frac ,' ', 8 - frac);
 	      szProgressPartT2S[9] = ']';
 	      szProgressPartT2S[10] = 0;
-	      
+
 	      if (!isUTF8)
 		{
 		  szProgressPart[0] = ICON_BAR_OPEN;
@@ -126,7 +125,7 @@ bool cMenuMyScheduleItem::Update(bool Force)
 		}
 	      else
 		{
-#if defined(__GNUC__) && __GNUC__ < 3 && __GNUC_MINOR__ < 96 
+#if defined(__GNUC__) && __GNUC__ < 3 && __GNUC_MINOR__ < 96
 #else
 		  std::stringstream buffer;
 		  buffer << ICON_BAR_OPEN_UTF8;
@@ -146,11 +145,11 @@ bool cMenuMyScheduleItem::Update(bool Force)
             }
          }
       }
-      
+
       char t[Utf8BufSize(2)],v[Utf8BufSize(2)],r[Utf8BufSize(2)];
       char szStatus[Utf8BufSize(4)];
       szStatus[3] = 0;
-      t[1]=v[1]=r[1] = 0; 
+      t[1]=v[1]=r[1] = 0;
 
       if (EPGSearchConfig.WarEagle)
       {
@@ -162,7 +161,7 @@ bool cMenuMyScheduleItem::Update(bool Force)
 	  }
 	else
 	  {
-#if defined(__GNUC__) && __GNUC__ < 3 && __GNUC_MINOR__ < 96 
+#if defined(__GNUC__) && __GNUC__ < 3 && __GNUC_MINOR__ < 96
 #else
 	    sprintf(t, "%s", (event && hasMatch ? (timerMatch == tmFull) ? ((timer && timer->Recording())?ICON_REC_UTF8:ICON_CLOCK_UTF8) : ICON_CLOCK_HALF_UTF8 : " "));
 	    sprintf(v, "%s", event && event->Vps() && (event->Vps() - event->StartTime()) ? ICON_VPS_UTF8 : " ");
@@ -200,9 +199,9 @@ bool cMenuMyScheduleItem::Update(bool Force)
       char* buffer = strdup(menutemplate);
       strreplace(buffer, '|', '\t');
 
-      char* title = NULL; 
+      char* title = NULL;
       title = strdup(event?event->Title():tr(">>> no info! <<<"));
-      title = strreplacei(title, ":", "%colon%"); // asume a title has the form "a?b:c", 
+      title = strreplacei(title, ":", "%colon%"); // asume a title has the form "a?b:c",
       // we need to replace the colon to avoid misinterpretation the expression as a condition
       buffer = strreplacei(buffer, "%title%", title);
       free(title);
@@ -223,7 +222,7 @@ bool cMenuMyScheduleItem::Update(bool Force)
       char* tmp = strdup(varExpr.Evaluate(event).c_str());
       free(buffer);
       buffer = tmp;
-      
+
       buffer = strreplacei(buffer, "$status$", szStatus);
       buffer = strreplacei(buffer, "$t_status$", t);
       buffer = strreplacei(buffer, "$v_status$", v);
@@ -240,9 +239,9 @@ bool cMenuMyScheduleItem::Update(bool Force)
          cConflictCheck C;
          C.Check();
          if (C.TimerInConflict(timer))
-            gl_InfoConflict = 1;	  
+            gl_InfoConflict = 1;
       }
-      return true;      
+      return true;
    }
    return result;
 }
@@ -263,23 +262,13 @@ cMenuWhatsOnSearch::cMenuWhatsOnSearch(const cSchedules *Schedules, int CurrentC
   helpKeys = -1;
   shiftTime = 0;
   schedules = Schedules;
-  
-  // do a font patch, if necessary
-  if (strcasestr(cTemplFile::GetTemplateByName("MenuWhatsOnNow")->MenuTemplate(), "%progr%") ||
-      strcasestr(cTemplFile::GetTemplateByName("MenuWhatsOnNext")->MenuTemplate(), "%progr%"))
-    {
-      if(Setup.UseSmallFont==2)  
-	PatchFont(fontSml);
-      else
-	PatchFont(fontOsd);	
-    }
-  
+
   CreateShowModes();
-  
+
   LoadSchedules();
-  
+
   currentChannel = CurrentChannelNr;
-  
+
   SetHelpKeys();
 }
 
@@ -299,14 +288,14 @@ const char* cMenuWhatsOnSearch::MenuKind()
 void cMenuWhatsOnSearch::Display(void)
 {
    cOsdMenu::Display();
-   
-   if (Count() > 0) 
+
+   if (Count() > 0)
    {
       int i = 0;
 
-      for (cOsdItem *item = First(); item; item = Next(item)) 
-         cStatus::MsgOsdEventItem(!item->Selectable() ? 0 : 
-                                  ((cMenuMyScheduleItem*)item)->event, 
+      for (cOsdItem *item = First(); item; item = Next(item))
+         cStatus::MsgOsdEventItem(!item->Selectable() ? 0 :
+                                  ((cMenuMyScheduleItem*)item)->event,
                                   item->Text(), i++, Count());
    }
 }
@@ -328,7 +317,7 @@ void cMenuWhatsOnSearch::LoadSchedules()
 {
    Clear();
    eventObjects.Clear();
-   
+
    //   time_t SeekTime;
    cString szTitle;
    cShowMode* mode = GetShowMode(currentShowMode);
@@ -342,10 +331,10 @@ void cMenuWhatsOnSearch::LoadSchedules()
       {
          if (mode)
             seekTime = GetTimeT(mode->GetTime());
-         if (seekTime < time(NULL)) seekTime += HOURS2SECS(24);	
+         if (seekTime < time(NULL)) seekTime += HOURS2SECS(24);
       }
       seekTime += shiftTime*60;
-	
+
       struct tm tm_r;
       time_t now = time(NULL);
 
@@ -361,11 +350,11 @@ void cMenuWhatsOnSearch::LoadSchedules()
       seekTime = GetTimeT(mode->GetTime());
       if (seekTime < time(NULL) && currentShowMode != showNow && currentShowMode != showNext)
 	{
-	  seekTime += HOURS2SECS(24);	
-	  szTitle = cString::sprintf("%s - %s (%s)", tr("Overview"), mode->GetDescription(), *WeekDayName(seekTime));    
+	  seekTime += HOURS2SECS(24);
+	  szTitle = cString::sprintf("%s - %s (%s)", tr("Overview"), mode->GetDescription(), *WeekDayName(seekTime));
 	}
       else
-	szTitle = cString::sprintf("%s - %s", tr("Overview"), mode->GetDescription());    
+	szTitle = cString::sprintf("%s - %s", tr("Overview"), mode->GetDescription());
    }
    SetTitle(szTitle);
 
@@ -381,9 +370,9 @@ void cMenuWhatsOnSearch::LoadSchedules()
    if (currentChannel > maxChannel)
       maxChannel = 0;
 
-   for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) 
-   {	
-      if (!Channel->GroupSep()) 
+   for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel))
+   {
+      if (!Channel->GroupSep())
       {
          if (maxChannel && Channel->Number() > maxChannel) break;
          if (EPGSearchConfig.showRadioChannels == 0 && ISRADIO(Channel))
@@ -391,16 +380,16 @@ void cMenuWhatsOnSearch::LoadSchedules()
 
          const cSchedule *Schedule = schedules->GetSchedule(Channel);
          const cEvent *Event = NULL;
-         if (Schedule) 
-         {		
+         if (Schedule)
+         {
             if (shiftTime != 0)
                Event = Schedule->GetEventAround(seekTime);
             else
             {
                switch(currentShowMode)
-               {  
+               {
                   default:
-                  case showNow: 
+                  case showNow:
                      Event = Schedule->GetPresentEvent();
                      break;
                   case showNext:
@@ -419,13 +408,13 @@ void cMenuWhatsOnSearch::LoadSchedules()
             continue;
 
 	     Add(new cMenuMyScheduleItem(Event, Channel, currentShowMode, currentTemplate), Channel->Number() == currentChannel);
-         if (Event) eventObjects.Add(Event);            
+         if (Event) eventObjects.Add(Event);
       }
       else
       {
 	if (EPGSearchConfig.showChannelGroups && strlen(Channel->Name()))
          {
-	   cString szGroup = cString::sprintf("----------------------------------------\t %s ----------------------------------------------------------------------------------------------", Channel->Name());
+	    cString szGroup = cString::sprintf("%s\t %s %s", MENU_SEPARATOR_ITEMS, Channel->Name(), MENU_SEPARATOR_ITEMS);
             cOsdItem* pGroupItem = new cOsdItem(szGroup);
             pGroupItem->SetSelectable(false);
             Add(pGroupItem);
@@ -448,10 +437,10 @@ showMode cMenuWhatsOnSearch::GetNextMode()
 {
    showMode nextShowMode = currentShowMode;
    cShowMode* Mode = GetShowMode(currentShowMode);
-   if (Mode) 
+   if (Mode)
    {
       cShowMode* ModeNext = showModes.Next(Mode);
-      if (ModeNext == NULL) 
+      if (ModeNext == NULL)
          nextShowMode = showNow;
       else
          nextShowMode = ModeNext->GetMode();
@@ -476,12 +465,12 @@ void cMenuWhatsOnSearch::CreateShowModes()
       if (!EPGSearchConfig.ShowModes[i].GetUsage())
          continue;
 
-      time_t SeekTime = GetTimeT(EPGSearchConfig.ShowModes[i].GetTime());    
+      time_t SeekTime = GetTimeT(EPGSearchConfig.ShowModes[i].GetTime());
       if (SeekTime < now)
          SeekTime += HOURS2SECS(24);
       if (SeekTime - now > HOURS2SECS(SKIPHOURS))
          continue;
-      cShowMode* Mode = new cShowMode((showMode)i, EPGSearchConfig.ShowModes[i].GetDescription(), 
+      cShowMode* Mode = new cShowMode((showMode)i, EPGSearchConfig.ShowModes[i].GetDescription(),
                                       1, EPGSearchConfig.ShowModes[i].GetTime(), SeekTime);
       showModes.Add(Mode);
    }
@@ -495,7 +484,7 @@ void cMenuWhatsOnSearch::CreateShowModes()
 
 cShowMode* cMenuWhatsOnSearch::GetShowMode(showMode mode)
 {
-   for (cShowMode *showMode = showModes.First(); showMode; showMode = showModes.Next(showMode)) 
+   for (cShowMode *showMode = showModes.First(); showMode; showMode = showModes.Next(showMode))
       if (mode == showMode->GetMode())
          return showMode;
    return NULL;
@@ -516,16 +505,16 @@ eOSState cMenuWhatsOnSearch::Switch(void)
       if (cDevice::PrimaryDevice()->SwitchChannel(item->channel, true))
          return osEnd;
    }
-   Skins.Message(mtInfo, trVDR("Can't switch channel!")); 
+   Skins.Message(mtInfo, trVDR("Can't switch channel!"));
    return osContinue;
 }
 
 eOSState cMenuWhatsOnSearch::Record(void)
 {
    cMenuMyScheduleItem *item = (cMenuMyScheduleItem *)Get(Current());
-   if (item) 
+   if (item)
    {
-      if (item->timerMatch == tmFull) 
+      if (item->timerMatch == tmFull)
       {
          int tm = tmNone;
          cTimer *timer = Timers.GetMatch(item->event, &tm);
@@ -546,14 +535,14 @@ eOSState cMenuWhatsOnSearch::Record(void)
       }
       else
          timer = new cTimer(false, false, item->channel);
- 
+
       cTimer *t = Timers.GetTimer(timer);
-      if (EPGSearchConfig.onePressTimerCreation == 0 || t || !item->event || (!t && item->event && item->event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL))) 
+      if (EPGSearchConfig.onePressTimerCreation == 0 || t || !item->event || (!t && item->event && item->event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL)))
       {
          if (t)
          {
             delete timer;
-            timer = t;      
+            timer = t;
          }
          timer->SetFlags(tfActive);
          if (EPGSearchConfig.useVDRTimerEditMenu)
@@ -585,7 +574,7 @@ eOSState cMenuWhatsOnSearch::Record(void)
 #endif
          SetAux(timer, fullaux);
          Timers.Add(timer);
-	 gl_timerStatusMonitor->SetConflictCheckAdvised(); 
+	 gl_timerStatusMonitor->SetConflictCheckAdvised();
          timer->Matches();
          Timers.SetModified();
          LogFile.iSysLog("timer %s added (active)", *timer->ToDescr());
@@ -616,9 +605,9 @@ eOSState cMenuWhatsOnSearch::Commands(eKeys Key)
       return osContinue;
 
    cMenuMyScheduleItem *mi = (cMenuMyScheduleItem *)Get(Current());
-   if (mi) 
+   if (mi)
    {
-      if (!mi->event) 
+      if (!mi->event)
       {
          if (Key == k3)
             return Switch();
@@ -646,7 +635,7 @@ void cMenuWhatsOnSearch::SetHelpKeys(bool Force)
   cMenuMyScheduleItem *item = (cMenuMyScheduleItem *)Get(Current());
   int NewHelpKeys = 0;
   if (item) {
-    if (item->Selectable() && item->timerMatch == tmFull)	
+    if (item->Selectable() && item->timerMatch == tmFull)
       NewHelpKeys = 2;
     else
       NewHelpKeys = 1;
@@ -654,21 +643,21 @@ void cMenuWhatsOnSearch::SetHelpKeys(bool Force)
 
   bool hasTimer = (NewHelpKeys == 2);
   if (NewHelpKeys != helpKeys || Force)
-    { 
-      showMode nextShowMode = GetNextMode();    
+    {
+      showMode nextShowMode = GetNextMode();
       cShowMode* mode = GetShowMode(nextShowMode);
       const char* szButtonGreen = NULL;
-      if (mode) 
+      if (mode)
 	szButtonGreen = mode->GetDescription();
       if (toggleKeys==0)
-	SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), 
-		szButtonGreen, 
-		trVDR("Button$Schedule"), 
+	SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")),
+		szButtonGreen,
+		trVDR("Button$Schedule"),
 		EPGSearchConfig.bluekeymode==0?(EPGSearchConfig.useOkForSwitch?trVDR("Button$Info"):trVDR("Button$Switch")):tr("Button$Search"));
       else
-	SetHelp((EPGSearchConfig.redkeymode==1?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), 
-		(EPGSearchConfig.toggleGreenYellow==0?szButtonGreen:"<<"), 
-		(EPGSearchConfig.toggleGreenYellow==0?trVDR("Button$Schedule"):">>"), 
+	SetHelp((EPGSearchConfig.redkeymode==1?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")),
+		(EPGSearchConfig.toggleGreenYellow==0?szButtonGreen:"<<"),
+		(EPGSearchConfig.toggleGreenYellow==0?trVDR("Button$Schedule"):">>"),
 		EPGSearchConfig.bluekeymode==1?(EPGSearchConfig.useOkForSwitch?trVDR("Button$Info"):trVDR("Button$Switch")):tr("Button$Search"));
       helpKeys = NewHelpKeys;
     }
@@ -679,7 +668,7 @@ eOSState cMenuWhatsOnSearch::Shift(int iMinutes)
    shiftTime += iMinutes;
    cMenuMyScheduleItem *mi = (cMenuMyScheduleItem *)Get(Current());
    int TempChannel = currentChannel;
-   if (mi) 
+   if (mi)
    {
       currentChannel = mi->channel->Number();
       scheduleChannel = Channels.GetByNumber(currentChannel);
@@ -696,7 +685,7 @@ eOSState cMenuWhatsOnSearch::ShowSummary()
    if (Count())
    {
       const cEvent *ei = ((cMenuMyScheduleItem *)Get(Current()))->event;
-      if (ei) 
+      if (ei)
       {
          cChannel *channel = Channels.GetByChannelID(ei->ChannelID(), true, true);
          if (channel)
@@ -711,14 +700,14 @@ void cMenuWhatsOnSearch::UpdateCurrent()
    // navigation in summary could have changed current item, so update it
    cEventObj* cureventObj = eventObjects.GetCurrent();
    if (cureventObj && cureventObj->Event())
-      for (cMenuMyScheduleItem *item = (cMenuMyScheduleItem *)First(); item; item = (cMenuMyScheduleItem *)Next(item)) 
+      for (cMenuMyScheduleItem *item = (cMenuMyScheduleItem *)First(); item; item = (cMenuMyScheduleItem *)Next(item))
          if (item->event == cureventObj->Event())
          {
             cureventObj->Select(false);
             SetCurrent(item);
             Display();
             break;
-         }               
+         }
 }
 
 eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
@@ -739,11 +728,11 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
    if (state == osUnknown) {
       switch (Key) {
          case kFastRew:
-            if(!HasSubMenu()) 	     
+            if(!HasSubMenu())
                return Shift(-EPGSearchConfig.timeShiftValue);
             break;
          case kFastFwd:
-            if(!HasSubMenu()) 	     
+            if(!HasSubMenu())
                return Shift(EPGSearchConfig.timeShiftValue);
             break;
          case kRecord:
@@ -752,7 +741,7 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
                UpdateCurrent();
                state = Record();
                break;
-            } 
+            }
       		if (Count())
             {
                if (EPGSearchConfig.redkeymode==toggleKeys)
@@ -761,7 +750,7 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
                {
                   cMenuMyScheduleItem *mi = (cMenuMyScheduleItem *)Get(Current());
                   if (mi) {
-                     if (mi->event) 
+                     if (mi->event)
                         return AddSubMenu(new cMenuSearchCommands(tr("EPG Commands"),mi->event));
                      else
                         return osContinue;
@@ -771,7 +760,7 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
             break;
 
          case k0:
-            if(!HasSubMenu()) 
+            if(!HasSubMenu())
             {
                toggleKeys = 1 - toggleKeys;
                SetHelpKeys(true);
@@ -779,8 +768,8 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
             state = osContinue;
             break;
          case k1...k9: return Commands(Key);
-         case kYellow: 
-            if(!HasSubMenu()) 	     
+         case kYellow:
+            if(!HasSubMenu())
             {
                if (toggleKeys == 0 || (toggleKeys == 1 && EPGSearchConfig.toggleGreenYellow == 0))
                {
@@ -809,9 +798,9 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
                }
                else
                   return Shift(EPGSearchConfig.timeShiftValue);
-            }            
-         case kGreen:  
-            if(!HasSubMenu()) 	     
+            }
+         case kGreen:
+            if(!HasSubMenu())
             {
                if (toggleKeys == 0 || (toggleKeys == 1 && EPGSearchConfig.toggleGreenYellow == 0))
                {
@@ -820,7 +809,7 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
                   else
                      currentShowMode = GetNextMode();
                   cMenuMyScheduleItem *mi = (cMenuMyScheduleItem *)Get(Current());
-                  if (mi) 
+                  if (mi)
                   {
                      currentChannel = mi->channel->Number();
                      scheduleChannel = Channels.GetByNumber(currentChannel);
@@ -830,7 +819,7 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
                   return Shift(-EPGSearchConfig.timeShiftValue);
             }
             break;
-         case kBlue:   
+         case kBlue:
             if (HasSubMenu())
             {
                UpdateCurrent();
@@ -856,7 +845,7 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
       default:      break;
       }
    }
-   if (!HasSubMenu()) 
+   if (!HasSubMenu())
    {
       if ((HadSubMenu || gl_TimerProgged) && Update())
       {
@@ -876,7 +865,7 @@ eOSState cMenuWhatsOnSearch::ProcessKey(eKeys Key)
             return AddSubMenu(new cMenuConflictCheck());
       }
    }
-    
+
    return state;
 }
 
diff --git a/menu_whatson.h b/menu_whatson.h
index 1d5adf4..a46e650 100644
--- a/menu_whatson.h
+++ b/menu_whatson.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -66,9 +66,9 @@ private:
   static int CurrentChannel(void) { return currentChannel; }
   static void SetCurrentChannel(int ChannelNr) { currentChannel = ChannelNr; }
   static cChannel *ScheduleChannel(cChannel* forceChannel = NULL);
-  virtual eOSState ProcessKey(eKeys Key); 
+  virtual eOSState ProcessKey(eKeys Key);
   virtual eOSState Switch(void);
-  virtual eOSState Shift(int); 
+  virtual eOSState Shift(int);
   virtual eOSState Commands(eKeys Key);
   virtual eOSState ShowSummary();
   void SetHelpKeys(bool Force = false);
diff --git a/noannounce.c b/noannounce.c
index e2f13c4..d52a602 100644
--- a/noannounce.c
+++ b/noannounce.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -43,7 +43,7 @@ cNoAnnounce::cNoAnnounce(const cEvent* e, time_t NextAnnounce)
    startTime = 0;
    buffer = NULL;
    if (e)
-   { 
+   {
      if (e->Title()) title = e->Title();
      if (e->ShortText()) shortText = e->ShortText();
      channelID = e->ChannelID();
@@ -72,11 +72,11 @@ bool cNoAnnounce::Parse(const char *s)
     char *pos_next;
     int parameter = 1;
     int valuelen;
-    
+
 #define MAXVALUELEN (10 * MaxFileName)
-    
+
     char value[MAXVALUELEN];
-    
+
     pos = line = strdup(s);
     pos_next = pos + strlen(pos);
     if (*pos_next == '\n') *pos_next = 0;
@@ -88,9 +88,9 @@ bool cNoAnnounce::Parse(const char *s)
 		if (!pos_next)
 		    pos_next = pos + strlen(pos);
 		valuelen = pos_next - pos + 1;
-		if (valuelen > MAXVALUELEN) 
+		if (valuelen > MAXVALUELEN)
 		{
-		    LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);  
+		    LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);
 		    valuelen = MAXVALUELEN;
 		}
 		strn0cpy(value, pos, valuelen);
@@ -114,10 +114,10 @@ bool cNoAnnounce::Parse(const char *s)
 	}
 	if (*pos) pos++;
     } //while
-    
+
     title = ReplaceAll(title, "|", ":");
     shortText = ReplaceAll(shortText, "|", ":");
-    
+
     free(line);
     return (parameter >= 5) ? true : false;
 }
@@ -125,7 +125,7 @@ bool cNoAnnounce::Parse(const char *s)
 const char *cNoAnnounce::ToText(void) const
 {
     free(buffer);
-    msprintf(&buffer, "%s:%s:%s:%ld:%ld", 
+    msprintf(&buffer, "%s:%s:%s:%ld:%ld",
 	     ReplaceAll(title, ":", "|").c_str(),
 	     ReplaceAll(shortText, ":", "|").c_str(),
 	     *channelID.ToString(),
@@ -144,7 +144,7 @@ cNoAnnounce* cNoAnnounces::InList(const cEvent* e)
 {
    cNoAnnounce noAnnounceTemp(e);
    cNoAnnounce* noAnnounce = First();
-   while (noAnnounce) 
+   while (noAnnounce)
    {
       if (*noAnnounce == noAnnounceTemp)
       {
@@ -157,7 +157,7 @@ cNoAnnounce* cNoAnnounces::InList(const cEvent* e)
             return noAnnounce;
       }
       noAnnounce = Next(noAnnounce);
-   }	
+   }
    return NULL;
 }
 
@@ -165,18 +165,18 @@ void cNoAnnounces::ClearOutdated(void)
 {
     // remove outdated items
     cNoAnnounce* noAnnounce = First();
-    while (noAnnounce) 
+    while (noAnnounce)
     {
 	cNoAnnounce* noAnnounceNext = Next(noAnnounce);
 	if (noAnnounce->startTime < time(NULL))
 	    Del(noAnnounce);
 	noAnnounce = noAnnounceNext;
-    }	
+    }
 }
 
 void cNoAnnounces::UpdateNextAnnounce(const cEvent* e, time_t NextAnnounce)
 {
    cNoAnnounce* noAnnounce = InList(e);
    if (noAnnounce)
-      noAnnounce->nextAnnounce = NextAnnounce; 
+      noAnnounce->nextAnnounce = NextAnnounce;
 }
diff --git a/noannounce.h b/noannounce.h
index c62e832..e9d5f86 100644
--- a/noannounce.h
+++ b/noannounce.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -37,10 +37,10 @@ public:
     string shortText;         // Short description of this event
     time_t startTime;        // Start time of the timer
     time_t nextAnnounce;     // time of the next announce
-    tChannelID channelID;    
+    tChannelID channelID;
 
     static char *buffer;
-    
+
     cNoAnnounce();
     cNoAnnounce(const cEvent* Event, time_t NextAnnounce = 0);
     ~cNoAnnounce();
diff --git a/patches/MainMenuHooks-v1_0.patch b/patches/MainMenuHooks-v1_0.patch
deleted file mode 100644
index ee168e1..0000000
--- a/patches/MainMenuHooks-v1_0.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-This is a "patch" for the Video Disk Recorder (VDR).
-
-* Authors:
-Tobias Grimm <vdr at e-tobi dot net>
-Martin Prochnow <nordlicht at martins-kabuff dot de>  
-Frank Schmirler <vdrdev at schmirler dot de>
-Christian Wieninger <cwieninger at gmx dot de>
-
-* Description:
-This patch allows plugins to replace the VDR mainmenus "Schedule",
-"Channels", "Timers" and "Recordings" by a different implementation.
-
-The patch is based on a suggestion of Christian Wieninger back in 2006.
-(http://www.linuxtv.org/pipermail/vdr/2006-March/008234.html). It is
-meant to be an interim solution for VDR 1.4 until (maybe) VDR 1.5
-introduces an official API for this purpose.
-
-* Installation
-Change into the VDR source directory, then issue
-  patch -p1 < path/to/MainMenuHooks-v1_0.patch
-and recompile.
-
-* Notes for plugin authors
-The following code sample shows the required plugin code for replacing
-the original Schedule menu:
-
-bool cMyPlugin::Service(const char *Id, void *Data)
-{
-  cOsdMenu **menu = (cOsdMenu**) Data;
-  if (MySetup.replaceSchedule &&
-            strcmp(Id, "MainMenuHooksPatch-v1.0::osSchedule") == 0) {
-    if (menu)
-      *menu = (cOsdMenu*) MainMenuAction();
-    return true;
-  }
-  return false;
-}
-
-A plugin can replace more than one menu at a time. Simply replace the
-call to MainMenuAction() in the sample above by appropriate code).
-
-Note that a plugin *should* offer a setup option which allows the user
-to enable or disable the replacement. "Disabled" would be a reasonable
-default setting. By testing for define MAINMENUHOOKSVERSNUM, a plugin
-can leave the setup option out at compiletime.
-
-In case there is an internal problem when trying to open the replacement
-menu, it is safe to return true even though Data is NULL. However an
-OSD message should indicate the problem to the user.
-
-Feel free to ship this patch along with your plugin. However if you
-think you need to modify the patch, we'd encourage you to contact the
-authors first or at least use a service id which differs in more than
-just the version number.
-
---- vdr-1.4.5/menu.c.orig	2007-02-07 08:23:49.000000000 +0100
-+++ vdr-1.4.5/menu.c	2007-02-20 11:05:34.000000000 +0100
-@@ -2792,15 +2792,30 @@
- 
-   // Initial submenus:
- 
-+  cOsdMenu *menu = NULL;
-   switch (State) {
--    case osSchedule:   AddSubMenu(new cMenuSchedule); break;
--    case osChannels:   AddSubMenu(new cMenuChannels); break;
--    case osTimers:     AddSubMenu(new cMenuTimers); break;
--    case osRecordings: AddSubMenu(new cMenuRecordings(NULL, 0, true)); break;
--    case osSetup:      AddSubMenu(new cMenuSetup); break;
--    case osCommands:   AddSubMenu(new cMenuCommands(tr("Commands"), &Commands)); break;
-+    case osSchedule:
-+        if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osSchedule", &menu))
-+            menu = new cMenuSchedule;
-+        break;
-+    case osChannels:
-+        if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osChannels", &menu))
-+            menu = new cMenuChannels;
-+        break;
-+    case osTimers:
-+        if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osTimers", &menu))
-+            menu = new cMenuTimers;
-+        break;
-+    case osRecordings:
-+        if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osRecordings", &menu))
-+            menu = new cMenuRecordings(NULL, 0, true);
-+        break;
-+    case osSetup:      menu = new cMenuSetup; break;
-+    case osCommands:   menu = new cMenuCommands(tr("Commands"), &Commands); break;
-     default: break;
-     }
-+  if (menu)
-+      AddSubMenu(menu);
- }
- 
- cOsdObject *cMenuMain::PluginOsdObject(void)
-@@ -2927,13 +2942,34 @@
-   eOSState state = cOsdMenu::ProcessKey(Key);
-   HadSubMenu |= HasSubMenu();
- 
-+  cOsdMenu *menu = NULL;
-   switch (state) {
--    case osSchedule:   return AddSubMenu(new cMenuSchedule);
--    case osChannels:   return AddSubMenu(new cMenuChannels);
--    case osTimers:     return AddSubMenu(new cMenuTimers);
--    case osRecordings: return AddSubMenu(new cMenuRecordings);
--    case osSetup:      return AddSubMenu(new cMenuSetup);
--    case osCommands:   return AddSubMenu(new cMenuCommands(tr("Commands"), &Commands));
-+    case osSchedule:
-+        if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osSchedule", &menu))
-+            menu = new cMenuSchedule;
-+        else
-+            state = osContinue;
-+        break;
-+    case osChannels:
-+        if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osChannels", &menu))
-+            menu = new cMenuChannels;
-+        else
-+            state = osContinue;
-+        break;
-+    case osTimers:
-+        if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osTimers", &menu))
-+            menu = new cMenuTimers;
-+        else
-+            state = osContinue;
-+        break;
-+    case osRecordings:
-+        if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osRecordings", &menu))
-+            menu = new cMenuRecordings;
-+        else
-+            state = osContinue;
-+        break;
-+    case osSetup:      menu = new cMenuSetup; break;
-+    case osCommands:   menu = new cMenuCommands(tr("Commands"), &Commands); break;
-     case osStopRecord: if (Interface->Confirm(tr("Stop recording?"))) {
-                           cOsdItem *item = Get(Current());
-                           if (item) {
-@@ -2985,6 +3021,8 @@
-                default:      break;
-                }
-     }
-+  if (menu)
-+      return AddSubMenu(menu);
-   if (!HasSubMenu() && Update(HadSubMenu))
-      Display();
-   if (Key != kNone) {
---- vdr-1.4.5/config.h.orig	2007-02-20 11:55:40.000000000 +0100
-+++ vdr-1.4.5/config.h	2007-02-20 11:56:43.000000000 +0100
-@@ -35,6 +35,8 @@
- // plugins to work with newer versions of the core VDR as long as no
- // VDR header files have changed.
- 
-+#define MAINMENUHOOKSVERSNUM 1.0
-+
- #define MAXPRIORITY 99
- #define MAXLIFETIME 99
- 
diff --git a/patches/MainMenuHooks-v1_0_1.diff.gz b/patches/MainMenuHooks-v1_0_1.diff.gz
new file mode 100644
index 0000000..c056a03
Binary files /dev/null and b/patches/MainMenuHooks-v1_0_1.diff.gz differ
diff --git a/patches/README.patches b/patches/README.patches
index 376907c..08a1950 100644
--- a/patches/README.patches
+++ b/patches/README.patches
@@ -2,14 +2,14 @@
 Description of patches
 ----------------------
 
-- MainMenuHooks-v1_0.patch:
+- MainMenuHooks-v1_0_1.diff.gz:
   patches vdr to allow plugins to replace main menu items like 'Schedule', 'Recordings',...
   Use this one, if epgsearch shall replace the schedules menu. This patch is also used
   by other plugins like the extrec-plugin.
 - timercmd-0.1_1.x.diff:
   this patch adds a timer commands menu to VDR's timer menu, that can be called with '0'.
   It can be used e.g. to search for repeats of a timer.
-- vdr-1.5.11-progressbar-support-0.0.1.diff:
+- vdr-1.5.17-progressbar-support-0.0.1.diff:
   this patch adds progressbar support to VDR's skins 'classic' and 'st:tng'
 - vdr.epgsearch-exttimeredit.diff:
-  this patch against VDR integrates epgsearch's timer edit menu to VDR's timer menu.
\ No newline at end of file
+  this patch against VDR integrates epgsearch's timer edit menu to VDR's timer menu.
diff --git a/patches/timercmd-0.1_1.3.23.diff b/patches/timercmd-0.1_1.3.23.diff
deleted file mode 100644
index e5d2f3f..0000000
--- a/patches/timercmd-0.1_1.3.23.diff
+++ /dev/null
@@ -1,178 +0,0 @@
-diff -Nru vdr-1.3.23-orig/config.c vdr-1.3.23-timercmd/config.c
---- vdr-1.3.23-orig/config.c	2005-02-20 13:52:59.000000000 +0100
-+++ vdr-1.3.23-timercmd/config.c	2005-03-29 20:08:21.000000000 +0200
-@@ -141,6 +141,7 @@
- 
- cCommands Commands;
- cCommands RecordingCommands;
-+cCommands TimerCommands;
- 
- // -- cSVDRPhosts ------------------------------------------------------------
- 
-diff -Nru vdr-1.3.23-orig/config.h vdr-1.3.23-timercmd/config.h
---- vdr-1.3.23-orig/config.h	2005-03-05 16:44:35.000000000 +0100
-+++ vdr-1.3.23-timercmd/config.h	2005-03-29 20:08:46.000000000 +0200
-@@ -173,6 +173,7 @@
- 
- extern cCommands Commands;
- extern cCommands RecordingCommands;
-+extern cCommands TimerCommands;
- extern cSVDRPhosts SVDRPhosts;
- extern cCaDefinitions CaDefinitions;
- 
-diff -Nru vdr-1.3.23-orig/i18n.c vdr-1.3.23-timercmd/i18n.c
---- vdr-1.3.23-orig/i18n.c	2005-03-12 11:43:16.000000000 +0100
-+++ vdr-1.3.23-timercmd/i18n.c	2005-04-14 19:20:22.000000000 +0200
-@@ -315,6 +315,27 @@
-     "Salvestuse käsud",
-     "Optage kommandoer",
-   },
-+  { "Timer commands",
-+    "Befehle für Timer",
-+    "Ukazi za termine",
-+    "Timer comandi",
-+    "",// "Nederlands"
-+    "",// "Português"
-+    "Commandes de programmation",
-+    "Timer kommandoer",
-+    "Ajastinkomennot",
-+    "",// "Polski"
-+    "Comandos de programacion",
-+    "",// "ÅëëçíéêÜ", // Greek
-+    "Timer kommandon",
-+    "Comenzi timer",
-+    "",// "Magyar"
-+    "Ordres de programació",
-+    "",// "ÀãááÚØÙ", // Russian
-+    "Naredbe za termine",
-+    "",// "Eesti"
-+    "",// "Dansk"
-+  },
-   { "Edit channel",
-     "Kanal editieren",
-     "Uredi kanal",
-diff -Nru vdr-1.3.23-orig/menu.c vdr-1.3.23-timercmd/menu.c
---- vdr-1.3.23-orig/menu.c	2005-03-20 16:14:51.000000000 +0100
-+++ vdr-1.3.23-timercmd/menu.c	2005-04-28 14:28:33.000000000 +0200
-@@ -707,8 +707,20 @@
-   return state;
- }
- 
--// --- cMenuTimerItem --------------------------------------------------------
-+// --- cMenuCommands ---------------------------------------------------------
-+// declaration shifted so it can be used in cMenuTimers
-+class cMenuCommands : public cOsdMenu {
-+private:
-+  cCommands *commands;
-+  char *parameters;
-+  eOSState Execute(void);
-+public:
-+  cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
-+  virtual ~cMenuCommands();
-+  virtual eOSState ProcessKey(eKeys Key);
-+  };
- 
-+// --- cMenuTimerItem --------------------------------------------------------
- class cMenuTimerItem : public cOsdItem {
- private:
-   cTimer *timer;
-@@ -773,6 +785,7 @@
-   virtual void Move(int From, int To);
-   eOSState Summary(void);
-   cTimer *CurrentTimer(void);
-+  eOSState Commands(eKeys Key = kNone);
- public:
-   cMenuTimers(void);
-   virtual ~cMenuTimers();
-@@ -876,6 +889,53 @@
-   return Edit(); // convenience for people not using the Summary feature ;-)
- }
- 
-+#define CHECK_2PTR_NULL(x_,y_) ((x_)? ((y_)? y_:""):"")
-+
-+eOSState cMenuTimers::Commands(eKeys Key)
-+{
-+  if (HasSubMenu() || Count() == 0)
-+     return osContinue;
-+  cTimer *ti = CurrentTimer();
-+  if (ti) {
-+     char *parameter = NULL;
-+     const cEvent *pEvent = ti->Event();
-+     int iRecNumber=0;
-+
-+     if(!pEvent) {
-+        Timers.SetEvents();
-+        pEvent = ti->Event();
-+     }
-+     if(pEvent) {
-+// create a dummy recording to get the real filename
-+        cRecording *rc_dummy = new cRecording(ti, pEvent->Title(), pEvent->ShortText(), "");
-+        Recordings.Load();
-+        cRecording *rc = Recordings.GetByName(rc_dummy->FileName());
-+     
-+        delete rc_dummy;
-+        if(rc)
-+           iRecNumber=rc->Index() + 1;
-+     }
-+//Parameter format TimerNumber 'ChannelId' Start Stop 'Titel' 'Subtitel' 'file' RecNumer
-+//                 1           2           3     4    5       6          7      8
-+     asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(), 
-+                                                             *ti->Channel()->GetChannelID().ToString(),
-+                                                             (int)ti->StartTime(),
-+                                                             (int)ti->StopTime(),
-+                                                             CHECK_2PTR_NULL(pEvent, pEvent->Title()),
-+                                                             CHECK_2PTR_NULL(pEvent, pEvent->ShortText()),
-+                                                             ti->File(),
-+                                                             iRecNumber);
-+     isyslog("timercmd: %s", parameter);
-+     cMenuCommands *menu;
-+     eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Timer commands"), &TimerCommands, parameter));
-+     free(parameter);
-+     if (Key != kNone)
-+        state = menu->ProcessKey(Key);
-+     return state;
-+     }
-+  return osContinue;
-+}
-+
- eOSState cMenuTimers::ProcessKey(eKeys Key)
- {
-   int TimerNumber = HasSubMenu() ? Count() : -1;
-@@ -892,6 +951,8 @@
-                      else
-                         Mark();
-                      break;
-+       case k1...k9: return Commands(Key);
-+       case k0:      return (TimerCommands.Count()? Commands():osContinue);
-        default: break;
-        }
-      }
-@@ -1240,17 +1301,6 @@
- 
- // --- cMenuCommands ---------------------------------------------------------
- 
--class cMenuCommands : public cOsdMenu {
--private:
--  cCommands *commands;
--  char *parameters;
--  eOSState Execute(void);
--public:
--  cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
--  virtual ~cMenuCommands();
--  virtual eOSState ProcessKey(eKeys Key);
--  };
--
- cMenuCommands::cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters)
- :cOsdMenu(Title)
- {
-diff -Nru vdr-1.3.23-orig/vdr.c vdr-1.3.23-timercmd/vdr.c
---- vdr-1.3.23-orig/vdr.c	2005-03-20 11:58:59.000000000 +0100
-+++ vdr-1.3.23-timercmd/vdr.c	2005-03-29 20:05:57.000000000 +0200
-@@ -393,6 +393,7 @@
-         Timers.Load(AddDirectory(ConfigDirectory, "timers.conf")) &&
-         Commands.Load(AddDirectory(ConfigDirectory, "commands.conf"), true) &&
-         RecordingCommands.Load(AddDirectory(ConfigDirectory, "reccmds.conf"), true) &&
-+        TimerCommands.Load(AddDirectory(ConfigDirectory, "timercmds.conf"), true) &&
-         SVDRPhosts.Load(AddDirectory(ConfigDirectory, "svdrphosts.conf"), true) &&
-         CaDefinitions.Load(AddDirectory(ConfigDirectory, "ca.conf"), true) &&
-         Keys.Load(AddDirectory(ConfigDirectory, "remote.conf")) &&
diff --git a/patches/timercmd-0.1_1.3.25.diff b/patches/timercmd-0.1_1.3.25.diff
deleted file mode 100644
index 331330b..0000000
--- a/patches/timercmd-0.1_1.3.25.diff
+++ /dev/null
@@ -1,142 +0,0 @@
-diff -ruN7p1 vdr-1.3.25-orig/config.c vdr-1.3.25/config.c
---- vdr-1.3.25-orig/config.c	2005-02-20 13:52:59.000000000 +0100
-+++ vdr-1.3.25/config.c	2005-05-31 00:07:56.000000000 +0200
-@@ -143,2 +143,3 @@ cCommands Commands;
- cCommands RecordingCommands;
-+cCommands TimerCommands;
- 
-diff -ruN7p1 vdr-1.3.25-orig/config.h vdr-1.3.25/config.h
---- vdr-1.3.25-orig/config.h	2005-05-14 11:18:08.000000000 +0200
-+++ vdr-1.3.25/config.h	2005-05-31 00:07:56.000000000 +0200
-@@ -175,2 +175,3 @@ extern cCommands Commands;
- extern cCommands RecordingCommands;
-+extern cCommands TimerCommands;
- extern cSVDRPhosts SVDRPhosts;
-diff -ruN7p1 vdr-1.3.25-orig/i18n.c vdr-1.3.25/i18n.c
---- vdr-1.3.25-orig/i18n.c	2005-05-15 16:37:59.000000000 +0200
-+++ vdr-1.3.25/i18n.c	2005-05-31 00:07:56.000000000 +0200
-@@ -317,2 +317,23 @@ const tI18nPhrase Phrases[] = {
-   },
-+  { "Timer commands",
-+    "Befehle für Timer",
-+    "Ukazi za termine",
-+    "Timer comandi",
-+    "",// "Nederlands"
-+    "",// "Português"
-+    "Commandes de programmation",
-+    "Timer kommandoer",
-+    "Ajastinkomennot",
-+    "",// "Polski"
-+    "Comandos de programacion",
-+    "",// "ÅëëçíéêÜ", // Greek
-+    "Timer kommandon",
-+    "Comenzi timer",
-+    "",// "Magyar"
-+    "Ordres de programació",
-+    "",// "ÀãááÚØÙ", // Russian
-+    "Naredbe za termine",
-+    "",// "Eesti"
-+    "",// "Dansk"
-+  },
-   { "Edit channel",
-diff -ruN7p1 vdr-1.3.25-orig/menu.c vdr-1.3.25/menu.c
---- vdr-1.3.25-orig/menu.c	2005-05-16 15:59:03.000000000 +0200
-+++ vdr-1.3.25/menu.c	2005-05-31 00:12:31.000000000 +0200
-@@ -709,4 +709,16 @@ eOSState cMenuEditTimer::ProcessKey(eKey
- 
--// --- cMenuTimerItem --------------------------------------------------------
-+// --- cMenuCommands ---------------------------------------------------------
-+// declaration shifted so it can be used in cMenuTimers
-+class cMenuCommands : public cOsdMenu {
-+private:
-+  cCommands *commands;
-+  char *parameters;
-+  eOSState Execute(void);
-+public:
-+  cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
-+  virtual ~cMenuCommands();
-+  virtual eOSState ProcessKey(eKeys Key);
-+  };
- 
-+// --- cMenuTimerItem --------------------------------------------------------
- class cMenuTimerItem : public cOsdItem {
-@@ -775,2 +787,3 @@ private:
-   cTimer *CurrentTimer(void);
-+  eOSState Commands(eKeys Key = kNone);
- public:
-@@ -877,2 +890,49 @@ eOSState cMenuTimers::Summary(void)
- 
-+#define CHECK_2PTR_NULL(x_,y_) ((x_)? ((y_)? y_:""):"")
-+
-+eOSState cMenuTimers::Commands(eKeys Key)
-+{
-+  if (HasSubMenu() || Count() == 0)
-+     return osContinue;
-+  cTimer *ti = CurrentTimer();
-+  if (ti) {
-+     char *parameter = NULL;
-+     const cEvent *pEvent = ti->Event();
-+     int iRecNumber=0;
-+
-+     if(!pEvent) {
-+        Timers.SetEvents();
-+        pEvent = ti->Event();
-+     }
-+     if(pEvent) {
-+// create a dummy recording to get the real filename
-+        cRecording *rc_dummy = new cRecording(ti, pEvent);
-+        Recordings.Load();
-+        cRecording *rc = Recordings.GetByName(rc_dummy->FileName());
-+     
-+        delete rc_dummy;
-+        if(rc)
-+           iRecNumber=rc->Index() + 1;
-+     }
-+//Parameter format TimerNumber 'ChannelId' Start Stop 'Titel' 'Subtitel' 'file' RecNumer
-+//                 1           2           3     4    5       6          7      8
-+     asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(), 
-+                                                             *ti->Channel()->GetChannelID().ToString(),
-+                                                             (int)ti->StartTime(),
-+                                                             (int)ti->StopTime(),
-+                                                             CHECK_2PTR_NULL(pEvent, pEvent->Title()),
-+                                                             CHECK_2PTR_NULL(pEvent, pEvent->ShortText()),
-+                                                             ti->File(),
-+                                                             iRecNumber);
-+     isyslog("timercmd: %s", parameter);
-+     cMenuCommands *menu;
-+     eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Timer commands"), &TimerCommands, parameter));
-+     free(parameter);
-+     if (Key != kNone)
-+        state = menu->ProcessKey(Key);
-+     return state;
-+     }
-+  return osContinue;
-+}
-+
- eOSState cMenuTimers::ProcessKey(eKeys Key)
-@@ -893,2 +952,4 @@ eOSState cMenuTimers::ProcessKey(eKeys K
-                      break;
-+       case k1...k9: return Commands(Key);
-+       case k0:      return (TimerCommands.Count()? Commands():osContinue);
-        default: break;
-@@ -1241,13 +1302,2 @@ eOSState cMenuSchedule::ProcessKey(eKeys
- 
--class cMenuCommands : public cOsdMenu {
--private:
--  cCommands *commands;
--  char *parameters;
--  eOSState Execute(void);
--public:
--  cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
--  virtual ~cMenuCommands();
--  virtual eOSState ProcessKey(eKeys Key);
--  };
--
- cMenuCommands::cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters)
-diff -ruN7p1 vdr-1.3.25-orig/vdr.c vdr-1.3.25/vdr.c
---- vdr-1.3.25-orig/vdr.c	2005-05-26 12:45:29.000000000 +0200
-+++ vdr-1.3.25/vdr.c	2005-05-31 00:07:56.000000000 +0200
-@@ -395,2 +395,3 @@ int main(int argc, char *argv[])
-         RecordingCommands.Load(AddDirectory(ConfigDirectory, "reccmds.conf"), true) &&
-+        TimerCommands.Load(AddDirectory(ConfigDirectory, "timercmds.conf"), true) &&
-         SVDRPhosts.Load(AddDirectory(ConfigDirectory, "svdrphosts.conf"), true) &&
diff --git a/patches/timercmd-0.1_1.5.12.diff b/patches/timercmd-0.1_1.5.12.diff
deleted file mode 100644
index da79b9c..0000000
--- a/patches/timercmd-0.1_1.5.12.diff
+++ /dev/null
@@ -1,170 +0,0 @@
-diff -Nru vdr-1.5.12-orig/config.c vdr-1.5.12/config.c
---- vdr-1.5.12-orig/config.c	2007-10-06 16:28:58.000000000 +0200
-+++ vdr-1.5.12/config.c	2007-11-28 21:01:20.000000000 +0100
-@@ -126,6 +126,7 @@
- 
- cCommands Commands;
- cCommands RecordingCommands;
-+cCommands TimerCommands;
- 
- // -- cSVDRPhosts ------------------------------------------------------------
- 
-diff -Nru vdr-1.5.12-orig/config.h vdr-1.5.12/config.h
---- vdr-1.5.12-orig/config.h	2007-11-10 14:38:19.000000000 +0100
-+++ vdr-1.5.12/config.h	2007-11-28 21:01:20.000000000 +0100
-@@ -168,6 +168,7 @@
- 
- extern cCommands Commands;
- extern cCommands RecordingCommands;
-+extern cCommands TimerCommands;
- extern cSVDRPhosts SVDRPhosts;
- 
- class cSetupLine : public cListObject {
-diff -Nru vdr-1.5.12-orig/menu.c vdr-1.5.12/menu.c
---- vdr-1.5.12-orig/menu.c	2007-11-03 16:02:00.000000000 +0100
-+++ vdr-1.5.12/menu.c	2007-11-28 21:01:20.000000000 +0100
-@@ -738,8 +738,20 @@
-   return state;
- }
- 
--// --- cMenuTimerItem --------------------------------------------------------
-+// --- cMenuCommands ---------------------------------------------------------
-+// declaration shifted so it can be used in cMenuTimers
-+class cMenuCommands : public cOsdMenu {
-+private:
-+  cCommands *commands;
-+  char *parameters;
-+  eOSState Execute(void);
-+public:
-+  cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
-+  virtual ~cMenuCommands();
-+  virtual eOSState ProcessKey(eKeys Key);
-+  };
- 
-+// --- cMenuTimerItem --------------------------------------------------------
- class cMenuTimerItem : public cOsdItem {
- private:
-   cTimer *timer;
-@@ -804,6 +816,7 @@
-   eOSState OnOff(void);
-   eOSState Info(void);
-   cTimer *CurrentTimer(void);
-+  eOSState Commands(eKeys Key = kNone);
-   void SetHelpKeys(void);
- public:
-   cMenuTimers(void);
-@@ -920,6 +933,53 @@
-   return osContinue;
- }
- 
-+#define CHECK_2PTR_NULL(x_,y_) ((x_)? ((y_)? y_:""):"")
-+
-+eOSState cMenuTimers::Commands(eKeys Key)
-+{
-+  if (HasSubMenu() || Count() == 0)
-+     return osContinue;
-+  cTimer *ti = CurrentTimer();
-+  if (ti) {
-+     char *parameter = NULL;
-+     const cEvent *pEvent = ti->Event();
-+     int iRecNumber=0;
-+
-+     if(!pEvent) {
-+        Timers.SetEvents();
-+        pEvent = ti->Event();
-+     }
-+     if(pEvent) {
-+// create a dummy recording to get the real filename
-+        cRecording *rc_dummy = new cRecording(ti, pEvent);
-+        Recordings.Load();
-+        cRecording *rc = Recordings.GetByName(rc_dummy->FileName());
-+     
-+        delete rc_dummy;
-+        if(rc)
-+           iRecNumber=rc->Index() + 1;
-+     }
-+//Parameter format TimerNumber 'ChannelId' Start Stop 'Titel' 'Subtitel' 'file' RecNumer
-+//                 1           2           3     4    5       6          7      8
-+     asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(), 
-+                                                             *ti->Channel()->GetChannelID().ToString(),
-+                                                             (int)ti->StartTime(),
-+                                                             (int)ti->StopTime(),
-+                                                             CHECK_2PTR_NULL(pEvent, pEvent->Title()),
-+                                                             CHECK_2PTR_NULL(pEvent, pEvent->ShortText()),
-+                                                             ti->File(),
-+                                                             iRecNumber);
-+     isyslog("timercmd: %s", parameter);
-+     cMenuCommands *menu;
-+     eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Timer commands"), &TimerCommands, parameter));
-+     free(parameter);
-+     if (Key != kNone)
-+        state = menu->ProcessKey(Key);
-+     return state;
-+     }
-+  return osContinue;
-+}
-+
- eOSState cMenuTimers::ProcessKey(eKeys Key)
- {
-   int TimerNumber = HasSubMenu() ? Count() : -1;
-@@ -933,6 +993,8 @@
-        case kYellow: state = Delete(); break;
-        case kBlue:   return Info();
-                      break;
-+       case k1...k9: return Commands(Key);
-+       case k0:      return (TimerCommands.Count()? Commands():osContinue);
-        default: break;
-        }
-      }
-@@ -1517,17 +1579,6 @@
- 
- // --- cMenuCommands ---------------------------------------------------------
- 
--class cMenuCommands : public cOsdMenu {
--private:
--  cCommands *commands;
--  char *parameters;
--  eOSState Execute(void);
--public:
--  cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
--  virtual ~cMenuCommands();
--  virtual eOSState ProcessKey(eKeys Key);
--  };
--
- cMenuCommands::cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters)
- :cOsdMenu(Title)
- {
-
-diff -Nru vdr-1.5.12-orig/po/de_DE.po vdr-1.5.12/po/de_DE.po
---- vdr-1.5.12-orig/po/de_DE.po	2007-11-04 12:37:26.000000000 +0100
-+++ vdr-1.5.12/po/de_DE.po	2007-11-28 21:03:00.000000000 +0100
-@@ -7,7 +7,7 @@
- msgstr ""
- "Project-Id-Version: VDR 1.5.7\n"
- "Report-Msgid-Bugs-To: <vdr-bugs at cadsoft.de>\n"
--"POT-Creation-Date: 2007-10-13 11:29+0200\n"
-+"POT-Creation-Date: 2007-11-28 21:02+0100\n"
- "PO-Revision-Date: 2007-08-12 14:17+0200\n"
- "Last-Translator: Klaus Schmidinger <kls at cadsoft.de>\n"
- "Language-Team: <vdr at linuxtv.org>\n"
-@@ -375,6 +375,9 @@
- msgid "Timer still recording - really delete?"
- msgstr "Timer zeichnet auf - trotzdem löschen?"
- 
-+msgid "Timer commands"
-+msgstr "Befehle für Timer"
-+
- msgid "Event"
- msgstr "Sendung"
-  
-diff -Nru vdr-1.5.12-orig/vdr.c vdr-1.5.12/vdr.c
---- vdr-1.5.12-orig/vdr.c	2007-11-03 15:46:29.000000000 +0100
-+++ vdr-1.5.12/vdr.c	2007-11-28 21:01:20.000000000 +0100
-@@ -550,6 +550,7 @@
-         Timers.Load(AddDirectory(ConfigDirectory, "timers.conf")) &&
-         Commands.Load(AddDirectory(ConfigDirectory, "commands.conf"), true) &&
-         RecordingCommands.Load(AddDirectory(ConfigDirectory, "reccmds.conf"), true) &&
-+        TimerCommands.Load(AddDirectory(ConfigDirectory, "timercmds.conf"), true) &&
-         SVDRPhosts.Load(AddDirectory(ConfigDirectory, "svdrphosts.conf"), true) &&
-         Keys.Load(AddDirectory(ConfigDirectory, "remote.conf")) &&
-         KeyMacros.Load(AddDirectory(ConfigDirectory, "keymacros.conf"), true)
diff --git a/patches/timercmd-0.1_1.6.0.diff b/patches/timercmd-0.1_1.6.0.diff
index f45f70a..bbab3f5 100644
--- a/patches/timercmd-0.1_1.6.0.diff
+++ b/patches/timercmd-0.1_1.6.0.diff
@@ -78,14 +78,14 @@ diff -Nru vdr-1.6.0/menu.c vdr-1.6.0-patched/menu.c
 +        cRecording *rc_dummy = new cRecording(ti, pEvent);
 +        Recordings.Load();
 +        cRecording *rc = Recordings.GetByName(rc_dummy->FileName());
-+     
++
 +        delete rc_dummy;
 +        if(rc)
 +           iRecNumber=rc->Index() + 1;
 +     }
 +//Parameter format TimerNumber 'ChannelId' Start Stop 'Titel' 'Subtitel' 'file' RecNumer
 +//                 1           2           3     4    5       6          7      8
-+     asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(), 
++     asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(),
 +                                                             *ti->Channel()->GetChannelID().ToString(),
 +                                                             (int)ti->StartTime(),
 +                                                             (int)ti->StopTime(),
diff --git a/patches/timercmd-0.1_1.7.17.diff b/patches/timercmd-0.1_1.7.17.diff
index 69407b7..609cefb 100644
--- a/patches/timercmd-0.1_1.7.17.diff
+++ b/patches/timercmd-0.1_1.7.17.diff
@@ -56,14 +56,14 @@ diff -Nru vdr-1.7.17/menu.c vdr-1.7.17-patched/menu.c
 +        cRecording *rc_dummy = new cRecording(ti, pEvent);
 +        Recordings.Load();
 +        cRecording *rc = Recordings.GetByName(rc_dummy->FileName());
-+     
++
 +        delete rc_dummy;
 +        if(rc)
 +           iRecNumber=rc->Index() + 1;
 +     }
 +//Parameter format TimerNumber 'ChannelId' Start Stop 'Titel' 'Subtitel' 'file' RecNumer
 +//                 1           2           3     4    5       6          7      8
-+     asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(), 
++     asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(),
 +                                                             *ti->Channel()->GetChannelID().ToString(),
 +                                                             (int)ti->StartTime(),
 +                                                             (int)ti->StopTime(),
diff --git a/patches/vdr-1.5.11-progressbar-support-0.0.1.diff b/patches/vdr-1.5.11-progressbar-support-0.0.1.diff
deleted file mode 100644
index 17cb3f3..0000000
--- a/patches/vdr-1.5.11-progressbar-support-0.0.1.diff
+++ /dev/null
@@ -1,113 +0,0 @@
-diff -Nru vdr-1.5.11-orig/skinclassic.c vdr-1.5.11-progressbar/skinclassic.c
---- vdr-1.5.11-orig/skinclassic.c	2007-07-29 14:35:03.000000000 +0200
-+++ vdr-1.5.11-progressbar/skinclassic.c	2007-11-12 18:46:54.000000000 +0100
-@@ -295,13 +295,51 @@
-   const cFont *font = cFont::GetFont(fontOsd);
-   for (int i = 0; i < MaxTabs; i++) {
-       const char *s = GetTabbedText(Text, i);
-+      
-       if (s) {
--         int xt = x0 + Tab(i);
--         osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x1 - xt);
--         }
--      if (!Tab(i + 1))
--         break;
-+	bool isprogressbar = false;
-+	int now = 0, total = 0;
-+	// check if progress bar: "[|||||||   ]"
-+	if ((strlen(s) > 5 && s[0] == '[' && s[strlen(s) - 1] == ']')) {
-+	  const char *p = s + 1;
-+	  // update status
-+	  isprogressbar = true;
-+	  for (; *p != ']'; ++p) {
-+	    // check if progressbar characters
-+	    if (*p == ' ' || *p == '|') {
-+	      // update counters
-+	      ++total;
-+	      if (*p == '|')
-+		++now;
-+	    } else {
-+	      // wrong character detected; not a progressbar
-+	      isprogressbar = false;
-+	      break;
-+	    }
-+	  }
-+	}
-+	int xt = x0 + Tab(i);
-+	if (isprogressbar) {
-+	  // define x coordinates of progressbar
-+	  int px0 = xt;
-+	  int px1 = (Tab(i + 1)?Tab(i+1):x1) - 5;
-+	  int px = px0 + max((int)((float) now * (float) (px1 - px0) / (float) total), 1);
-+	  // define y coordinates of progressbar
-+	  int py0 = y + 4;
-+	  int py1 = y + lineHeight - 4;
-+	  // draw background
-+	  osd->DrawRectangle(px0, y, (Tab(i + 1)?Tab(i+1):x1) - 1, y + lineHeight - 1, ColorBg);
-+	  // draw progressbar
-+	  osd->DrawRectangle(px0,    py0, px,  py1, ColorFg);
-+	  osd->DrawRectangle(px + 1, py0, px1, py0 + 1, ColorFg);
-+	  osd->DrawRectangle(px + 1, py1 - 1, px1, py1, ColorFg);
-+	  osd->DrawRectangle(px1 - 1, py0, px1, py1, ColorFg);	  
-+	} else
-+	  osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x1 - xt);
-       }
-+      if (!Tab(i + 1))
-+	break;
-+  }
-   SetEditableWidth(x1 - x0 - Tab(1));
- }
- 
-diff -Nru vdr-1.5.11-orig/skinsttng.c vdr-1.5.11-progressbar/skinsttng.c
---- vdr-1.5.11-orig/skinsttng.c	2007-06-17 15:51:56.000000000 +0200
-+++ vdr-1.5.11-progressbar/skinsttng.c	2007-11-12 18:47:01.000000000 +0100
-@@ -545,9 +545,46 @@
-   for (int i = 0; i < MaxTabs; i++) {
-       const char *s = GetTabbedText(Text, i);
-       if (s) {
--         int xt = x3 + 5 + Tab(i);
--         osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x4 - xt);
--         }
-+	bool isprogressbar = false;
-+	int now = 0, total = 0;
-+	// check if progress bar: "[|||||||   ]"
-+	if ((strlen(s) > 5 && s[0] == '[' && s[strlen(s) - 1] == ']')) {
-+	  const char *p = s + 1;
-+	  // update status
-+	  isprogressbar = true;
-+	  for (; *p != ']'; ++p) {
-+	    // check if progressbar characters
-+	    if (*p == ' ' || *p == '|') {
-+	      // update counters
-+	      ++total;
-+	      if (*p == '|')
-+		++now;
-+	    } else {
-+	      // wrong character detected; not a progressbar
-+	      isprogressbar = false;
-+	      break;
-+	    }
-+	  }
-+	}
-+	int xt = x3 + 5 + Tab(i);
-+	if (isprogressbar) {
-+	  // define x coordinates of progressbar
-+	  int px0 = xt;
-+	  int px1 = x3 + (Tab(i + 1)?Tab(i + 1):x4-x3-5) - 1;
-+	  int px = px0 + max((int)((float) now * (float) (px1 - px0) / (float) total), 1);
-+	  // define y coordinates of progressbar
-+	  int py0 = y + 4;
-+	  int py1 = y + lineHeight - 4;
-+	  // draw background
-+	  osd->DrawRectangle(px0, y, (Tab(i + 1)?Tab(i + 1):x4-x3-5) - 1, y + lineHeight - 1, ColorBg);
-+	  // draw progressbar
-+	  osd->DrawRectangle(px0,    py0, px,  py1, ColorFg);
-+	  osd->DrawRectangle(px + 1, py0, px1, py0 + 1, ColorFg);
-+	  osd->DrawRectangle(px + 1, py1 - 1, px1, py1, ColorFg);
-+	  osd->DrawRectangle(px1 - 1, py0, px1, py1, ColorFg);	  
-+	} else
-+	  osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x4 - xt);
-+      }
-       if (!Tab(i + 1))
-          break;
-       }
diff --git a/pending_notifications.c b/pending_notifications.c
index d136528..249d999 100644
--- a/pending_notifications.c
+++ b/pending_notifications.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -69,16 +69,16 @@ bool cPendingNotification::Read(FILE *f)
 		    {
 		        p->type = Type;
 			p->eventID = EventID;
-			p->timerMod = TimerMod;			
+			p->timerMod = TimerMod;
 			p->searchID = SearchID;
 			p->start = Start;
 
 			PendingNotifications.Add(p);
 		    }
 		}
-	    }		
+	    }
 		break;
-	    case 'C': 
+	    case 'C':
 	    {
 		s = skipspace(s + 1);
 		char *pC = strchr(s, ' ');
@@ -120,13 +120,13 @@ const char *cPendingNotification::ToText(void) const
     if (buffer)
 	free(buffer);
     buffer = NULL;
-    
+
     cChannel *channel = Channels.GetByChannelID(channelID, true, true);
     if (!channel)
 	LogFile.Log(3,"invalid channel in pending notifications!");
 
-    msprintf(&buffer, "N %d %u %d %d %ld\nC %s\n%s%s%sn", 
-	     type, eventID, timerMod, searchID, start, 
+    msprintf(&buffer, "N %d %u %d %d %ld\nC %s\n%s%s%sn",
+	     type, eventID, timerMod, searchID, start,
 	     channel?CHANNELSTRING(channel):"",
 	     tmpFormatted?"F ":"",tmpFormatted?tmpFormatted:"", tmpFormatted?"\n":"");
 
@@ -153,9 +153,10 @@ bool cPendingNotifications::Load(const char *FileName)
 	LogFile.iSysLog("loading %s", fileName);
 	FILE *f = fopen(fileName, "r");
 	bool result = false;
-	if (f)
+	if (f) {
 	    result = cPendingNotification::Read(f);
-        fclose(f);
+	    fclose(f);
+	}
 	if (result)
 	    LogFile.Log(2,"loaded pending notifications from %s (count: %d)", fileName, Count());
 	else
diff --git a/pending_notifications.h b/pending_notifications.h
index f32669f..c3e2131 100644
--- a/pending_notifications.h
+++ b/pending_notifications.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -37,19 +37,19 @@ public:
   time_t start;
   uint timerMod;
   int searchID;
-  string formatted; 
+  string formatted;
 
 
   static char *buffer;
-    
+
   cPendingNotification()
     : type(-1), start(-1), timerMod(-1), searchID(-1) {}
- cPendingNotification(int Type, tEventID EventID, tChannelID ChannelID,  time_t Start, uint TimerMod = -1, 
+ cPendingNotification(int Type, tEventID EventID, tChannelID ChannelID,  time_t Start, uint TimerMod = -1,
 		      int SearchID = -1, string Formatted = "")
-   : type(Type), eventID(EventID), channelID(ChannelID), start(Start), timerMod(TimerMod), 
+   : type(Type), eventID(EventID), channelID(ChannelID), start(Start), timerMod(TimerMod),
      searchID(SearchID), formatted(Formatted) {}
   ~cPendingNotification();
-  
+
   static bool Read(FILE *f);
   bool Parse(const char *s);
   const char *ToText(void) const;
diff --git a/po/ca_ES.po b/po/ca_ES.po
index 464c1bf..eecdc9a 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -3,18 +3,18 @@
 # This file is distributed under the same license as the VDR package.
 # Marc Rovira Vall <tm05462 at salleURL.edu>, 2003
 # Ramon Roca <ramon.roca at xcombo.com>, 2003
-# Jordi Vilà <jvila at tinet.org>, 2003
+# Jordi Vilà <jvila at tinet.org>, 2003
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
-"Last-Translator: Jordi Vilà <jvila at tinet.org>\n"
+"Last-Translator: Jordi Vilà <jvila at tinet.org>\n"
 "Language-Team: Catalan <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ca\n"
 
@@ -98,12 +98,6 @@ msgstr "Gravar"
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -194,9 +188,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -331,7 +323,7 @@ msgid ""
 msgstr ""
 
 msgid "Button$Setup"
-msgstr "Configuració"
+msgstr "Configuració"
 
 msgid "Use search timers"
 msgstr ""
@@ -504,7 +496,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -520,10 +512,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -839,6 +831,10 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "Gravar"
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index 825e64f..6bf03e3 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -1,172 +1,165 @@
 # VDR plugin language source file.
 # Copyright (C) 2007 Klaus Schmidinger <kls at cadsoft.de>
 # This file is distributed under the same license as the VDR package.
-# Vladimír Bárta <vladimir.barta at k2atmitec.cz>, 2006
+# Vladimír Bárta <vladimir.barta at k2atmitec.cz>, 2006
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: VDR 1.5.7\n"
+"Project-Id-Version: VDR 1.7.21\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
-"PO-Revision-Date: 2007-08-14 20:21+0200\n"
-"Last-Translator: Vladimír Bárta <vladimir.barta at k2atmitec.cz>\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
+"PO-Revision-Date: 2011-10-31 20:21+0200\n"
+"Last-Translator: Radek Stastny <dedkus at gmail.com>\n"
 "Language-Team: Czech <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: cs\n"
 
 msgid "Channel groups"
-msgstr ""
+msgstr "Skupiny stanic"
 
 msgid "Button$Select"
-msgstr ""
+msgstr "Vyber"
 
 msgid "Channel group used by:"
-msgstr ""
+msgstr "Skupina použitá v:"
 
 msgid "Edit$Delete group?"
-msgstr ""
+msgstr "Smazat Skupinu stanic?"
 
 msgid "Edit channel group"
-msgstr ""
+msgstr "Uravit Skupinu stanic"
 
 msgid "Group name"
-msgstr ""
+msgstr "Jméno skupiny"
 
 msgid "Button$Invert selection"
-msgstr ""
+msgstr "Inverzní výběr"
 
 msgid "Button$All yes"
-msgstr ""
+msgstr "Ano vše"
 
 msgid "Button$All no"
-msgstr ""
+msgstr "Ne vše"
 
 msgid "Group name is empty!"
-msgstr ""
+msgstr "Jméno nemůže být prázdné!"
 
 msgid "Group name already exists!"
-msgstr ""
+msgstr "Jméno již použito!"
 
 msgid "Direct access to epgsearch's conflict check menu"
-msgstr ""
+msgstr "Přímý vstup do menu konfliktů epgsearch"
 
 msgid "Timer conflicts"
-msgstr ""
+msgstr "Konflikty v nahrávání"
 
 msgid "Conflict info in main menu"
-msgstr ""
+msgstr "Konflikty do hlavního menu"
 
 msgid "next"
-msgstr ""
+msgstr "další"
 
 #, c-format
 msgid "%d timer conflict(s)! First at %s. Show them?"
-msgstr ""
+msgstr "Nahrávání - konflikty (%d)! Od %s. Zobrazit?"
 
 msgid "search the EPG for repeats and more"
-msgstr ""
+msgstr "hledat opakování v programu a další"
 
 msgid "Program guide"
-msgstr ""
+msgstr "Průvodce programem (EPG)"
 
 msgid "search timer update running"
-msgstr ""
+msgstr "Probíhá aktualizace Nahrávání"
 
 msgid "Direct access to epgsearch's search menu"
-msgstr ""
+msgstr "Přímý vstup do menu hledání epgsearch"
 
 msgid "Search"
-msgstr ""
+msgstr "Automatické nahrávání"
 
 msgid "EpgSearch-Search in main menu"
-msgstr ""
+msgstr "EpgSearch hledání do hlavního menu"
 
 msgid "Button$Help"
-msgstr ""
+msgstr "Nápověda"
 
 msgid "Standard"
-msgstr ""
+msgstr "Výchozí"
 
-#, fuzzy
 msgid "Button$Commands"
-msgstr "Nahrát"
+msgstr "Příkazy"
 
 msgid "Button$Search"
-msgstr ""
-
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
+msgstr "Hledat"
 
 msgid "never"
-msgstr ""
+msgstr "nikdy"
 
 msgid "always"
-msgstr ""
+msgstr "vždy"
 
 msgid "smart"
-msgstr ""
+msgstr "chytře"
 
 msgid "before user-def. times"
-msgstr ""
+msgstr "před uživatelské časy"
 
 msgid "after user-def. times"
-msgstr ""
+msgstr "po uživatelských časech"
 
 msgid "before 'next'"
-msgstr ""
+msgstr "před 'Nyní'"
 
 msgid "General"
-msgstr ""
+msgstr "Základní"
 
 msgid "EPG menus"
-msgstr ""
+msgstr "Programový průvodce"
 
 msgid "User-defined EPG times"
-msgstr ""
+msgstr "Nastavení času"
 
 msgid "Timer programming"
-msgstr ""
+msgstr "Nastavení nahrávání"
 
 msgid "Search and search timers"
-msgstr ""
+msgstr "Hledání a Automatické nahrávání"
 
 msgid "Timer conflict checking"
-msgstr ""
+msgstr "Kontrola konfliktů nahrávání"
 
 msgid "Email notification"
-msgstr ""
+msgstr "Mailové zprávy"
 
 msgid "Hide main menu entry"
-msgstr ""
+msgstr "Skrýt položku v hlavním menu"
 
 msgid "Help$Hides the main menu entry and may be useful if this plugin is used to replace the original 'Schedule' entry."
-msgstr ""
+msgstr "Nezobrazovat v hlavním menu, používá se když tento plugin nahrazuje výchozího průvodce programem."
 
 msgid "Main menu entry"
-msgstr ""
+msgstr "Název položky hlavního menu"
 
 msgid "Help$The name of the main menu entry which defaults to 'Programm guide'."
-msgstr ""
+msgstr "Jméno položky hlavního menu - výchozí název je Průvodce programem (EPG) "
 
 msgid "Replace original schedule"
-msgstr ""
+msgstr "Nahradit výchozího průvodce programem"
 
 msgid "Help$When VDR is patched to allow this plugin to replace the original 'Schedule' entry, you can de/activate this replacement here."
-msgstr ""
+msgstr "Pokud je vdr upraveno, může tento plugin nahradit výchozí položku 'Program'"
 
 msgid "Start menu"
-msgstr ""
+msgstr "Výchozí menu"
 
 msgid "Help$Choose between 'Overview - Now' and 'Schedule' as start menu when this plugin is called."
-msgstr ""
+msgstr "Výběr mezi přehledem všech stanic - 'Nyní' a programem aktuální stanice - 'Program'"
 
 msgid "Ok key"
-msgstr ""
+msgstr "OK tlačítko"
 
 msgid ""
 "Help$Choose here the behaviour of key 'Ok'. You can use it to display the summary or to switch to the corresponding channel.\n"
@@ -174,7 +167,7 @@ msgid ""
 msgstr ""
 
 msgid "Red key"
-msgstr ""
+msgstr "Červené tlačítko"
 
 msgid ""
 "Help$Choose which standard function ('Record' or 'Commands') you like to have on the red key.\n"
@@ -182,7 +175,7 @@ msgid ""
 msgstr ""
 
 msgid "Blue key"
-msgstr ""
+msgstr "Modré tlačítko"
 
 msgid ""
 "Help$Choose which standard function ('Switch'/'Info' or 'Search') you like to have on the blue key.\n"
@@ -190,15 +183,13 @@ msgid ""
 msgstr ""
 
 msgid "Show progress in 'Now'"
-msgstr ""
+msgstr "Zobrazit časové detaily v přehledu stanic 'Nyní'"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
-msgstr ""
+msgstr "Zobrazit čísla stanic"
 
 msgid ""
 "Help$Display channel numbers in 'Overview - Now'.\n"
@@ -207,43 +198,43 @@ msgid ""
 msgstr ""
 
 msgid "Show channel separators"
-msgstr ""
+msgstr "Zobrazit oddělení mezi stanicemi"
 
 msgid "Help$Display VDR channel groups as separators between your channels in 'Overview - Now'."
 msgstr ""
 
 msgid "Show day separators"
-msgstr ""
+msgstr "Zobrazit oddělení mezi dny"
 
 msgid "Help$Display a separator line at day break in 'Schedule'."
 msgstr ""
 
 msgid "Show radio channels"
-msgstr ""
+msgstr "Zobrazit radio stanice"
 
 msgid "Help$Show also radio channels."
 msgstr ""
 
 msgid "Limit channels from 1 to"
-msgstr ""
+msgstr "Omezit zobrazení stanic od 1 do"
 
 msgid "Help$If you have a large channel set you can speed up things when you limit the displayed channels with this setting. Use '0' to disable the limit."
 msgstr ""
 
 msgid "'One press' timer creation"
-msgstr ""
+msgstr "Vytváření nahrávání 'Jedním stiskem'"
 
 msgid "Help$When a timer is created with 'Record' you can choose between an immediate creation of the timer or the display of the timer edit menu."
 msgstr ""
 
 msgid "Show channels without EPG"
-msgstr ""
+msgstr "Zobrazit stanice bez programu"
 
 msgid "Help$Choose 'yes' here if you want to display channels without EPG in 'Overview - Now'. 'Ok' on these entries switches the channel."
 msgstr ""
 
 msgid "Time interval for FRew/FFwd [min]"
-msgstr ""
+msgstr "Posun v průvodci po FRew/FFwd [min]"
 
 msgid ""
 "Help$Choose here the time interval which should be used for jumping through the EPG by pressing FRew/FFwd.\n"
@@ -252,13 +243,13 @@ msgid ""
 msgstr ""
 
 msgid "Toggle Green/Yellow"
-msgstr ""
+msgstr "Prohodit Zelené/Žluté"
 
 msgid "Help$Specify if green and yellow shall also be switched when pressing '0'."
 msgstr ""
 
 msgid "Show favorites menu"
-msgstr ""
+msgstr "Zobrazovat volbu Oblíbené"
 
 msgid ""
 "Help$A favorites menu can display a list of your favorite broadcasts. Enable this if you want an additional menu besides 'Now' and 'Next'\n"
@@ -266,31 +257,31 @@ msgid ""
 msgstr ""
 
 msgid "for the next ... hours"
-msgstr ""
+msgstr "na příštích ... hodin"
 
 msgid "Help$This value controls the timespan used to display your favorites."
 msgstr ""
 
 msgid "Use user-defined time"
-msgstr ""
+msgstr "Uživateské časy"
 
 msgid "Help$Besides 'Now' and 'Next' you can specify up to 4 other times in the EPG which can be used by repeatedly pressing the green key, e.g. 'prime time', 'late night',..."
 msgstr ""
 
 msgid "Description"
-msgstr ""
+msgstr "Popis"
 
 msgid "Help$This is the description for your user-defined time as it will appear as label on the green button."
 msgstr ""
 
 msgid "Time"
-msgstr ""
+msgstr "ÄŒas"
 
 msgid "Help$Specify the user-defined time here in 'HH:MM'."
 msgstr ""
 
 msgid "Use VDR's timer edit menu"
-msgstr ""
+msgstr "Použít výchozí menu pro nahrávání"
 
 msgid ""
 "Help$This plugin has it's own timer edit menu extending the original one with some extra functionality like\n"
@@ -301,13 +292,13 @@ msgid ""
 msgstr ""
 
 msgid "Default recording dir"
-msgstr ""
+msgstr "Výchozí adresář pro nahrávky"
 
 msgid "Help$When creating a timer you can specify here a default recording directory."
 msgstr ""
 
 msgid "Add episode to manual timers"
-msgstr ""
+msgstr "Přidávat název dílu do Nahrávání"
 
 msgid ""
 "Help$If you create a timer for a series, you can automatically add the episode name.\n"
@@ -318,7 +309,7 @@ msgid ""
 msgstr ""
 
 msgid "Default timer check method"
-msgstr ""
+msgstr "Výchozí kontrola plán. Nahrávání"
 
 msgid ""
 "Help$Manual timers can be checked for EPG changes. Here you can setup the default check method for each channel. Choose between\n"
@@ -329,16 +320,16 @@ msgid ""
 msgstr ""
 
 msgid "Button$Setup"
-msgstr "Nastavení"
+msgstr "Nastavení"
 
 msgid "Use search timers"
-msgstr ""
+msgstr "Používat Automatické nahrávání"
 
 msgid "Help$'Search timers' can be used to automatically create timers for events that match your search criterions."
 msgstr ""
 
 msgid "  Update interval [min]"
-msgstr ""
+msgstr " Interval mezi hledáním [min]"
 
 msgid "Help$Specify here the time intervall to be used when searching for events in the background."
 msgstr ""
@@ -362,55 +353,55 @@ msgid "Help$Specify here the default stop recording margin of timers/recordings
 msgstr ""
 
 msgid "No announcements when replaying"
-msgstr ""
+msgstr "Nezobrazovat infromace při přehrávání"
 
 msgid "Help$Set this to 'yes' if you don't like to get any announcements of broadcasts if you currently replay anything."
 msgstr ""
 
 msgid "Recreate timers after deletion"
-msgstr ""
+msgstr "Znovu vytvořit Nahrávání i po smazání"
 
 msgid "Help$Set this to 'yes' if you want timers to be recreated with the next search timer update after deleting them."
 msgstr ""
 
 msgid "Check if EPG exists for ... [h]"
-msgstr ""
+msgstr "Kontrolvat zda je .. [h] programu"
 
 msgid "Help$Specify how many hours of future EPG there should be and get warned else after a search timer update."
 msgstr ""
 
 msgid "Warn by OSD"
-msgstr ""
+msgstr "Informovat na obrazovce"
 
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check via OSD."
 msgstr ""
 
 msgid "Warn by mail"
-msgstr ""
+msgstr "Informovat mailem"
 
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check by mail."
 msgstr ""
 
 msgid "Channel group to check"
-msgstr ""
+msgstr "Skupina stanic ke hledání"
 
 msgid "Help$Specify the channel group to check."
 msgstr ""
 
 msgid "Ignore PayTV channels"
-msgstr ""
+msgstr "Ignorovat placené stanice"
 
 msgid "Help$Set this to 'yes' if don't want to see events on PayTV channels when searching for repeats."
 msgstr ""
 
 msgid "Search templates"
-msgstr ""
+msgstr "Vzory pro hledání"
 
 msgid "Help$Here you can setup templates for your searches."
 msgstr ""
 
 msgid "Blacklists"
-msgstr ""
+msgstr "Černé listiny (blacklist)"
 
 msgid "Help$Here you can setup blacklists which can be used within a search to exclude events you don't like."
 msgstr ""
@@ -419,46 +410,46 @@ msgid "Help$Here you can setup channel groups which can be used within a search.
 msgstr ""
 
 msgid "Ignore below priority"
-msgstr ""
+msgstr "Ignorovat prioritu pod"
 
 msgid "Help$If a timer with priority below the given value will fail it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
 msgstr ""
 
 msgid "Ignore conflict duration less ... min."
-msgstr ""
+msgstr "Vynechat konflikty kratší než ... min"
 
 msgid "Help$If a conflicts duration is less then the given number of minutes it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
 msgstr ""
 
 msgid "Only check within next ... days"
-msgstr ""
+msgstr "Kontrolovat pouze během dalších . dní"
 
 msgid "Help$This value reduces the conflict check to the given range of days. All other conflicts are classified as 'not yet important'."
 msgstr ""
 
 msgid "--- Automatic checking ---"
-msgstr ""
+msgstr "--- Automatická kontrola ---"
 
 msgid "After each timer programming"
-msgstr ""
+msgstr "Po vytvoření Nahrávání"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each manual timer programming. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if this timer is involved in any conflict."
 msgstr ""
 
 msgid "When a recording starts"
-msgstr ""
+msgstr "Když začne nahrávání"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed when a recording starts. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if the conflict is within the next 2 hours."
 msgstr ""
 
 msgid "After each search timer update"
-msgstr ""
+msgstr "Po každém hledání"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each search timer update."
 msgstr ""
 
 msgid "every ... minutes"
-msgstr ""
+msgstr "každých ... minut"
 
 msgid ""
 "Help$Specify here the time intervall to be used for an automatic conflict check in the background.\n"
@@ -466,25 +457,25 @@ msgid ""
 msgstr ""
 
 msgid "if conflicts within next ... minutes"
-msgstr ""
+msgstr "pokud je konflikt během dalších ... minut"
 
 msgid "Help$If the next conflict will appear in the given number of minutes you can specify here a shorter check intervall to get more OSD notifications about it."
 msgstr ""
 
 msgid "Avoid notification when replaying"
-msgstr ""
+msgstr "Neinformaovat na obrazovce při přehrávání"
 
 msgid "Help$Set this to 'yes' if the don't want to get OSD messages about conflicts if you currently replay something. Nevertheless messages will be displayed if the first upcoming conflict is within the next 2 hours."
 msgstr ""
 
 msgid "Search timer notification"
-msgstr ""
+msgstr "Informovat o vytvoření Nahrávání"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the search timers that where programmed automatically in the background."
 msgstr ""
 
 msgid "Time between mails [h]"
-msgstr ""
+msgstr "Interval mezi maily [h]"
 
 msgid ""
 "Help$Specifiy how much time in [h] you would\n"
@@ -494,19 +485,19 @@ msgid ""
 msgstr ""
 
 msgid "Timer conflict notification"
-msgstr ""
+msgstr "Informovat o konfliktech Nahrávání"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the timer conflicts."
 msgstr ""
 
 msgid "Send to"
-msgstr ""
+msgstr "Adresát"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
-msgstr ""
+msgstr "Způsob odeslání"
 
 msgid ""
 "Help$Specify here the method to use when sending mails.\n"
@@ -516,473 +507,477 @@ msgid ""
 msgstr ""
 
 msgid "--- Email account ---"
-msgstr ""
+msgstr "--- Email účet ---"
 
-msgid "Email adress"
-msgstr ""
+msgid "Email address"
+msgstr "adresa"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
-msgstr ""
+msgstr "SMTP server"
 
 msgid "Help$Specify the SMTP server that should deliver the notifications. If it's using a port different from the default(25) append the port with \":port\"."
 msgstr ""
 
 msgid "Use SMTP authentication"
-msgstr ""
+msgstr "Použít SMTP authentifikaci"
 
 msgid "Help$Set this to 'yes' if your account needs authentication to send mails."
 msgstr ""
 
 msgid "Auth user"
-msgstr ""
+msgstr "uživatel"
 
 msgid "Help$Specify the auth user, if this account needs authentication for SMTP."
 msgstr ""
 
 msgid "Auth password"
-msgstr ""
+msgstr "heslo"
 
 msgid "Help$Specify the auth password, if this account needs authentication for SMTP."
 msgstr ""
 
 msgid "Mail account check failed!"
-msgstr ""
+msgstr "Kontrola účtu selhala"
 
 msgid "Button$Test"
-msgstr ""
+msgstr "Test"
 
 msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
 msgstr ""
 
 msgid "Start/Stop time has changed"
-msgstr ""
+msgstr "Změnil se čas Začátku/konce"
 
 msgid "Title/episode has changed"
-msgstr ""
+msgstr "Změnil se Název/název dílu"
 
 msgid "No new timers were added."
-msgstr ""
+msgstr "Nevytvořeno nové Nahrávání."
 
 msgid "No timers were modified."
-msgstr ""
+msgstr "Neupraveno žádné Nahrávání."
 
 msgid "No timers were deleted."
-msgstr ""
+msgstr "Žádné nahrávání nebylo smazané."
 
 msgid "No new events to announce."
-msgstr ""
+msgstr "Zádné nová událost k oznámení. "
 
 msgid "This version of EPGSearch does not support this service!"
-msgstr ""
+msgstr "Tato verze EPGsearch nepodporuje tuto službu!"
 
 msgid "EPGSearch does not exist!"
-msgstr ""
+msgstr "EPGsearch neexistuje!"
 
 #, c-format
 msgid "%d new broadcast"
-msgstr ""
+msgstr "%d nové vysílání"
 
 msgid "Button$by channel"
-msgstr ""
+msgstr "Dle stanic"
 
 msgid "Button$by time"
-msgstr ""
+msgstr "Dle času"
 
 msgid "Button$Episode"
-msgstr ""
+msgstr "Název dílu"
 
 msgid "Button$Title"
-msgstr ""
+msgstr "Název"
 
 msgid "announce details"
-msgstr ""
+msgstr "informovat o podrobostech"
 
 msgid "announce again"
-msgstr ""
+msgstr "informovat znovu"
 
 msgid "with next update"
-msgstr ""
+msgstr "při dalších změnách"
 
 msgid "again from"
-msgstr ""
+msgstr "znovu od"
 
 msgid "Search timer"
-msgstr ""
+msgstr "Automatické nahrávání"
 
 msgid "Edit blacklist"
-msgstr ""
+msgstr "Upravit blacklist"
 
 msgid "phrase"
-msgstr ""
+msgstr "fráze"
 
 msgid "all words"
-msgstr ""
+msgstr "všechna slova"
 
 msgid "at least one word"
-msgstr ""
+msgstr "alespoň jedno slovo"
 
 msgid "match exactly"
-msgstr ""
+msgstr "přesný výraz"
 
 msgid "regular expression"
-msgstr ""
+msgstr "regulární výraz"
 
 msgid "fuzzy"
 msgstr ""
 
 msgid "user-defined"
-msgstr ""
+msgstr "více dní"
 
 msgid "interval"
 msgstr ""
 
 msgid "channel group"
-msgstr ""
+msgstr "skupina kanálů"
 
 msgid "only FTA"
-msgstr ""
+msgstr "jen volné"
 
 msgid "Search term"
-msgstr ""
+msgstr "Vyhledej"
 
 msgid "Search mode"
-msgstr ""
+msgstr "Vyhledávací režim"
 
 msgid "Tolerance"
 msgstr ""
 
 msgid "Match case"
-msgstr ""
+msgstr "Velikost písmen"
 
 msgid "Use title"
-msgstr ""
+msgstr "Název"
 
 msgid "Use subtitle"
-msgstr ""
+msgstr "Název dílu"
 
 msgid "Use description"
-msgstr ""
+msgstr "Popis"
 
 msgid "Use extended EPG info"
-msgstr ""
+msgstr "Použít rozšířené EPG informace"
 
 msgid "Ignore missing categories"
-msgstr ""
+msgstr "Ignorovat chybějící kategorie."
 
 msgid "Use channel"
-msgstr ""
+msgstr "Stanice"
 
 msgid "  from channel"
-msgstr ""
+msgstr " od"
 
 msgid "  to channel"
-msgstr ""
+msgstr " do"
 
 msgid "Channel group"
-msgstr ""
+msgstr "Skupina stanic"
 
 msgid "Use time"
-msgstr ""
+msgstr "ÄŒas"
 
 msgid "  Start after"
-msgstr ""
+msgstr " Začíná po"
 
 msgid "  Start before"
-msgstr ""
+msgstr " Začíná před"
 
 msgid "Use duration"
-msgstr ""
+msgstr "Délka"
 
 msgid "  Min. duration"
-msgstr ""
+msgstr " Min. délka"
 
 msgid "  Max. duration"
-msgstr ""
+msgstr " Max. délka"
 
 msgid "Use day of week"
-msgstr ""
+msgstr "Den v týdnu"
 
 msgid "Day of week"
-msgstr ""
+msgstr "Den"
 
 msgid "Use global"
-msgstr ""
+msgstr "Použít globálně"
 
 msgid "Button$Templates"
-msgstr ""
+msgstr "Vzory"
 
 msgid "*** Invalid Channel ***"
-msgstr ""
+msgstr "*** špatná stanice ***"
 
 msgid "Please check channel criteria!"
-msgstr ""
+msgstr "Zkontrolujte nastavení stanic!"
 
 msgid "Edit$Delete blacklist?"
-msgstr ""
+msgstr "Smazat blacklist?"
 
 msgid "Repeats"
-msgstr ""
+msgstr "Opakování"
 
 msgid "Create search"
-msgstr ""
+msgstr "Vytvořit Hledání"
 
 msgid "Search in recordings"
-msgstr ""
+msgstr "Hledat v nahrávkách?"
 
 msgid "Mark as 'already recorded'?"
-msgstr ""
+msgstr "Označit jako 'již nahrané'"
 
 msgid "Add/Remove to/from switch list?"
-msgstr ""
+msgstr "Upravit seznam přepnutí?"
 
 msgid "Create blacklist"
-msgstr ""
+msgstr "Vytvořit blacklist"
 
 msgid "EPG Commands"
-msgstr ""
+msgstr "EPG příkazy"
 
 msgid "Already running!"
-msgstr ""
+msgstr "Již běží!"
 
 msgid "Add to switch list?"
-msgstr ""
+msgstr "Přidat do seznamu přepnutí?"
 
 msgid "Delete from switch list?"
-msgstr ""
+msgstr "Smazat ze seznamu přepnutí?"
 
 msgid "Button$Details"
-msgstr ""
+msgstr "Detaily"
 
 msgid "Button$Filter"
-msgstr ""
+msgstr "Filtr"
 
 msgid "Button$Show all"
-msgstr ""
+msgstr "Zobrazit vše"
 
 msgid "conflicts"
-msgstr ""
+msgstr "konflikty"
 
 msgid "no conflicts!"
-msgstr ""
+msgstr "žádné konflikty!"
 
 msgid "no important conflicts!"
-msgstr ""
+msgstr "zádné důležité konflikty!"
 
 msgid "C"
 msgstr "C"
 
 msgid "Button$Repeats"
-msgstr ""
+msgstr "Opakování"
 
 msgid "no check"
-msgstr ""
+msgstr "žádná kontrola"
 
 msgid "by channel and time"
-msgstr ""
+msgstr "dle stanice a času"
 
 msgid "by event ID"
-msgstr ""
+msgstr "dle ID události"
 
 msgid "Select directory"
-msgstr ""
+msgstr "Vyber adresář"
 
 msgid "Button$Level"
-msgstr ""
+msgstr "Úroveň"
 
 msgid "Event"
-msgstr ""
+msgstr "Událost"
 
 msgid "Favorites"
-msgstr ""
+msgstr "Oblíbené"
 
 msgid "Search results"
-msgstr ""
+msgstr "Výsledky hledání"
 
 msgid "Timer conflict! Show?"
-msgstr ""
+msgstr "Konflikt Nahrávání! Zobrazit?"
 
 msgid "Directory"
-msgstr ""
+msgstr "Adresář"
 
 msgid "Channel"
-msgstr ""
+msgstr "Stanice"
 
 msgid "Childlock"
-msgstr ""
+msgstr "Dětská pojistka"
 
 msgid "Timer check"
-msgstr ""
+msgstr "Kontrola Nahrávání"
 
 msgid "recording with device"
-msgstr ""
+msgstr "nahrávat zařízením"
 
 msgid "Button$With subtitle"
-msgstr ""
+msgstr "S Názvem dílu"
 
 msgid "Button$Without subtitle"
-msgstr ""
+msgstr "Bez Názvu dílu"
 
 msgid "Button$Extended"
-msgstr ""
+msgstr "Rozšířené"
 
 msgid "Button$Simple"
-msgstr ""
+msgstr "Výchozí"
 
 msgid "Use blacklists"
-msgstr ""
+msgstr "Použít blacklist"
 
 msgid "Edit$Search text too short - use anyway?"
-msgstr ""
+msgstr "Text je příliš krátký - přesto použít?"
+
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "Dle stanic"
 
 msgid "Button$by name"
-msgstr ""
+msgstr "dle jména"
 
 msgid "Button$by date"
-msgstr ""
+msgstr "dle data"
 
 msgid "Button$Delete all"
-msgstr ""
+msgstr "Smazat vše"
 
 msgid "Recordings"
-msgstr ""
+msgstr "Nahrávky"
 
 msgid "Edit$Delete entry?"
-msgstr ""
+msgstr "Smazat?"
 
 msgid "Edit$Delete all entries?"
-msgstr ""
+msgstr "Smazat vše?"
 
 msgid "Summary"
-msgstr ""
+msgstr "Shrnutí"
 
 msgid "Auxiliary info"
-msgstr ""
+msgstr "Pomocné info"
 
 msgid "Button$Aux info"
-msgstr ""
+msgstr "Pom. info"
 
 msgid "Search actions"
-msgstr ""
+msgstr "Akce hledání"
 
 msgid "Execute search"
-msgstr ""
+msgstr "Hledat"
 
 msgid "Use as search timer on/off"
-msgstr ""
+msgstr "Povolit/Zakázat"
 
 msgid "Trigger search timer update"
-msgstr ""
+msgstr "Hledat změny"
 
 msgid "Show recordings done"
-msgstr ""
+msgstr "Zobrazit nahrávky"
 
 msgid "Show timers created"
-msgstr ""
+msgstr "Zobrazit Nahrávání"
 
 msgid "Create a copy"
-msgstr ""
+msgstr "Vytvořit kopii"
 
 msgid "Use as template"
-msgstr ""
+msgstr "Použít jako vzor"
 
 msgid "Show switch list"
-msgstr ""
+msgstr "Zobrazit seznam přepnutí"
 
 msgid "Show blacklists"
-msgstr ""
+msgstr "Zobrazit blacklisty"
 
 msgid "Delete created timers?"
-msgstr ""
+msgstr "Smazat vytvorená Nahrávání?"
 
 msgid "Timer conflict check"
-msgstr ""
+msgstr "Kontrola konfliktů"
 
 msgid "Disable associated timers too?"
-msgstr ""
+msgstr "Zakázat i vytvořená Nahrávání?"
 
 msgid "Activate associated timers too?"
-msgstr ""
+msgstr "Povolit i již vytvořená Nahrávání?"
 
 msgid "Search timers activated in setup."
-msgstr ""
+msgstr "Automatické nahrávání povoleno v nastavení."
 
 msgid "Run search timer update?"
-msgstr ""
+msgstr "Aktualizovat automatické nahrávání?"
 
 msgid "Copy this entry?"
-msgstr ""
+msgstr "Kopírovat položku?"
 
 msgid "Copy"
-msgstr ""
+msgstr "Kopírovat"
 
 msgid "Copy this entry to templates?"
-msgstr ""
+msgstr "Zkopírovat do vzorů?"
 
 msgid "Delete all timers created from this search?"
-msgstr ""
+msgstr "Smazat všechna Nahrávání z tohoto hledání?"
 
 msgid "Button$Actions"
-msgstr ""
+msgstr "Akce"
 
 msgid "Search entries"
-msgstr ""
+msgstr "Vyhledat položky"
 
 msgid "active"
-msgstr ""
+msgstr "povoleno"
 
 msgid "Edit$Delete search?"
-msgstr ""
+msgstr "Smazat?"
 
 msgid "Edit search"
-msgstr ""
+msgstr "Upravit hledání"
 
 msgid "Record"
-msgstr "Nahrát"
+msgstr "Nahrát"
 
 msgid "Announce by OSD"
-msgstr ""
+msgstr "Informovat na obrazovce"
 
 msgid "Switch only"
-msgstr ""
+msgstr "Přepnout"
 
 msgid "Announce and switch"
-msgstr ""
+msgstr "Informovat a přepnout"
 
 msgid "Announce by mail"
-msgstr ""
+msgstr "Informovat mailem"
 
 msgid "only globals"
-msgstr ""
+msgstr "globální"
 
 msgid "Selection"
-msgstr ""
+msgstr "výběr"
 
 msgid "all"
-msgstr ""
+msgstr "vše"
 
 msgid "count recordings"
-msgstr ""
+msgstr "počítat nahrávky"
 
 msgid "count days"
-msgstr ""
+msgstr "počítat dny"
 
 msgid "if present"
-msgstr ""
+msgstr "pokud existuje"
 
 msgid "same day"
-msgstr ""
+msgstr "stejný den"
 
 msgid "same week"
-msgstr ""
+msgstr "stejný týden"
 
 msgid "same month"
-msgstr ""
+msgstr "stejný měsíc"
 
 msgid "Template name"
-msgstr ""
+msgstr "Jméno vzoru"
 
 msgid "Help$Specify the name of the template."
 msgstr ""
@@ -1017,7 +1012,7 @@ msgid "Help$Set this to 'Yes' if you like to search in the summary of an event."
 msgstr ""
 
 msgid "Use content descriptor"
-msgstr ""
+msgstr "Použít popis obsahu"
 
 msgid "Help$Set this to 'Yes' if you want to search the contents by a descriptor."
 msgstr ""
@@ -1032,217 +1027,217 @@ msgid "Help$If a selected category is not part of the summary of an event this n
 msgstr ""
 
 msgid "Use in favorites menu"
-msgstr ""
+msgstr "Zobrazit v Oblíbených"
 
 msgid "Result menu layout"
-msgstr ""
+msgstr "Způsob zobrazení výsledků"
 
 msgid "Use as search timer"
-msgstr ""
+msgstr "Použít pro Automatické nahrávání"
 
 msgid "Action"
-msgstr ""
+msgstr "Akce"
 
 msgid "Switch ... minutes before start"
-msgstr ""
+msgstr "Přepnout ... minut před začátkem"
 
 msgid "Unmute sound"
-msgstr ""
+msgstr "Zrušit ztišení"
 
 msgid "Ask ... minutes before start"
-msgstr ""
+msgstr "Zeptat se ... minut před začátkem"
 
 msgid "  Series recording"
-msgstr ""
+msgstr " Nahrávání sériálu"
 
 msgid "Delete recordings after ... days"
-msgstr ""
+msgstr "Smazat nahrávku po ... dnech"
 
 msgid "Keep ... recordings"
-msgstr ""
+msgstr "Ponechat ... nahrávek"
 
 msgid "Pause when ... recordings exist"
-msgstr ""
+msgstr "Vynechat pokud uloženo ... nahrávek"
 
 msgid "Avoid repeats"
-msgstr ""
+msgstr "Přeskočit opakování"
 
 msgid "Allowed repeats"
-msgstr ""
+msgstr "Povolených opakování"
 
 msgid "Only repeats within ... days"
-msgstr ""
+msgstr "Opakovat po ... dnech"
 
 msgid "Compare title"
-msgstr ""
+msgstr "Porovnat název"
 
 msgid "Compare subtitle"
-msgstr ""
+msgstr "Porovnat Název dílu"
 
 msgid "Compare summary"
-msgstr ""
+msgstr "Porovnat popis"
 
 msgid "Min. match in %"
-msgstr ""
+msgstr "Odpovídá na ... %"
 
 msgid "Compare date"
-msgstr ""
+msgstr "Porovnat datum"
 
 msgid "Compare categories"
-msgstr ""
+msgstr "Porovnat kategorii"
 
 msgid "VPS"
 msgstr ""
 
 msgid "Auto delete"
-msgstr ""
+msgstr "Automatické smazání"
 
 msgid "after ... recordings"
-msgstr ""
+msgstr "po ... nahrávkách"
 
 msgid "after ... days after first rec."
-msgstr ""
+msgstr "po ... dnech po první nahrávce"
 
 msgid "Edit user-defined days of week"
-msgstr ""
+msgstr "Upravit použité dny"
 
 msgid "Compare"
-msgstr ""
+msgstr "Porovnat"
 
 msgid "Select blacklists"
-msgstr ""
+msgstr "Vybrat blacklisty"
 
 msgid "Values for EPG category"
-msgstr ""
+msgstr "EPG kategorie"
 
 msgid "Button$Apply"
-msgstr ""
+msgstr "Použít"
 
 msgid "less"
-msgstr ""
+msgstr "menší"
 
 msgid "less or equal"
-msgstr ""
+msgstr "menší nebo stejný"
 
 msgid "greater"
-msgstr ""
+msgstr "větší"
 
 msgid "greater or equal"
-msgstr ""
+msgstr "větší nebo stejný"
 
 msgid "equal"
-msgstr ""
+msgstr "stejný"
 
 msgid "not equal"
-msgstr ""
+msgstr "jiný"
 
 msgid "Activation of search timer"
-msgstr ""
+msgstr "Povolit Automatické nahrávání?"
 
 msgid "First day"
-msgstr ""
+msgstr "První den"
 
 msgid "Last day"
-msgstr ""
+msgstr "Poslední den"
 
 msgid "Button$all channels"
-msgstr ""
+msgstr "VÅ¡echny stanice"
 
 msgid "Button$only FTA"
-msgstr ""
+msgstr "Jen volné"
 
 msgid "Button$Timer preview"
-msgstr ""
+msgstr "Náhled Nahrávání"
 
 msgid "Blacklist results"
-msgstr ""
+msgstr "Výsledky blacklist"
 
 msgid "found recordings"
-msgstr ""
+msgstr "nalezených nahrávek"
 
 msgid "Error while accessing recording!"
-msgstr ""
+msgstr "Chyba při přístupu k nahrávce!"
 
 msgid "Button$Default"
-msgstr ""
+msgstr "Výchozí"
 
 msgid "Edit$Delete template?"
-msgstr ""
+msgstr "Smazat vzor?"
 
 msgid "Overwrite existing entries?"
-msgstr ""
+msgstr "Přepsat existující položky!"
 
 msgid "Edit entry"
-msgstr ""
+msgstr "Upravit položku"
 
 msgid "Switch"
-msgstr ""
+msgstr "Přepnout"
 
 msgid "Announce only"
-msgstr ""
+msgstr "Informovat"
 
 msgid "Announce ... minutes before start"
-msgstr ""
+msgstr "Informovat ... minut předem"
 
 msgid "action at"
-msgstr ""
+msgstr "v"
 
 msgid "Switch list"
-msgstr ""
+msgstr "Seznam přepnutí"
 
 msgid "Edit template"
-msgstr ""
+msgstr "Upravit vzor"
 
 msgid "Timers"
-msgstr ""
+msgstr "Nahrávání"
 
 msgid ">>> no info! <<<"
-msgstr ""
+msgstr ">>> bez informací <<<"
 
 msgid "Overview"
-msgstr ""
+msgstr "Přehled"
 
 msgid "Button$Favorites"
-msgstr ""
+msgstr "Oblíbené"
 
 msgid "Quick search for broadcasts"
-msgstr ""
+msgstr "Rychlé hledání vysílání"
 
 msgid "Quick search"
-msgstr ""
+msgstr "Rychlé hledání"
 
 msgid "Show in main menu"
-msgstr ""
+msgstr "Zobrazit v hlavním menu"
 
 #, c-format
 msgid "%d new broadcast(s) found! Show them?"
-msgstr ""
+msgstr "Nalezeno %d nových vysílání! Zobrazit?"
 
 msgid "Search timer update done!"
-msgstr ""
+msgstr "Aktualizace Nahrávání dokončena!"
 
 #, c-format
 msgid "small EPG content on:%s"
-msgstr ""
+msgstr "krátký EPG obsah: %s"
 
 msgid "VDR EPG check warning"
-msgstr ""
+msgstr "Varování kontroly VDR EPG"
 
 #, c-format
 msgid "Switch to (%d) '%s'?"
-msgstr ""
+msgstr "Přepnout na (%d) '%s'?"
 
 msgid "Programming timer failed!"
-msgstr ""
+msgstr "Nastavení nahrávání selhalo!"
 
 #, c-format
 msgid "in %02ldd"
-msgstr ""
+msgstr "%02ldd"
 
 #, c-format
 msgid "in %02ldh"
-msgstr ""
+msgstr "%02ldh"
 
 #, c-format
 msgid "in %02ldm"
-msgstr ""
+msgstr "%02ldm"
diff --git a/po/da_DK.po b/po/da_DK.po
index bbcc431..e6de5f5 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Mogens Elneff <mogens at elneff.dk>\n"
 "Language-Team: Danish <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: da\n"
 
@@ -96,12 +96,6 @@ msgstr "Optag"
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -837,6 +829,10 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "Optag"
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/de_DE.po b/po/de_DE.po
index ee88508..eaa69ac 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Klaus Schmidinger <kls at cadsoft.de>\n"
 "Language-Team: German <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: de\n"
 
@@ -26,7 +26,7 @@ msgid "Channel group used by:"
 msgstr "Gruppe wird verwendet von:"
 
 msgid "Edit$Delete group?"
-msgstr "Gruppe löschen?"
+msgstr "Gruppe löschen?"
 
 msgid "Edit channel group"
 msgstr "Kanalgruppe editieren"
@@ -50,16 +50,16 @@ msgid "Group name already exists!"
 msgstr "Gruppe existiert bereits!"
 
 msgid "Direct access to epgsearch's conflict check menu"
-msgstr "Direkter Zugriff auf epgsearch's Konflikt-Prüfungs-Menü"
+msgstr "Direkter Zugriff auf epgsearch's Konflikt-Prüfungs-Menü"
 
 msgid "Timer conflicts"
 msgstr "Timer-Konflikte"
 
 msgid "Conflict info in main menu"
-msgstr "Konflikt-Info im Hauptmenü"
+msgstr "Konflikt-Info im Hauptmenü"
 
 msgid "next"
-msgstr "nächster"
+msgstr "nächster"
 
 #, c-format
 msgid "%d timer conflict(s)! First at %s. Show them?"
@@ -69,10 +69,10 @@ msgid "search the EPG for repeats and more"
 msgstr "Suche im EPG nach Wiederholungen und anderem"
 
 msgid "Program guide"
-msgstr "Programmführer"
+msgstr "Programmführer"
 
 msgid "search timer update running"
-msgstr "Suchtimer-Update läuft"
+msgstr "Suchtimer-Update läuft"
 
 msgid "Direct access to epgsearch's search menu"
 msgstr "Direkter Zugriff auf epgsearch's Suchenmenu"
@@ -81,7 +81,7 @@ msgid "Search"
 msgstr "Suche"
 
 msgid "EpgSearch-Search in main menu"
-msgstr "EpgSearch-Suche im Hauptmenü"
+msgstr "EpgSearch-Suche im Hauptmenü"
 
 msgid "Button$Help"
 msgstr "Hilfe"
@@ -95,12 +95,6 @@ msgstr "Befehle"
 msgid "Button$Search"
 msgstr "Suche"
 
-msgid "pipes"
-msgstr "Pipes"
-
-msgid "graphical"
-msgstr "graphisch"
-
 msgid "never"
 msgstr "nie"
 
@@ -117,13 +111,13 @@ msgid "after user-def. times"
 msgstr "nach ben.-def. Zeiten"
 
 msgid "before 'next'"
-msgstr "vor 'Nächste'"
+msgstr "vor 'Nächste'"
 
 msgid "General"
 msgstr "Allgemein"
 
 msgid "EPG menus"
-msgstr "EPG Menüs"
+msgstr "EPG Menüs"
 
 msgid "User-defined EPG times"
 msgstr "Benutzerdef. EPG-Zeiten"
@@ -135,25 +129,25 @@ msgid "Search and search timers"
 msgstr "Suche und Suchtimer"
 
 msgid "Timer conflict checking"
-msgstr "Timer-Konflikt-Prüfung"
+msgstr "Timer-Konflikt-Prüfung"
 
 msgid "Email notification"
 msgstr "Email-Benachrichtigung"
 
 msgid "Hide main menu entry"
-msgstr "Hauptmenüeintrag verstecken"
+msgstr "Hauptmenüeintrag verstecken"
 
 msgid "Help$Hides the main menu entry and may be useful if this plugin is used to replace the original 'Schedule' entry."
-msgstr "Blendet den Hauptmenüeintrag aus. Das kann nützlich sein, falls dieses Plugin verwendet wird, um den originalen 'Programm'-Eintrag zu ersetzen."
+msgstr "Blendet den Hauptmenüeintrag aus. Das kann nützlich sein, falls dieses Plugin verwendet wird, um den originalen 'Programm'-Eintrag zu ersetzen."
 
 msgid "Main menu entry"
-msgstr "Hauptmenü-Eintrag"
+msgstr "Hauptmenü-Eintrag"
 
 msgid "Help$The name of the main menu entry which defaults to 'Programm guide'."
-msgstr "Der Name des Hauptmenüeintrags. Die Standard-Vorgabe ist 'Programmführer'."
+msgstr "Der Name des Hauptmenüeintrags. Die Standard-Vorgabe ist 'Programmführer'."
 
 msgid "Replace original schedule"
-msgstr "Originale Programmübersicht ersetzen"
+msgstr "Originale Programmübersicht ersetzen"
 
 msgid "Help$When VDR is patched to allow this plugin to replace the original 'Schedule' entry, you can de/activate this replacement here."
 msgstr "Falls VDR gepatched wurde, um dem Plugin zu erlauben, den originalen 'Programm'-Eintrag zu ersetzen, so kann hier diese Ersetzung de/aktiviert werden."
@@ -162,7 +156,7 @@ msgid "Start menu"
 msgstr "Starte mit"
 
 msgid "Help$Choose between 'Overview - Now' and 'Schedule' as start menu when this plugin is called."
-msgstr "Hier kann zwischen 'Übersicht - Jetzt' und 'Programm' als Start-Menü für das Plugin gewählt werden."
+msgstr "Hier kann zwischen 'Übersicht - Jetzt' und 'Programm' als Start-Menü für das Plugin gewählt werden."
 
 msgid "Ok key"
 msgstr "Taste Ok"
@@ -172,7 +166,7 @@ msgid ""
 "Note: the functionality of key 'blue' (Switch/Info/Search) depends on this setting."
 msgstr ""
 "Hier kann das Verhalten der 'Ok'-Taste bestimmt werden. Man kann damit die Inhaltsangabe anzeigen oder zum entsprechenden Sender wechseln.\n"
-"Hinweis: Die Funktion der Taste 'Blau' (Umschalten/Info/Suche) hängt von dieser Einstellung ab."
+"Hinweis: Die Funktion der Taste 'Blau' (Umschalten/Info/Suche) hängt von dieser Einstellung ab."
 
 msgid "Red key"
 msgstr "Taste Rot"
@@ -181,8 +175,8 @@ msgid ""
 "Help$Choose which standard function ('Record' or 'Commands') you like to have on the red key.\n"
 "(Can be toggled with key '0')"
 msgstr ""
-"Hier kann ausgewählt werden, welche Standardfunktion ('Aufnehmen' oder 'Befehle') auf der roten Taste liegen soll.\n"
-"(Umschalten auch mit Taste '0' möglich)"
+"Hier kann ausgewählt werden, welche Standardfunktion ('Aufnehmen' oder 'Befehle') auf der roten Taste liegen soll.\n"
+"(Umschalten auch mit Taste '0' möglich)"
 
 msgid "Blue key"
 msgstr "Taste Blau"
@@ -191,18 +185,14 @@ msgid ""
 "Help$Choose which standard function ('Switch'/'Info' or 'Search') you like to have on the blue key.\n"
 "(Can be toggled with key '0')"
 msgstr ""
-"Hier kann ausgewählt werden, welche Standardfunktion ('Umschalten'/'Info' oder 'Suche') auf der blauen Taste liegen soll.\n"
-"(Umschalten auch mit Taste '0' möglich)"
+"Hier kann ausgewählt werden, welche Standardfunktion ('Umschalten'/'Info' oder 'Suche') auf der blauen Taste liegen soll.\n"
+"(Umschalten auch mit Taste '0' möglich)"
 
 msgid "Show progress in 'Now'"
 msgstr "Zeige Fortschritt in 'Jetzt'"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
-msgstr ""
-"Zeigt einen Fortschrittsbalken in 'Übersicht - Jetzt' an, der wiedergibt wieweit die Sendung bereits fortgeschritten ist.\n"
-"Abhängig vom gewählten Skin kann man zwischen 'Pipes' und 'grafisch' wählen, um die Darstellung zu verbessern."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
+msgstr "Zeigt einen Fortschrittsbalken in 'Ãœbersicht - Jetzt' an, der wiedergibt wieweit die Sendung bereits fortgeschritten ist."
 
 msgid "Show channel numbers"
 msgstr "Zeige Kanalnummern"
@@ -212,91 +202,91 @@ msgid ""
 "\n"
 "(To completely define your own menu look please inspect the MANUAL)"
 msgstr ""
-"Anzeige von Kanalnummern in 'Übersicht - Jetzt'.\n"
+"Anzeige von Kanalnummern in 'Ãœbersicht - Jetzt'.\n"
 "\n"
-"(Zur vollständigen Anpassung einer eigenen Menüdarstellung, bitte das MANUAL lesen)"
+"(Zur vollständigen Anpassung einer eigenen Menüdarstellung, bitte das MANUAL lesen)"
 
 msgid "Show channel separators"
 msgstr "Zeige Kanal-Separatoren"
 
 msgid "Help$Display VDR channel groups as separators between your channels in 'Overview - Now'."
-msgstr "Anzeige von VDR-Kanalgruppen als Trennlinien zwischen den Programmen in 'Übersicht - Jetzt'."
+msgstr "Anzeige von VDR-Kanalgruppen als Trennlinien zwischen den Programmen in 'Ãœbersicht - Jetzt'."
 
 msgid "Show day separators"
 msgstr "Zeige Tages-Separatoren"
 
 msgid "Help$Display a separator line at day break in 'Schedule'."
-msgstr "Anzeige von Trennlinien beim Datumswechsel in der Programmübersicht."
+msgstr "Anzeige von Trennlinien beim Datumswechsel in der Programmübersicht."
 
 msgid "Show radio channels"
-msgstr "Zeige Radiokanäle"
+msgstr "Zeige Radiokanäle"
 
 msgid "Help$Show also radio channels."
-msgstr "Auch Radio-Kanäle anzeigen."
+msgstr "Auch Radio-Kanäle anzeigen."
 
 msgid "Limit channels from 1 to"
-msgstr "Kanäle begrenzen von 1 bis"
+msgstr "Kanäle begrenzen von 1 bis"
 
 msgid "Help$If you have a large channel set you can speed up things when you limit the displayed channels with this setting. Use '0' to disable the limit."
-msgstr "Bei einer sehr großen Kanalliste läßt sich der Menü-Aufbau mit dieser Einstellung durch eine Einschränkung der angezeigten Kanäle beschleunigen. Mit '0' wird das Limit aufgehoben."
+msgstr "Bei einer sehr großen Kanalliste läßt sich der Menü-Aufbau mit dieser Einstellung durch eine Einschränkung der angezeigten Kanäle beschleunigen. Mit '0' wird das Limit aufgehoben."
 
 msgid "'One press' timer creation"
 msgstr "Timer mit 'Aufnehmen' sofort anlegen"
 
 msgid "Help$When a timer is created with 'Record' you can choose between an immediate creation of the timer or the display of the timer edit menu."
-msgstr "Beim Erzeugen eines Timers mit 'Aufnehmen' kann hier zwischen dem sofortigen Anlegen des Timers oder der Anzeige des Timer-Edit-Menüs gewählt werden."
+msgstr "Beim Erzeugen eines Timers mit 'Aufnehmen' kann hier zwischen dem sofortigen Anlegen des Timers oder der Anzeige des Timer-Edit-Menüs gewählt werden."
 
 msgid "Show channels without EPG"
-msgstr "Zeige Kanäle ohne EPG"
+msgstr "Zeige Kanäle ohne EPG"
 
 msgid "Help$Choose 'yes' here if you want to display channels without EPG in 'Overview - Now'. 'Ok' on these entries switches the channel."
-msgstr "Hier kann eingestellt werden, ob auch Programme ohne EPG in 'Übersicht - Jetzt' erscheinen sollen. Ein 'Ok' auf diesen Einträgen schaltet zu diesem Kanal um."
+msgstr "Hier kann eingestellt werden, ob auch Programme ohne EPG in 'Übersicht - Jetzt' erscheinen sollen. Ein 'Ok' auf diesen Einträgen schaltet zu diesem Kanal um."
 
 msgid "Time interval for FRew/FFwd [min]"
-msgstr "Zeitintervall für FRew/FFwd [min]"
+msgstr "Zeitintervall für FRew/FFwd [min]"
 
 msgid ""
 "Help$Choose here the time interval which should be used for jumping through the EPG by pressing FRew/FFwd.\n"
 "\n"
 "(If you don't have those keys, you can toggle to this functionality pressing '0' and get '<<' and '>>' on the keys green and yellow)"
 msgstr ""
-"Hier kann die Zeitspanne eingestellt werden, die beim Drücken von FRew/FFwd als Sprung durch den EPG benutzt werden soll.\n"
+"Hier kann die Zeitspanne eingestellt werden, die beim Drücken von FRew/FFwd als Sprung durch den EPG benutzt werden soll.\n"
 "\n"
-"(Falls diese Tasten nicht vorhanden sind, kann mit '0' ebenfalls diese Funktion erreicht werden. Man erhält dann '<<' und '>>' auf den Tasten Grün/Gelb)"
+"(Falls diese Tasten nicht vorhanden sind, kann mit '0' ebenfalls diese Funktion erreicht werden. Man erhält dann '<<' und '>>' auf den Tasten Grün/Gelb)"
 
 msgid "Toggle Green/Yellow"
-msgstr "Grün/Gelb umschalten"
+msgstr "Grün/Gelb umschalten"
 
 msgid "Help$Specify if green and yellow shall also be switched when pressing '0'."
-msgstr "Hiermit wird angegeben, ob die Tasten Grün/Gelb beim Drücken von '0' mitumgeschaltet werden sollen."
+msgstr "Hiermit wird angegeben, ob die Tasten Grün/Gelb beim Drücken von '0' mitumgeschaltet werden sollen."
 
 msgid "Show favorites menu"
-msgstr "Zeige Favoriten-Menü"
+msgstr "Zeige Favoriten-Menü"
 
 msgid ""
 "Help$A favorites menu can display a list of your favorite broadcasts. Enable this if you want an additional menu besides 'Now' and 'Next'\n"
 "Any search can be used as a favorite. You only have to set the option 'Use in favorites menu' when editing a search."
 msgstr ""
-"Ein Favoriten-Menü kann eine Liste der Lieblingssendungen anzeigen. Hier auswählen, wenn neben 'Jetzt' und 'Nächste' ein solches Menü gewünscht wird.\n"
-"Jede Suche kann als Favorit verwendet werden. Dazu einfach die Option 'In Favoritenmenü verw.' beim Editieren einer Suche setzen."
+"Ein Favoriten-Menü kann eine Liste der Lieblingssendungen anzeigen. Hier auswählen, wenn neben 'Jetzt' und 'Nächste' ein solches Menü gewünscht wird.\n"
+"Jede Suche kann als Favorit verwendet werden. Dazu einfach die Option 'In Favoritenmenü verw.' beim Editieren einer Suche setzen."
 
 msgid "for the next ... hours"
-msgstr "für die nächsten ... Stunden"
+msgstr "für die nächsten ... Stunden"
 
 msgid "Help$This value controls the timespan used to display your favorites."
-msgstr "Mit diesem Wert wird die Zeitspanne eingestellt, für die Favoriten angezeigt werden sollen."
+msgstr "Mit diesem Wert wird die Zeitspanne eingestellt, für die Favoriten angezeigt werden sollen."
 
 msgid "Use user-defined time"
 msgstr "Verw. benutzerdef. Zeit"
 
 msgid "Help$Besides 'Now' and 'Next' you can specify up to 4 other times in the EPG which can be used by repeatedly pressing the green key, e.g. 'prime time', 'late night',..."
-msgstr "Neben 'Jetzt' und 'Nächste' können bis zu 4 weitere Zeiten im EPG angegeben werden, die durch wiederholtes Drücken der Taste Grün verwendet werden können, z.B. 'Abends', 'Spätabend',..."
+msgstr "Neben 'Jetzt' und 'Nächste' können bis zu 4 weitere Zeiten im EPG angegeben werden, die durch wiederholtes Drücken der Taste Grün verwendet werden können, z.B. 'Abends', 'Spätabend',..."
 
 msgid "Description"
 msgstr "Beschreibung"
 
 msgid "Help$This is the description for your user-defined time as it will appear as label on the green button."
-msgstr "Dies ist die Beschreibung für die benutzer-definierte Zeit, wie sie als Beschriftung für die Taste Grün verwendet werden soll."
+msgstr "Dies ist die Beschreibung für die benutzer-definierte Zeit, wie sie als Beschriftung für die Taste Grün verwendet werden soll."
 
 msgid "Time"
 msgstr "Zeit"
@@ -314,12 +304,12 @@ msgid ""
 "- adding an episode name\n"
 "- support for EPG variables (see MANUAL)"
 msgstr ""
-"Diese Plugin hat sein eigenes Timer-Edit-Menü, das das orginale um einige zusätzliche Funktionen erweitert:\n"
+"Diese Plugin hat sein eigenes Timer-Edit-Menü, das das orginale um einige zusätzliche Funktionen erweitert:\n"
 "\n"
-"- ein zusätzlicher Verzeichniseintrag\n"
-"- benutzerdef. Wochentage für Wiederh.-Timer\n"
-"- Ergänzung um Episodenname\n"
-"- Unterstützung von EPG-Variablen (s.MANUAL)"
+"- ein zusätzlicher Verzeichniseintrag\n"
+"- benutzerdef. Wochentage für Wiederh.-Timer\n"
+"- Ergänzung um Episodenname\n"
+"- Unterstützung von EPG-Variablen (s.MANUAL)"
 
 msgid "Default recording dir"
 msgstr "Standard Aufn.-Verzeichnis"
@@ -337,14 +327,14 @@ msgid ""
 "- always: always add episode name if present\n"
 "- smart: add only if event lasts less than 80 mins."
 msgstr ""
-"Wenn man einen Timer für eine Serie erzeugt, kann mit dieser Option automatisch der Episodenname ergänzt werden.\n"
+"Wenn man einen Timer für eine Serie erzeugt, kann mit dieser Option automatisch der Episodenname ergänzt werden.\n"
 "\n"
-"- niemals: keine Ergänzung\n"
-"- immer: immer ergänzen, falls Episodenname vorhanden.\n"
-"- intelligent: nur ergänzen, wenn Sendung weniger als 80 min dauert"
+"- niemals: keine Ergänzung\n"
+"- immer: immer ergänzen, falls Episodenname vorhanden.\n"
+"- intelligent: nur ergänzen, wenn Sendung weniger als 80 min dauert"
 
 msgid "Default timer check method"
-msgstr "Standard-Timer-Prüfmethode"
+msgstr "Standard-Timer-Prüfmethode"
 
 msgid ""
 "Help$Manual timers can be checked for EPG changes. Here you can setup the default check method for each channel. Choose between\n"
@@ -353,11 +343,11 @@ msgid ""
 "- by event ID: checks by an event ID supplied by the channel provider.\n"
 "- by channel and time: check by the duration match."
 msgstr ""
-"Manuelle Timer können hinsichtlich EPG-Änderungen überwacht werden. Hier kann die Standard-Prüfmethode für jeden Kanal hinterlegt werden. Zur Wahl stehen:\n"
+"Manuelle Timer können hinsichtlich EPG-Änderungen überwacht werden. Hier kann die Standard-Prüfmethode für jeden Kanal hinterlegt werden. Zur Wahl stehen:\n"
 "\n"
-"- keine Prüfung\n"
-"- anhand Sendungskennung: geprüft wird anhand einer Kennung, die durch den Sender vergeben wird.\n"
-"- anhand Sender/Uhrzeit: geprüft wird anhand der Sendung, die am besten zur Dauer der ursprünglichen Sendung passt."
+"- keine Prüfung\n"
+"- anhand Sendungskennung: geprüft wird anhand einer Kennung, die durch den Sender vergeben wird.\n"
+"- anhand Sender/Uhrzeit: geprüft wird anhand der Sendung, die am besten zur Dauer der ursprünglichen Sendung passt."
 
 msgid "Button$Setup"
 msgstr "Einstellungen"
@@ -366,7 +356,7 @@ msgid "Use search timers"
 msgstr "Verwende Suchtimer"
 
 msgid "Help$'Search timers' can be used to automatically create timers for events that match your search criterions."
-msgstr "'Suchtimer' können verwendet werden um automatisch Timer für Sendungen zu erstellen, die von einer Suche gefunden werden."
+msgstr "'Suchtimer' können verwendet werden um automatisch Timer für Sendungen zu erstellen, die von einer Suche gefunden werden."
 
 msgid "  Update interval [min]"
 msgstr "  Aktualisierungsintervall [min]"
@@ -378,115 +368,115 @@ msgid "  SVDRP port"
 msgstr "  SVDRP Port"
 
 msgid "Help$Programming of new timers or timer changes is done with SVDRP. The default value should be correct, so change it only if you know what you are doing."
-msgstr "Die Programmierung neuer Timer oder Timer-Änderungen erfolgt mit SVDRP. Der Vorgabewert hier sollte immer korrekt sein, also nur ändern, wenn man weiß, was man tut."
+msgstr "Die Programmierung neuer Timer oder Timer-Änderungen erfolgt mit SVDRP. Der Vorgabewert hier sollte immer korrekt sein, also nur ändern, wenn man weiß, was man tut."
 
 msgid "Help$Specify here the default priority of timers created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Hier wird die Standard-Priorität für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden."
+msgstr "Hier wird die Standard-Priorität für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden."
 
 msgid "Help$Specify here the default lifetime of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Hier wird die Standard-Lebensdauer für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden."
+msgstr "Hier wird die Standard-Lebensdauer für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden."
 
 msgid "Help$Specify here the default start recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Hier wird die Standard-Vorlaufzeit für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden."
+msgstr "Hier wird die Standard-Vorlaufzeit für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden."
 
 msgid "Help$Specify here the default stop recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Hier wird die Standard-Nachlaufzeit für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden."
+msgstr "Hier wird die Standard-Nachlaufzeit für Timer angegeben, die von diesem Plugin erzeugt werden. Dieser Wert kann aber auch bei jeder Suche einzeln gesetzt werden."
 
 msgid "No announcements when replaying"
-msgstr "Keine Ankündigungen bei Wiedergabe"
+msgstr "Keine Ankündigungen bei Wiedergabe"
 
 msgid "Help$Set this to 'yes' if you don't like to get any announcements of broadcasts if you currently replay anything."
-msgstr "Bitte auf 'Ja' setzen, wenn während einer Wiedergabe keine Ankündigungen über Sendungen erwünscht sind."
+msgstr "Bitte auf 'Ja' setzen, wenn während einer Wiedergabe keine Ankündigungen über Sendungen erwünscht sind."
 
 msgid "Recreate timers after deletion"
-msgstr "Timer nach Löschen neuprogrammieren"
+msgstr "Timer nach Löschen neuprogrammieren"
 
 msgid "Help$Set this to 'yes' if you want timers to be recreated with the next search timer update after deleting them."
-msgstr "Hier 'Ja' wählen, wenn gelöschte Timer mit dem nächsten Suchtimer-Update neu programmiert werden sollen."
+msgstr "Hier 'Ja' wählen, wenn gelöschte Timer mit dem nächsten Suchtimer-Update neu programmiert werden sollen."
 
 msgid "Check if EPG exists for ... [h]"
-msgstr "Prüfe ob EPG für ... [h] existiert"
+msgstr "Prüfe ob EPG für ... [h] existiert"
 
 msgid "Help$Specify how many hours of future EPG there should be and get warned else after a search timer update."
-msgstr "Hier kann angeben werden wie viele Stunden zukünftigen EPGs existieren sollen und andernfalls nach einem Suchtimer Update gewarnt werden."
+msgstr "Hier kann angeben werden wie viele Stunden zukünftigen EPGs existieren sollen und andernfalls nach einem Suchtimer Update gewarnt werden."
 
 msgid "Warn by OSD"
 msgstr "per OSD warnen"
 
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check via OSD."
-msgstr "Hier mit 'Ja' auswählen, ob eine Warnung zum EPG Check per OSD gewünscht ist."
+msgstr "Hier mit 'Ja' auswählen, ob eine Warnung zum EPG Check per OSD gewünscht ist."
 
 msgid "Warn by mail"
 msgstr "per Mail warnen"
 
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check by mail."
-msgstr "Hier mit 'Ja' auswählen, ob eine Warnung zum EPG Check per Mail gewünscht ist."
+msgstr "Hier mit 'Ja' auswählen, ob eine Warnung zum EPG Check per Mail gewünscht ist."
 
 msgid "Channel group to check"
-msgstr "zu prüfende Kanalgruppe"
+msgstr "zu prüfende Kanalgruppe"
 
 msgid "Help$Specify the channel group to check."
-msgstr "Hier die zu prüfende Kanalgruppe auswählen."
+msgstr "Hier die zu prüfende Kanalgruppe auswählen."
 
 msgid "Ignore PayTV channels"
 msgstr "PayTV-Sender ignorieren"
 
 msgid "Help$Set this to 'yes' if don't want to see events on PayTV channels when searching for repeats."
-msgstr "Um bei der Suche nach Wiederholungen Sendungen von PayTV-Kanälen zu ignorieren, kann hier die Option auf 'Ja' gesetzt werden."
+msgstr "Um bei der Suche nach Wiederholungen Sendungen von PayTV-Kanälen zu ignorieren, kann hier die Option auf 'Ja' gesetzt werden."
 
 msgid "Search templates"
 msgstr "Such-Vorlagen"
 
 msgid "Help$Here you can setup templates for your searches."
-msgstr "Hier können Vorlagen für Suchen erstellt werden."
+msgstr "Hier können Vorlagen für Suchen erstellt werden."
 
 msgid "Blacklists"
 msgstr "Ausschlusslisten"
 
 msgid "Help$Here you can setup blacklists which can be used within a search to exclude events you don't like."
-msgstr "Hiermit können Ausschlusslisten erstellt werden, die innerhalb einer Suche verwendet werden können, um Sendungen auszuschließen, die man nicht haben will."
+msgstr "Hiermit können Ausschlusslisten erstellt werden, die innerhalb einer Suche verwendet werden können, um Sendungen auszuschließen, die man nicht haben will."
 
 msgid "Help$Here you can setup channel groups which can be used within a search. These are different to VDR channel groups and represent a set of arbitrary channels, e.g. 'FreeTV'."
-msgstr "Hier können Kanalgruppen erstellt werden, die innerhalb einer Suche verwendet werden können. Die Kanalgruppen sind nicht mit den VDR-Kanalgruppen zu vergleichen, sondern stellen einfach eine Gruppe von beliebigen Sendern dar, z.B. 'FreeTV'."
+msgstr "Hier können Kanalgruppen erstellt werden, die innerhalb einer Suche verwendet werden können. Die Kanalgruppen sind nicht mit den VDR-Kanalgruppen zu vergleichen, sondern stellen einfach eine Gruppe von beliebigen Sendern dar, z.B. 'FreeTV'."
 
 msgid "Ignore below priority"
-msgstr "Ignoriere unter Priorität"
+msgstr "Ignoriere unter Priorität"
 
 msgid "Help$If a timer with priority below the given value will fail it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
-msgstr "Falls ein Timer fehlschlagen wird, dessen Priorität unter dem angegeben Wert liegt, wird er als 'nicht wichtig' eingestuft. Nur bei wichtigen Konflikten erfolgt eine Nachricht per OSD bei der automatischen Konfliktprüfung."
+msgstr "Falls ein Timer fehlschlagen wird, dessen Priorität unter dem angegeben Wert liegt, wird er als 'nicht wichtig' eingestuft. Nur bei wichtigen Konflikten erfolgt eine Nachricht per OSD bei der automatischen Konfliktprüfung."
 
 msgid "Ignore conflict duration less ... min."
 msgstr "Ignoriere Konfliktdauer unter ... Min."
 
 msgid "Help$If a conflicts duration is less then the given number of minutes it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
-msgstr "Falls die Konfliktdauer unter der angegebenen Anzahl an Minuten liegt, wird er als 'nicht wichtig' eingestuft. Nur bei wichtigen Konflikten erfolgt eine Nachricht per OSD bei der automatischen Konfliktprüfung."
+msgstr "Falls die Konfliktdauer unter der angegebenen Anzahl an Minuten liegt, wird er als 'nicht wichtig' eingestuft. Nur bei wichtigen Konflikten erfolgt eine Nachricht per OSD bei der automatischen Konfliktprüfung."
 
 msgid "Only check within next ... days"
-msgstr "Prüfe nur die nächsten ... Tage"
+msgstr "Prüfe nur die nächsten ... Tage"
 
 msgid "Help$This value reduces the conflict check to the given range of days. All other conflicts are classified as 'not yet important'."
-msgstr "Mit diesem Wert kann der Zeitbereich der Konfliktprüfung eingestellt werden. Alle Konflikte ausserhalb des Bereichs werden als 'noch nicht wichtig' eingestuft."
+msgstr "Mit diesem Wert kann der Zeitbereich der Konfliktprüfung eingestellt werden. Alle Konflikte ausserhalb des Bereichs werden als 'noch nicht wichtig' eingestuft."
 
 msgid "--- Automatic checking ---"
-msgstr "--- Automatische Prüfung ---"
+msgstr "--- Automatische Prüfung ---"
 
 msgid "After each timer programming"
 msgstr "Nach jeder Timer-Programmierung"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each manual timer programming. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if this timer is involved in any conflict."
-msgstr "Hier auf 'Ja' setzen, wenn die Konfliktprüfung nach jeder manuellen Timer-Programmierung erfolgen soll. Im Falle eines Konflikts wird dann sofort eine Nachricht angezeigt. Diese erscheint nur, wenn dieser Timer in einen Konflikt verwickelt ist."
+msgstr "Hier auf 'Ja' setzen, wenn die Konfliktprüfung nach jeder manuellen Timer-Programmierung erfolgen soll. Im Falle eines Konflikts wird dann sofort eine Nachricht angezeigt. Diese erscheint nur, wenn dieser Timer in einen Konflikt verwickelt ist."
 
 msgid "When a recording starts"
 msgstr "Beim Beginn einer Aufnahme"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed when a recording starts. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if the conflict is within the next 2 hours."
-msgstr "Hier auf 'Ja' setzen, wenn die Konfliktprüfung beim Beginn jeder Aufnahme erfolgen soll. Im Falle eines Konflikts wird dann sofort eine Nachricht angezeigt. Diese erscheint nur, wenn der Konflikt innerhalb der nächsten 2 Stunden auftritt."
+msgstr "Hier auf 'Ja' setzen, wenn die Konfliktprüfung beim Beginn jeder Aufnahme erfolgen soll. Im Falle eines Konflikts wird dann sofort eine Nachricht angezeigt. Diese erscheint nur, wenn der Konflikt innerhalb der nächsten 2 Stunden auftritt."
 
 msgid "After each search timer update"
 msgstr "Nach jedem Suchtimer-Update"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each search timer update."
-msgstr "Hier auf 'Ja' setzen, wenn die Konfliktprüfung nach jedem Suchtimer-Update erfolgen soll."
+msgstr "Hier auf 'Ja' setzen, wenn die Konfliktprüfung nach jedem Suchtimer-Update erfolgen soll."
 
 msgid "every ... minutes"
 msgstr "alle ... Minuten"
@@ -495,26 +485,26 @@ msgid ""
 "Help$Specify here the time intervall to be used for an automatic conflict check in the background.\n"
 "('0' disables an automatic check)"
 msgstr ""
-"Hier kann das Zeitintervall angegeben werden, in dem eine automatische Konfliktprüfung im Hintergrund erfolgen soll.\n"
-"(mit '0' wird die automatsiche Prüfung deaktiviert.)"
+"Hier kann das Zeitintervall angegeben werden, in dem eine automatische Konfliktprüfung im Hintergrund erfolgen soll.\n"
+"(mit '0' wird die automatsiche Prüfung deaktiviert.)"
 
 msgid "if conflicts within next ... minutes"
-msgstr "Wenn nächster Konflikt in ... Minuten"
+msgstr "Wenn nächster Konflikt in ... Minuten"
 
 msgid "Help$If the next conflict will appear in the given number of minutes you can specify here a shorter check intervall to get more OSD notifications about it."
-msgstr "Wenn der nächste Konflikt innerhalb der angegebenen Anzahl von Minuten liegt, kann man hiermit ein kürzeres Prüfintervall angeben, damit man häufiger über den Konflikt per OSD benachrichtigt wird."
+msgstr "Wenn der nächste Konflikt innerhalb der angegebenen Anzahl von Minuten liegt, kann man hiermit ein kürzeres Prüfintervall angeben, damit man häufiger über den Konflikt per OSD benachrichtigt wird."
 
 msgid "Avoid notification when replaying"
 msgstr "Vermeide Nachricht bei Wiedergabe"
 
 msgid "Help$Set this to 'yes' if the don't want to get OSD messages about conflicts if you currently replay something. Nevertheless messages will be displayed if the first upcoming conflict is within the next 2 hours."
-msgstr "Bitte auf 'Ja' setzen, wenn während einer Wiedergabe keine OSD-Benachrichtigungen über Timer-Konflikte gewünscht sind. Die Benachrichtigung erfolgt trotzdem, wenn der nächste Konflikt innerhalb der nächsten 2 Stunden auftritt."
+msgstr "Bitte auf 'Ja' setzen, wenn während einer Wiedergabe keine OSD-Benachrichtigungen über Timer-Konflikte gewünscht sind. Die Benachrichtigung erfolgt trotzdem, wenn der nächste Konflikt innerhalb der nächsten 2 Stunden auftritt."
 
 msgid "Search timer notification"
 msgstr "Suchtimer-Benachrichtigung"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the search timers that where programmed automatically in the background."
-msgstr "Hier mit 'Ja' auswählen, ob eine Email-Benachrichtigung über automatisch im Hintergrund programmierte Suchtimer versandt werden soll."
+msgstr "Hier mit 'Ja' auswählen, ob eine Email-Benachrichtigung über automatisch im Hintergrund programmierte Suchtimer versandt werden soll."
 
 msgid "Time between mails [h]"
 msgstr "Zeit zwischen Mails [h]"
@@ -525,8 +515,8 @@ msgid ""
 "With '0' you get a new mail after each\n"
 "search timer update with new results."
 msgstr ""
-"Hier die gewünschte Zeit in [h] zwischen\n"
-"zwei Mails angeben. Mit '0' erhält man eine\n"
+"Hier die gewünschte Zeit in [h] zwischen\n"
+"zwei Mails angeben. Mit '0' erhält man eine\n"
 "neue Mail nach jedem Suchtimer-Update\n"
 "mit neuen Ergebnissen."
 
@@ -534,12 +524,12 @@ msgid "Timer conflict notification"
 msgstr "Timer-Konflikt-Benachrichtigung"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the timer conflicts."
-msgstr "Hier mit 'Ja' auswählen, ob eine Email-Benachrichtigung über Timer-Konflikte versändet werden soll."
+msgstr "Hier mit 'Ja' auswählen, ob eine Email-Benachrichtigung über Timer-Konflikte versändet werden soll."
 
 msgid "Send to"
 msgstr "Senden an"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr "Hier wird die Email-Adresse angegeben, an welche die Benachrichtigungen versandt werden."
 
 msgid "Mail method"
@@ -551,70 +541,69 @@ msgid ""
 " - 'sendmail': requires a properly configured email system\n"
 " - 'SendEmail.pl': simple script for mail delivery"
 msgstr ""
-"Bitte hier die gewünschte Methode zum Emailversand auswählen. Verfügbar sind:\n"
+"Bitte hier die gewünschte Methode zum Emailversand auswählen. Verfügbar sind:\n"
 " - 'sendmail': erfordert ein korrekt konfiguriertes Mailsystem\n"
 " - 'SendEmail.pl': ein einfaches Skript zum Mailversand"
 
 msgid "--- Email account ---"
 msgstr "--- Email-Konto ---"
 
-msgid "Email adress"
+msgid "Email address"
 msgstr "Email-Adresse"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr "Hier wird die Email-Adresse angegeben, mit der die Benachrichtigungen versandt werden."
 
 msgid "SMTP server"
 msgstr "SMTP Server"
 
 msgid "Help$Specify the SMTP server that should deliver the notifications. If it's using a port different from the default(25) append the port with \":port\"."
-msgstr "Hier wird der SMTP Server hinterlegt, über den die Benachrichtigungen versandt werden. Falls dieser einen anderen Port als den Standard(25) verwendet, dann mit \":port\" anhängen."
+msgstr "Hier wird der SMTP Server hinterlegt, über den die Benachrichtigungen versandt werden. Falls dieser einen anderen Port als den Standard(25) verwendet, dann mit \":port\" anhängen."
 
 msgid "Use SMTP authentication"
 msgstr "Verw. SMTP-Authentifizierung"
 
 msgid "Help$Set this to 'yes' if your account needs authentication to send mails."
-msgstr "Hier auf 'Ja' setzen, wenn das Emailkonto SMTP-Authentifizierung zum Emailversand benötigt."
+msgstr "Hier auf 'Ja' setzen, wenn das Emailkonto SMTP-Authentifizierung zum Emailversand benötigt."
 
 msgid "Auth user"
 msgstr "Auth-Benutzer"
 
 msgid "Help$Specify the auth user, if this account needs authentication for SMTP."
-msgstr "Hier wird der Auth-Benutzername angegeben, falls dieses Emailkonto eine Authentifizierung für SMTP benötigt."
+msgstr "Hier wird der Auth-Benutzername angegeben, falls dieses Emailkonto eine Authentifizierung für SMTP benötigt."
 
 msgid "Auth password"
 msgstr "Auth-Passwort"
 
 msgid "Help$Specify the auth password, if this account needs authentication for SMTP."
-msgstr "Hier wird das Auth-Passwort angegeben, falls dieses Emailkonto eine Authentifizierung für SMTP benötigt."
+msgstr "Hier wird das Auth-Passwort angegeben, falls dieses Emailkonto eine Authentifizierung für SMTP benötigt."
 
 msgid "Mail account check failed!"
-msgstr "Mailkonto-Prüfung fehlgeschlagen!"
+msgstr "Mailkonto-Prüfung fehlgeschlagen!"
 
 msgid "Button$Test"
 msgstr "Test"
 
-#, fuzzy
 msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
-msgstr " aäbcdefghijklmnoöpqrsßtuüvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aäbcdefghijklmnoöpqrsßtuüvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
 
 msgid "Start/Stop time has changed"
-msgstr "Start/Stop-Zeit hat sich geändert"
+msgstr "Start/Stop-Zeit hat sich geändert"
 
 msgid "Title/episode has changed"
-msgstr "Titel/Episode hat sich geändert"
+msgstr "Titel/Episode hat sich geändert"
 
 msgid "No new timers were added."
 msgstr "Es wurden keine neuen Timer angelegt."
 
 msgid "No timers were modified."
-msgstr "Es wurden keine Timer geändert."
+msgstr "Es wurden keine Timer geändert."
 
 msgid "No timers were deleted."
-msgstr "Es wurden keine Timer gelöscht."
+msgstr "Es wurden keine Timer gelöscht."
 
 msgid "No new events to announce."
-msgstr "Keine neuen Sendungen anzukündigen."
+msgstr "Keine neuen Sendungen anzukündigen."
 
 msgid "This version of EPGSearch does not support this service!"
 msgstr ""
@@ -639,13 +628,13 @@ msgid "Button$Title"
 msgstr "Titel"
 
 msgid "announce details"
-msgstr "Ankündigungsdetails"
+msgstr "Ankündigungsdetails"
 
 msgid "announce again"
-msgstr "Erneut ankündigen"
+msgstr "Erneut ankündigen"
 
 msgid "with next update"
-msgstr "beim nächsten Update"
+msgstr "beim nächsten Update"
 
 msgid "again from"
 msgstr "erneut ab"
@@ -669,7 +658,7 @@ msgid "match exactly"
 msgstr "exakt"
 
 msgid "regular expression"
-msgstr "regulärer Ausdruck"
+msgstr "regulärer Ausdruck"
 
 msgid "fuzzy"
 msgstr "unscharf"
@@ -696,7 +685,7 @@ msgid "Tolerance"
 msgstr "Toleranz"
 
 msgid "Match case"
-msgstr "Groß/klein"
+msgstr "Groß/klein"
 
 msgid "Use title"
 msgstr "Verw. Titel"
@@ -759,10 +748,10 @@ msgid "*** Invalid Channel ***"
 msgstr ""
 
 msgid "Please check channel criteria!"
-msgstr "Bitte Senderkriterien prüfen!"
+msgstr "Bitte Senderkriterien prüfen!"
 
 msgid "Edit$Delete blacklist?"
-msgstr "Ausschlussliste löschen?"
+msgstr "Ausschlussliste löschen?"
 
 msgid "Repeats"
 msgstr "Wiederholung"
@@ -786,7 +775,7 @@ msgid "EPG Commands"
 msgstr "EPG Befehle"
 
 msgid "Already running!"
-msgstr "Läuft bereits!"
+msgstr "Läuft bereits!"
 
 msgid "Add to switch list?"
 msgstr "In Umschaltliste aufnehmen?"
@@ -819,7 +808,7 @@ msgid "Button$Repeats"
 msgstr "Wiederh."
 
 msgid "no check"
-msgstr "ohne Überwachung"
+msgstr "ohne Ãœberwachung"
 
 msgid "by channel and time"
 msgstr "anhand Sender/Uhrzeit"
@@ -828,7 +817,7 @@ msgid "by event ID"
 msgstr "anhand Sendungskennung"
 
 msgid "Select directory"
-msgstr "Verzeichnis wählen"
+msgstr "Verzeichnis wählen"
 
 msgid "Button$Level"
 msgstr "Ebene"
@@ -855,10 +844,10 @@ msgid "Childlock"
 msgstr "Kindersicherung"
 
 msgid "Timer check"
-msgstr "Überwachung"
+msgstr "Ãœberwachung"
 
 msgid "recording with device"
-msgstr "Aufnahme mit Gerät"
+msgstr "Aufnahme mit Gerät"
 
 msgid "Button$With subtitle"
 msgstr "Mit Untertitel"
@@ -878,6 +867,9 @@ msgstr "Verw. Ausschlusslisten"
 msgid "Edit$Search text too short - use anyway?"
 msgstr "Suchtext zu kurz - trotzdem verwenden?"
 
+msgid "Button$Orphaned"
+msgstr "Verwaiste"
+
 msgid "Button$by name"
 msgstr "nach Name"
 
@@ -885,16 +877,16 @@ msgid "Button$by date"
 msgstr "nach Datum"
 
 msgid "Button$Delete all"
-msgstr "Alle löschen"
+msgstr "Alle löschen"
 
 msgid "Recordings"
 msgstr ""
 
 msgid "Edit$Delete entry?"
-msgstr "Eintrag löschen?"
+msgstr "Eintrag löschen?"
 
 msgid "Edit$Delete all entries?"
-msgstr "Alle Einträge löschen?"
+msgstr "Alle Einträge löschen?"
 
 msgid "Summary"
 msgstr "Inhalt"
@@ -909,7 +901,7 @@ msgid "Search actions"
 msgstr "Suchaktionen"
 
 msgid "Execute search"
-msgstr "Suche ausführen"
+msgstr "Suche ausführen"
 
 msgid "Use as search timer on/off"
 msgstr "Als Suchtimer verwenden an/aus"
@@ -936,22 +928,22 @@ msgid "Show blacklists"
 msgstr "Zeige Ausschlusslisten"
 
 msgid "Delete created timers?"
-msgstr "Erstellte Timer löschen?"
+msgstr "Erstellte Timer löschen?"
 
 msgid "Timer conflict check"
-msgstr "Auf Timer-Konflikte prüfen"
+msgstr "Auf Timer-Konflikte prüfen"
 
 msgid "Disable associated timers too?"
-msgstr "Zugehörige Timer auch deaktivieren?"
+msgstr "Zugehörige Timer auch deaktivieren?"
 
 msgid "Activate associated timers too?"
-msgstr "Zugehörige Timer auch aktivieren?"
+msgstr "Zugehörige Timer auch aktivieren?"
 
 msgid "Search timers activated in setup."
 msgstr "Suchtimer wurden im Setup aktiviert."
 
 msgid "Run search timer update?"
-msgstr "Suchtimer-Update ausführen?"
+msgstr "Suchtimer-Update ausführen?"
 
 msgid "Copy this entry?"
 msgstr "Diesen Eintrag kopieren?"
@@ -963,19 +955,19 @@ msgid "Copy this entry to templates?"
 msgstr "Diesen Eintrag in Vorlagen kopieren?"
 
 msgid "Delete all timers created from this search?"
-msgstr "Alle Timer löschen, die von dieser Suche erzeugt wurden?"
+msgstr "Alle Timer löschen, die von dieser Suche erzeugt wurden?"
 
 msgid "Button$Actions"
 msgstr "Aktionen"
 
 msgid "Search entries"
-msgstr "Sucheinträge"
+msgstr "Sucheinträge"
 
 msgid "active"
 msgstr "aktiv"
 
 msgid "Edit$Delete search?"
-msgstr "Suche löschen?"
+msgstr "Suche löschen?"
 
 msgid "Edit search"
 msgstr "Suche editieren"
@@ -984,16 +976,16 @@ msgid "Record"
 msgstr "Aufnehmen"
 
 msgid "Announce by OSD"
-msgstr "per OSD ankündigen"
+msgstr "per OSD ankündigen"
 
 msgid "Switch only"
 msgstr "Nur umschalten"
 
 msgid "Announce and switch"
-msgstr "Ankündigen und Umschalten"
+msgstr "Ankündigen und Umschalten"
 
 msgid "Announce by mail"
-msgstr "per Mail ankündigen"
+msgstr "per Mail ankündigen"
 
 msgid "only globals"
 msgstr "nur globale"
@@ -1026,7 +1018,7 @@ msgid "Template name"
 msgstr "Vorlagenname"
 
 msgid "Help$Specify the name of the template."
-msgstr "Hier den Namen für die Vorlage angeben."
+msgstr "Hier den Namen für die Vorlage angeben."
 
 msgid "Help$Specify here the term to search for."
 msgstr "Hier den Begriff angeben, nach dem gesucht werden soll."
@@ -1044,17 +1036,17 @@ msgstr ""
 "Es gibt folgende Such-Modi:\n"
 "\n"
 "- Ausdruck: sucht nach einem Teil-Ausdruck\n"
-"- alle Worte: alle einzelnen Worte müssen auftauchen\n"
+"- alle Worte: alle einzelnen Worte müssen auftauchen\n"
 "- ein Wort: nur ein Wort muss auftauchen\n"
-"- exakt: genaue Übereinstimmung\n"
-"- regulärer Ausdruck: sucht nach reg. Ausdruck\n"
-"- unscharf: sucht nach ungefährer Übereinstimmung"
+"- exakt: genaue Ãœbereinstimmung\n"
+"- regulärer Ausdruck: sucht nach reg. Ausdruck\n"
+"- unscharf: sucht nach ungefährer Übereinstimmung"
 
 msgid "Help$This sets the tolerance of fuzzy searching. The value represents the allowed errors."
-msgstr "Hiermit wird die Toleranz für die unscharfe Suche angegeben. Der Wert entspricht den erlaubten Fehlern."
+msgstr "Hiermit wird die Toleranz für die unscharfe Suche angegeben. Der Wert entspricht den erlaubten Fehlern."
 
 msgid "Help$Set this to 'Yes' if your search should match the case."
-msgstr "Auf 'Ja' setzen, wenn die Suche die Groß-/Kleinschreibung beachtet soll."
+msgstr "Auf 'Ja' setzen, wenn die Suche die Groß-/Kleinschreibung beachtet soll."
 
 msgid "Help$Set this to 'Yes' if you like to search in the title of an event."
 msgstr "Auf 'Ja' setzen, wenn die Suche im Titel einer Sendung stattfinden soll."
@@ -1066,25 +1058,25 @@ msgid "Help$Set this to 'Yes' if you like to search in the summary of an event."
 msgstr "Auf 'Ja' setzen, wenn die Suche in der Zusammenfassung einer Sendung stattfinden soll."
 
 msgid "Use content descriptor"
-msgstr "Verw. Kennung für Inhalt"
+msgstr "Verw. Kennung für Inhalt"
 
 msgid "Help$Set this to 'Yes' if you want to search the contents by a descriptor."
 msgstr "Auf 'Ja' setzen, wenn die Suche anhand Kennungen zum Inhalt der Sendung stattfinden soll."
 
 msgid "Help$The summary of an event, can contain additional information like 'Genre', 'Category', 'Year',... called 'EPG categories' within EPGSearch. External EPG providers often deliver this information. This allows refining a search and other nice things, like searching for the 'tip of the day'. To use it set this to 'Yes'."
-msgstr "Die Zusammenfassung einer Sendung kann Zusatz-Informationen wie 'Genre', 'Kategorie', 'Jahr', ... enthalten, welche in EPGSearch 'EPG-Kategorien' genannt werden. Externe EPG-Anbieter liefern diese Informationen häufig mit aus. Damit läßt sich eine Suche verfeinern und auch andere Dinge, wie die Suche nach dem Tagestipp, sind möglich. Zur Verwendung auf 'Ja' setzen."
+msgstr "Die Zusammenfassung einer Sendung kann Zusatz-Informationen wie 'Genre', 'Kategorie', 'Jahr', ... enthalten, welche in EPGSearch 'EPG-Kategorien' genannt werden. Externe EPG-Anbieter liefern diese Informationen häufig mit aus. Damit läßt sich eine Suche verfeinern und auch andere Dinge, wie die Suche nach dem Tagestipp, sind möglich. Zur Verwendung auf 'Ja' setzen."
 
 msgid "Help$The file epgsearchcats.conf specifies the search mode for this entry. One can search by text or by value. You can also edit a list of predefined values in this file that can be selected here."
-msgstr "In der Datei epgsearchcats.conf kann der Suchmodus für diesen Eintrag festgelegt werden. Man kann textuell oder numerisch suchen. Ausserdem kann in dieser Datei eine Liste vordefinierter Werte angegeben werden, die hier zur Auswahl stehen."
+msgstr "In der Datei epgsearchcats.conf kann der Suchmodus für diesen Eintrag festgelegt werden. Man kann textuell oder numerisch suchen. Ausserdem kann in dieser Datei eine Liste vordefinierter Werte angegeben werden, die hier zur Auswahl stehen."
 
 msgid "Help$If a selected category is not part of the summary of an event this normally excludes this event from the search results. To avoid this, set this option to 'Yes', but please handle this with care to avoid a huge amount of results."
-msgstr "Falls eine gewählte Kategorie nicht in der Zusammenfassung einer Sendung vorhanden ist, wird diese normalerweise aus den Suchergebnissen ausgeschlossen. Um das zu vermeiden, bitte die Option auf 'Ja' setzen. Aber bitte mit Vorsicht verwenden, um eine riesige Menge an Ergebnissen zu vermeiden."
+msgstr "Falls eine gewählte Kategorie nicht in der Zusammenfassung einer Sendung vorhanden ist, wird diese normalerweise aus den Suchergebnissen ausgeschlossen. Um das zu vermeiden, bitte die Option auf 'Ja' setzen. Aber bitte mit Vorsicht verwenden, um eine riesige Menge an Ergebnissen zu vermeiden."
 
 msgid "Use in favorites menu"
-msgstr "In Favoritenmenü verw."
+msgstr "In Favoritenmenü verw."
 
 msgid "Result menu layout"
-msgstr "Layout des Ergebnismenüs"
+msgstr "Layout des Ergebnismenüs"
 
 msgid "Use as search timer"
 msgstr "Als Suchtimer verwenden"
@@ -1105,7 +1097,7 @@ msgid "  Series recording"
 msgstr "  Serienaufnahme"
 
 msgid "Delete recordings after ... days"
-msgstr "Aufn. nach ... Tagen löschen"
+msgstr "Aufn. nach ... Tagen löschen"
 
 msgid "Keep ... recordings"
 msgstr "Behalte ... Aufnahmen"
@@ -1132,7 +1124,7 @@ msgid "Compare summary"
 msgstr "Vergleiche Beschreibung"
 
 msgid "Min. match in %"
-msgstr "Min. Übereinstimmung in %"
+msgstr "Min. Ãœbereinstimmung in %"
 
 msgid "Compare date"
 msgstr "Vergleiche Zeitpunkt"
@@ -1144,7 +1136,7 @@ msgid "VPS"
 msgstr ""
 
 msgid "Auto delete"
-msgstr "automatisch löschen"
+msgstr "automatisch löschen"
 
 msgid "after ... recordings"
 msgstr "nach ... Aufnahmen"
@@ -1159,13 +1151,13 @@ msgid "Compare"
 msgstr "Vergleiche"
 
 msgid "Select blacklists"
-msgstr "Ausschlusslisten auswählen"
+msgstr "Ausschlusslisten auswählen"
 
 msgid "Values for EPG category"
-msgstr "Werte für EPG-Kategorie"
+msgstr "Werte für EPG-Kategorie"
 
 msgid "Button$Apply"
-msgstr "Übernehmen"
+msgstr "Ãœbernehmen"
 
 msgid "less"
 msgstr "kleiner"
@@ -1174,10 +1166,10 @@ msgid "less or equal"
 msgstr "kleiner oder gleich"
 
 msgid "greater"
-msgstr "größer"
+msgstr "größer"
 
 msgid "greater or equal"
-msgstr "größer oder gleich"
+msgstr "größer oder gleich"
 
 msgid "equal"
 msgstr "gleich"
@@ -1216,10 +1208,10 @@ msgid "Button$Default"
 msgstr "Standard"
 
 msgid "Edit$Delete template?"
-msgstr "Vorlage löschen?"
+msgstr "Vorlage löschen?"
 
 msgid "Overwrite existing entries?"
-msgstr "Vorhandene Werte überschreiben?"
+msgstr "Vorhandene Werte überschreiben?"
 
 msgid "Edit entry"
 msgstr "Eintrag editieren"
@@ -1228,13 +1220,13 @@ msgid "Switch"
 msgstr "Nur umschalten"
 
 msgid "Announce only"
-msgstr "Nur ankündigen"
+msgstr "Nur ankündigen"
 
 msgid "Announce ... minutes before start"
-msgstr "Ankündigen ... Minuten vor Start"
+msgstr "Ankündigen ... Minuten vor Start"
 
 msgid "action at"
-msgstr "Ausführung um"
+msgstr "Ausführung um"
 
 msgid "Switch list"
 msgstr "Umschaltliste"
@@ -1249,7 +1241,7 @@ msgid ">>> no info! <<<"
 msgstr ">>> keine Info! <<<"
 
 msgid "Overview"
-msgstr "Übersicht"
+msgstr "Ãœbersicht"
 
 msgid "Button$Favorites"
 msgstr "Favoriten"
@@ -1261,18 +1253,18 @@ msgid "Quick search"
 msgstr "Schnellsuche"
 
 msgid "Show in main menu"
-msgstr "Im Hauptmenü anzeigen"
+msgstr "Im Hauptmenü anzeigen"
 
 #, c-format
 msgid "%d new broadcast(s) found! Show them?"
 msgstr "%d neue Sendung(en) gefunden! Anzeigen?"
 
 msgid "Search timer update done!"
-msgstr "Suchtimer-Update durchgeführt!"
+msgstr "Suchtimer-Update durchgeführt!"
 
 #, c-format
 msgid "small EPG content on:%s"
-msgstr "wenig EPG Inhalt für:%s"
+msgstr "wenig EPG Inhalt für:%s"
 
 msgid "VDR EPG check warning"
 msgstr "VDR EPG Check Warnung"
@@ -1295,4 +1287,3 @@ msgstr "in %02ldh"
 #, c-format
 msgid "in %02ldm"
 msgstr "in %02ldm"
-
diff --git a/po/el_GR.po b/po/el_GR.po
index 2a337a9..27f73af 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Dimitrios Dimitrakos <mail at dimitrios.de>\n"
 "Language-Team: Greek <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-7\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: el\n"
 
@@ -91,17 +91,11 @@ msgstr ""
 
 #, fuzzy
 msgid "Button$Commands"
-msgstr "ÅããñáöÞ"
+msgstr "Εγγραφή"
 
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -329,7 +321,7 @@ msgid ""
 msgstr ""
 
 msgid "Button$Setup"
-msgstr "Ñõèìéóåéò"
+msgstr "Ρυθμισεις"
 
 msgid "Use search timers"
 msgstr ""
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -837,6 +829,10 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "Εγγραφή"
+
 msgid "Button$by name"
 msgstr ""
 
@@ -940,7 +936,7 @@ msgid "Edit search"
 msgstr ""
 
 msgid "Record"
-msgstr "ÅããñáöÞ"
+msgstr "Εγγραφή"
 
 msgid "Announce by OSD"
 msgstr ""
diff --git a/po/es_ES.po b/po/es_ES.po
index de1c084..a37c698 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-11-18 20:09+0200\n"
 "Last-Translator: bittor from open7x0.org <bittor7x0 _at_ gmail.com>\n"
 "Language-Team: Spanish <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
 
@@ -26,7 +26,7 @@ msgid "Channel group used by:"
 msgstr "Grupo de canales usado por:"
 
 msgid "Edit$Delete group?"
-msgstr "¿Borrar grupo?"
+msgstr "¿Borrar grupo?"
 
 msgid "Edit channel group"
 msgstr "Editar grupo de canales"
@@ -35,72 +35,66 @@ msgid "Group name"
 msgstr "Nombre del grupo"
 
 msgid "Button$Invert selection"
-msgstr "Invertir selección"
+msgstr "Invertir selección"
 
 msgid "Button$All yes"
-msgstr "Todo sí"
+msgstr "Todo sí"
 
 msgid "Button$All no"
 msgstr "Todo no"
 
 msgid "Group name is empty!"
-msgstr "¡Nombre del grupo vacío!"
+msgstr "¡Nombre del grupo vacío!"
 
 msgid "Group name already exists!"
-msgstr "¡Ya existe el nombre del grupo!"
+msgstr "¡Ya existe el nombre del grupo!"
 
 msgid "Direct access to epgsearch's conflict check menu"
-msgstr "Acceso directo al menú de conflictos EPGSearch"
+msgstr "Acceso directo al menú de conflictos EPGSearch"
 
 msgid "Timer conflicts"
-msgstr "Conflictos de programación"
+msgstr "Conflictos de programación"
 
 msgid "Conflict info in main menu"
-msgstr "Mostrar conflictos en menú principal"
+msgstr "Mostrar conflictos en menú principal"
 
 msgid "next"
 msgstr "siguiente"
 
 #, c-format
 msgid "%d timer conflict(s)! First at %s. Show them?"
-msgstr "¡%d conflicto(s) de programación! El 1º a las %s. ¿Mostrarlos?"
+msgstr "¡%d conflicto(s) de programación! El 1º a las %s. ¿Mostrarlos?"
 
 msgid "search the EPG for repeats and more"
 msgstr "Buscar repeticiones en la EPG"
 
 msgid "Program guide"
-msgstr "Guía de programación"
+msgstr "Guía de programación"
 
 msgid "search timer update running"
-msgstr "Actualizando programación por búsqueda"
+msgstr "Actualizando programación por búsqueda"
 
 msgid "Direct access to epgsearch's search menu"
-msgstr "Acceso directo al menú de búsquedas en EPG"
+msgstr "Acceso directo al menú de búsquedas en EPG"
 
 msgid "Search"
-msgstr "Búsquedas en EPG"
+msgstr "Búsquedas en EPG"
 
 msgid "EpgSearch-Search in main menu"
-msgstr "Búsquedas en EPG en menú principal"
+msgstr "Búsquedas en EPG en menú principal"
 
 msgid "Button$Help"
 msgstr "Ayuda"
 
 msgid "Standard"
-msgstr "Estándar"
+msgstr "Estándar"
 
 msgid "Button$Commands"
-msgstr "Órdenes"
+msgstr "Órdenes"
 
 msgid "Button$Search"
 msgstr "Buscar"
 
-msgid "pipes"
-msgstr "barra vertical"
-
-msgid "graphical"
-msgstr "gráfico"
-
 msgid "never"
 msgstr "nunca"
 
@@ -114,107 +108,103 @@ msgid "before user-def. times"
 msgstr "antes hora-def."
 
 msgid "after user-def. times"
-msgstr "después hora-def."
+msgstr "después hora-def."
 
 msgid "before 'next'"
-msgstr "antes de 'Después'"
+msgstr "antes de 'Después'"
 
 msgid "General"
 msgstr "General"
 
 msgid "EPG menus"
-msgstr "Menús EPG"
+msgstr "Menús EPG"
 
 msgid "User-defined EPG times"
 msgstr "Horario EPG definido por el usuario"
 
 msgid "Timer programming"
-msgstr "Programación"
+msgstr "Programación"
 
 msgid "Search and search timers"
-msgstr "Búsqueda y programaciones por búsqueda"
+msgstr "Búsqueda y programaciones por búsqueda"
 
 msgid "Timer conflict checking"
-msgstr "Comprobando conflictos de programación"
+msgstr "Comprobando conflictos de programación"
 
 msgid "Email notification"
-msgstr "Notificación por correo"
+msgstr "Notificación por correo"
 
 msgid "Hide main menu entry"
-msgstr "Ocultar entrada del menú principal"
+msgstr "Ocultar entrada del menú principal"
 
 msgid "Help$Hides the main menu entry and may be useful if this plugin is used to replace the original 'Schedule' entry."
-msgstr "Oculta la entrada del menú principal y puede ser útil si este plugin sustituye a la entrada 'Guía de programación' original."
+msgstr "Oculta la entrada del menú principal y puede ser útil si este plugin sustituye a la entrada 'Guía de programación' original."
 
 msgid "Main menu entry"
-msgstr "Entrada en el menú principal"
+msgstr "Entrada en el menú principal"
 
 msgid "Help$The name of the main menu entry which defaults to 'Programm guide'."
-msgstr "El nombre de la entrada para el menú principal, que por defecto es 'Guía de programación'."
+msgstr "El nombre de la entrada para el menú principal, que por defecto es 'Guía de programación'."
 
 msgid "Replace original schedule"
-msgstr "Sustituir guía de prog. original"
+msgstr "Sustituir guía de prog. original"
 
 msgid "Help$When VDR is patched to allow this plugin to replace the original 'Schedule' entry, you can de/activate this replacement here."
-msgstr "Aquí puede des/activar que éste plugin sustituya la entrada original 'Guía de programación', pero sólo funciona cuando el VDR está parcheado para permitirlo."
+msgstr "Aquí puede des/activar que éste plugin sustituya la entrada original 'Guía de programación', pero sólo funciona cuando el VDR está parcheado para permitirlo."
 
 msgid "Start menu"
-msgstr "Menú de inicio"
+msgstr "Menú de inicio"
 
 msgid "Help$Choose between 'Overview - Now' and 'Schedule' as start menu when this plugin is called."
-msgstr "Elija entre 'Ahora' y 'Guía de programación' como menú inicial cuando se llama a este plugin."
+msgstr "Elija entre 'Ahora' y 'Guía de programación' como menú inicial cuando se llama a este plugin."
 
 msgid "Ok key"
-msgstr "Botón OK"
+msgstr "Botón OK"
 
 msgid ""
 "Help$Choose here the behaviour of key 'Ok'. You can use it to display the summary or to switch to the corresponding channel.\n"
 "Note: the functionality of key 'blue' (Switch/Info/Search) depends on this setting."
 msgstr ""
-"Elija el comportamiento del botón 'OK'. Puede usarse para mostrar el resumen o cambiar al canal correspondiente.\n"
-"Nota: la funcionalidad del botón 'azul' (Cambiar/Info/Buscar) depende de ésta configuración."
+"Elija el comportamiento del botón 'OK'. Puede usarse para mostrar el resumen o cambiar al canal correspondiente.\n"
+"Nota: la funcionalidad del botón 'azul' (Cambiar/Info/Buscar) depende de ésta configuración."
 
 msgid "Red key"
-msgstr "Botón rojo"
+msgstr "Botón rojo"
 
 msgid ""
 "Help$Choose which standard function ('Record' or 'Commands') you like to have on the red key.\n"
 "(Can be toggled with key '0')"
 msgstr ""
-"Elija la función estándar ('Grabar' u 'Órdenes') que desee tener en el botón rojo.\n"
-"(Puede alternarse con el botón '0')"
+"Elija la función estándar ('Grabar' u 'Órdenes') que desee tener en el botón rojo.\n"
+"(Puede alternarse con el botón '0')"
 
 msgid "Blue key"
-msgstr "Botón azul"
+msgstr "Botón azul"
 
 msgid ""
 "Help$Choose which standard function ('Switch'/'Info' or 'Search') you like to have on the blue key.\n"
 "(Can be toggled with key '0')"
 msgstr ""
-"Elija la función estándar ('Cambiar'/'Info' o 'Buscar') que desee tener en el botón azul.\n"
-"(Puede alternarse con el botón '0')"
+"Elija la función estándar ('Cambiar'/'Info' o 'Buscar') que desee tener en el botón azul.\n"
+"(Puede alternarse con el botón '0')"
 
 msgid "Show progress in 'Now'"
 msgstr "Mostrar progreso en 'Ahora'"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
-msgstr ""
-"Muestra una barra de progreso en la pantalla 'Ahora' que informa sobre el tiempo restante de la emisión actual.\n"
-"Dependiendo del skin seleccionado puede elegir entre 'barra vertical' o 'gráfico' para conseguir la mejor apariencia."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
+msgstr "Muestra una barra de progreso en la pantalla 'Ahora' que informa sobre el tiempo restante de la emisión actual."
 
 msgid "Show channel numbers"
-msgstr "Mostrar el número de los canales"
+msgstr "Mostrar el número de los canales"
 
 msgid ""
 "Help$Display channel numbers in 'Overview - Now'.\n"
 "\n"
 "(To completely define your own menu look please inspect the MANUAL)"
 msgstr ""
-"Muestra el número de los canales en la pantalla 'Ahora'.\n"
+"Muestra el número de los canales en la pantalla 'Ahora'.\n"
 "\n"
-"(Para definir el menú totalmente a su gusto, por favor lea el MANUAL)"
+"(Para definir el menú totalmente a su gusto, por favor lea el MANUAL)"
 
 msgid "Show channel separators"
 msgstr "Mostrar separadores de canales"
@@ -223,34 +213,34 @@ msgid "Help$Display VDR channel groups as separators between your channels in 'O
 msgstr "Muestra los grupos de canales VDR como separadores entre sus canales en la pantalla 'Ahora'."
 
 msgid "Show day separators"
-msgstr "Mostrar separadores de día"
+msgstr "Mostrar separadores de día"
 
 msgid "Help$Display a separator line at day break in 'Schedule'."
-msgstr "Muestra una línea de separación al cambiar de día en la 'Guía de programación'."
+msgstr "Muestra una línea de separación al cambiar de día en la 'Guía de programación'."
 
 msgid "Show radio channels"
 msgstr "Mostrar los canales de radio"
 
 msgid "Help$Show also radio channels."
-msgstr "Mostrar también los canales de radio"
+msgstr "Mostrar también los canales de radio"
 
 msgid "Limit channels from 1 to"
 msgstr "Limitar canales de 1 a"
 
 msgid "Help$If you have a large channel set you can speed up things when you limit the displayed channels with this setting. Use '0' to disable the limit."
-msgstr "Si tiene un gran número de canales, puede acelerar los menús limitando los canales mostrados con éste parámetro. Use '0' para desactivar el límite."
+msgstr "Si tiene un gran número de canales, puede acelerar los menús limitando los canales mostrados con éste parámetro. Use '0' para desactivar el límite."
 
 msgid "'One press' timer creation"
-msgstr "Crear programación inmediata"
+msgstr "Crear programación inmediata"
 
 msgid "Help$When a timer is created with 'Record' you can choose between an immediate creation of the timer or the display of the timer edit menu."
-msgstr "Cuando crea una programación con 'Grabar', puede elegir entre crearla inmediatamente o mostrar el menú para editarla."
+msgstr "Cuando crea una programación con 'Grabar', puede elegir entre crearla inmediatamente o mostrar el menú para editarla."
 
 msgid "Show channels without EPG"
 msgstr "Mostrar canales sin EPG"
 
 msgid "Help$Choose 'yes' here if you want to display channels without EPG in 'Overview - Now'. 'Ok' on these entries switches the channel."
-msgstr "Elija 'sí' cuando desee mostrar los canales sin EPG en la pantalla 'Ahora'. Pulse 'OK' sobre estas entradas para cambiar a ese canal."
+msgstr "Elija 'sí' cuando desee mostrar los canales sin EPG en la pantalla 'Ahora'. Pulse 'OK' sobre estas entradas para cambiar a ese canal."
 
 msgid "Time interval for FRew/FFwd [min]"
 msgstr "Minutos para Rebobinar/Avanzar"
@@ -260,43 +250,43 @@ msgid ""
 "\n"
 "(If you don't have those keys, you can toggle to this functionality pressing '0' and get '<<' and '>>' on the keys green and yellow)"
 msgstr ""
-"Elija el intervalo de tiempo que se usará para saltar a través de la EPG pulsando '<<' y '>>'.\n"
+"Elija el intervalo de tiempo que se usará para saltar a través de la EPG pulsando '<<' y '>>'.\n"
 "\n"
-"(Si no tiene estos botones en su mando a distancia, puede acceder a esta funcionalidad pulsando el botón '0' y tendrá las funciones '<<' y '>>' en los botones verde y amarillo)"
+"(Si no tiene estos botones en su mando a distancia, puede acceder a esta funcionalidad pulsando el botón '0' y tendrá las funciones '<<' y '>>' en los botones verde y amarillo)"
 
 msgid "Toggle Green/Yellow"
 msgstr "Alternar Verde/Amarillo"
 
 msgid "Help$Specify if green and yellow shall also be switched when pressing '0'."
-msgstr "Especifique si los botones verde y amarillo también cambian al pulsar '0'."
+msgstr "Especifique si los botones verde y amarillo también cambian al pulsar '0'."
 
 msgid "Show favorites menu"
-msgstr "Mostrar el menú favoritos"
+msgstr "Mostrar el menú favoritos"
 
 msgid ""
 "Help$A favorites menu can display a list of your favorite broadcasts. Enable this if you want an additional menu besides 'Now' and 'Next'\n"
 "Any search can be used as a favorite. You only have to set the option 'Use in favorites menu' when editing a search."
 msgstr ""
-"Un menú de favoritos puede mostrar una lista de sus emisiones favoritas. Actívelo si desea un menú adicional a los existentes 'Ahora' y 'Después'.\n"
-"Algunas búsquedas pueden ser usadas como favoritos si activa la opción 'Usar en el menú favoritos' cuando edita una búsqueda."
+"Un menú de favoritos puede mostrar una lista de sus emisiones favoritas. Actívelo si desea un menú adicional a los existentes 'Ahora' y 'Después'.\n"
+"Algunas búsquedas pueden ser usadas como favoritos si activa la opción 'Usar en el menú favoritos' cuando edita una búsqueda."
 
 msgid "for the next ... hours"
-msgstr "para las próximas ... horas"
+msgstr "para las próximas ... horas"
 
 msgid "Help$This value controls the timespan used to display your favorites."
-msgstr "Éste valor controla el intervalo usado para mostrar sus favoritos."
+msgstr "Éste valor controla el intervalo usado para mostrar sus favoritos."
 
 msgid "Use user-defined time"
 msgstr "Usar horario definido por usuario"
 
 msgid "Help$Besides 'Now' and 'Next' you can specify up to 4 other times in the EPG which can be used by repeatedly pressing the green key, e.g. 'prime time', 'late night',..."
-msgstr "Además de 'Ahora' y 'Después' puede definir hasta 4 horarios distintos en la EPG, que pueden usarse pulsando varias veces el botón verde, p.e. 'hora de mayor audiencia', 'medianoche', ..."
+msgstr "Además de 'Ahora' y 'Después' puede definir hasta 4 horarios distintos en la EPG, que pueden usarse pulsando varias veces el botón verde, p.e. 'hora de mayor audiencia', 'medianoche', ..."
 
 msgid "Description"
-msgstr "Descripción"
+msgstr "Descripción"
 
 msgid "Help$This is the description for your user-defined time as it will appear as label on the green button."
-msgstr "Ésta es la descripción de su horario definido que se mostrará como etiqueta del botón verde."
+msgstr "Ésta es la descripción de su horario definido que se mostrará como etiqueta del botón verde."
 
 msgid "Time"
 msgstr "Horario"
@@ -305,7 +295,7 @@ msgid "Help$Specify the user-defined time here in 'HH:MM'."
 msgstr "Especifique el horario definido en 'HH:MM'."
 
 msgid "Use VDR's timer edit menu"
-msgstr "Usar menú editar programación VDR"
+msgstr "Usar menú editar programación VDR"
 
 msgid ""
 "Help$This plugin has it's own timer edit menu extending the original one with some extra functionality like\n"
@@ -314,20 +304,20 @@ msgid ""
 "- adding an episode name\n"
 "- support for EPG variables (see MANUAL)"
 msgstr ""
-"Este plugin posee un editor de programaciones que amplía el original con ciertas funcionalidades adicionales como:\n"
+"Este plugin posee un editor de programaciones que amplía el original con ciertas funcionalidades adicionales como:\n"
 "- una entrada adicional de directorio\n"
-"- definir días de la semana para repetir programaciones\n"
-"- añadir el nombre del episodio\n"
+"- definir días de la semana para repetir programaciones\n"
+"- añadir el nombre del episodio\n"
 "- soporte para variables EPG (ver el MANUAL)"
 
 msgid "Default recording dir"
-msgstr "Dir. de grabación por defecto"
+msgstr "Dir. de grabación por defecto"
 
 msgid "Help$When creating a timer you can specify here a default recording directory."
-msgstr "Cuando crea una programación, aquí puede especificar un directorio por defecto para la grabación."
+msgstr "Cuando crea una programación, aquí puede especificar un directorio por defecto para la grabación."
 
 msgid "Add episode to manual timers"
-msgstr "Añadir episodio a prog. manual"
+msgstr "Añadir episodio a prog. manual"
 
 msgid ""
 "Help$If you create a timer for a series, you can automatically add the episode name.\n"
@@ -336,14 +326,14 @@ msgid ""
 "- always: always add episode name if present\n"
 "- smart: add only if event lasts less than 80 mins."
 msgstr ""
-"Cuando crea una programación en serie, puede añadir automáticamente el nombre del episodio.\n"
+"Cuando crea una programación en serie, puede añadir automáticamente el nombre del episodio.\n"
 "\n"
-"- nunca: no añadir\n"
-"- siempre: si existe, añadir siempre el nombre del episodio\n"
-"- inteligente: añadir solamente si la emisión dura menos de 80 minutos."
+"- nunca: no añadir\n"
+"- siempre: si existe, añadir siempre el nombre del episodio\n"
+"- inteligente: añadir solamente si la emisión dura menos de 80 minutos."
 
 msgid "Default timer check method"
-msgstr "Método de comprobación por defecto"
+msgstr "Método de comprobación por defecto"
 
 msgid ""
 "Help$Manual timers can be checked for EPG changes. Here you can setup the default check method for each channel. Choose between\n"
@@ -352,79 +342,79 @@ msgid ""
 "- by event ID: checks by an event ID supplied by the channel provider.\n"
 "- by channel and time: check by the duration match."
 msgstr ""
-"Las programaciones manuales pueden comprobar cambios en la EPG. Aquí puede establecer el método de comprobación por defecto para cada canal. Elija entre\n"
+"Las programaciones manuales pueden comprobar cambios en la EPG. Aquí puede establecer el método de comprobación por defecto para cada canal. Elija entre\n"
 "\n"
-"- sin comprobación.\n"
-"- por ID de emisión: comprueba un ID de emisión suministrado por el emisor del canal.\n"
-"- por canal y hora: comprueba que coincida la duración."
+"- sin comprobación.\n"
+"- por ID de emisión: comprueba un ID de emisión suministrado por el emisor del canal.\n"
+"- por canal y hora: comprueba que coincida la duración."
 
 msgid "Button$Setup"
-msgstr "Configuración"
+msgstr "Configuración"
 
 msgid "Use search timers"
-msgstr "Usar programaciones por búsqueda"
+msgstr "Usar programaciones por búsqueda"
 
 msgid "Help$'Search timers' can be used to automatically create timers for events that match your search criterions."
-msgstr "'Programaciones por búsqueda' se usa para crear automáticamente programaciones de emisiones que coincidan con los criterios de búsqueda."
+msgstr "'Programaciones por búsqueda' se usa para crear automáticamente programaciones de emisiones que coincidan con los criterios de búsqueda."
 
 msgid "  Update interval [min]"
-msgstr "  Intervalo de actualización [min]"
+msgstr "  Intervalo de actualización [min]"
 
 msgid "Help$Specify here the time intervall to be used when searching for events in the background."
-msgstr "Especifique el intervalo de tiempo con el que se buscarán nuevas emisiones."
+msgstr "Especifique el intervalo de tiempo con el que se buscarán nuevas emisiones."
 
 msgid "  SVDRP port"
 msgstr "  Puerto SVDRP"
 
 msgid "Help$Programming of new timers or timer changes is done with SVDRP. The default value should be correct, so change it only if you know what you are doing."
-msgstr "Las nuevas programaciones o cambios de programación se realizan con SVDRP. El valor por defecto debe ser correcto, sólo modifíquelo si sabe lo que está haciendo."
+msgstr "Las nuevas programaciones o cambios de programación se realizan con SVDRP. El valor por defecto debe ser correcto, sólo modifíquelo si sabe lo que está haciendo."
 
 msgid "Help$Specify here the default priority of timers created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Especifique la prioridad por defecto de las programaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda."
+msgstr "Especifique la prioridad por defecto de las programaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda."
 
 msgid "Help$Specify here the default lifetime of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Especifique el tiempo de duración por defecto de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda."
+msgstr "Especifique el tiempo de duración por defecto de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda."
 
 msgid "Help$Specify here the default start recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Especifique el margen de tiempo por defecto para el inicio de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda."
+msgstr "Especifique el margen de tiempo por defecto para el inicio de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda."
 
 msgid "Help$Specify here the default stop recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Especifique el margen de tiempo por defecto para el final de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda."
+msgstr "Especifique el margen de tiempo por defecto para el final de las programaciones/grabaciones creadas con este plugin. Éste valor también lo puede establecer para cada búsqueda."
 
 msgid "No announcements when replaying"
 msgstr "Sin avisos mientras se reproduce"
 
 msgid "Help$Set this to 'yes' if you don't like to get any announcements of broadcasts if you currently replay anything."
-msgstr "Establecer a 'sí' cuando no desee recibir ningún aviso de emisiones durante una reproducción."
+msgstr "Establecer a 'sí' cuando no desee recibir ningún aviso de emisiones durante una reproducción."
 
 msgid "Recreate timers after deletion"
 msgstr "Recrear programaciones tras borrar"
 
 msgid "Help$Set this to 'yes' if you want timers to be recreated with the next search timer update after deleting them."
-msgstr "Establecer a 'sí' cuando desee que las programaciones se creen de nuevo con la siguiente actualización de programación por búsqueda después de borrarlas."
+msgstr "Establecer a 'sí' cuando desee que las programaciones se creen de nuevo con la siguiente actualización de programación por búsqueda después de borrarlas."
 
 msgid "Check if EPG exists for ... [h]"
 msgstr ""
 
 #, fuzzy
 msgid "Help$Specify how many hours of future EPG there should be and get warned else after a search timer update."
-msgstr "Establecer a 'sí' cuando desee comprobar conflictos después de actualizar cada programación por búsqueda."
+msgstr "Establecer a 'sí' cuando desee comprobar conflictos después de actualizar cada programación por búsqueda."
 
 #, fuzzy
 msgid "Warn by OSD"
-msgstr "Sólo avisar"
+msgstr "Sólo avisar"
 
 #, fuzzy
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check via OSD."
-msgstr "Establecer a 'sí' cuando desee recibir una notificación por correo sobre los conflictos de programación."
+msgstr "Establecer a 'sí' cuando desee recibir una notificación por correo sobre los conflictos de programación."
 
 #, fuzzy
 msgid "Warn by mail"
-msgstr "Sólo avisar"
+msgstr "Sólo avisar"
 
 #, fuzzy
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check by mail."
-msgstr "Establecer a 'sí' cuando su cuenta necesite autenticación para enviar correos."
+msgstr "Establecer a 'sí' cuando su cuenta necesite autenticación para enviar correos."
 
 #, fuzzy
 msgid "Channel group to check"
@@ -438,61 +428,61 @@ msgid "Ignore PayTV channels"
 msgstr "Ignorar los canales de pago"
 
 msgid "Help$Set this to 'yes' if don't want to see events on PayTV channels when searching for repeats."
-msgstr "Establecer a 'sí' cuando no desee buscar en los canales de pago."
+msgstr "Establecer a 'sí' cuando no desee buscar en los canales de pago."
 
 msgid "Search templates"
-msgstr "Plantillas de búsqueda"
+msgstr "Plantillas de búsqueda"
 
 msgid "Help$Here you can setup templates for your searches."
-msgstr "Aquí puede configurar las plantillas de búsqueda."
+msgstr "Aquí puede configurar las plantillas de búsqueda."
 
 msgid "Blacklists"
 msgstr "Listas negras"
 
 msgid "Help$Here you can setup blacklists which can be used within a search to exclude events you don't like."
-msgstr "Aquí puede configurar las listas negras, que pueden ser usadas para excluir emisiones no deseadas."
+msgstr "Aquí puede configurar las listas negras, que pueden ser usadas para excluir emisiones no deseadas."
 
 msgid "Help$Here you can setup channel groups which can be used within a search. These are different to VDR channel groups and represent a set of arbitrary channels, e.g. 'FreeTV'."
-msgstr "Aquí puede configurar los grupos de canales que pueden ser usados en una búsqueda. Éstos son diferentes a los grupos de canales del VDR y representan un conjunto de canales arbitrario, p.e.: 'Cine'."
+msgstr "Aquí puede configurar los grupos de canales que pueden ser usados en una búsqueda. Éstos son diferentes a los grupos de canales del VDR y representan un conjunto de canales arbitrario, p.e.: 'Cine'."
 
 msgid "Ignore below priority"
 msgstr "Ignorar la prioridad inferior"
 
 msgid "Help$If a timer with priority below the given value will fail it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
-msgstr "Si falla una programación con una prioridad por debajo del valor dado, no será clasificada como importante. Después de una comprobación de conflictos, sólo los conflictos importantes mostrarán un mensaje OSD sobre el conflicto."
+msgstr "Si falla una programación con una prioridad por debajo del valor dado, no será clasificada como importante. Después de una comprobación de conflictos, sólo los conflictos importantes mostrarán un mensaje OSD sobre el conflicto."
 
 msgid "Ignore conflict duration less ... min."
 msgstr "Ignorar conflicto inferior a ... min."
 
 msgid "Help$If a conflicts duration is less then the given number of minutes it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
-msgstr "Si la duración de un conflicto es menor que el número de minutos dado, no será clasificada como importante. Sólo los conflictos importantes mostrarán un mensaje OSD sobre el conflicto después de una comprobación de conflictos automática."
+msgstr "Si la duración de un conflicto es menor que el número de minutos dado, no será clasificada como importante. Sólo los conflictos importantes mostrarán un mensaje OSD sobre el conflicto después de una comprobación de conflictos automática."
 
 msgid "Only check within next ... days"
-msgstr "Sólo comprobar los próximos ... días"
+msgstr "Sólo comprobar los próximos ... días"
 
 msgid "Help$This value reduces the conflict check to the given range of days. All other conflicts are classified as 'not yet important'."
-msgstr "Este valor reduce la comprobación de conflictos al rango de días dados. El resto de conflictos son clasificados como 'no importantes'."
+msgstr "Este valor reduce la comprobación de conflictos al rango de días dados. El resto de conflictos son clasificados como 'no importantes'."
 
 msgid "--- Automatic checking ---"
-msgstr "--- Comprobación automática ---"
+msgstr "--- Comprobación automática ---"
 
 msgid "After each timer programming"
-msgstr "Después de cada programación"
+msgstr "Después de cada programación"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each manual timer programming. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if this timer is involved in any conflict."
-msgstr "Establecer a 'sí' cuando desee ejecutar la comprobación de conflictos después de cada programación manual. En caso de existir un conflicto se mostrará inmediatamente un mensaje que informe de ello. Éste mensaje sólo se mostrará si la programación está implicada en un conflicto."
+msgstr "Establecer a 'sí' cuando desee ejecutar la comprobación de conflictos después de cada programación manual. En caso de existir un conflicto se mostrará inmediatamente un mensaje que informe de ello. Éste mensaje sólo se mostrará si la programación está implicada en un conflicto."
 
 msgid "When a recording starts"
-msgstr "Cuando empieza una grabación"
+msgstr "Cuando empieza una grabación"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed when a recording starts. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if the conflict is within the next 2 hours."
-msgstr "Establecer a 'sí' cuando desee comprobar conflictos al iniciar una grabación. En caso de existir un conflicto se mostrará inmediatamente un mensaje que informe de ello. Éste mensaje sólo se mostrará si el conflicto se produce en las próximas 2 horas."
+msgstr "Establecer a 'sí' cuando desee comprobar conflictos al iniciar una grabación. En caso de existir un conflicto se mostrará inmediatamente un mensaje que informe de ello. Éste mensaje sólo se mostrará si el conflicto se produce en las próximas 2 horas."
 
 msgid "After each search timer update"
-msgstr "Después de actualizar programación"
+msgstr "Después de actualizar programación"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each search timer update."
-msgstr "Establecer a 'sí' cuando desee comprobar conflictos después de actualizar cada programación por búsqueda."
+msgstr "Establecer a 'sí' cuando desee comprobar conflictos después de actualizar cada programación por búsqueda."
 
 msgid "every ... minutes"
 msgstr "cada ... minutos"
@@ -501,26 +491,26 @@ msgid ""
 "Help$Specify here the time intervall to be used for an automatic conflict check in the background.\n"
 "('0' disables an automatic check)"
 msgstr ""
-"Especifique el intervalo de tiempo a usar para la comprobación de conflictos automática en segundo plano.\n"
-"('0' deshabilita la comprobación automática)"
+"Especifique el intervalo de tiempo a usar para la comprobación de conflictos automática en segundo plano.\n"
+"('0' deshabilita la comprobación automática)"
 
 msgid "if conflicts within next ... minutes"
-msgstr "si hay conflictos en próximos ... min."
+msgstr "si hay conflictos en próximos ... min."
 
 msgid "Help$If the next conflict will appear in the given number of minutes you can specify here a shorter check intervall to get more OSD notifications about it."
-msgstr "Si el próximo conflicto aparece en el número de minutos indicado, puede especificar un intervalo de comprobación menor para obtener más notificaciones OSD sobre él."
+msgstr "Si el próximo conflicto aparece en el número de minutos indicado, puede especificar un intervalo de comprobación menor para obtener más notificaciones OSD sobre él."
 
 msgid "Avoid notification when replaying"
-msgstr "Evitar notificación al reproducir"
+msgstr "Evitar notificación al reproducir"
 
 msgid "Help$Set this to 'yes' if the don't want to get OSD messages about conflicts if you currently replay something. Nevertheless messages will be displayed if the first upcoming conflict is within the next 2 hours."
-msgstr "Establecer a 'sí' cuando no desee mostrar mensajes OSD de conflictos mientras está reproduciendo algo. Sin embargo, se mostrarán mensajes si el primer conflicto se produce en las 2 horas siguientes."
+msgstr "Establecer a 'sí' cuando no desee mostrar mensajes OSD de conflictos mientras está reproduciendo algo. Sin embargo, se mostrarán mensajes si el primer conflicto se produce en las 2 horas siguientes."
 
 msgid "Search timer notification"
-msgstr "Notificar prog. por búsqueda"
+msgstr "Notificar prog. por búsqueda"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the search timers that where programmed automatically in the background."
-msgstr "Establecer a 'sí' cuando desee tener una notificación por correo de las programaciones por búsqueda que fueron creadas automáticamente."
+msgstr "Establecer a 'sí' cuando desee tener una notificación por correo de las programaciones por búsqueda que fueron creadas automáticamente."
 
 msgid "Time between mails [h]"
 msgstr ""
@@ -533,19 +523,19 @@ msgid ""
 msgstr ""
 
 msgid "Timer conflict notification"
-msgstr "Notificar conflicto en programación"
+msgstr "Notificar conflicto en programación"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the timer conflicts."
-msgstr "Establecer a 'sí' cuando desee recibir una notificación por correo sobre los conflictos de programación."
+msgstr "Establecer a 'sí' cuando desee recibir una notificación por correo sobre los conflictos de programación."
 
 msgid "Send to"
 msgstr "Enviar a"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
-msgstr "Especifique la dirección de correo donde deben enviarse las notificaciones."
+msgid "Help$Specify the email address where notifications should be sent to."
+msgstr "Especifique la dirección de correo donde deben enviarse las notificaciones."
 
 msgid "Mail method"
-msgstr "Método de correo"
+msgstr "Método de correo"
 
 msgid ""
 "Help$Specify here the method to use when sending mails.\n"
@@ -553,7 +543,7 @@ msgid ""
 " - 'sendmail': requires a properly configured email system\n"
 " - 'SendEmail.pl': simple script for mail delivery"
 msgstr ""
-"Especifique el método a usar para enviar correos.\n"
+"Especifique el método a usar para enviar correos.\n"
 "Puede elegir entre\n"
 " - 'sendmail': necesita un sistema de correo correctamente configurado\n"
 " - 'SendEmail.pl': script simple para la entrega de correo"
@@ -561,54 +551,53 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr "--- Cuenta de correo ---"
 
-msgid "Email adress"
-msgstr "Dirección de correo"
+msgid "Email address"
+msgstr "Dirección de correo"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
-msgstr "Especifique la dirección de correo desde donde se enviarán las notificaciones."
+msgid "Help$Specify the email address where notifications should be sent from."
+msgstr "Especifique la dirección de correo desde donde se enviarán las notificaciones."
 
 msgid "SMTP server"
 msgstr "Servidor SMTP"
 
 msgid "Help$Specify the SMTP server that should deliver the notifications. If it's using a port different from the default(25) append the port with \":port\"."
-msgstr "Especifique el servidor SMTP que debe entregar las notificaciones. Si está usando un puerto distinto al normal(25) añada el puerto con \":puerto\"."
+msgstr "Especifique el servidor SMTP que debe entregar las notificaciones. Si está usando un puerto distinto al normal(25) añada el puerto con \":puerto\"."
 
 msgid "Use SMTP authentication"
-msgstr "Usar autenticación SMTP"
+msgstr "Usar autenticación SMTP"
 
 msgid "Help$Set this to 'yes' if your account needs authentication to send mails."
-msgstr "Establecer a 'sí' cuando su cuenta necesite autenticación para enviar correos."
+msgstr "Establecer a 'sí' cuando su cuenta necesite autenticación para enviar correos."
 
 msgid "Auth user"
 msgstr "Usuario"
 
 msgid "Help$Specify the auth user, if this account needs authentication for SMTP."
-msgstr "Si esta cuenta necesita autenticación SMTP, especifique el usuario."
+msgstr "Si esta cuenta necesita autenticación SMTP, especifique el usuario."
 
 msgid "Auth password"
-msgstr "Contraseña"
+msgstr "Contraseña"
 
 msgid "Help$Specify the auth password, if this account needs authentication for SMTP."
-msgstr "Si esta cuenta necesita autenticación SMTP, especifique la contraseña."
+msgstr "Si esta cuenta necesita autenticación SMTP, especifique la contraseña."
 
 msgid "Mail account check failed!"
-msgstr "¡Falló la prueba de cuenta de correo!"
+msgstr "¡Falló la prueba de cuenta de correo!"
 
 msgid "Button$Test"
 msgstr "Probar"
 
-#, fuzzy
 msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
-msgstr " aábcçdeéfghiíjklmnñoópqrstuúüvwxyz0123456789-_.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aábcçdeéfghiíjklmnñoópqrstuúüvwxyz0123456789-_.,#~\\^$[]|()*+?{}/:%@&_"
 
 msgid "Start/Stop time has changed"
 msgstr "Ha cambiado el tiempo inicial/final"
 
 msgid "Title/episode has changed"
-msgstr "Ha cambiado el título/episodio"
+msgstr "Ha cambiado el título/episodio"
 
 msgid "No new timers were added."
-msgstr "No se añadieron nuevas programaciones."
+msgstr "No se añadieron nuevas programaciones."
 
 msgid "No timers were modified."
 msgstr "No se modificaron programaciones."
@@ -620,10 +609,10 @@ msgid "No new events to announce."
 msgstr ""
 
 msgid "This version of EPGSearch does not support this service!"
-msgstr "¡Esta versión de EPGSearch no soporta este servicio!"
+msgstr "¡Esta versión de EPGSearch no soporta este servicio!"
 
 msgid "EPGSearch does not exist!"
-msgstr "¡No existe EPGSearch!"
+msgstr "¡No existe EPGSearch!"
 
 #, c-format
 msgid "%d new broadcast"
@@ -639,7 +628,7 @@ msgid "Button$Episode"
 msgstr "Episodio"
 
 msgid "Button$Title"
-msgstr "Título"
+msgstr "Título"
 
 msgid "announce details"
 msgstr "detalles del aviso"
@@ -648,13 +637,13 @@ msgid "announce again"
 msgstr "avisar otra vez"
 
 msgid "with next update"
-msgstr "con la próxima actualización"
+msgstr "con la próxima actualización"
 
 msgid "again from"
 msgstr "otra vez desde"
 
 msgid "Search timer"
-msgstr "Programación por búsqueda"
+msgstr "Programación por búsqueda"
 
 msgid "Edit blacklist"
 msgstr "Editar la lista negra"
@@ -666,13 +655,13 @@ msgid "all words"
 msgstr "palabra completa"
 
 msgid "at least one word"
-msgstr "mínimo 1 palabra"
+msgstr "mínimo 1 palabra"
 
 msgid "match exactly"
 msgstr "exacta"
 
 msgid "regular expression"
-msgstr "expresión regular"
+msgstr "expresión regular"
 
 msgid "fuzzy"
 msgstr "imprecisa"
@@ -687,34 +676,34 @@ msgid "channel group"
 msgstr "grupo de canales"
 
 msgid "only FTA"
-msgstr "sólo en abierto"
+msgstr "sólo en abierto"
 
 msgid "Search term"
 msgstr "Buscar palabra"
 
 msgid "Search mode"
-msgstr "Modo de búsqueda"
+msgstr "Modo de búsqueda"
 
 msgid "Tolerance"
 msgstr "Tolerancia"
 
 msgid "Match case"
-msgstr "Mayúscula/minúscula"
+msgstr "Mayúscula/minúscula"
 
 msgid "Use title"
-msgstr "Usar título"
+msgstr "Usar título"
 
 msgid "Use subtitle"
-msgstr "Usar subtítulo"
+msgstr "Usar subtítulo"
 
 msgid "Use description"
-msgstr "Usar descripción"
+msgstr "Usar descripción"
 
 msgid "Use extended EPG info"
 msgstr "Usar info ampliada de la EPG"
 
 msgid "Ignore missing categories"
-msgstr "Ignorar categorías perdidas"
+msgstr "Ignorar categorías perdidas"
 
 msgid "Use channel"
 msgstr "Usar canal"
@@ -732,25 +721,25 @@ msgid "Use time"
 msgstr "Usar horario"
 
 msgid "  Start after"
-msgstr "  Comenzar después"
+msgstr "  Comenzar después"
 
 msgid "  Start before"
 msgstr "  Comenzar antes"
 
 msgid "Use duration"
-msgstr "Usar duración"
+msgstr "Usar duración"
 
 msgid "  Min. duration"
-msgstr "  Duración mín."
+msgstr "  Duración mín."
 
 msgid "  Max. duration"
-msgstr "  Duración máx."
+msgstr "  Duración máx."
 
 msgid "Use day of week"
-msgstr "Usar día de la semana"
+msgstr "Usar día de la semana"
 
 msgid "Day of week"
-msgstr "Día de la semana"
+msgstr "Día de la semana"
 
 msgid "Use global"
 msgstr ""
@@ -759,43 +748,43 @@ msgid "Button$Templates"
 msgstr "Plantillas"
 
 msgid "*** Invalid Channel ***"
-msgstr "*** Canal no válido ***"
+msgstr "*** Canal no válido ***"
 
 msgid "Please check channel criteria!"
-msgstr "¡Compruebe requisitos del canal!"
+msgstr "¡Compruebe requisitos del canal!"
 
 msgid "Edit$Delete blacklist?"
-msgstr "¿Borrar la lista negra?"
+msgstr "¿Borrar la lista negra?"
 
 msgid "Repeats"
 msgstr "Repeticiones"
 
 msgid "Create search"
-msgstr "Crear una búsqueda"
+msgstr "Crear una búsqueda"
 
 msgid "Search in recordings"
 msgstr "Buscar en las grabaciones"
 
 msgid "Mark as 'already recorded'?"
-msgstr "¿Marcar como 'ya grabado'?"
+msgstr "¿Marcar como 'ya grabado'?"
 
 msgid "Add/Remove to/from switch list?"
-msgstr "¿Añadir/Borrar a/de la lista de cambio?"
+msgstr "¿Añadir/Borrar a/de la lista de cambio?"
 
 msgid "Create blacklist"
 msgstr "Crear lista negra"
 
 msgid "EPG Commands"
-msgstr "Órdenes EPG"
+msgstr "Órdenes EPG"
 
 msgid "Already running!"
-msgstr "¡Ya se está ejecutando!"
+msgstr "¡Ya se está ejecutando!"
 
 msgid "Add to switch list?"
-msgstr "¿Añadir a la lista de cambio?"
+msgstr "¿Añadir a la lista de cambio?"
 
 msgid "Delete from switch list?"
-msgstr "¿Borrar de la lista de cambio?"
+msgstr "¿Borrar de la lista de cambio?"
 
 msgid "Button$Details"
 msgstr "Detalles"
@@ -810,10 +799,10 @@ msgid "conflicts"
 msgstr "conflictos"
 
 msgid "no conflicts!"
-msgstr "¡no hay conflictos!"
+msgstr "¡no hay conflictos!"
 
 msgid "no important conflicts!"
-msgstr "¡no hay conflictos importantes!"
+msgstr "¡no hay conflictos importantes!"
 
 msgid "C"
 msgstr "C"
@@ -822,13 +811,13 @@ msgid "Button$Repeats"
 msgstr "Repeticiones"
 
 msgid "no check"
-msgstr "sin comprobación"
+msgstr "sin comprobación"
 
 msgid "by channel and time"
 msgstr "por canal y hora"
 
 msgid "by event ID"
-msgstr "por ID de emisión"
+msgstr "por ID de emisión"
 
 msgid "Select directory"
 msgstr "Seleccionar directorio"
@@ -837,16 +826,16 @@ msgid "Button$Level"
 msgstr "Nivel"
 
 msgid "Event"
-msgstr "Emisión"
+msgstr "Emisión"
 
 msgid "Favorites"
 msgstr "Favoritos"
 
 msgid "Search results"
-msgstr "Resultados de la búsqueda"
+msgstr "Resultados de la búsqueda"
 
 msgid "Timer conflict! Show?"
-msgstr "¿Mostrar conflicto de programación?"
+msgstr "¿Mostrar conflicto de programación?"
 
 msgid "Directory"
 msgstr "Directorio"
@@ -855,19 +844,19 @@ msgid "Channel"
 msgstr "Canal"
 
 msgid "Childlock"
-msgstr "Bloqueo niños"
+msgstr "Bloqueo niños"
 
 msgid "Timer check"
-msgstr "Comprobación"
+msgstr "Comprobación"
 
 msgid "recording with device"
-msgstr "grabación con dispositivo"
+msgstr "grabación con dispositivo"
 
 msgid "Button$With subtitle"
-msgstr "Con subtítulo"
+msgstr "Con subtítulo"
 
 msgid "Button$Without subtitle"
-msgstr "Sin subtítulo"
+msgstr "Sin subtítulo"
 
 msgid "Button$Extended"
 msgstr "Ampliado"
@@ -879,7 +868,11 @@ msgid "Use blacklists"
 msgstr "Usar listas negras"
 
 msgid "Edit$Search text too short - use anyway?"
-msgstr "El texto a buscar es muy corto - ¿usar de todas formas?"
+msgstr "El texto a buscar es muy corto - ¿usar de todas formas?"
+
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "por canal"
 
 msgid "Button$by name"
 msgstr "por nombre"
@@ -894,31 +887,31 @@ msgid "Recordings"
 msgstr "Grabaciones"
 
 msgid "Edit$Delete entry?"
-msgstr "¿Borrar entrada?"
+msgstr "¿Borrar entrada?"
 
 msgid "Edit$Delete all entries?"
-msgstr "¿Borrar todas las entradas?"
+msgstr "¿Borrar todas las entradas?"
 
 msgid "Summary"
 msgstr "Resumen"
 
 msgid "Auxiliary info"
-msgstr "Más información"
+msgstr "Más información"
 
 msgid "Button$Aux info"
-msgstr "Más info"
+msgstr "Más info"
 
 msgid "Search actions"
-msgstr "Acciones de búsqueda"
+msgstr "Acciones de búsqueda"
 
 msgid "Execute search"
-msgstr "Realizar búsqueda"
+msgstr "Realizar búsqueda"
 
 msgid "Use as search timer on/off"
-msgstr "Usar como prog. por búsqueda sí/no"
+msgstr "Usar como prog. por búsqueda sí/no"
 
 msgid "Trigger search timer update"
-msgstr "Actualizar prog. por búsqueda"
+msgstr "Actualizar prog. por búsqueda"
 
 msgid "Show recordings done"
 msgstr "Mostrar grabaciones realizadas"
@@ -939,56 +932,56 @@ msgid "Show blacklists"
 msgstr "Mostrar listas negras"
 
 msgid "Delete created timers?"
-msgstr "¿Borrar las programaciones creadas?"
+msgstr "¿Borrar las programaciones creadas?"
 
 msgid "Timer conflict check"
-msgstr "Comprobar conflictos de programación"
+msgstr "Comprobar conflictos de programación"
 
 msgid "Disable associated timers too?"
-msgstr "¿Desactivar las programaciones asociadas?"
+msgstr "¿Desactivar las programaciones asociadas?"
 
 msgid "Activate associated timers too?"
-msgstr "¿Activar las programaciones asociadas?"
+msgstr "¿Activar las programaciones asociadas?"
 
 msgid "Search timers activated in setup."
-msgstr "Progs. por búsqueda activas en la configuración."
+msgstr "Progs. por búsqueda activas en la configuración."
 
 msgid "Run search timer update?"
-msgstr "¿Actualizar programación por búsqueda?"
+msgstr "¿Actualizar programación por búsqueda?"
 
 msgid "Copy this entry?"
-msgstr "¿Copiar esta entrada?"
+msgstr "¿Copiar esta entrada?"
 
 msgid "Copy"
 msgstr "Copiar"
 
 msgid "Copy this entry to templates?"
-msgstr "¿Copiar esta entrada a plantillas?"
+msgstr "¿Copiar esta entrada a plantillas?"
 
 msgid "Delete all timers created from this search?"
-msgstr "¿Borrar las programaciones creadas por esta búsqueda?"
+msgstr "¿Borrar las programaciones creadas por esta búsqueda?"
 
 msgid "Button$Actions"
 msgstr "Acciones"
 
 msgid "Search entries"
-msgstr "Entradas de búsqueda"
+msgstr "Entradas de búsqueda"
 
 msgid "active"
 msgstr "activa"
 
 msgid "Edit$Delete search?"
-msgstr "¿Borrar la búsqueda?"
+msgstr "¿Borrar la búsqueda?"
 
 msgid "Edit search"
-msgstr "Editar búsqueda"
+msgstr "Editar búsqueda"
 
 msgid "Record"
 msgstr "Grabar"
 
 #, fuzzy
 msgid "Announce by OSD"
-msgstr "Sólo avisar"
+msgstr "Sólo avisar"
 
 msgid "Switch only"
 msgstr "Cambiar de canal"
@@ -998,13 +991,13 @@ msgstr "Avisar y cambiar"
 
 #, fuzzy
 msgid "Announce by mail"
-msgstr "Sólo avisar"
+msgstr "Sólo avisar"
 
 msgid "only globals"
 msgstr ""
 
 msgid "Selection"
-msgstr "selección"
+msgstr "selección"
 
 msgid "all"
 msgstr "todo"
@@ -1013,18 +1006,18 @@ msgid "count recordings"
 msgstr "incluir grabaciones"
 
 msgid "count days"
-msgstr "incluir días"
+msgstr "incluir días"
 
 msgid "if present"
 msgstr "si existe"
 
 #, fuzzy
 msgid "same day"
-msgstr "Último día"
+msgstr "Último día"
 
 #, fuzzy
 msgid "same week"
-msgstr "Día de la semana"
+msgstr "Día de la semana"
 
 msgid "same month"
 msgstr ""
@@ -1048,58 +1041,58 @@ msgid ""
 "- regular expression: match a regular expression\n"
 "- fuzzy searching: searches approximately"
 msgstr ""
-"Existen los siguientes modos de búsqueda:\n"
+"Existen los siguientes modos de búsqueda:\n"
 "\n"
-"- frase: búsquedas por subpalabras\n"
+"- frase: búsquedas por subpalabras\n"
 "- palabra completa: deben aparecer todas las palabras\n"
-"- mínimo 1 palabra: debe aparecer al menos una palabra\n"
+"- mínimo 1 palabra: debe aparecer al menos una palabra\n"
 "- exacta: debe coincidir exactamente\n"
-"- expresión regular: coincidir con una expresión regular\n"
-"- imprecisa: búsquedas por aproximación"
+"- expresión regular: coincidir con una expresión regular\n"
+"- imprecisa: búsquedas por aproximación"
 
 msgid "Help$This sets the tolerance of fuzzy searching. The value represents the allowed errors."
-msgstr "Establece la tolerancia de la búsqueda imprecisa. El valor representa los errores permitidos."
+msgstr "Establece la tolerancia de la búsqueda imprecisa. El valor representa los errores permitidos."
 
 msgid "Help$Set this to 'Yes' if your search should match the case."
-msgstr "Establecer a 'Sí' cuando la búsqueda deba coincidir con el valor dado."
+msgstr "Establecer a 'Sí' cuando la búsqueda deba coincidir con el valor dado."
 
 msgid "Help$Set this to 'Yes' if you like to search in the title of an event."
-msgstr "Establecer a 'Sí' cuando desee buscar en el título de una emisión."
+msgstr "Establecer a 'Sí' cuando desee buscar en el título de una emisión."
 
 msgid "Help$Set this to 'Yes' if you like to search in the episode of an event."
-msgstr "Establecer a 'Sí' cuando desee buscar en el episodio de una emisión."
+msgstr "Establecer a 'Sí' cuando desee buscar en el episodio de una emisión."
 
 msgid "Help$Set this to 'Yes' if you like to search in the summary of an event."
-msgstr "Establecer a 'Sí' cuando desee buscar en el resumen de una emisión."
+msgstr "Establecer a 'Sí' cuando desee buscar en el resumen de una emisión."
 
 #, fuzzy
 msgid "Use content descriptor"
-msgstr "Usar descripción"
+msgstr "Usar descripción"
 
 #, fuzzy
 msgid "Help$Set this to 'Yes' if you want to search the contents by a descriptor."
-msgstr "Establecer a 'Sí' cuando desee buscar en el título de una emisión."
+msgstr "Establecer a 'Sí' cuando desee buscar en el título de una emisión."
 
 msgid "Help$The summary of an event, can contain additional information like 'Genre', 'Category', 'Year',... called 'EPG categories' within EPGSearch. External EPG providers often deliver this information. This allows refining a search and other nice things, like searching for the 'tip of the day'. To use it set this to 'Yes'."
-msgstr "El resumen de una emisión puede contener información adicional como 'Género', 'Categoría', 'Año', ... llamada 'categorías EPG' en el EPGSearch. A menudo los proveedores EPG externos ofrecen esta información. Esto permite refinar una búsqueda y otras funcionalidades atractivas, como buscar por el 'consejo del día'. Para usarlo, establecer a 'Sí'."
+msgstr "El resumen de una emisión puede contener información adicional como 'Género', 'Categoría', 'Año', ... llamada 'categorías EPG' en el EPGSearch. A menudo los proveedores EPG externos ofrecen esta información. Esto permite refinar una búsqueda y otras funcionalidades atractivas, como buscar por el 'consejo del día'. Para usarlo, establecer a 'Sí'."
 
 msgid "Help$The file epgsearchcats.conf specifies the search mode for this entry. One can search by text or by value. You can also edit a list of predefined values in this file that can be selected here."
-msgstr "El archivo epgsearchcats.conf especifica el modo de búsqueda de esta entrada. Se puede buscar por texto o por valor. También puede editar una lista de valores predefinidos en este archivo que puede seleccionar aquí."
+msgstr "El archivo epgsearchcats.conf especifica el modo de búsqueda de esta entrada. Se puede buscar por texto o por valor. También puede editar una lista de valores predefinidos en este archivo que puede seleccionar aquí."
 
 msgid "Help$If a selected category is not part of the summary of an event this normally excludes this event from the search results. To avoid this, set this option to 'Yes', but please handle this with care to avoid a huge amount of results."
-msgstr "Si una categoría seleccionada no es parte del resumen de una emisión, normalmente ésta no incluye ese evento en los resultados de la búsqueda. Para evitarlo establezca esta opción a 'Sí', pero maneje esto con cuidado para evitar una gran cantidad de resultados."
+msgstr "Si una categoría seleccionada no es parte del resumen de una emisión, normalmente ésta no incluye ese evento en los resultados de la búsqueda. Para evitarlo establezca esta opción a 'Sí', pero maneje esto con cuidado para evitar una gran cantidad de resultados."
 
 msgid "Use in favorites menu"
-msgstr "Usar en el menú favoritos"
+msgstr "Usar en el menú favoritos"
 
 msgid "Result menu layout"
-msgstr "Presentación de resultados"
+msgstr "Presentación de resultados"
 
 msgid "Use as search timer"
-msgstr "Usar como prog. por búsqueda"
+msgstr "Usar como prog. por búsqueda"
 
 msgid "Action"
-msgstr "Acción"
+msgstr "Acción"
 
 msgid "Switch ... minutes before start"
 msgstr "Cambiar ... minutos antes del inicio"
@@ -1111,10 +1104,10 @@ msgid "Ask ... minutes before start"
 msgstr "Preguntar ... minutos antes del inicio"
 
 msgid "  Series recording"
-msgstr "  Grabación en serie"
+msgstr "  Grabación en serie"
 
 msgid "Delete recordings after ... days"
-msgstr "Borrar grabación a los ... días"
+msgstr "Borrar grabación a los ... días"
 
 msgid "Keep ... recordings"
 msgstr "Mantener ... grabaciones"
@@ -1129,27 +1122,27 @@ msgid "Allowed repeats"
 msgstr "Permitir repeticiones"
 
 msgid "Only repeats within ... days"
-msgstr "Sólo repetidos dentro de ... días"
+msgstr "Sólo repetidos dentro de ... días"
 
 msgid "Compare title"
-msgstr "Comparar título"
+msgstr "Comparar título"
 
 msgid "Compare subtitle"
-msgstr "Comparar subtítulo"
+msgstr "Comparar subtítulo"
 
 msgid "Compare summary"
 msgstr "Comparar resumen"
 
 #, fuzzy
 msgid "Min. match in %"
-msgstr "  Duración mín."
+msgstr "  Duración mín."
 
 #, fuzzy
 msgid "Compare date"
-msgstr "Comparar título"
+msgstr "Comparar título"
 
 msgid "Compare categories"
-msgstr "Comparar categorías"
+msgstr "Comparar categorías"
 
 msgid "VPS"
 msgstr "VPS"
@@ -1158,13 +1151,13 @@ msgid "Auto delete"
 msgstr "Auto borrar"
 
 msgid "after ... recordings"
-msgstr "después ... grabaciones"
+msgstr "después ... grabaciones"
 
 msgid "after ... days after first rec."
-msgstr "después ... días de la 1ª grab."
+msgstr "después ... días de la 1ª grab."
 
 msgid "Edit user-defined days of week"
-msgstr "Editar días de la semana definidos por el usuario"
+msgstr "Editar días de la semana definidos por el usuario"
 
 msgid "Compare"
 msgstr "Comparar"
@@ -1173,7 +1166,7 @@ msgid "Select blacklists"
 msgstr "Seleccionar las listas negras"
 
 msgid "Values for EPG category"
-msgstr "Valores para categorías EPG"
+msgstr "Valores para categorías EPG"
 
 msgid "Button$Apply"
 msgstr "Aplicar"
@@ -1197,22 +1190,22 @@ msgid "not equal"
 msgstr "distinto"
 
 msgid "Activation of search timer"
-msgstr "Activar prog. por búsqueda"
+msgstr "Activar prog. por búsqueda"
 
 msgid "First day"
-msgstr "Primer día"
+msgstr "Primer día"
 
 msgid "Last day"
-msgstr "Último día"
+msgstr "Último día"
 
 msgid "Button$all channels"
 msgstr "todos los canales"
 
 msgid "Button$only FTA"
-msgstr "sólo en abierto"
+msgstr "sólo en abierto"
 
 msgid "Button$Timer preview"
-msgstr "Previsualizar programación"
+msgstr "Previsualizar programación"
 
 msgid "Blacklist results"
 msgstr "Resultados de la lista negra"
@@ -1221,16 +1214,16 @@ msgid "found recordings"
 msgstr "grabaciones encontradas"
 
 msgid "Error while accessing recording!"
-msgstr "¡Error al acceder a grabación!"
+msgstr "¡Error al acceder a grabación!"
 
 msgid "Button$Default"
 msgstr "Por defecto"
 
 msgid "Edit$Delete template?"
-msgstr "¿Borrar plantilla?"
+msgstr "¿Borrar plantilla?"
 
 msgid "Overwrite existing entries?"
-msgstr "¿Sobrescribir las entradas existentes?"
+msgstr "¿Sobrescribir las entradas existentes?"
 
 msgid "Edit entry"
 msgstr "Editar entrada"
@@ -1239,7 +1232,7 @@ msgid "Switch"
 msgstr "Cambiar"
 
 msgid "Announce only"
-msgstr "Sólo avisar"
+msgstr "Sólo avisar"
 
 msgid "Announce ... minutes before start"
 msgstr "Avisar ... minutos antes del inicio"
@@ -1257,7 +1250,7 @@ msgid "Timers"
 msgstr "Programaciones"
 
 msgid ">>> no info! <<<"
-msgstr "   «sin información»  "
+msgstr "   «sin información»  "
 
 msgid "Overview"
 msgstr "Resumen"
@@ -1266,20 +1259,20 @@ msgid "Button$Favorites"
 msgstr "Favoritos"
 
 msgid "Quick search for broadcasts"
-msgstr "Búsqueda rápida de emisiones"
+msgstr "Búsqueda rápida de emisiones"
 
 msgid "Quick search"
-msgstr "Búsqueda rápida"
+msgstr "Búsqueda rápida"
 
 msgid "Show in main menu"
-msgstr "Mostrar en menú principal"
+msgstr "Mostrar en menú principal"
 
 #, c-format
 msgid "%d new broadcast(s) found! Show them?"
-msgstr "¡%d nuevas emisiones encontradas! ¿Mostrarlas?"
+msgstr "¡%d nuevas emisiones encontradas! ¿Mostrarlas?"
 
 msgid "Search timer update done!"
-msgstr "¡Programación por búsqueda actualizada!"
+msgstr "¡Programación por búsqueda actualizada!"
 
 #, c-format
 msgid "small EPG content on:%s"
@@ -1290,10 +1283,10 @@ msgstr ""
 
 #, c-format
 msgid "Switch to (%d) '%s'?"
-msgstr "¿Cambiar a (%d) '%s'?"
+msgstr "¿Cambiar a (%d) '%s'?"
 
 msgid "Programming timer failed!"
-msgstr "¡La programación ha fallado!"
+msgstr "¡La programación ha fallado!"
 
 #, c-format
 msgid "in %02ldd"
@@ -1309,4 +1302,4 @@ msgstr "en %02ldm"
 
 #, fuzzy
 #~ msgid "Compare expression"
-#~ msgstr "expresión regular"
+#~ msgstr "expresión regular"
diff --git a/po/et_EE.po b/po/et_EE.po
index 2563863..e3f831b 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Arthur Konovalov <kasjas at hot.ee>\n"
 "Language-Team: Estonian <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-13\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: et\n"
 
@@ -96,12 +96,6 @@ msgstr "Salvesta"
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -329,7 +321,7 @@ msgid ""
 msgstr ""
 
 msgid "Button$Setup"
-msgstr "Sätted"
+msgstr "Sätted"
 
 msgid "Use search timers"
 msgstr ""
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -837,6 +829,10 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "Salvesta"
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/fi_FI.po b/po/fi_FI.po
index dfb37cf..c72522c 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: EPGSearch 0.9.25\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2011-01-04 21:07+0200\n"
 "Last-Translator: Ville Skyttä <ville.skytta at iki.fi>\n"
 "Language-Team: Finnish <vdr at linuxtv.org>\n"
@@ -98,12 +98,6 @@ msgstr "Komennot"
 msgid "Button$Search"
 msgstr "Etsi"
 
-msgid "pipes"
-msgstr "teksti"
-
-msgid "graphical"
-msgstr "grafiikka"
-
 msgid "never"
 msgstr "ei koskaan"
 
@@ -200,12 +194,8 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr "Näytä aikajana 'Nyt'-sivulla"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
-msgstr ""
-"Näyttää aikajanan tämänhetkisessä yleiskatsauksessa.\n"
-"Voit valita käyttämäsi ulkoasun mukaan joko teksti- tai grafiikkapohjaisen aikajanan."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
+msgstr "Näyttää aikajanan tämänhetkisessä yleiskatsauksessa."
 
 msgid "Show channel numbers"
 msgstr "Näytä kanavien numerointi"
@@ -542,7 +532,7 @@ msgstr "Tällä asetuksella saat ilmoitukset päällekkäisistä ajastimista sä
 msgid "Send to"
 msgstr "Vastaanottaja"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr "Määrittelee sähköpostiosoitteen, jonne ilmoitukset lähetetään."
 
 msgid "Mail method"
@@ -562,10 +552,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr "--- Sähköposti ---"
 
-msgid "Email adress"
+msgid "Email address"
 msgstr "Sähköpostiosoite"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr "Määrittelee sähköpostiosoitteen, josta ilmoitukset lähetetään."
 
 msgid "SMTP server"
@@ -881,6 +871,9 @@ msgstr "Käytä mustia listoja"
 msgid "Edit$Search text too short - use anyway?"
 msgstr "Liian suppea hakuehto - etsitäänkö silti?"
 
+msgid "Button$Orphaned"
+msgstr "Orvot"
+
 msgid "Button$by name"
 msgstr "Nimi"
 
@@ -1298,7 +1291,3 @@ msgstr "%02ldh"
 #, c-format
 msgid "in %02ldm"
 msgstr "%02ldm"
-
-#, fuzzy
-#~ msgid "Compare expression"
-#~ msgstr "säännöllinen lauseke"
diff --git a/po/fr_FR.po b/po/fr_FR.po
index e485e1a..fc80982 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -10,29 +10,29 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2008-04-30 08:36+0200\n"
 "Last-Translator: Patrice Staudt <patrice.staudt at laposte.net>\n"
 "Language-Team: French <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
 
 msgid "Channel groups"
-msgstr "Groupe de chaînes"
+msgstr "Groupe de chaînes"
 
 msgid "Button$Select"
 msgstr "Selection"
 
 msgid "Channel group used by:"
-msgstr "Groupe est utilisé par:"
+msgstr "Groupe est utilisé par:"
 
 msgid "Edit$Delete group?"
 msgstr "Effacer groupe $Delete?"
 
 msgid "Edit channel group"
-msgstr "Editer groupe de chaînes"
+msgstr "Editer groupe de chaînes"
 
 msgid "Group name"
 msgstr "Nom de groupe"
@@ -50,7 +50,7 @@ msgid "Group name is empty!"
 msgstr "Le nom est vide"
 
 msgid "Group name already exists!"
-msgstr "Le groupe existe déjà!"
+msgstr "Le groupe existe déjà!"
 
 msgid "Direct access to epgsearch's conflict check menu"
 msgstr ""
@@ -69,17 +69,17 @@ msgid "%d timer conflict(s)! First at %s. Show them?"
 msgstr "%d de conflits de programmation! Le premier le %s. Afficher?"
 
 msgid "search the EPG for repeats and more"
-msgstr "Recherche de répétition dans EPG"
+msgstr "Recherche de répétition dans EPG"
 
 msgid "Program guide"
 msgstr "Guide du programme"
 
 #, fuzzy
 msgid "search timer update running"
-msgstr "La mise à jours de recherche est effectuée!"
+msgstr "La mise à jours de recherche est effectuée!"
 
 msgid "Direct access to epgsearch's search menu"
-msgstr "Accès direct dans epgsearch dans le menu recherche"
+msgstr "Accès direct dans epgsearch dans le menu recherche"
 
 msgid "Search"
 msgstr "Recherche"
@@ -99,12 +99,6 @@ msgstr "Commandes"
 msgid "Button$Search"
 msgstr "Recherche"
 
-msgid "pipes"
-msgstr "barre verticale"
-
-msgid "graphical"
-msgstr "Graphique"
-
 msgid "never"
 msgstr "jamais"
 
@@ -118,13 +112,13 @@ msgid "before user-def. times"
 msgstr "avant le temp utilisateur"
 
 msgid "after user-def. times"
-msgstr "après le temp utilisateur"
+msgstr "après le temp utilisateur"
 
 msgid "before 'next'"
 msgstr "avant 'le prochain'"
 
 msgid "General"
-msgstr "Général"
+msgstr "Général"
 
 msgid "EPG menus"
 msgstr "Menu EPG"
@@ -139,7 +133,7 @@ msgid "Search and search timers"
 msgstr "Recherche et progammation de recherche"
 
 msgid "Timer conflict checking"
-msgstr "Vérification-Conflits-Programmation"
+msgstr "Vérification-Conflits-Programmation"
 
 msgid "Email notification"
 msgstr "Notification par mail"
@@ -154,19 +148,19 @@ msgid "Main menu entry"
 msgstr "Visible dans le menu principal"
 
 msgid "Help$The name of the main menu entry which defaults to 'Programm guide'."
-msgstr "Le nom dans le menu principale. La prédéfinition est 'Guide du programme'. "
+msgstr "Le nom dans le menu principale. La prédéfinition est 'Guide du programme'. "
 
 msgid "Replace original schedule"
 msgstr "Remplace le menu d'origine programme"
 
 msgid "Help$When VDR is patched to allow this plugin to replace the original 'Schedule' entry, you can de/activate this replacement here."
-msgstr "Lorsque le VDR est muni du patch pour autoriser le remplacement du menu original 'Programme' , vous pouvez activer ou déactiver celui-ci."
+msgstr "Lorsque le VDR est muni du patch pour autoriser le remplacement du menu original 'Programme' , vous pouvez activer ou déactiver celui-ci."
 
 msgid "Start menu"
-msgstr "Menue de départ"
+msgstr "Menue de départ"
 
 msgid "Help$Choose between 'Overview - Now' and 'Schedule' as start menu when this plugin is called."
-msgstr "Ici vous pouvez choisir entre 'Maintenant' et 'Programme' comme menu de départ pour le plugin."
+msgstr "Ici vous pouvez choisir entre 'Maintenant' et 'Programme' comme menu de départ pour le plugin."
 
 msgid "Ok key"
 msgstr "Touche Ok"
@@ -175,8 +169,8 @@ msgid ""
 "Help$Choose here the behaviour of key 'Ok'. You can use it to display the summary or to switch to the corresponding channel.\n"
 "Note: the functionality of key 'blue' (Switch/Info/Search) depends on this setting."
 msgstr ""
-"Ici vous pouvez influencé le comportement de la touch 'Ok'. On peut afficher le continue d'information ou changer pour la chaînes proposée.\n"
-"Indice: La fonction de la touch 'bleu' (changer/Infos/Recherche) dépend de ce réglage."
+"Ici vous pouvez influencé le comportement de la touch 'Ok'. On peut afficher le continue d'information ou changer pour la chaînes proposée.\n"
+"Indice: La fonction de la touch 'bleu' (changer/Infos/Recherche) dépend de ce réglage."
 
 msgid "Red key"
 msgstr "Touche rouge"
@@ -199,62 +193,58 @@ msgstr ""
 "(Changement possible avec la touch '0')"
 
 msgid "Show progress in 'Now'"
-msgstr "Afficher le progrès dans 'Maintenant'"
+msgstr "Afficher le progrès dans 'Maintenant'"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
-msgstr ""
-"Affiche la barre de progression dans le menu 'Maintenant', qui indique l'avancement de l'émission en cours.\n"
-"L'afficher est mieu approprié suivant le skin choisi en 'Bar verticale' ou 'graphique'."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
+msgstr "Affiche la barre de progression dans le menu 'Maintenant', qui indique l'avancement de l'émission en cours."
 
 msgid "Show channel numbers"
-msgstr "Afficher le numéro de la chaîne"
+msgstr "Afficher le numéro de la chaîne"
 
 msgid ""
 "Help$Display channel numbers in 'Overview - Now'.\n"
 "\n"
 "(To completely define your own menu look please inspect the MANUAL)"
 msgstr ""
-"Affiche du numéro de chaîne dans la vue 'Maintenant'.\n"
+"Affiche du numéro de chaîne dans la vue 'Maintenant'.\n"
 "\n"
-"(Pour les réglages de l'affichage menu propre à l'utilisateur, lire le MANUAL)"
+"(Pour les réglages de l'affichage menu propre à l'utilisateur, lire le MANUAL)"
 
 msgid "Show channel separators"
-msgstr "Afficher le separateur de chaînes"
+msgstr "Afficher le separateur de chaînes"
 
 msgid "Help$Display VDR channel groups as separators between your channels in 'Overview - Now'."
-msgstr "Afficher les groupes de chaines avec une ligne de séparation dans la vue 'Maintenant'."
+msgstr "Afficher les groupes de chaines avec une ligne de séparation dans la vue 'Maintenant'."
 
 msgid "Show day separators"
-msgstr "Afficher les séparateur de jours"
+msgstr "Afficher les séparateur de jours"
 
 msgid "Help$Display a separator line at day break in 'Schedule'."
-msgstr "Afficher une ligne de séparation au changement de date dans la vue 'programme'."
+msgstr "Afficher une ligne de séparation au changement de date dans la vue 'programme'."
 
 msgid "Show radio channels"
-msgstr "Afficher les chaînes de radio"
+msgstr "Afficher les chaînes de radio"
 
 msgid "Help$Show also radio channels."
-msgstr "Afficher aussi les chaînes de radio."
+msgstr "Afficher aussi les chaînes de radio."
 
 msgid "Limit channels from 1 to"
-msgstr "Limiter aux chaînes de 1 à"
+msgstr "Limiter aux chaînes de 1 à"
 
 msgid "Help$If you have a large channel set you can speed up things when you limit the displayed channels with this setting. Use '0' to disable the limit."
-msgstr "Avec cette limite vous rendez l'affichage du menu plus rapide si vous avez une liste de chaînes très longue. Avec '0' vous enlevez la limitation."
+msgstr "Avec cette limite vous rendez l'affichage du menu plus rapide si vous avez une liste de chaînes très longue. Avec '0' vous enlevez la limitation."
 
 msgid "'One press' timer creation"
-msgstr "Programmation immédiate avec enregistrement"
+msgstr "Programmation immédiate avec enregistrement"
 
 msgid "Help$When a timer is created with 'Record' you can choose between an immediate creation of the timer or the display of the timer edit menu."
-msgstr "Lors de la programmation avec 'Enregistrer' vous pouvez choisir entre créer directement ou consulter les détails de la programmation."
+msgstr "Lors de la programmation avec 'Enregistrer' vous pouvez choisir entre créer directement ou consulter les détails de la programmation."
 
 msgid "Show channels without EPG"
-msgstr "Afficher les chaînes sans EPG"
+msgstr "Afficher les chaînes sans EPG"
 
 msgid "Help$Choose 'yes' here if you want to display channels without EPG in 'Overview - Now'. 'Ok' on these entries switches the channel."
-msgstr "Ici vous pouvez faire disparaitre ou non les chaines sans infos EPG dans la vue 'Maintenant'. Un 'Ok' sur le programme change sur cette chaînes."
+msgstr "Ici vous pouvez faire disparaitre ou non les chaines sans infos EPG dans la vue 'Maintenant'. Un 'Ok' sur le programme change sur cette chaînes."
 
 msgid "Time interval for FRew/FFwd [min]"
 msgstr "Interval pour FRew/FFwd [min]"
@@ -264,15 +254,15 @@ msgid ""
 "\n"
 "(If you don't have those keys, you can toggle to this functionality pressing '0' and get '<<' and '>>' on the keys green and yellow)"
 msgstr ""
-"Ici vous règlez un laps de temps, qui est utilisé avec les touches '<<' et '>>' à travers les EPG.\n"
+"Ici vous règlez un laps de temps, qui est utilisé avec les touches '<<' et '>>' à travers les EPG.\n"
 "\n"
-"(Si vous n'avez pas ces touches sur votre télécommande, vous pouvez aussi atteindre ces fonctions par la touche '0' grâce à laquelle on obtient les fonctions '<<' et '>>' sur les touches Vert/Jaune)"
+"(Si vous n'avez pas ces touches sur votre télécommande, vous pouvez aussi atteindre ces fonctions par la touche '0' grâce à laquelle on obtient les fonctions '<<' et '>>' sur les touches Vert/Jaune)"
 
 msgid "Toggle Green/Yellow"
 msgstr "Commuter vert/jaune"
 
 msgid "Help$Specify if green and yellow shall also be switched when pressing '0'."
-msgstr "Ici vous indiquez, si les touches Verte/Jaune sont commutées avec la touches '0'."
+msgstr "Ici vous indiquez, si les touches Verte/Jaune sont commutées avec la touches '0'."
 
 msgid "Show favorites menu"
 msgstr "Afficher le menu favoris"
@@ -281,20 +271,20 @@ msgid ""
 "Help$A favorites menu can display a list of your favorite broadcasts. Enable this if you want an additional menu besides 'Now' and 'Next'\n"
 "Any search can be used as a favorite. You only have to set the option 'Use in favorites menu' when editing a search."
 msgstr ""
-"Un menu favori peut contenir la liste de vos émission préférée. Faire le choix ici, si vous voulez avoir un menu favori à coté de 'Maintenant' et 'plus tard.\n"
-"Chaque recherche peut être utilisé comme favori. Pour cela simplement utiliser l'option Favori lors de l'édition de recherche."
+"Un menu favori peut contenir la liste de vos émission préférée. Faire le choix ici, si vous voulez avoir un menu favori à coté de 'Maintenant' et 'plus tard.\n"
+"Chaque recherche peut être utilisé comme favori. Pour cela simplement utiliser l'option Favori lors de l'édition de recherche."
 
 msgid "for the next ... hours"
 msgstr "pour les prochaines ... heures"
 
 msgid "Help$This value controls the timespan used to display your favorites."
-msgstr "Avec cette valeur vous réglez un interval, pour afficher les favoris."
+msgstr "Avec cette valeur vous réglez un interval, pour afficher les favoris."
 
 msgid "Use user-defined time"
 msgstr "Utiliser le temps de l'utilisateur"
 
 msgid "Help$Besides 'Now' and 'Next' you can specify up to 4 other times in the EPG which can be used by repeatedly pressing the green key, e.g. 'prime time', 'late night',..."
-msgstr "En plus de 'Maintenant' et 'Après' vous pouvez définir encore 4 autres crénaux comme 'Le soir', 'La nuit' ou 'encore plus tard' en appuyant plusieurs fois sur la touche verte..."
+msgstr "En plus de 'Maintenant' et 'Après' vous pouvez définir encore 4 autres crénaux comme 'Le soir', 'La nuit' ou 'encore plus tard' en appuyant plusieurs fois sur la touche verte..."
 
 msgid "Description"
 msgstr "Description"
@@ -306,10 +296,10 @@ msgid "Time"
 msgstr "Temps"
 
 msgid "Help$Specify the user-defined time here in 'HH:MM'."
-msgstr "Ici vous définisez le temps utilisateur dans le format 'HH:MM' par exemple '20:45'"
+msgstr "Ici vous définisez le temps utilisateur dans le format 'HH:MM' par exemple '20:45'"
 
 msgid "Use VDR's timer edit menu"
-msgstr "Utiliser le menu édition VDR-programme"
+msgstr "Utiliser le menu édition VDR-programme"
 
 msgid ""
 "Help$This plugin has it's own timer edit menu extending the original one with some extra functionality like\n"
@@ -318,17 +308,17 @@ msgid ""
 "- adding an episode name\n"
 "- support for EPG variables (see MANUAL)"
 msgstr ""
-"Ce plugin a sont propre éditeur de programmation, qui enrichit l'originale avec beaucoup le fonctions interressantes:\n"
+"Ce plugin a sont propre éditeur de programmation, qui enrichit l'originale avec beaucoup le fonctions interressantes:\n"
 "\n"
-"- une entrée de dossier supplèmentaire\n"
-"- des programmations hebdomadaires définies par l'utilisateur\n"
+"- une entrée de dossier supplèmentaire\n"
+"- des programmations hebdomadaires définies par l'utilisateur\n"
 "- l'utilisation de variable de l'EPG (voire MANUAL)"
 
 msgid "Default recording dir"
 msgstr "Dossier d'enregistrement standart"
 
 msgid "Help$When creating a timer you can specify here a default recording directory."
-msgstr "Lors de la programmation vous pouvez définir un dossier par défaut."
+msgstr "Lors de la programmation vous pouvez définir un dossier par défaut."
 
 msgid "Add episode to manual timers"
 msgstr "Ajouter sous-titre dans la programmation manuel"
@@ -340,14 +330,14 @@ msgid ""
 "- always: always add episode name if present\n"
 "- smart: add only if event lasts less than 80 mins."
 msgstr ""
-"Lorsque l'on créé une programmation d'une série, on peut voir automatiquement le nom de l'épisode.\n"
+"Lorsque l'on créé une programmation d'une série, on peut voir automatiquement le nom de l'épisode.\n"
 "\n"
-"- Jamais: sans nom d'épisode\n"
-"- Toujours:Compléter toujours avec le noms de l'épisode, si existant.\n"
-"- intelligent: compléter, si l'épisode dure moins de 80 min"
+"- Jamais: sans nom d'épisode\n"
+"- Toujours:Compléter toujours avec le noms de l'épisode, si existant.\n"
+"- intelligent: compléter, si l'épisode dure moins de 80 min"
 
 msgid "Default timer check method"
-msgstr "Méthode standart de vérification de programmation"
+msgstr "Méthode standart de vérification de programmation"
 
 msgid ""
 "Help$Manual timers can be checked for EPG changes. Here you can setup the default check method for each channel. Choose between\n"
@@ -356,11 +346,11 @@ msgid ""
 "- by event ID: checks by an event ID supplied by the channel provider.\n"
 "- by channel and time: check by the duration match."
 msgstr ""
-"Des programmations manuelles peuvent être surveillés par rapport au changement d'EPG. Ici vous pouvez définir une méthode de vérification standart pour chaque chaîne. Les choix:\n"
+"Des programmations manuelles peuvent être surveillés par rapport au changement d'EPG. Ici vous pouvez définir une méthode de vérification standart pour chaque chaîne. Les choix:\n"
 "\n"
-"- pas de vérification\n"
-"- à partir du numéro d'émission: la vérification se fait à partir d'un numéro délivré par l'émetteur.\n"
-"- à partir de la chaîne/heure: vérification à partir de l'émission, qui est la mieux adaptée avec la durée de l'émission initiale."
+"- pas de vérification\n"
+"- à partir du numéro d'émission: la vérification se fait à partir d'un numéro délivré par l'émetteur.\n"
+"- à partir de la chaîne/heure: vérification à partir de l'émission, qui est la mieux adaptée avec la durée de l'émission initiale."
 
 msgid "Button$Setup"
 msgstr "Configuration"
@@ -369,62 +359,62 @@ msgid "Use search timers"
 msgstr "Utiliser le programmeur de recherche"
 
 msgid "Help$'Search timers' can be used to automatically create timers for events that match your search criterions."
-msgstr "'Programmation de recherche' peut être utilisé pour programmer automatiquement des émissions, qui sont trouvées par la recherche."
+msgstr "'Programmation de recherche' peut être utilisé pour programmer automatiquement des émissions, qui sont trouvées par la recherche."
 
 msgid "  Update interval [min]"
 msgstr "  Interval d'actualisation [min]"
 
 msgid "Help$Specify here the time intervall to be used when searching for events in the background."
-msgstr "Ici vous indiquez l'interval avec lequel de nouvelles émissions a programmer sont recherchées."
+msgstr "Ici vous indiquez l'interval avec lequel de nouvelles émissions a programmer sont recherchées."
 
 msgid "  SVDRP port"
 msgstr "  SVDRP Port"
 
 msgid "Help$Programming of new timers or timer changes is done with SVDRP. The default value should be correct, so change it only if you know what you are doing."
-msgstr "La programmation de nouveaux enregistrements ou changements de programmation est réalisé avec SVDRP. La valeur par défaut doit absolument être correcte, ne la changez que si vous savez ce que vous faites."
+msgstr "La programmation de nouveaux enregistrements ou changements de programmation est réalisé avec SVDRP. La valeur par défaut doit absolument être correcte, ne la changez que si vous savez ce que vous faites."
 
 msgid "Help$Specify here the default priority of timers created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Ici vous définissez la priorité standard de la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche."
+msgstr "Ici vous définissez la priorité standard de la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche."
 
 msgid "Help$Specify here the default lifetime of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Ici vous définissez la durée de vie de l'enregistrement crée par le plugin. Cette valeur pe        ut être réglée de facon individuelle pour chaque recherche."
+msgstr "Ici vous définissez la durée de vie de l'enregistrement crée par le plugin. Cette valeur pe        ut être réglée de facon individuelle pour chaque recherche."
 
 msgid "Help$Specify here the default start recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Ici vous définissez la marge antérieure à la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche."
+msgstr "Ici vous définissez la marge antérieure à la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche."
 
 msgid "Help$Specify here the default stop recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Ici vous définissez la marge postérieure de la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche."
+msgstr "Ici vous définissez la marge postérieure de la programmation crée par le plugin. Cette valeur peut être réglée de facon individuelle pour chaque recherche."
 
 msgid "No announcements when replaying"
 msgstr "Pas d'annonces lors de la lecture"
 
 msgid "Help$Set this to 'yes' if you don't like to get any announcements of broadcasts if you currently replay anything."
-msgstr "Mettez 'oui' si aucune annonce d'émission n'est voulue pendant la lecture."
+msgstr "Mettez 'oui' si aucune annonce d'émission n'est voulue pendant la lecture."
 
 msgid "Recreate timers after deletion"
-msgstr "Recrer la programmation après l'éffacement"
+msgstr "Recrer la programmation après l'éffacement"
 
 msgid "Help$Set this to 'yes' if you want timers to be recreated with the next search timer update after deleting them."
-msgstr "Choisissez 'oui' pour refaire les programmations de recherche lorsque vous les avez effacés."
+msgstr "Choisissez 'oui' pour refaire les programmations de recherche lorsque vous les avez effacés."
 
 msgid "Check if EPG exists for ... [h]"
 msgstr ""
 
 #, fuzzy
 msgid "Help$Specify how many hours of future EPG there should be and get warned else after a search timer update."
-msgstr "Avec 'Oui' vous impliquez la vérification de conflits à la mise à jours de la recherche."
+msgstr "Avec 'Oui' vous impliquez la vérification de conflits à la mise à jours de la recherche."
 
 #, fuzzy
 msgid "Warn by OSD"
-msgstr "Annoncer seulement début d'une programme"
+msgstr "Annoncer seulement début d'une programme"
 
 #, fuzzy
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check via OSD."
-msgstr "Mettez 'oui',si les conflits de programmation doivent être notifiés."
+msgstr "Mettez 'oui',si les conflits de programmation doivent être notifiés."
 
 #, fuzzy
 msgid "Warn by mail"
-msgstr "Annoncer seulement début d'une programme"
+msgstr "Annoncer seulement début d'une programme"
 
 #, fuzzy
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check by mail."
@@ -432,56 +422,56 @@ msgstr "Mettez 'oui',si le compte mail utilise l'authentification pour les mails
 
 #, fuzzy
 msgid "Channel group to check"
-msgstr "Groupe de chaînes"
+msgstr "Groupe de chaînes"
 
 #, fuzzy
 msgid "Help$Specify the channel group to check."
-msgstr "Spécifier le nom du modèle."
+msgstr "Spécifier le nom du modèle."
 
 msgid "Ignore PayTV channels"
-msgstr "Ignorer les chaînes payantes"
+msgstr "Ignorer les chaînes payantes"
 
 msgid "Help$Set this to 'yes' if don't want to see events on PayTV channels when searching for repeats."
-msgstr "Pour éviter les recherches sur les chaînes payantes, vous mettez l'option sur 'oui'"
+msgstr "Pour éviter les recherches sur les chaînes payantes, vous mettez l'option sur 'oui'"
 
 msgid "Search templates"
-msgstr "Rechercher modèles"
+msgstr "Rechercher modèles"
 
 msgid "Help$Here you can setup templates for your searches."
-msgstr "Ici vous créer vos recherches comme modèles"
+msgstr "Ici vous créer vos recherches comme modèles"
 
 msgid "Blacklists"
 msgstr "Listes des exclus"
 
 msgid "Help$Here you can setup blacklists which can be used within a search to exclude events you don't like."
-msgstr "Avec ceci vous changez les listes d'exclusions, qui sont utilisées par la recherche automatique, pour éviter des emissions que vous ne voulez pas voir."
+msgstr "Avec ceci vous changez les listes d'exclusions, qui sont utilisées par la recherche automatique, pour éviter des emissions que vous ne voulez pas voir."
 
 msgid "Help$Here you can setup channel groups which can be used within a search. These are different to VDR channel groups and represent a set of arbitrary channels, e.g. 'FreeTV'."
-msgstr "Ici vous définissez des groupes de chaînes qui sont utilisés par la recherche. Ce ne sont pas les groupes de chaînes définis dans VDR comme 'Cinéma', mais une sélection propre de l'utilisateur."
+msgstr "Ici vous définissez des groupes de chaînes qui sont utilisés par la recherche. Ce ne sont pas les groupes de chaînes définis dans VDR comme 'Cinéma', mais une sélection propre de l'utilisateur."
 
 msgid "Ignore below priority"
-msgstr "Ignorer la priorité inférieure"
+msgstr "Ignorer la priorité inférieure"
 
 msgid "Help$If a timer with priority below the given value will fail it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
 msgstr ""
 
 msgid "Ignore conflict duration less ... min."
-msgstr "Ignorer les conflits inférieurs à ... min."
+msgstr "Ignorer les conflits inférieurs à ... min."
 
 msgid "Help$If a conflicts duration is less then the given number of minutes it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
-msgstr "Lorsque le temps de conflit est sous le nombre de minutes indiqué, ceci est considéré comme 'non-important'. Uniquement les conflits importants sont affichés à l'écran lors de la vérification automatique de la programmation."
+msgstr "Lorsque le temps de conflit est sous le nombre de minutes indiqué, ceci est considéré comme 'non-important'. Uniquement les conflits importants sont affichés à l'écran lors de la vérification automatique de la programmation."
 
 msgid "Only check within next ... days"
-msgstr "Ne vérifier que les prochains ... jours"
+msgstr "Ne vérifier que les prochains ... jours"
 
 msgid "Help$This value reduces the conflict check to the given range of days. All other conflicts are classified as 'not yet important'."
-msgstr "Avec cette valeur vous définissez l'interval de temps de la vérification de conflits. Tous ces conflits en dehors de cet interval sont qualifés comme 'pas encore importants."
+msgstr "Avec cette valeur vous définissez l'interval de temps de la vérification de conflits. Tous ces conflits en dehors de cet interval sont qualifés comme 'pas encore importants."
 
 msgid "--- Automatic checking ---"
-msgstr "--- Vérifications automatiques ---"
+msgstr "--- Vérifications automatiques ---"
 
 msgid "After each timer programming"
-msgstr "Après chaque programmation"
+msgstr "Après chaque programmation"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each manual timer programming. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if this timer is involved in any conflict."
 msgstr ""
@@ -493,10 +483,10 @@ msgid "Help$Set this to 'yes' if the conflict check should be performed when a r
 msgstr ""
 
 msgid "After each search timer update"
-msgstr "Mise à jours après chaque recherche"
+msgstr "Mise à jours après chaque recherche"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each search timer update."
-msgstr "Avec 'Oui' vous impliquez la vérification de conflits à la mise à jours de la recherche."
+msgstr "Avec 'Oui' vous impliquez la vérification de conflits à la mise à jours de la recherche."
 
 msgid "every ... minutes"
 msgstr "toutes les ... minutes"
@@ -505,26 +495,26 @@ msgid ""
 "Help$Specify here the time intervall to be used for an automatic conflict check in the background.\n"
 "('0' disables an automatic check)"
 msgstr ""
-"Ici vous indiquez l'interval de temps dans lequel la vérification de conflits est effectuée.\n"
-"(avec '0' vous déactivez la vérification.)"
+"Ici vous indiquez l'interval de temps dans lequel la vérification de conflits est effectuée.\n"
+"(avec '0' vous déactivez la vérification.)"
 
 msgid "if conflicts within next ... minutes"
 msgstr "Si conflit dans ... minutes suivantes"
 
 msgid "Help$If the next conflict will appear in the given number of minutes you can specify here a shorter check intervall to get more OSD notifications about it."
-msgstr "Si le conflit à lieu dans l'interval de temp indiqué, alors il est possible de règler un interval de temps plus petit pour la vérification de conflits avec affichage à lécran."
+msgstr "Si le conflit à lieu dans l'interval de temp indiqué, alors il est possible de règler un interval de temps plus petit pour la vérification de conflits avec affichage à lécran."
 
 msgid "Avoid notification when replaying"
 msgstr "Eviter les messages pendant la lecture"
 
 msgid "Help$Set this to 'yes' if the don't want to get OSD messages about conflicts if you currently replay something. Nevertheless messages will be displayed if the first upcoming conflict is within the next 2 hours."
-msgstr "Mettez sur 'oui', si pendant la lecture vous ne voulez pas être dérangé par les affichages des conflits de programmation. L'affichage est fait si les conflits on lieu dans le 2 heures à venir."
+msgstr "Mettez sur 'oui', si pendant la lecture vous ne voulez pas être dérangé par les affichages des conflits de programmation. L'affichage est fait si les conflits on lieu dans le 2 heures à venir."
 
 msgid "Search timer notification"
 msgstr "Notification de recherche"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the search timers that where programmed automatically in the background."
-msgstr "Mettez 'oui',si vous voulez que les nouvelles programmations automatiques soient notifiées par mail."
+msgstr "Mettez 'oui',si vous voulez que les nouvelles programmations automatiques soient notifiées par mail."
 
 msgid "Time between mails [h]"
 msgstr ""
@@ -540,16 +530,16 @@ msgid "Timer conflict notification"
 msgstr "Notification de conflit de programmation"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the timer conflicts."
-msgstr "Mettez 'oui',si les conflits de programmation doivent être notifiés."
+msgstr "Mettez 'oui',si les conflits de programmation doivent être notifiés."
 
 msgid "Send to"
-msgstr "Envoyer à"
+msgstr "Envoyer à"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
-msgstr "Ici vous indiquez l'adresse mail, a laquelle les notifications sont envoyées."
+msgid "Help$Specify the email address where notifications should be sent to."
+msgstr "Ici vous indiquez l'adresse mail, a laquelle les notifications sont envoyées."
 
 msgid "Mail method"
-msgstr "Méthode de couriel"
+msgstr "Méthode de couriel"
 
 msgid ""
 "Help$Specify here the method to use when sending mails.\n"
@@ -561,17 +551,17 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr "--- Compte courriel ---"
 
-msgid "Email adress"
+msgid "Email address"
 msgstr "Adresse courriel"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
-msgstr "Préciser l'adresse courriel de l'envoyeur des notifications"
+msgid "Help$Specify the email address where notifications should be sent from."
+msgstr "Préciser l'adresse courriel de l'envoyeur des notifications"
 
 msgid "SMTP server"
 msgstr "Serveur SMTP"
 
 msgid "Help$Specify the SMTP server that should deliver the notifications. If it's using a port different from the default(25) append the port with \":port\"."
-msgstr "Ici vous indiquez le serveur de mail sortant SMTP, par lequel les notifications vont être envoyées. Si le port standart(25) n'est pas utilisé, alors ajoutez \":port\" par exemple smtp.orange.fr:2525. "
+msgstr "Ici vous indiquez le serveur de mail sortant SMTP, par lequel les notifications vont être envoyées. Si le port standart(25) n'est pas utilisé, alors ajoutez \":port\" par exemple smtp.orange.fr:2525. "
 
 msgid "Use SMTP authentication"
 msgstr "Utiliser l'authentification SMTP"
@@ -592,29 +582,28 @@ msgid "Help$Specify the auth password, if this account needs authentication for
 msgstr "Ici vous indiquez le mot de passe pour l'authentification, lorsque le compte mail sortant SMTP en a besoin."
 
 msgid "Mail account check failed!"
-msgstr "La vérification du compte mail a échoué"
+msgstr "La vérification du compte mail a échoué"
 
 msgid "Button$Test"
 msgstr "Test"
 
-#, fuzzy
 msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
-msgstr " aàbcçdeéèêfghiîjklmnoôpqrstuùûvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aàbcçdeéèêfghiîjklmnoôpqrstuùûvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
 
 msgid "Start/Stop time has changed"
-msgstr "Start/Stop date a changé"
+msgstr "Start/Stop date a changé"
 
 msgid "Title/episode has changed"
-msgstr "Titre/épisode a changé"
+msgstr "Titre/épisode a changé"
 
 msgid "No new timers were added."
 msgstr "Il n'y a pas eu de nouvelle programmation."
 
 msgid "No timers were modified."
-msgstr "La programmation n'a pas été changée."
+msgstr "La programmation n'a pas été changée."
 
 msgid "No timers were deleted."
-msgstr "Aucune programmation n'a été effacée."
+msgstr "Aucune programmation n'a été effacée."
 
 msgid "No new events to announce."
 msgstr ""
@@ -627,31 +616,31 @@ msgstr "EPGSearch n'existe pas!"
 
 #, c-format
 msgid "%d new broadcast"
-msgstr "%d nouvelle(s) émission(s)"
+msgstr "%d nouvelle(s) émission(s)"
 
 msgid "Button$by channel"
 msgstr "de programme"
 
 msgid "Button$by time"
-msgstr "de début"
+msgstr "de début"
 
 msgid "Button$Episode"
-msgstr "Épisode"
+msgstr "Épisode"
 
 msgid "Button$Title"
 msgstr "Titre"
 
 msgid "announce details"
-msgstr "annoncer les détails"
+msgstr "annoncer les détails"
 
 msgid "announce again"
-msgstr "Annoncer à nouveau"
+msgstr "Annoncer à nouveau"
 
 msgid "with next update"
-msgstr "lors de la prochaine mise à jour"
+msgstr "lors de la prochaine mise à jour"
 
 msgid "again from"
-msgstr "recommencer à partir de"
+msgstr "recommencer à partir de"
 
 msgid "Search timer"
 msgstr "Programmation de recherche"
@@ -672,10 +661,10 @@ msgid "match exactly"
 msgstr "correspond exactement"
 
 msgid "regular expression"
-msgstr "expression réguliere"
+msgstr "expression réguliere"
 
 msgid "fuzzy"
-msgstr "imprécis"
+msgstr "imprécis"
 
 msgid "user-defined"
 msgstr "definition d'utilisateur"
@@ -684,7 +673,7 @@ msgid "interval"
 msgstr "interval"
 
 msgid "channel group"
-msgstr "Groupe de chaînes"
+msgstr "Groupe de chaînes"
 
 msgid "only FTA"
 msgstr "sans TV-Payante"
@@ -696,7 +685,7 @@ msgid "Search mode"
 msgstr "Mode de recherche"
 
 msgid "Tolerance"
-msgstr "Tolérance"
+msgstr "Tolérance"
 
 msgid "Match case"
 msgstr "Maj/Minuscule"
@@ -711,40 +700,40 @@ msgid "Use description"
 msgstr "Utiliser la description"
 
 msgid "Use extended EPG info"
-msgstr "Utiliser les infos EPG avancées"
+msgstr "Utiliser les infos EPG avancées"
 
 msgid "Ignore missing categories"
-msgstr "Ignorer les catégories indisponible"
+msgstr "Ignorer les catégories indisponible"
 
 msgid "Use channel"
-msgstr "Utiliser les chaînes"
+msgstr "Utiliser les chaînes"
 
 msgid "  from channel"
-msgstr "  de la Chaîne"
+msgstr "  de la Chaîne"
 
 msgid "  to channel"
-msgstr "  à la Chaîne"
+msgstr "  à la Chaîne"
 
 msgid "Channel group"
-msgstr "Groupe de chaînes"
+msgstr "Groupe de chaînes"
 
 msgid "Use time"
 msgstr "Utiliser l'heure"
 
 msgid "  Start after"
-msgstr "  Départ après"
+msgstr "  Départ après"
 
 msgid "  Start before"
-msgstr "  Départ avant"
+msgstr "  Départ avant"
 
 msgid "Use duration"
-msgstr "Durée d'utilisation"
+msgstr "Durée d'utilisation"
 
 msgid "  Min. duration"
-msgstr "  Durée min."
+msgstr "  Durée min."
 
 msgid "  Max. duration"
-msgstr "  Durée max."
+msgstr "  Durée max."
 
 msgid "Use day of week"
 msgstr "Utiliser les jours de la semaine"
@@ -756,49 +745,49 @@ msgid "Use global"
 msgstr ""
 
 msgid "Button$Templates"
-msgstr "Modéles"
+msgstr "Modéles"
 
 msgid "*** Invalid Channel ***"
-msgstr "*** Chaîne indisponible ***"
+msgstr "*** Chaîne indisponible ***"
 
 msgid "Please check channel criteria!"
-msgstr "Vérifier le critère de la chaîne!"
+msgstr "Vérifier le critère de la chaîne!"
 
 msgid "Edit$Delete blacklist?"
 msgstr "Effacer la liste des exclus"
 
 msgid "Repeats"
-msgstr "Répétitions"
+msgstr "Répétitions"
 
 msgid "Create search"
-msgstr "Créer une recherche"
+msgstr "Créer une recherche"
 
 msgid "Search in recordings"
 msgstr "Recherche dans enregistrement"
 
 msgid "Mark as 'already recorded'?"
-msgstr "marquer comme 'déjà enregistré'?"
+msgstr "marquer comme 'déjà enregistré'?"
 
 msgid "Add/Remove to/from switch list?"
 msgstr "Ajouter/Effacer de la liste de changement?"
 
 msgid "Create blacklist"
-msgstr "Créer la liste d'exclusions"
+msgstr "Créer la liste d'exclusions"
 
 msgid "EPG Commands"
 msgstr "Commande EPG"
 
 msgid "Already running!"
-msgstr "Est déjà en cours"
+msgstr "Est déjà en cours"
 
 msgid "Add to switch list?"
-msgstr "Ajouter à la liste de changement de chaine?"
+msgstr "Ajouter à la liste de changement de chaine?"
 
 msgid "Delete from switch list?"
 msgstr "Effacer de la liste de changement?"
 
 msgid "Button$Details"
-msgstr "Détails"
+msgstr "Détails"
 
 msgid "Button$Filter"
 msgstr "Filtre"
@@ -819,16 +808,16 @@ msgid "C"
 msgstr "C"
 
 msgid "Button$Repeats"
-msgstr "Répétitions"
+msgstr "Répétitions"
 
 msgid "no check"
 msgstr "sans surveillance"
 
 msgid "by channel and time"
-msgstr "à partir chaînes/heures"
+msgstr "à partir chaînes/heures"
 
 msgid "by event ID"
-msgstr "à partir du numéro d'émission"
+msgstr "à partir du numéro d'émission"
 
 msgid "Select directory"
 msgstr "Selectionner le dossier"
@@ -837,13 +826,13 @@ msgid "Button$Level"
 msgstr "Niveau"
 
 msgid "Event"
-msgstr "Événement"
+msgstr "Événement"
 
 msgid "Favorites"
 msgstr "Favoris"
 
 msgid "Search results"
-msgstr "Résultat de recherche"
+msgstr "Résultat de recherche"
 
 msgid "Timer conflict! Show?"
 msgstr "Afficher les conflits de programmation?"
@@ -852,7 +841,7 @@ msgid "Directory"
 msgstr "Dossier"
 
 msgid "Channel"
-msgstr "Chaîne"
+msgstr "Chaîne"
 
 msgid "Childlock"
 msgstr "Adulte"
@@ -879,7 +868,11 @@ msgid "Use blacklists"
 msgstr "Utiliser la liste des exclus"
 
 msgid "Edit$Search text too short - use anyway?"
-msgstr "Texte de recherche est trop court - l'utiliser comme même?"
+msgstr "Texte de recherche est trop court - l'utiliser comme même?"
+
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "de programme"
 
 msgid "Button$by name"
 msgstr "par nom"
@@ -894,19 +887,19 @@ msgid "Recordings"
 msgstr "Enregistrement"
 
 msgid "Edit$Delete entry?"
-msgstr "Effacer l'entrée"
+msgstr "Effacer l'entrée"
 
 msgid "Edit$Delete all entries?"
-msgstr "Effacer toutes les entrées"
+msgstr "Effacer toutes les entrées"
 
 msgid "Summary"
 msgstr "Contenu"
 
 msgid "Auxiliary info"
-msgstr "Informations supplémentaires"
+msgstr "Informations supplémentaires"
 
 msgid "Button$Aux info"
-msgstr "Infos supplémentaires"
+msgstr "Infos supplémentaires"
 
 msgid "Search actions"
 msgstr "Actions de recherche"
@@ -921,16 +914,16 @@ msgid "Trigger search timer update"
 msgstr "Selection"
 
 msgid "Show recordings done"
-msgstr "Afficher les enregistrements effectués"
+msgstr "Afficher les enregistrements effectués"
 
 msgid "Show timers created"
-msgstr "Afficher la programmation effectuée"
+msgstr "Afficher la programmation effectuée"
 
 msgid "Create a copy"
-msgstr "Créer une copie"
+msgstr "Créer une copie"
 
 msgid "Use as template"
-msgstr "Utiliser comme modèles"
+msgstr "Utiliser comme modèles"
 
 msgid "Show switch list"
 msgstr "Afficher liste de changement"
@@ -939,31 +932,31 @@ msgid "Show blacklists"
 msgstr "Afficher la liste des exclus"
 
 msgid "Delete created timers?"
-msgstr "Effacer les programmations crées"
+msgstr "Effacer les programmations crées"
 
 msgid "Timer conflict check"
-msgstr "Vérifier les conflits de programmation"
+msgstr "Vérifier les conflits de programmation"
 
 msgid "Disable associated timers too?"
-msgstr "Désactiver la programmation correspondante"
+msgstr "Désactiver la programmation correspondante"
 
 msgid "Activate associated timers too?"
 msgstr "Activer la progammation correspondante"
 
 msgid "Search timers activated in setup."
-msgstr "La recherche a été activée dans la configuration."
+msgstr "La recherche a été activée dans la configuration."
 
 msgid "Run search timer update?"
-msgstr "Mise à jours programmation de recherche?"
+msgstr "Mise à jours programmation de recherche?"
 
 msgid "Copy this entry?"
-msgstr "Copier cette entrée"
+msgstr "Copier cette entrée"
 
 msgid "Copy"
 msgstr "Copier"
 
 msgid "Copy this entry to templates?"
-msgstr "Copier cette entrée dans modèles?"
+msgstr "Copier cette entrée dans modèles?"
 
 msgid "Delete all timers created from this search?"
 msgstr "Effacer les programmations issues de cette recherche?"
@@ -972,7 +965,7 @@ msgid "Button$Actions"
 msgstr "Actions"
 
 msgid "Search entries"
-msgstr "Entrée de recherche"
+msgstr "Entrée de recherche"
 
 msgid "active"
 msgstr "actif"
@@ -988,18 +981,18 @@ msgstr "Enregistre"
 
 #, fuzzy
 msgid "Announce by OSD"
-msgstr "Annoncer seulement début d'une programme"
+msgstr "Annoncer seulement début d'une programme"
 
 msgid "Switch only"
 msgstr "Seulement changer de chaine"
 
 #, fuzzy
 msgid "Announce and switch"
-msgstr "Annoncer seulement début d'une programme"
+msgstr "Annoncer seulement début d'une programme"
 
 #, fuzzy
 msgid "Announce by mail"
-msgstr "Annoncer seulement début d'une programme"
+msgstr "Annoncer seulement début d'une programme"
 
 msgid "only globals"
 msgstr ""
@@ -1031,13 +1024,13 @@ msgid "same month"
 msgstr ""
 
 msgid "Template name"
-msgstr "Nom du modèle"
+msgstr "Nom du modèle"
 
 msgid "Help$Specify the name of the template."
-msgstr "Spécifier le nom du modèle."
+msgstr "Spécifier le nom du modèle."
 
 msgid "Help$Specify here the term to search for."
-msgstr "Spécifier ici le term de la recherche."
+msgstr "Spécifier ici le term de la recherche."
 
 msgid ""
 "Help$The following search modes exist:\n"
@@ -1086,7 +1079,7 @@ msgid "Use in favorites menu"
 msgstr "Utiliser dans le menu favoris"
 
 msgid "Result menu layout"
-msgstr "Dispositon du menu de résultat"
+msgstr "Dispositon du menu de résultat"
 
 msgid "Use as search timer"
 msgstr "Utiliser la recherche"
@@ -1095,20 +1088,20 @@ msgid "Action"
 msgstr "Action"
 
 msgid "Switch ... minutes before start"
-msgstr "Changer ... minutes avant le début"
+msgstr "Changer ... minutes avant le début"
 
 msgid "Unmute sound"
 msgstr "Remettre le son"
 
 #, fuzzy
 msgid "Ask ... minutes before start"
-msgstr "Changer ... minutes avant le début"
+msgstr "Changer ... minutes avant le début"
 
 msgid "  Series recording"
 msgstr "  Enregistrement de serie"
 
 msgid "Delete recordings after ... days"
-msgstr "Effacer l'enregistrement après ... jours"
+msgstr "Effacer l'enregistrement après ... jours"
 
 msgid "Keep ... recordings"
 msgstr "Garder .... enregistrements"
@@ -1117,13 +1110,13 @@ msgid "Pause when ... recordings exist"
 msgstr "Pause, lorsque ... l'enregistrement existe."
 
 msgid "Avoid repeats"
-msgstr "Eviter les répétions"
+msgstr "Eviter les répétions"
 
 msgid "Allowed repeats"
-msgstr "Répétitions autorisées"
+msgstr "Répétitions autorisées"
 
 msgid "Only repeats within ... days"
-msgstr "Que répétion, pendant ... jours"
+msgstr "Que répétion, pendant ... jours"
 
 msgid "Compare title"
 msgstr "Comparer titres"
@@ -1136,7 +1129,7 @@ msgstr "Comparer les descriptions"
 
 #, fuzzy
 msgid "Min. match in %"
-msgstr "  Durée min."
+msgstr "  Durée min."
 
 #, fuzzy
 msgid "Compare date"
@@ -1152,13 +1145,13 @@ msgid "Auto delete"
 msgstr "Auto effacement"
 
 msgid "after ... recordings"
-msgstr "après ... enregistrements"
+msgstr "après ... enregistrements"
 
 msgid "after ... days after first rec."
-msgstr "après ... jours du premier enregistrement"
+msgstr "après ... jours du premier enregistrement"
 
 msgid "Edit user-defined days of week"
-msgstr "Edition des journées définit par l'utilisateur"
+msgstr "Edition des journées définit par l'utilisateur"
 
 msgid "Compare"
 msgstr "Comparer"
@@ -1167,7 +1160,7 @@ msgid "Select blacklists"
 msgstr "Choisir la liste des exclus"
 
 msgid "Values for EPG category"
-msgstr "Valeur pour la catégories EPG"
+msgstr "Valeur pour la catégories EPG"
 
 msgid "Button$Apply"
 msgstr "Appliquer"
@@ -1176,19 +1169,19 @@ msgid "less"
 msgstr "plus petit"
 
 msgid "less or equal"
-msgstr "plus petit ou égale"
+msgstr "plus petit ou égale"
 
 msgid "greater"
 msgstr "plus grand"
 
 msgid "greater or equal"
-msgstr "plus grand ou égale"
+msgstr "plus grand ou égale"
 
 msgid "equal"
-msgstr "égale"
+msgstr "égale"
 
 msgid "not equal"
-msgstr "pas égale"
+msgstr "pas égale"
 
 msgid "Activation of search timer"
 msgstr "Activation de la recherche de programmation"
@@ -1206,48 +1199,48 @@ msgid "Button$only FTA"
 msgstr "sans TV-Payante"
 
 msgid "Button$Timer preview"
-msgstr "Prévu de programmation"
+msgstr "Prévu de programmation"
 
 msgid "Blacklist results"
-msgstr "Résultats de la liste des exclus"
+msgstr "Résultats de la liste des exclus"
 
 msgid "found recordings"
-msgstr "Enregistrements trouvées"
+msgstr "Enregistrements trouvées"
 
 msgid "Error while accessing recording!"
-msgstr "Erreur lors de l'accès à l'enregistrement"
+msgstr "Erreur lors de l'accès à l'enregistrement"
 
 msgid "Button$Default"
 msgstr "Standart"
 
 msgid "Edit$Delete template?"
-msgstr "Effacer le modèle"
+msgstr "Effacer le modèle"
 
 msgid "Overwrite existing entries?"
 msgstr "Ecraser les informations?"
 
 msgid "Edit entry"
-msgstr "Editer l'entrée"
+msgstr "Editer l'entrée"
 
 #, fuzzy
 msgid "Switch"
 msgstr "Seulement changer de chaine"
 
 msgid "Announce only"
-msgstr "Annoncer seulement début d'une programme"
+msgstr "Annoncer seulement début d'une programme"
 
 #, fuzzy
 msgid "Announce ... minutes before start"
-msgstr "Changer ... minutes avant le début"
+msgstr "Changer ... minutes avant le début"
 
 msgid "action at"
-msgstr "Effectuer à"
+msgstr "Effectuer à"
 
 msgid "Switch list"
 msgstr "Liste de changement de chaine"
 
 msgid "Edit template"
-msgstr "Editer modèles"
+msgstr "Editer modèles"
 
 msgid "Timers"
 msgstr "Programmations"
@@ -1272,10 +1265,10 @@ msgstr "Visible dans le menu principale"
 
 #, c-format
 msgid "%d new broadcast(s) found! Show them?"
-msgstr "Afficher les %d nouvelles émissions trouvées?"
+msgstr "Afficher les %d nouvelles émissions trouvées?"
 
 msgid "Search timer update done!"
-msgstr "La mise à jours de recherche est effectuée!"
+msgstr "La mise à jours de recherche est effectuée!"
 
 #, c-format
 msgid "small EPG content on:%s"
@@ -1289,7 +1282,7 @@ msgid "Switch to (%d) '%s'?"
 msgstr ""
 
 msgid "Programming timer failed!"
-msgstr "La programmation a échoué"
+msgstr "La programmation a échoué"
 
 #, c-format
 msgid "in %02ldd"
@@ -1305,4 +1298,4 @@ msgstr "en %02ldm"
 
 #, fuzzy
 #~ msgid "Compare expression"
-#~ msgstr "expression réguliere"
+#~ msgstr "expression réguliere"
diff --git a/po/hr_HR.po b/po/hr_HR.po
index 022b807..50493d6 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Drazen Dupor <drazen.dupor at dupor.com>\n"
 "Language-Team: Croatian <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: hr\n"
 
@@ -97,12 +97,6 @@ msgstr "Snimi"
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -193,9 +187,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -503,7 +495,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -519,10 +511,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -838,6 +830,10 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "Snimi"
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/hu_HU.po b/po/hu_HU.po
index 72b910e..b990f7b 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Istvan Koenigsberger <istvnko at hotmail.com>, Guido Josten <guido.josten at t-online.de>\n"
 "Language-Team: Hungarian <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: hu\n"
 
@@ -96,12 +96,6 @@ msgstr ""
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -329,7 +321,7 @@ msgid ""
 msgstr ""
 
 msgid "Button$Setup"
-msgstr "Beállítások"
+msgstr "Beállítások"
 
 msgid "Use search timers"
 msgstr ""
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -554,9 +546,8 @@ msgstr ""
 msgid "Button$Test"
 msgstr ""
 
-#, fuzzy
 msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
-msgstr " aábcdeéfghiíjklmnoóöõpqrstuúüûvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aábcdeéfghiíjklmnoóöőpqrstuúüűvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
 
 msgid "Start/Stop time has changed"
 msgstr ""
@@ -838,6 +829,9 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+msgid "Button$Orphaned"
+msgstr ""
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/it_IT.po b/po/it_IT.po
index 9d0392a..3ea92f2 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-07-10 20:44+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2011-07-17 17:46+0100\n"
 "Last-Translator: Diego Pierotto <vdr-italian at tiscali.it>\n"
 "Language-Team: Italian <vdr at linuxtv.org>\n"
@@ -100,12 +100,6 @@ msgstr "Comandi"
 msgid "Button$Search"
 msgstr "Cerca"
 
-msgid "pipes"
-msgstr "barre verticali"
-
-msgid "graphical"
-msgstr "grafica"
-
 msgid "never"
 msgstr "mai"
 
@@ -202,12 +196,8 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr "Visualizza progresso in 'Adesso'"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
-msgstr ""
-"Mostra una barra d'avanzamento in 'Sommario - Adesso' che informa sul tempo rimanente dell'evento attuale.\n"
-"A seconda dell'interfaccia puoi selezionare tra 'Barre verticali' o 'Grafica' per avere una visuale migliore."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
+msgstr "Mostra una barra d'avanzamento in 'Sommario - Adesso' che informa sul tempo rimanente dell'evento attuale."
 
 msgid "Show channel numbers"
 msgstr "Visualizza i numeri dei canali"
@@ -544,7 +534,7 @@ msgstr "Imposta 'sì' se vuoi avere una notifica email sui timer in conflitto."
 msgid "Send to"
 msgstr "Invia a"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr "Specifica l'indirizzo di posta al quale le notifiche dovrebbero essere spedite."
 
 msgid "Mail method"
@@ -564,10 +554,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr "--- Account email ---"
 
-msgid "Email adress"
+msgid "Email address"
 msgstr "Indirizzo di posta"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr "Specifica l'indirizzo di posta dal quale le notifiche dovrebbero essere spedite."
 
 msgid "SMTP server"
@@ -883,6 +873,10 @@ msgstr "Utilizza lista esclusioni"
 msgid "Edit$Search text too short - use anyway?"
 msgstr "Il testo da cercare è troppo corto - continuare?"
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "Per canale"
+
 msgid "Button$by name"
 msgstr "Per nome"
 
diff --git a/po/lt_LT.po b/po/lt_LT.po
index cdd20c6..5a5350a 100644
--- a/po/lt_LT.po
+++ b/po/lt_LT.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.7.10\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Valdemaras Pipiras <varas at ambernet.lt>\n"
 "Language-Team: Lithuanian <vdr at linuxtv.org>\n"
@@ -95,12 +95,6 @@ msgstr "Komandos"
 msgid "Button$Search"
 msgstr "Paieška"
 
-msgid "pipes"
-msgstr "vanzdžiai"
-
-msgid "graphical"
-msgstr "grafinÄ—"
-
 msgid "never"
 msgstr "niekada"
 
@@ -197,12 +191,8 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr "Rodyti praeitą laiką nuo einamos programos pradžios arba kitaip progresą 'Dabar' skiltyje"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
-msgstr ""
-"Rodo progreso juostą 'Kas rodoma dabar' dalyje, kas suteikia daugiau informacijos apie tai kiek laiko laida dar tęsis.\n"
-"Priklausomai nuo pasirinkto apvalkalo, kad pasiektumėt gražiausią išvaizdą, galite pasirinkti tarp 'Vamzdeliai' ir 'Grafinis' variantų."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
+msgstr "Rodo progreso juostą 'Kas rodoma dabar' dalyje, kas suteikia daugiau informacijos apie tai kiek laiko laida dar tęsis."
 
 msgid "Show channel numbers"
 msgstr "Rodyti kanalų numerius"
@@ -547,7 +537,7 @@ msgstr "Nustatyti 'taip' jei norite gauti pranešimus el. paštu apie laikmačio
 msgid "Send to"
 msgstr "Siūsti"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr "Nurodykite el. pašto adresą kuriuo turėtų būti siunčiami perspėjimai."
 
 msgid "Mail method"
@@ -566,10 +556,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr "--- El. pašto sąskaita ---"
 
-msgid "Email adress"
+msgid "Email address"
 msgstr "El. pašto adresas"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr "Nurodyti el. pašto adresą iš kurio turėtų būti siunčiami pranešimai."
 
 msgid "SMTP server"
@@ -602,9 +592,8 @@ msgstr "Pašto prisijungimo patikra!"
 msgid "Button$Test"
 msgstr "Testas"
 
-#, fuzzy
 msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
-msgstr " aąbcčdeęėfghiįjklmnopqrsštuųūvzž0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aąbcčdeęėfghiįjklmnopqrsštuųūvzž0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
 
 msgid "Start/Stop time has changed"
 msgstr "Pasikeitė pradžios/pabaigos laikas"
@@ -886,6 +875,10 @@ msgstr "Naudoti juoduosius sąrašus"
 msgid "Edit$Search text too short - use anyway?"
 msgstr "Ieškomas tekstas per trumpas - vistiek naudoti?"
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "pagal kanalÄ…"
+
 msgid "Button$by name"
 msgstr "pagal pavadinimÄ…"
 
diff --git a/po/nl_NL.po b/po/nl_NL.po
index 158cbfb..c39234d 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Maarten Wisse <Maarten.Wisse at urz.uni-hd.de>\n"
 "Language-Team: Dutch <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: nl\n"
 
@@ -98,12 +98,6 @@ msgstr "Commando's"
 msgid "Button$Search"
 msgstr "Zoek"
 
-msgid "pipes"
-msgstr "pipes"
-
-msgid "graphical"
-msgstr "grafisch"
-
 msgid "never"
 msgstr "nooit"
 
@@ -114,10 +108,10 @@ msgid "smart"
 msgstr "slim"
 
 msgid "before user-def. times"
-msgstr "vóór gebruiker-gedef. tijden"
+msgstr "vóór gebruiker-gedef. tijden"
 
 msgid "after user-def. times"
-msgstr "ná gebruiker-gedef. tijden"
+msgstr "ná gebruiker-gedef. tijden"
 
 msgid "before 'next'"
 msgstr ""
@@ -200,12 +194,8 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr "Toon voortgang in 'Nu'"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
-msgstr ""
-"Toont een voortschreidingsbalk in 'Overzicht - Nu' welke de resterende tijd van het huidige programma weergeeft.\n"
-"Afhankelijk van de geselecteerde 'Skin' kan gekozen worden voor het beste uiterlijk"
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
+msgstr "Toont een voortschreidingsbalk in 'Overzicht - Nu' welke de resterende tijd van het huidige programma weergeeft."
 
 msgid "Show channel numbers"
 msgstr "Toon kanaal nummers"
@@ -244,7 +234,7 @@ msgid "Help$If you have a large channel set you can speed up things when you lim
 msgstr "Als er sprake is van een groot aantal kanalen dan kan de snelheid worden bevorderd als het aantal kanalen wordt beperkt. Gebruik '0' om de limitering op te heffen"
 
 msgid "'One press' timer creation"
-msgstr "Maak met één toetsdruk een nieuwe timer aan"
+msgstr "Maak met één toetsdruk een nieuwe timer aan"
 
 msgid "Help$When a timer is created with 'Record' you can choose between an immediate creation of the timer or the display of the timer edit menu."
 msgstr "Als er een timer is gemaakt met 'Opname' dan kan er gekozen worden de timer direct aan te maken of eerst het 'Wijzig timer' menu te tonen."
@@ -472,7 +462,7 @@ msgid "Help$If a conflicts duration is less then the given number of minutes it
 msgstr "Indien de duur van conflict(en) kleiner is dan het gegeven aantal minuten dan worden deze niet gemerkt als 'belangrijk' Alleen belangrijke conflicten zullen een OSD melding tot gevolg hebben."
 
 msgid "Only check within next ... days"
-msgstr "Controleer alleen vóór de volgende ... dagen"
+msgstr "Controleer alleen vóór de volgende ... dagen"
 
 msgid "Help$This value reduces the conflict check to the given range of days. All other conflicts are classified as 'not yet important'."
 msgstr "Deze waarde beperkt de conflict controle tot het gegeven aantal dagen. Alle andere conflicten worden als 'nog niet belangrijk' bestempeld."
@@ -543,7 +533,7 @@ msgstr "Kies 'ja' indien er een notificatie e-mail verstuurd moet worden bij tim
 msgid "Send to"
 msgstr "Zend naar"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr "Geef het e-mail adres op waar de notificaties naartoe gestuurd moeen worden"
 
 msgid "Mail method"
@@ -559,10 +549,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr "--- E-mail gebruiker ---"
 
-msgid "Email adress"
+msgid "Email address"
 msgstr "E-mail adres"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr "Geef het e-mail adres op waar vandaan de e-mail notificaties verzonden worden"
 
 msgid "SMTP server"
@@ -712,7 +702,7 @@ msgid "Use extended EPG info"
 msgstr "Gebruik uitgebreide EPG info"
 
 msgid "Ignore missing categories"
-msgstr "Negeer ontbrekende categoriÃen"
+msgstr "Negeer ontbrekende categoriëen"
 
 msgid "Use channel"
 msgstr "Gebruik kanaal"
@@ -879,6 +869,10 @@ msgstr "Gebruik blacklists"
 msgid "Edit$Search text too short - use anyway?"
 msgstr "Zoektekst te kort - toch gebruiken?"
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "per kanaal"
+
 msgid "Button$by name"
 msgstr "op naam"
 
@@ -955,10 +949,10 @@ msgid "Run search timer update?"
 msgstr "Start verversen zoektimer? "
 
 msgid "Copy this entry?"
-msgstr "KopiÃer deze regel?"
+msgstr "Kopiëer deze regel?"
 
 msgid "Copy"
-msgstr "KopiÃer"
+msgstr "Kopiëer"
 
 msgid "Copy this entry to templates?"
 msgstr "Kopiëer deze regel naar sjablonen"
@@ -1049,7 +1043,7 @@ msgid ""
 msgstr ""
 "Er kan gekozen worden uit de volgende zoekinstellingen:\n"
 "- alle woorden: alle los voorkomende woorden moeten gevonden worden\n"
-"- minstens ÃÃn woord: minstens én woord moet worden gevonden\n"
+"- minstens één woord: minstens én woord moet worden gevonden\n"
 "- past precies: de hele zoekterm komt exact overeen\n"
 "- reguliere expressie: resultaat past bij uitkomst expressie\n"
 "- 'fuzzy' zoeken: zoek naar mogelijke matches"
@@ -1078,7 +1072,7 @@ msgid "Help$Set this to 'Yes' if you want to search the contents by a descriptor
 msgstr "Kies 'ja' indien de zoekactie moet zoeken in de titel van het programma"
 
 msgid "Help$The summary of an event, can contain additional information like 'Genre', 'Category', 'Year',... called 'EPG categories' within EPGSearch. External EPG providers often deliver this information. This allows refining a search and other nice things, like searching for the 'tip of the day'. To use it set this to 'Yes'."
-msgstr "De samenvatting van een programma kan extra informatie bevatten zoals 'Genre', 'Jaar',... binnen EPGsearch 'EPG categoriÃen' genoemd.  "
+msgstr "De samenvatting van een programma kan extra informatie bevatten zoals 'Genre', 'Jaar',... binnen EPGsearch 'EPG categoriëen' genoemd.  "
 
 msgid "Help$The file epgsearchcats.conf specifies the search mode for this entry. One can search by text or by value. You can also edit a list of predefined values in this file that can be selected here."
 msgstr "Het bestand epgsearchcats.conf omschrijft de zoekinstellingen voor deze regel. Men kan zoeken op tekst of waarde. Er kan ook een lijst van voorgedefinieerde waarden geselecteerd en aangepast worden"
@@ -1147,7 +1141,7 @@ msgid "Compare date"
 msgstr "Vergelijk titel"
 
 msgid "Compare categories"
-msgstr "vergelijk categoriëen"
+msgstr "vergelijk categoriëen"
 
 msgid "VPS"
 msgstr "VPS"
diff --git a/po/nn_NO.po b/po/nn_NO.po
index 140eef0..237d28f 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -1,19 +1,19 @@
 # VDR plugin language source file.
 # Copyright (C) 2007 Klaus Schmidinger <kls at cadsoft.de>
 # This file is distributed under the same license as the VDR package.
-# Jørgen Tvedt <pjtvedt at online.no>, 2001
+# Jørgen Tvedt <pjtvedt at online.no>, 2001
 # Truls Slevigen <truls at slevigen.no>, 2002
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Truls Slevigen <truls at slevigen.no>\n"
 "Language-Team: Norwegian Nynorsk <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: nn\n"
 
@@ -96,12 +96,6 @@ msgstr ""
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -837,6 +829,9 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+msgid "Button$Orphaned"
+msgstr ""
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/pl_PL.po b/po/pl_PL.po
index d0fbeea..56c469a 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Michael Rakowski <mrak at gmx.de>\n"
 "Language-Team: Polish <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pl\n"
 
@@ -96,12 +96,6 @@ msgstr ""
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -837,6 +829,9 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+msgid "Button$Orphaned"
+msgstr ""
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 503b2f9..daa3d53 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Paulo Lopes <pmml at netvita.pt>\n"
 "Language-Team: Portuguese <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
 
@@ -95,12 +95,6 @@ msgstr ""
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -191,9 +185,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -421,7 +413,7 @@ msgid "Ignore below priority"
 msgstr ""
 
 msgid "Help$If a timer with priority below the given value will fail it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
-msgstr "Lorsqu'une programmation dont la prioritée est en dessous de la valeur définie, n'aboutit pas, alors elle est qualifiée de 'non-importante'. Seulement les conflits importants sont affichés à l'écran lors de la vérification automatique."
+msgstr "Lorsqu'une programmation dont la prioritée est en dessous de la valeur définie, n'aboutit pas, alors elle est qualifiée de 'non-importante'. Seulement les conflits importants sont affichés à l'écran lors de la vérification automatique."
 
 msgid "Ignore conflict duration less ... min."
 msgstr ""
@@ -501,7 +493,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -517,10 +509,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -836,6 +828,9 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+msgid "Button$Orphaned"
+msgstr ""
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/ro_RO.po b/po/ro_RO.po
index 3dd6115..3652bb1 100644
--- a/po/ro_RO.po
+++ b/po/ro_RO.po
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Lucian Muresan <lucianm at users.sourceforge.net>\n"
 "Language-Team: Romanian <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ro\n"
 
@@ -96,12 +96,6 @@ msgstr ""
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -329,7 +321,7 @@ msgid ""
 msgstr ""
 
 msgid "Button$Setup"
-msgstr "Configuraþie"
+msgstr "Configuraţie"
 
 msgid "Use search timers"
 msgstr ""
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -837,6 +829,9 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+msgid "Button$Orphaned"
+msgstr ""
+
 msgid "Button$by name"
 msgstr ""
 
@@ -940,7 +935,7 @@ msgid "Edit search"
 msgstr ""
 
 msgid "Record"
-msgstr "Înregistr."
+msgstr "ÃŽnregistr."
 
 msgid "Announce by OSD"
 msgstr ""
diff --git a/po/ru_RU.po b/po/ru_RU.po
index f9e3cdd..f58a09b 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Vyacheslav Dikonov <sdiconov at mail.ru>\n"
 "Language-Team: Russian <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-5\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ru\n"
 
@@ -95,12 +95,6 @@ msgstr ""
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -191,9 +185,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -328,7 +320,7 @@ msgid ""
 msgstr ""
 
 msgid "Button$Setup"
-msgstr "½ÐáâàÞÙÚÐ"
+msgstr "Настройка"
 
 msgid "Use search timers"
 msgstr ""
@@ -501,7 +493,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -517,10 +509,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -836,6 +828,9 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+msgid "Button$Orphaned"
+msgstr ""
+
 msgid "Button$by name"
 msgstr ""
 
@@ -939,7 +934,7 @@ msgid "Edit search"
 msgstr ""
 
 msgid "Record"
-msgstr "·ÐßØáì"
+msgstr "Запись"
 
 msgid "Announce by OSD"
 msgstr ""
diff --git a/po/sk_SK.po b/po/sk_SK.po
index a9556d9..005b29a 100644
--- a/po/sk_SK.po
+++ b/po/sk_SK.po
@@ -1,312 +1,302 @@
 # VDR plugin language source file.
 # Copyright (C) 2007 Klaus Schmidinger <kls at cadsoft.de>
 # This file is distributed under the same license as the VDR package.
-# Vladimír Bárta <vladimir.barta at k2atmitec.cz>, 2006
+# Vladimír Bárta <vladimir.barta at k2atmitec.cz>, 2006
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: epgsearch\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2009-11-02 09:40+0100\n"
 "Last-Translator: Milan Hrala <hrala.milan at gmail.com>\n"
 "Language-Team: Slovak <hrala.milan at gmail.com>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: sk\n"
 
 msgid "Channel groups"
-msgstr "Skupiny kanálov"
+msgstr "Skupiny kanálov"
 
 msgid "Button$Select"
-msgstr "Vybra»"
+msgstr "Vybrať"
 
 msgid "Channel group used by:"
-msgstr "Pou¾itá skupina kanálov:"
+msgstr "Použitá skupina kanálov:"
 
 msgid "Edit$Delete group?"
-msgstr "Vymaza» skupinu"
+msgstr "Vymazať skupinu"
 
 msgid "Edit channel group"
-msgstr "Upravi» skupinu kanálu"
+msgstr "Upraviť skupinu kanálu"
 
 msgid "Group name"
-msgstr "Názov skupiny"
+msgstr "Názov skupiny"
 
 msgid "Button$Invert selection"
-msgstr "Prevráti» výber"
+msgstr "Prevrátiť výber"
 
 msgid "Button$All yes"
-msgstr "Áno v¹etko"
+msgstr "Áno všetko"
 
 msgid "Button$All no"
-msgstr "V¹etko nie"
+msgstr "VÅ¡etko nie"
 
 msgid "Group name is empty!"
-msgstr "Meno skupiny je prázdne!"
+msgstr "Meno skupiny je prázdne!"
 
 msgid "Group name already exists!"
 msgstr "Meno skupiny existuje!"
 
 msgid "Direct access to epgsearch's conflict check menu"
-msgstr "Priamy prístup EPGsearch k menu konfliktov"
+msgstr "Priamy prístup EPGsearch k menu konfliktov"
 
 msgid "Timer conflicts"
-msgstr "Konflikty plánovaèa"
+msgstr "Konflikty plánovača"
 
 msgid "Conflict info in main menu"
-msgstr "Informácie o konfliktoch v hlav menu"
+msgstr "Informácie o konfliktoch v hlav menu"
 
 msgid "next"
-msgstr "ïal¹í"
+msgstr "ďalší"
 
 #, c-format
 msgid "%d timer conflict(s)! First at %s. Show them?"
-msgstr "%d  konflikt(y) plánovania! Prvý o %s. Ukáza»"
+msgstr "%d  konflikt(y) plánovania! Prvý o %s. Ukázať"
 
 msgid "search the EPG for repeats and more"
-msgstr "Prehµada» televízny program, èi nebude repríza"
+msgstr "Prehľadať televízny program, či nebude repríza"
 
 msgid "Program guide"
-msgstr "Programový sprievodca"
+msgstr "Programový sprievodca"
 
 #, fuzzy
 msgid "search timer update running"
-msgstr "Aktualizácia vyhµadávania plánov skonèená!"
+msgstr "Aktualizácia vyhľadávania plánov skončená!"
 
 msgid "Direct access to epgsearch's search menu"
-msgstr "Priamy prístup k epgsearch cez vyhµadávacie menu"
+msgstr "Priamy prístup k epgsearch cez vyhľadávacie menu"
 
 msgid "Search"
-msgstr "Håada»"
+msgstr "Hĺadať"
 
 msgid "EpgSearch-Search in main menu"
-msgstr "EpgSearch-Vyhµadávanie v hlavnom menu"
+msgstr "EpgSearch-Vyhľadávanie v hlavnom menu"
 
 msgid "Button$Help"
 msgstr "Pomoc"
 
 msgid "Standard"
-msgstr "be¾ne"
+msgstr "bežne"
 
 msgid "Button$Commands"
-msgstr "Príkazy"
+msgstr "Príkazy"
 
 msgid "Button$Search"
-msgstr "Hµada»"
-
-msgid "pipes"
-msgstr "vedenie"
-
-msgid "graphical"
-msgstr "grafický"
+msgstr "Hľadať"
 
 msgid "never"
 msgstr "nikdy"
 
 msgid "always"
-msgstr "v¾dy"
+msgstr "vždy"
 
 msgid "smart"
-msgstr "chytrý"
+msgstr "chytrý"
 
 msgid "before user-def. times"
-msgstr "pred u¾ívateµ-def. plánu"
+msgstr "pred užívateľ-def. plánu"
 
 msgid "after user-def. times"
-msgstr "po u¾ívateµ-def. plánu"
+msgstr "po užívateľ-def. plánu"
 
 msgid "before 'next'"
-msgstr "pred 'ïal¹ím'"
+msgstr "pred 'ďalším'"
 
 msgid "General"
-msgstr "Hlavné"
+msgstr "Hlavné"
 
 msgid "EPG menus"
 msgstr "EPG menu"
 
 msgid "User-defined EPG times"
-msgstr "U¾ívateµom-urèený EPG plán"
+msgstr "Užívateľom-určený EPG plán"
 
 msgid "Timer programming"
-msgstr "Plán programovania"
+msgstr "Plán programovania"
 
 msgid "Search and search timers"
-msgstr "Hµada» a prehµada» plány"
+msgstr "Hľadať a prehľadať plány"
 
 msgid "Timer conflict checking"
-msgstr "Kontrola konfliktov plánu"
+msgstr "Kontrola konfliktov plánu"
 
 msgid "Email notification"
-msgstr "Oznámenie na Email"
+msgstr "Oznámenie na Email"
 
 msgid "Hide main menu entry"
-msgstr "Skry» v hlavnom menu"
+msgstr "Skryť v hlavnom menu"
 
 msgid "Help$Hides the main menu entry and may be useful if this plugin is used to replace the original 'Schedule' entry."
-msgstr "Skryje v hlavnom menu polo¾ku. Mô¾e to by» u¾itoèné, ak tento modul má nahradi» pôvodný 'Program' ."
+msgstr "Skryje v hlavnom menu položku. Môže to byť užitočné, ak tento modul má nahradiť pôvodný 'Program' ."
 
 msgid "Main menu entry"
-msgstr "Hlavné menu"
+msgstr "Hlavné menu"
 
 msgid "Help$The name of the main menu entry which defaults to 'Programm guide'."
-msgstr "meno polo¾ky v hlavnom menu , ktorá je nastavená na 'Programový sprievodca'."
+msgstr "meno položky v hlavnom menu , ktorá je nastavená na 'Programový sprievodca'."
 
 msgid "Replace original schedule"
-msgstr "Nahradi» pôvodný harmonogram"
+msgstr "Nahradiť pôvodný harmonogram"
 
 msgid "Help$When VDR is patched to allow this plugin to replace the original 'Schedule' entry, you can de/activate this replacement here."
-msgstr "Keï je VDR opravený, mô¾ete aktivova» výmenu televízneho programu tu, aby tento modul nahradil pôvodný televízny program."
+msgstr "Keď je VDR opravený, môžete aktivovať výmenu televízneho programu tu, aby tento modul nahradil pôvodný televízny program."
 
 msgid "Start menu"
-msgstr "©tart menu"
+msgstr "Å tart menu"
 
 msgid "Help$Choose between 'Overview - Now' and 'Schedule' as start menu when this plugin is called."
-msgstr "Keï sa spustí tento modul, tak si vyberte medzi 'Prehµad - teraz' a 'Televíznym programom' v ©tart menu."
+msgstr "Keď sa spustí tento modul, tak si vyberte medzi 'Prehľad - teraz' a 'Televíznym programom' v Štart menu."
 
 msgid "Ok key"
-msgstr "Ok klávesa"
+msgstr "Ok klávesa"
 
 msgid ""
 "Help$Choose here the behaviour of key 'Ok'. You can use it to display the summary or to switch to the corresponding channel.\n"
 "Note: the functionality of key 'blue' (Switch/Info/Search) depends on this setting."
 msgstr ""
-"Tu si vyberte správanie klávesy 'Ok'. Mô¾ete ju pou¾i» na zobrazenie súhrnu alebo prepnú» na zodpovedajúci kanál.\n"
-"Poznámka: funkcia  'modrej' klávesy (Prepnú» / Informácie / Hµada») závisí na nastavení."
+"Tu si vyberte správanie klávesy 'Ok'. Môžete ju použiť na zobrazenie súhrnu alebo prepnúť na zodpovedajúci kanál.\n"
+"Poznámka: funkcia  'modrej' klávesy (Prepnúť / Informácie / Hľadať) závisí na nastavení."
 
 msgid "Red key"
-msgstr "Èervená klávesa"
+msgstr "Červená klávesa"
 
 msgid ""
 "Help$Choose which standard function ('Record' or 'Commands') you like to have on the red key.\n"
 "(Can be toggled with key '0')"
 msgstr ""
-"Vyberte si, ktoré ¹tandardné funkcie ( 'Nahrávky' alebo 'príkazy'), chcete ma» pod èerveným tlaèítkom.\n"
-"(Mo¾no zapína» s klávesou '0')"
+"Vyberte si, ktoré štandardné funkcie ( 'Nahrávky' alebo 'príkazy'), chcete mať pod červeným tlačítkom.\n"
+"(Možno zapínať s klávesou '0')"
 
 msgid "Blue key"
-msgstr "Modrá klávesa"
+msgstr "Modrá klávesa"
 
 msgid ""
 "Help$Choose which standard function ('Switch'/'Info' or 'Search') you like to have on the blue key.\n"
 "(Can be toggled with key '0')"
 msgstr ""
-"Vyberte si, ktoré ¹tandardné funkcie ( 'Nahrávky' alebo 'príkazy'), chcete ma» pod modrým tlaèítkom.\n"
-"(Mo¾no zapína» s klávesou '0')"
+"Vyberte si, ktoré štandardné funkcie ( 'Nahrávky' alebo 'príkazy'), chcete mať pod modrým tlačítkom.\n"
+"(Možno zapínať s klávesou '0')"
 
 msgid "Show progress in 'Now'"
-msgstr "Zobrazi» proces v 'Now'"
+msgstr "Zobraziť proces v 'Now'"
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
-msgstr ""
-"Ukazuje priebeh v 'Prehµad - teraz', ktorý informuje o zostávajúcom èase aktuálnej udalosti. \n"
-"V závislosti na zvolenej téme si mô¾ete vybra» medzi 'textovým' alebo 'grafickým' a dosta» tak èo najlep¹í vzhµad.\t\t"
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
+msgstr "Ukazuje priebeh v 'Prehľad - teraz', ktorý informuje o zostávajúcom čase aktuálnej udalosti."
 
 msgid "Show channel numbers"
-msgstr "Zobrazi» èíslo kanálu"
+msgstr "Zobraziť číslo kanálu"
 
 msgid ""
 "Help$Display channel numbers in 'Overview - Now'.\n"
 "\n"
 "(To completely define your own menu look please inspect the MANUAL)"
 msgstr ""
-"Zobrazenie èísla kanálov v 'Prehµad - Teraz'. \n"
+"Zobrazenie čísla kanálov v 'Prehľad - Teraz'. \n"
 "\n"
-"(Ak chcete kompletne definova» vlastné menu ,prosím skontrolujte MANUÁL)"
+"(Ak chcete kompletne definovať vlastné menu ,prosím skontrolujte MANUÁL)"
 
 msgid "Show channel separators"
-msgstr "Oddeli» zobrazené kanály"
+msgstr "Oddeliť zobrazené kanály"
 
 msgid "Help$Display VDR channel groups as separators between your channels in 'Overview - Now'."
-msgstr "Zobrazi» skupiny VDR kanálov s oddeµovaèmi v 'Prehµad - Teraz'."
+msgstr "Zobraziť skupiny VDR kanálov s oddeľovačmi v 'Prehľad - Teraz'."
 
 msgid "Show day separators"
-msgstr "Zobrazi» oddeµovaèe dní"
+msgstr "Zobraziť oddeľovače dní"
 
 msgid "Help$Display a separator line at day break in 'Schedule'."
-msgstr "Zobrazi» deliace èiary cez dennú prestávku v 'Plánovaèi."
+msgstr "Zobraziť deliace čiary cez dennú prestávku v 'Plánovači."
 
 msgid "Show radio channels"
-msgstr "Zobrazi» rádio kanály"
+msgstr "Zobraziť rádio kanály"
 
 msgid "Help$Show also radio channels."
-msgstr "Zobrazi» tie¾ rozhlasové kanály"
+msgstr "Zobraziť tiež rozhlasové kanály"
 
 msgid "Limit channels from 1 to"
-msgstr "Limit kanálov od 1 do"
+msgstr "Limit kanálov od 1 do"
 
 msgid "Help$If you have a large channel set you can speed up things when you limit the displayed channels with this setting. Use '0' to disable the limit."
-msgstr "Ak máte veµa nastavených kanálov, mô¾ete urýchli» vec tak, ¾e obmedzíte zobrazené kanály s týmto nastavením. Pou¾ite '0 'pre vypnutie limitu."
+msgstr "Ak máte veľa nastavených kanálov, môžete urýchliť vec tak, že obmedzíte zobrazené kanály s týmto nastavením. Použite '0 'pre vypnutie limitu."
 
 msgid "'One press' timer creation"
-msgstr "Raz stlaèi» vytvorenie plánu"
+msgstr "Raz stlačiť vytvorenie plánu"
 
 msgid "Help$When a timer is created with 'Record' you can choose between an immediate creation of the timer or the display of the timer edit menu."
-msgstr "Keï je èasovaè vytvorený s 'Nahra»', tak si mô¾ete vybra» medzi okam¾itým vytvorením èasovaèa alebo zobrazenie menu s úpravami èasovaèa."
+msgstr "Keď je časovač vytvorený s 'Nahrať', tak si môžete vybrať medzi okamžitým vytvorením časovača alebo zobrazenie menu s úpravami časovača."
 
 msgid "Show channels without EPG"
-msgstr "Zobrazi» kanály bez EPG"
+msgstr "Zobraziť kanály bez EPG"
 
 msgid "Help$Choose 'yes' here if you want to display channels without EPG in 'Overview - Now'. 'Ok' on these entries switches the channel."
-msgstr "Vyberte 'áno', ak chcete zobrazi» kanály bez EPG v 'Prehµad - Teraz'. 'Ok' na tejto polo¾ieke prepína kanál."
+msgstr "Vyberte 'áno', ak chcete zobraziť kanály bez EPG v 'Prehľad - Teraz'. 'Ok' na tejto položieke prepína kanál."
 
 msgid "Time interval for FRew/FFwd [min]"
-msgstr "Èasový úsek pre FRew/FFwd [min]"
+msgstr "Časový úsek pre FRew/FFwd [min]"
 
 msgid ""
 "Help$Choose here the time interval which should be used for jumping through the EPG by pressing FRew/FFwd.\n"
 "\n"
 "(If you don't have those keys, you can toggle to this functionality pressing '0' and get '<<' and '>>' on the keys green and yellow)"
 msgstr ""
-"Tu si vyberte èasový interval, ktorý by mal by» pou¾itý pre skákanie cez EPG stlaèením FRew / FFwd.\n"
+"Tu si vyberte časový interval, ktorý by mal byť použitý pre skákanie cez EPG stlačením FRew / FFwd.\n"
 "\n"
-"(Ak nemáte tie klávesy, mô¾ete prepína» na túto funkciu stlaèením '0' a  '<<' alebo '>>'  ' klávesy zelenej a ¾ltej)search"
+"(Ak nemáte tie klávesy, môžete prepínať na túto funkciu stlačením '0' a  '<<' alebo '>>'  ' klávesy zelenej a žltej)search"
 
 msgid "Toggle Green/Yellow"
-msgstr "Prepínaè zelenej/¾ltej"
+msgstr "Prepínač zelenej/žltej"
 
 msgid "Help$Specify if green and yellow shall also be switched when pressing '0'."
-msgstr "Uveïte, èi zelenou a ¾ltou, sa má tie¾ prepína» pri stlaèení '0 '."
+msgstr "Uveďte, či zelenou a žltou, sa má tiež prepínať pri stlačení '0 '."
 
 msgid "Show favorites menu"
-msgstr "Zobrazi» obµúbené menu"
+msgstr "Zobraziť obľúbené menu"
 
 msgid ""
 "Help$A favorites menu can display a list of your favorite broadcasts. Enable this if you want an additional menu besides 'Now' and 'Next'\n"
 "Any search can be used as a favorite. You only have to set the option 'Use in favorites menu' when editing a search."
 msgstr ""
-"Obµúbené polo¾ky menu je mo¾né zobrazi» zoznam obµúbených staníc. Povoli», ak chcete ïal¹ie ponuky vedµa 'teraz' a 'Nasleduje' \n"
-"Akékoµvek vyhµadávania mo¾no pou¾i» ako obµúbené. Musíte len nastavi» voµbu 'Pou¾i» do obµúbených polo¾iek menu' pri úpravách vyhµadávania."
+"Obľúbené položky menu je možné zobraziť zoznam obľúbených staníc. Povoliť, ak chcete ďalšie ponuky vedľa 'teraz' a 'Nasleduje' \n"
+"Akékoľvek vyhľadávania možno použiť ako obľúbené. Musíte len nastaviť voľbu 'Použiť do obľúbených položiek menu' pri úpravách vyhľadávania."
 
 msgid "for the next ... hours"
-msgstr "Za ïal¹ie ... hodiny"
+msgstr "Za ďalšie ... hodiny"
 
 msgid "Help$This value controls the timespan used to display your favorites."
-msgstr "Táto hodnota urèuje èasové rozpätie pre zobrazenie obµúbených."
+msgstr "Táto hodnota určuje časové rozpätie pre zobrazenie obľúbených."
 
 msgid "Use user-defined time"
-msgstr "Pou¾i» u¾ívateµom definované plánovanie"
+msgstr "Použiť užívateľom definované plánovanie"
 
 msgid "Help$Besides 'Now' and 'Next' you can specify up to 4 other times in the EPG which can be used by repeatedly pressing the green key, e.g. 'prime time', 'late night',..."
-msgstr "Okrem 'teraz' a 'Nasleduje' mô¾ete zada» a¾ 4 iné èasy v EPG, ktoré mô¾u by» pou¾ité po opakovanom stlaèení zeleného tlaèitka, napr 'hlavnom vysielacom èase', 'neskoro v noci',..."
+msgstr "Okrem 'teraz' a 'Nasleduje' môžete zadať až 4 iné časy v EPG, ktoré môžu byť použité po opakovanom stlačení zeleného tlačitka, napr 'hlavnom vysielacom čase', 'neskoro v noci',..."
 
 msgid "Description"
 msgstr "Popis"
 
 msgid "Help$This is the description for your user-defined time as it will appear as label on the green button."
-msgstr "To to je znázornené pre u¾ívateµom-stanovenej lehote(èasu), ako bude vyzera» oznaèenie  na zelenom tlaèítku."
+msgstr "To to je znázornené pre užívateľom-stanovenej lehote(času), ako bude vyzerať označenie  na zelenom tlačítku."
 
 msgid "Time"
-msgstr "Èas"
+msgstr "ÄŒas"
 
 msgid "Help$Specify the user-defined time here in 'HH:MM'."
-msgstr "Presne napí¹te èas vo formáte 'HH:MM'."
+msgstr "Presne napíšte čas vo formáte 'HH:MM'."
 
 msgid "Use VDR's timer edit menu"
-msgstr "Pou¾i» menu úpravy VDR èasovaèa"
+msgstr "Použiť menu úpravy VDR časovača"
 
 msgid ""
 "Help$This plugin has it's own timer edit menu extending the original one with some extra functionality like\n"
@@ -315,20 +305,20 @@ msgid ""
 "- adding an episode name\n"
 "- support for EPG variables (see MANUAL)"
 msgstr ""
-"Tento modul je roz¹írením pôvodného menu s úpravami vysielacieho èasu  a pridáva niektoré nové funkcie, ako je \n"
-"- Pridávanie polo¾kou v adresári \n"
-"- Urèenie dòa v tý¾dni, ak sa opakujú vysielacie èasy \n"
-"- Pridanie mena epizódy \n"
-"- Podporu pre menlivé EPG (pozri manuál)"
+"Tento modul je rozšírením pôvodného menu s úpravami vysielacieho času  a pridáva niektoré nové funkcie, ako je \n"
+"- Pridávanie položkou v adresári \n"
+"- Určenie dňa v týždni, ak sa opakujú vysielacie časy \n"
+"- Pridanie mena epizódy \n"
+"- Podporu pre menlivé EPG (pozri manuál)"
 
 msgid "Default recording dir"
-msgstr "Predvolený adresár záznamov"
+msgstr "Predvolený adresár záznamov"
 
 msgid "Help$When creating a timer you can specify here a default recording directory."
-msgstr "Tu mô¾ete zada» predvolený adresár záznamov ,ktorý sa pou¾ije ak vytvárate nový plán nahrávania,"
+msgstr "Tu môžete zadať predvolený adresár záznamov ,ktorý sa použije ak vytvárate nový plán nahrávania,"
 
 msgid "Add episode to manual timers"
-msgstr "Prida» epizódy do ruèného èasovaèa"
+msgstr "Pridať epizódy do ručného časovača"
 
 msgid ""
 "Help$If you create a timer for a series, you can automatically add the episode name.\n"
@@ -337,14 +327,14 @@ msgid ""
 "- always: always add episode name if present\n"
 "- smart: add only if event lasts less than 80 mins."
 msgstr ""
-"Ak vytvoríte plán nahrávania  pre sériu, mô¾ete automaticky prida» názov epizódy. \n"
+"Ak vytvoríte plán nahrávania  pre sériu, môžete automaticky pridať názov epizódy. \n"
 "\n"
 "- Nikdy: nie okrem \n"
-"- V¾dy: v¾dy prida» meno epizódy ak je prítomné \n"
-"- Inteligentne :prida» iba ak udalos» trvá menej ako 80 minút."
+"- Vždy: vždy pridať meno epizódy ak je prítomné \n"
+"- Inteligentne :pridať iba ak udalosť trvá menej ako 80 minút."
 
 msgid "Default timer check method"
-msgstr "Predvolený postup kontroly plánov"
+msgstr "Predvolený postup kontroly plánov"
 
 msgid ""
 "Help$Manual timers can be checked for EPG changes. Here you can setup the default check method for each channel. Choose between\n"
@@ -353,175 +343,175 @@ msgid ""
 "- by event ID: checks by an event ID supplied by the channel provider.\n"
 "- by channel and time: check by the duration match."
 msgstr ""
-"Manuálne plány mô¾u by» kontrolované na zmeny EPG. Tu si mô¾ete nastavi» predvolený spôsob kontroly pre ka¾dý kanál. Vyberte si medzi \n"
+"Manuálne plány môžu byť kontrolované na zmeny EPG. Tu si môžete nastaviť predvolený spôsob kontroly pre každý kanál. Vyberte si medzi \n"
 "\n"
-"- nekontrolova» \n"
-" - Podµa ID udalosti: kontroly ID udalosti poskytované poskytovateµom kanála. \n"
-"- Podµa  kanálu a èasu: kontrola då¾ky vysielaného programu."
+"- nekontrolovať \n"
+" - Podľa ID udalosti: kontroly ID udalosti poskytované poskytovateľom kanála. \n"
+"- Podľa  kanálu a času: kontrola dĺžky vysielaného programu."
 
 msgid "Button$Setup"
 msgstr "Nastavenie"
 
 msgid "Use search timers"
-msgstr "Pou¾i» vyhµadávanie èasovaèov"
+msgstr "Použiť vyhľadávanie časovačov"
 
 msgid "Help$'Search timers' can be used to automatically create timers for events that match your search criterions."
-msgstr "Vyhµadávanie vysielacieho èasu 'mo¾no pou¾i» na automatické vytváranie plánov nahrávania, ktoré zodpovedajú vá¹mu hµadanému kritériu."
+msgstr "Vyhľadávanie vysielacieho času 'možno použiť na automatické vytváranie plánov nahrávania, ktoré zodpovedajú vášmu hľadanému kritériu."
 
 msgid "  Update interval [min]"
-msgstr "  obnovovací interval [min]"
+msgstr "  obnovovací interval [min]"
 
 msgid "Help$Specify here the time intervall to be used when searching for events in the background."
-msgstr "Zvolte ako èasto sa majú na pozadí hµada» udalosti."
+msgstr "Zvolte ako často sa majú na pozadí hľadať udalosti."
 
 msgid "  SVDRP port"
 msgstr "  SVDRP port"
 
 msgid "Help$Programming of new timers or timer changes is done with SVDRP. The default value should be correct, so change it only if you know what you are doing."
-msgstr "Programovanie nových plánov alebo úpravy plánov sa vykonávajú so SVDRP. Predvolená hodnota by mala by» v poriadku, tak¾e ho zmente len vtedy, ak viete, èo robíte."
+msgstr "Programovanie nových plánov alebo úpravy plánov sa vykonávajú so SVDRP. Predvolená hodnota by mala byť v poriadku, takže ho zmente len vtedy, ak viete, čo robíte."
 
 msgid "Help$Specify here the default priority of timers created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Uveïte predvolenú prioritu plánov nahrávania vytvorených s týmto modulom. Túto hodnotu mo¾no upravi» aj pre ka¾dé samostatné hµadanie."
+msgstr "Uveďte predvolenú prioritu plánov nahrávania vytvorených s týmto modulom. Túto hodnotu možno upraviť aj pre každé samostatné hľadanie."
 
 msgid "Help$Specify here the default lifetime of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Uveïte predvolenú ¾ivotnos» plánov / nahrávky vytvorených s týmto modulom. Túto hodnotu mo¾no upravi» aj pre ka¾dé samostatné hµadanie."
+msgstr "Uveďte predvolenú životnosť plánov / nahrávky vytvorených s týmto modulom. Túto hodnotu možno upraviť aj pre každé samostatné hľadanie."
 
 msgid "Help$Specify here the default start recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Uveïte predvolený nadbytok úvodného záznamu plánu / nahrávky vytvoreným s týmto modulom. Túto hodnotu mo¾no  upravi» aj pre ka¾dé samostatné hµadanie."
+msgstr "Uveďte predvolený nadbytok úvodného záznamu plánu / nahrávky vytvoreným s týmto modulom. Túto hodnotu možno  upraviť aj pre každé samostatné hľadanie."
 
 msgid "Help$Specify here the default stop recording margin of timers/recordings created with this plugin. This value can also be adjusted for each search itself."
-msgstr "Uveïte predvolený nadbytok pri ukonèení nahrávania plánu / nahrávky vytvoreným s týmto modulom. Túto hodnotu mo¾no upravi» aj pre ka¾dé samostatné hµadanie."
+msgstr "Uveďte predvolený nadbytok pri ukončení nahrávania plánu / nahrávky vytvoreným s týmto modulom. Túto hodnotu možno upraviť aj pre každé samostatné hľadanie."
 
 msgid "No announcements when replaying"
-msgstr "Neoznamova» pri prehrávaní"
+msgstr "Neoznamovať pri prehrávaní"
 
 msgid "Help$Set this to 'yes' if you don't like to get any announcements of broadcasts if you currently replay anything."
-msgstr "Ak nieèo prehrávate a nepáèi sa vám oznamovanie o vysielaní, tak nastavte 'áno'"
+msgstr "Ak niečo prehrávate a nepáči sa vám oznamovanie o vysielaní, tak nastavte 'áno'"
 
 msgid "Recreate timers after deletion"
-msgstr "Znova vytvori» plán po vymazaní"
+msgstr "Znova vytvoriť plán po vymazaní"
 
 msgid "Help$Set this to 'yes' if you want timers to be recreated with the next search timer update after deleting them."
-msgstr "Ak zma¾ete plán nahrávania a nechcete aby bol znova vytvorený po automatickom obnovení vyhµadávaèa plánov, tak nastavte 'áno'"
+msgstr "Ak zmažete plán nahrávania a nechcete aby bol znova vytvorený po automatickom obnovení vyhľadávača plánov, tak nastavte 'áno'"
 
 msgid "Check if EPG exists for ... [h]"
 msgstr ""
 
 #, fuzzy
 msgid "Help$Specify how many hours of future EPG there should be and get warned else after a search timer update."
-msgstr "Ak kontrola konfliktov by mala by» vykonávaná pri ka¾dom obnovení vyhµadávaèa plánov, tak nastavte 'áno'"
+msgstr "Ak kontrola konfliktov by mala byť vykonávaná pri každom obnovení vyhľadávača plánov, tak nastavte 'áno'"
 
 #, fuzzy
 msgid "Warn by OSD"
-msgstr "Iba oznámi»"
+msgstr "Iba oznámiť"
 
 #, fuzzy
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check via OSD."
-msgstr "Nastavte áno ak potrebujete oznamova» konflikty plánu na mail"
+msgstr "Nastavte áno ak potrebujete oznamovať konflikty plánu na mail"
 
 #, fuzzy
 msgid "Warn by mail"
-msgstr "Iba oznámi»"
+msgstr "Iba oznámiť"
 
 #, fuzzy
 msgid "Help$Set this to 'yes' if you want get warnings from the EPG check by mail."
-msgstr "Nastavte Áno, ak vá¹ úèet potrebuje overenie na poslanie mailov"
+msgstr "Nastavte Áno, ak váš účet potrebuje overenie na poslanie mailov"
 
 #, fuzzy
 msgid "Channel group to check"
-msgstr "Skupina kanálov"
+msgstr "Skupina kanálov"
 
 #, fuzzy
 msgid "Help$Specify the channel group to check."
-msgstr "Uveïte meno ¹ablony"
+msgstr "Uveďte meno šablony"
 
 msgid "Ignore PayTV channels"
-msgstr "Nev¹íma» si PayTV kanály"
+msgstr "Nevšímať si PayTV kanály"
 
 msgid "Help$Set this to 'yes' if don't want to see events on PayTV channels when searching for repeats."
-msgstr "Ak nepotrebujete zobrazi» udalosti na kanáloch PayTV pri opakovanom vyhµadávaní, nastavte 'áno'"
+msgstr "Ak nepotrebujete zobraziť udalosti na kanáloch PayTV pri opakovanom vyhľadávaní, nastavte 'áno'"
 
 msgid "Search templates"
-msgstr "Vyhµadávanie ¹ablóny"
+msgstr "Vyhľadávanie šablóny"
 
 msgid "Help$Here you can setup templates for your searches."
-msgstr "Tu si mô¾ete nastavi» ¹ablóny pre vyhµadávanie."
+msgstr "Tu si môžete nastaviť šablóny pre vyhľadávanie."
 
 msgid "Blacklists"
-msgstr "Èierny zoznam"
+msgstr "ÄŒierny zoznam"
 
 msgid "Help$Here you can setup blacklists which can be used within a search to exclude events you don't like."
-msgstr "Tu sa nastavuje èierny zoznam, ktorý mô¾e by» pou¾itý v rámci hµadania a tak vylúèi» udalosti, ktoré sa vám nepáèia."
+msgstr "Tu sa nastavuje čierny zoznam, ktorý môže byť použitý v rámci hľadania a tak vylúčiť udalosti, ktoré sa vám nepáčia."
 
 msgid "Help$Here you can setup channel groups which can be used within a search. These are different to VDR channel groups and represent a set of arbitrary channels, e.g. 'FreeTV'."
-msgstr "Tu si mô¾ete nastavi» skupinu kanálov, ktoré majú by» pou¾ité v rámci hµadania. Tie sú odli¹né od kanálov VDR skupín a predstavujú súbor µubovoµných kanálov, napr 'volne ¹íriteµné '."
+msgstr "Tu si môžete nastaviť skupinu kanálov, ktoré majú byť použité v rámci hľadania. Tie sú odlišné od kanálov VDR skupín a predstavujú súbor ľubovoľných kanálov, napr 'volne šíriteľné '."
 
 msgid "Ignore below priority"
-msgstr "nev¹íma» si prioritu"
+msgstr "nevšímať si prioritu"
 
 msgid "Help$If a timer with priority below the given value will fail it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
-msgstr "Ak je plán nahrávania s prioritou pod danú hodnotu dôjde k zlyhaniu, preto¾e nebude klasifikovaný ako dôle¾itý. Iba dôle¾ité konflikty vyvolávajú OSD správy."
+msgstr "Ak je plán nahrávania s prioritou pod danú hodnotu dôjde k zlyhaniu, pretože nebude klasifikovaný ako dôležitý. Iba dôležité konflikty vyvolávajú OSD správy."
 
 msgid "Ignore conflict duration less ... min."
-msgstr "Nev¹íma» si konflikty men¹ie ako ... min"
+msgstr "Nevšímať si konflikty menšie ako ... min"
 
 msgid "Help$If a conflicts duration is less then the given number of minutes it will not be classified as important. Only important conflicts will produce an OSD message about the conflict after an automatic conflict check."
-msgstr "Ak doba konfliktu pretrváva menej ako daný poèet minút, nebude konflikt bra» ako dôle¾itý. Iba dôle¾ité konflikty sa automaticky zobrazia ako OSD správa."
+msgstr "Ak doba konfliktu pretrváva menej ako daný počet minút, nebude konflikt brať ako dôležitý. Iba dôležité konflikty sa automaticky zobrazia ako OSD správa."
 
 msgid "Only check within next ... days"
-msgstr "Skontrolova» iba do budúcich ... dní"
+msgstr "Skontrolovať iba do budúcich ... dní"
 
 msgid "Help$This value reduces the conflict check to the given range of days. All other conflicts are classified as 'not yet important'."
-msgstr "Táto hodnota zni¾uje konflikty podµa daného rozsahu dní. V¹etky ostatné konflikty sú klasifikované ako 'e¹te dôle¾ité'."
+msgstr "Táto hodnota znižuje konflikty podľa daného rozsahu dní. Všetky ostatné konflikty sú klasifikované ako 'ešte dôležité'."
 
 msgid "--- Automatic checking ---"
-msgstr "--- Automatická kontrola ---"
+msgstr "--- Automatická kontrola ---"
 
 msgid "After each timer programming"
-msgstr "Po ka¾dom programovaní èasovaèa"
+msgstr "Po každom programovaní časovača"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each manual timer programming. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if this timer is involved in any conflict."
-msgstr "Ak pri ruènom programovaní plánu nastane konflikt, tak vám vypí¹e okam¾itú správu o konflikte. Správa sa zobrazí v prípade ak plán je zapojený do akéhokoµvek konfliktu. Ak danú funkciu chcete pou¾i» zvolte 'áno'"
+msgstr "Ak pri ručnom programovaní plánu nastane konflikt, tak vám vypíše okamžitú správu o konflikte. Správa sa zobrazí v prípade ak plán je zapojený do akéhokoľvek konfliktu. Ak danú funkciu chcete použiť zvolte 'áno'"
 
 msgid "When a recording starts"
-msgstr "Pri nahrávaní sa spustí"
+msgstr "Pri nahrávaní sa spustí"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed when a recording starts. In the case of a conflict you get immediately a message that informs you about it. The message is only displayed if the conflict is within the next 2 hours."
-msgstr "Nastavte 'áno' ak by mala by» kontrola konfliktov vykonaná pri spustiní nahrávania. V prípade konfliktu vám po¹le okam¾ite správu. Správa sa zobrazí v prípade konfliktu iba poèas 2 hodín."
+msgstr "Nastavte 'áno' ak by mala byť kontrola konfliktov vykonaná pri spustiní nahrávania. V prípade konfliktu vám pošle okamžite správu. Správa sa zobrazí v prípade konfliktu iba počas 2 hodín."
 
 msgid "After each search timer update"
-msgstr "Po ka¾dom hµadaní plánu zmenené"
+msgstr "Po každom hľadaní plánu zmenené"
 
 msgid "Help$Set this to 'yes' if the conflict check should be performed after each search timer update."
-msgstr "Ak kontrola konfliktov by mala by» vykonávaná pri ka¾dom obnovení vyhµadávaèa plánov, tak nastavte 'áno'"
+msgstr "Ak kontrola konfliktov by mala byť vykonávaná pri každom obnovení vyhľadávača plánov, tak nastavte 'áno'"
 
 msgid "every ... minutes"
-msgstr "ka¾dých ... minút"
+msgstr "každých ... minút"
 
 msgid ""
 "Help$Specify here the time intervall to be used for an automatic conflict check in the background.\n"
 "('0' disables an automatic check)"
 msgstr ""
-"Zvolte ako èasto majú by» pou¾ité automatické kontroly konfliktov na pozadí. \n"
-"('0 'Zaká¾e automatické kontroly)"
+"Zvolte ako často majú byť použité automatické kontroly konfliktov na pozadí. \n"
+"('0 'Zakáže automatické kontroly)"
 
 msgid "if conflicts within next ... minutes"
-msgstr "ak je v rozpore s ïal¹ou ... minútou"
+msgstr "ak je v rozpore s ďalšou ... minútou"
 
 msgid "Help$If the next conflict will appear in the given number of minutes you can specify here a shorter check intervall to get more OSD notifications about it."
-msgstr "Ak  sa objaví ïal¹í konflikt v danom poète minút, mô¾ete zvoli» krat¹í interval kontroly a tak získa» viac OSD oznámení. "
+msgstr "Ak  sa objaví ďalší konflikt v danom počte minút, môžete zvoliť kratší interval kontroly a tak získať viac OSD oznámení. "
 
 msgid "Avoid notification when replaying"
-msgstr "Vyhnú» sa oznámeniam pri prehrávaní"
+msgstr "Vyhnúť sa oznámeniam pri prehrávaní"
 
 msgid "Help$Set this to 'yes' if the don't want to get OSD messages about conflicts if you currently replay something. Nevertheless messages will be displayed if the first upcoming conflict is within the next 2 hours."
-msgstr "Nastavte 'áno', ak nechcete dostáva» OSD správu o konfliktoch, v prípade,¾e nieèo prehrávate. Av¹ak, správy sa zobrazia v prípade prvého nadchádzajúceho konfliktu v nasledujúcich 2 hodinách."
+msgstr "Nastavte 'áno', ak nechcete dostávať OSD správu o konfliktoch, v prípade,že niečo prehrávate. Avšak, správy sa zobrazia v prípade prvého nadchádzajúceho konfliktu v nasledujúcich 2 hodinách."
 
 msgid "Search timer notification"
-msgstr "Hlásenie vyhµadávania èasovaèa"
+msgstr "Hlásenie vyhľadávania časovača"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the search timers that where programmed automatically in the background."
-msgstr "Nastavte áno ak potrebujete oznamova» automaticky vyhµadané plány na mail"
+msgstr "Nastavte áno ak potrebujete oznamovať automaticky vyhľadané plány na mail"
 
 msgid "Time between mails [h]"
 msgstr ""
@@ -534,19 +524,19 @@ msgid ""
 msgstr ""
 
 msgid "Timer conflict notification"
-msgstr "Oznámi» konflikt plánov"
+msgstr "Oznámiť konflikt plánov"
 
 msgid "Help$Set this to 'yes' if you want to get an email notification about the timer conflicts."
-msgstr "Nastavte áno ak potrebujete oznamova» konflikty plánu na mail"
+msgstr "Nastavte áno ak potrebujete oznamovať konflikty plánu na mail"
 
 msgid "Send to"
-msgstr "Posla» no"
+msgstr "Poslať no"
 
-msgid "Help$Specify the email adress where notifications should be sent to."
-msgstr "Rozpí¹te email adresu, na ktorú by sa mali posiela» oznámenia."
+msgid "Help$Specify the email address where notifications should be sent to."
+msgstr "Rozpíšte email adresu, na ktorú by sa mali posielať oznámenia."
 
 msgid "Mail method"
-msgstr "Mailová metóda"
+msgstr "Mailová metóda"
 
 msgid ""
 "Help$Specify here the method to use when sending mails.\n"
@@ -554,146 +544,145 @@ msgid ""
 " - 'sendmail': requires a properly configured email system\n"
 " - 'SendEmail.pl': simple script for mail delivery"
 msgstr ""
-"Zvolte pou¾itý spôsob  posielania mailov.\n"
+"Zvolte použitý spôsob  posielania mailov.\n"
 "Vyberte medzi\n"
-" - 'sendmail':  vy¾aduje, aby bol správne nakonfigurovaný systém e-mailu - 'SendEmail.pl': jednoduchý skript pre doruèovanie po¹ty"
+" - 'sendmail':  vyžaduje, aby bol správne nakonfigurovaný systém e-mailu - 'SendEmail.pl': jednoduchý skript pre doručovanie pošty"
 
 msgid "--- Email account ---"
-msgstr "--- Email úèet ---"
+msgstr "--- Email účet ---"
 
-msgid "Email adress"
+msgid "Email address"
 msgstr "Email adresa"
 
-msgid "Help$Specify the email adress where notifications should be sent from."
-msgstr "Zadajte mailovú adresu na ktorá sa budú posiela» upozornenia."
+msgid "Help$Specify the email address where notifications should be sent from."
+msgstr "Zadajte mailovú adresu na ktorá sa budú posielať upozornenia."
 
 msgid "SMTP server"
 msgstr "SMTP server"
 
 msgid "Help$Specify the SMTP server that should deliver the notifications. If it's using a port different from the default(25) append the port with \":port\"."
-msgstr "Zadajte SMTP server, ktorý by mal posiela» oznámenia. Ak sa port lí¹i od predvoleného (25), tak pripí¹te port s \": port \"."
+msgstr "Zadajte SMTP server, ktorý by mal posielať oznámenia. Ak sa port líši od predvoleného (25), tak pripíšte port s \": port \"."
 
 msgid "Use SMTP authentication"
-msgstr "Pou¾i» SMTP overenie"
+msgstr "Použiť SMTP overenie"
 
 msgid "Help$Set this to 'yes' if your account needs authentication to send mails."
-msgstr "Nastavte Áno, ak vá¹ úèet potrebuje overenie na poslanie mailov"
+msgstr "Nastavte Áno, ak váš účet potrebuje overenie na poslanie mailov"
 
 msgid "Auth user"
-msgstr "Dôveryhodný u¾ívateµ"
+msgstr "Dôveryhodný užívateľ"
 
 msgid "Help$Specify the auth user, if this account needs authentication for SMTP."
-msgstr "Zvolte overovacie meno, ak úèet potrebuje overenie pre SMTP"
+msgstr "Zvolte overovacie meno, ak účet potrebuje overenie pre SMTP"
 
 msgid "Auth password"
-msgstr "Dôveryhodné heslo"
+msgstr "Dôveryhodné heslo"
 
 msgid "Help$Specify the auth password, if this account needs authentication for SMTP."
-msgstr "Zvolte overovacie heslo, ak je nutné overenie  pre SMTP."
+msgstr "Zvolte overovacie heslo, ak je nutné overenie  pre SMTP."
 
 msgid "Mail account check failed!"
-msgstr "Chyba kontroly mailového úètu!"
+msgstr "Chyba kontroly mailového účtu!"
 
 msgid "Button$Test"
-msgstr "Testova»"
+msgstr "Testovať"
 
-#, fuzzy
 msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
-msgstr " $ aáäbcèdïeéfghiíjklåµmnòoóôpqràs¹t»uúvwxyýz¾0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aáäbcčdďeéfghiíjklĺľmnňoóôpqrŕsštťuúvwxyýzž0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
 
 msgid "Start/Stop time has changed"
-msgstr "Spusti»/Zastavi» dobu zmien"
+msgstr "Spustiť/Zastaviť dobu zmien"
 
 msgid "Title/episode has changed"
-msgstr "Názov / epizóda sa zmenila"
+msgstr "Názov / epizóda sa zmenila"
 
 msgid "No new timers were added."
-msgstr "®iadne nové plány neboli pridané."
+msgstr "Žiadne nové plány neboli pridané."
 
 msgid "No timers were modified."
-msgstr "®iadne plány neboli upravované."
+msgstr "Žiadne plány neboli upravované."
 
 msgid "No timers were deleted."
-msgstr "®iadne plány neboli vymazané."
+msgstr "Žiadne plány neboli vymazané."
 
 msgid "No new events to announce."
 msgstr ""
 
 msgid "This version of EPGSearch does not support this service!"
-msgstr "Táto verzia epgsearch nepodporuje túto slu¾bu!"
+msgstr "Táto verzia epgsearch nepodporuje túto službu!"
 
 msgid "EPGSearch does not exist!"
 msgstr "Epgsearch neexistuje!"
 
 #, c-format
 msgid "%d new broadcast"
-msgstr "%d nové vysielanie"
+msgstr "%d nové vysielanie"
 
 msgid "Button$by channel"
-msgstr "podµa kanálu"
+msgstr "podľa kanálu"
 
 msgid "Button$by time"
-msgstr "podµa èasu"
+msgstr "podľa času"
 
 msgid "Button$Episode"
-msgstr "Epizóda"
+msgstr "Epizóda"
 
 msgid "Button$Title"
-msgstr "Názov"
+msgstr "Názov"
 
 msgid "announce details"
-msgstr "oznámi» podrobnosti"
+msgstr "oznámiť podrobnosti"
 
 msgid "announce again"
-msgstr "oznámi» znova"
+msgstr "oznámiť znova"
 
 msgid "with next update"
-msgstr "s ïal¹ou aktualizáciou"
+msgstr "s ďalšou aktualizáciou"
 
 msgid "again from"
 msgstr "znova od"
 
 msgid "Search timer"
-msgstr "Hµada» èasy"
+msgstr "Hľadať časy"
 
 msgid "Edit blacklist"
-msgstr "Upravi» èiernu listinu"
+msgstr "Upraviť čiernu listinu"
 
 msgid "phrase"
-msgstr "slovné spojenie"
+msgstr "slovné spojenie"
 
 msgid "all words"
-msgstr "v¹etky slová"
+msgstr "všetky slová"
 
 msgid "at least one word"
-msgstr "aspoò jedno slovo"
+msgstr "aspoň jedno slovo"
 
 msgid "match exactly"
-msgstr "prispôsobi» presne"
+msgstr "prispôsobiť presne"
 
 msgid "regular expression"
-msgstr "be¾ný výraz"
+msgstr "bežný výraz"
 
 msgid "fuzzy"
-msgstr "nejasný"
+msgstr "nejasný"
 
 msgid "user-defined"
-msgstr "urèené u¾ívateµom"
+msgstr "určené užívateľom"
 
 msgid "interval"
-msgstr "èasové rozpätie"
+msgstr "časové rozpätie"
 
 msgid "channel group"
-msgstr "skupin kanálov"
+msgstr "skupin kanálov"
 
 msgid "only FTA"
-msgstr "iba voµne ¹íritelné"
+msgstr "iba voľne šíritelné"
 
 msgid "Search term"
-msgstr "Hµada» termín"
+msgstr "Hľadať termín"
 
 msgid "Search mode"
-msgstr "Spôsob vyhµadávania"
+msgstr "Spôsob vyhľadávania"
 
 msgid "Tolerance"
 msgstr "odchylka "
@@ -702,34 +691,34 @@ msgid "Match case"
 msgstr "Argumenty zhody"
 
 msgid "Use title"
-msgstr "Pou¾i» názov"
+msgstr "Použiť názov"
 
 msgid "Use subtitle"
-msgstr "Pou¾i» titulky"
+msgstr "Použiť titulky"
 
 msgid "Use description"
-msgstr "Pou¾i» popis"
+msgstr "Použiť popis"
 
 msgid "Use extended EPG info"
-msgstr "Pou¾i» roz¹írené EPG informácie"
+msgstr "Použiť rozšírené EPG informácie"
 
 msgid "Ignore missing categories"
-msgstr "Ignorova» chýbajúce kategórie"
+msgstr "Ignorovať chýbajúce kategórie"
 
 msgid "Use channel"
-msgstr "Pou¾i kanál"
+msgstr "Použi kanál"
 
 msgid "  from channel"
-msgstr " od kanálu"
+msgstr " od kanálu"
 
 msgid "  to channel"
-msgstr " po kanál"
+msgstr " po kanál"
 
 msgid "Channel group"
-msgstr "Skupina kanálov"
+msgstr "Skupina kanálov"
 
 msgid "Use time"
-msgstr " Pou¾i èas"
+msgstr " Použi čas"
 
 msgid "  Start after"
 msgstr " od kedy"
@@ -738,7 +727,7 @@ msgid "  Start before"
 msgstr " Po kedy"
 
 msgid "Use duration"
-msgstr " Po¾i trvanie"
+msgstr " Poži trvanie"
 
 msgid "  Min. duration"
 msgstr " Min. doba"
@@ -747,55 +736,55 @@ msgid "  Max. duration"
 msgstr " Max doba"
 
 msgid "Use day of week"
-msgstr " Pou¾i deò v tý¾dni"
+msgstr " Použi deň v týždni"
 
 msgid "Day of week"
-msgstr " Deò v tý¾dni"
+msgstr " Deň v týždni"
 
 msgid "Use global"
 msgstr ""
 
 msgid "Button$Templates"
-msgstr "©ablony"
+msgstr "Å ablony"
 
 msgid "*** Invalid Channel ***"
-msgstr "*** Neplatný kanál ***"
+msgstr "*** Neplatný kanál ***"
 
 msgid "Please check channel criteria!"
-msgstr "Prosím, skontrolujte kritéria kanálu!"
+msgstr "Prosím, skontrolujte kritéria kanálu!"
 
 msgid "Edit$Delete blacklist?"
-msgstr "Vymaza» èierny zoznam?"
+msgstr "Vymazať čierny zoznam?"
 
 msgid "Repeats"
-msgstr "Repríza"
+msgstr "Repríza"
 
 msgid "Create search"
-msgstr "Vytvori» vyhµadávanie"
+msgstr "Vytvoriť vyhľadávanie"
 
 msgid "Search in recordings"
-msgstr "Hµada» v nahrávkach"
+msgstr "Hľadať v nahrávkach"
 
 msgid "Mark as 'already recorded'?"
-msgstr "Vymaza» urèené nahrá "
+msgstr "Vymazať určené nahrá "
 
 msgid "Add/Remove to/from switch list?"
-msgstr "Prida»/Vymaza» do/zo zoznamu?"
+msgstr "Pridať/Vymazať do/zo zoznamu?"
 
 msgid "Create blacklist"
-msgstr "Vytvori» èiernu listinu"
+msgstr "Vytvoriť čiernu listinu"
 
 msgid "EPG Commands"
-msgstr "EPG príkazy"
+msgstr "EPG príkazy"
 
 msgid "Already running!"
-msgstr "Práve spustené!"
+msgstr "Práve spustené!"
 
 msgid "Add to switch list?"
-msgstr "Prida» do zoznamu?"
+msgstr "Pridať do zoznamu?"
 
 msgid "Delete from switch list?"
-msgstr "Vymaza» zo zoznamu?"
+msgstr "Vymazať zo zoznamu?"
 
 msgid "Button$Details"
 msgstr "Podrobnosti"
@@ -804,7 +793,7 @@ msgid "Button$Filter"
 msgstr "filter"
 
 msgid "Button$Show all"
-msgstr "Zobrazi» v¹etko"
+msgstr "Zobraziť všetko"
 
 msgid "conflicts"
 msgstr "konflikty"
@@ -813,55 +802,55 @@ msgid "no conflicts!"
 msgstr "Bez konfliktu!"
 
 msgid "no important conflicts!"
-msgstr "¾iadne dôle¾ité konflikty!"
+msgstr "žiadne dôležité konflikty!"
 
 msgid "C"
 msgstr "C"
 
 msgid "Button$Repeats"
-msgstr "Reprízy"
+msgstr "Reprízy"
 
 msgid "no check"
-msgstr "neskontrolované"
+msgstr "neskontrolované"
 
 msgid "by channel and time"
-msgstr "podµa kanálu a èasu"
+msgstr "podľa kanálu a času"
 
 msgid "by event ID"
-msgstr "podµa ID"
+msgstr "podľa ID"
 
 msgid "Select directory"
-msgstr "Vybra» adresár"
+msgstr "Vybrať adresár"
 
 msgid "Button$Level"
-msgstr "Úroveò"
+msgstr "Úroveň"
 
 msgid "Event"
 msgstr "Udalosti"
 
 msgid "Favorites"
-msgstr "Obµúbené"
+msgstr "Obľúbené"
 
 msgid "Search results"
-msgstr "Výsledok hµadania"
+msgstr "Výsledok hľadania"
 
 msgid "Timer conflict! Show?"
-msgstr "Konflikt plánu! Zobrazi»?"
+msgstr "Konflikt plánu! Zobraziť?"
 
 msgid "Directory"
-msgstr "Adresár"
+msgstr "Adresár"
 
 msgid "Channel"
-msgstr "Kanál"
+msgstr "Kanál"
 
 msgid "Childlock"
-msgstr "Detský zámok"
+msgstr "Detský zámok"
 
 msgid "Timer check"
-msgstr "Kontrola plánu"
+msgstr "Kontrola plánu"
 
 msgid "recording with device"
-msgstr "nahrávanie so zariadením"
+msgstr "nahrávanie so zariadením"
 
 msgid "Button$With subtitle"
 msgstr "S titulkami"
@@ -870,174 +859,178 @@ msgid "Button$Without subtitle"
 msgstr "Bez titulkov"
 
 msgid "Button$Extended"
-msgstr "Roz¹írené"
+msgstr "Rozšírené"
 
 msgid "Button$Simple"
-msgstr "Jednoduché"
+msgstr "Jednoduché"
 
 msgid "Use blacklists"
-msgstr "Pou¾i» èiernu listinu"
+msgstr "Použiť čiernu listinu"
 
 msgid "Edit$Search text too short - use anyway?"
-msgstr "Hµadaný text je krátky - pou¾i» aj tak?"
+msgstr "Hľadaný text je krátky - použiť aj tak?"
+
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "podľa kanálu"
 
 msgid "Button$by name"
-msgstr "podµa mena"
+msgstr "podľa mena"
 
 msgid "Button$by date"
-msgstr "podµa dátumu"
+msgstr "podľa dátumu"
 
 msgid "Button$Delete all"
-msgstr "Vymaza» v¹etko"
+msgstr "Vymazať všetko"
 
 msgid "Recordings"
-msgstr "Nahrávky"
+msgstr "Nahrávky"
 
 msgid "Edit$Delete entry?"
-msgstr "Vymaza» údaje?"
+msgstr "Vymazať údaje?"
 
 msgid "Edit$Delete all entries?"
-msgstr "Vymaza» v¹etky údaje?"
+msgstr "Vymazať všetky údaje?"
 
 msgid "Summary"
 msgstr "Celkovo"
 
 msgid "Auxiliary info"
-msgstr "Doplòujúce informácie"
+msgstr "Doplňujúce informácie"
 
 msgid "Button$Aux info"
-msgstr "Pomocné informácie"
+msgstr "Pomocné informácie"
 
 msgid "Search actions"
-msgstr "Hµada» akcie"
+msgstr "Hľadať akcie"
 
 msgid "Execute search"
-msgstr "Spusti» vyhladávanie"
+msgstr "Spustiť vyhladávanie"
 
 msgid "Use as search timer on/off"
-msgstr "Pou¾i» ako vyhµadávaè plánu zapnuté/vypnuté"
+msgstr "Použiť ako vyhľadávač plánu zapnuté/vypnuté"
 
 msgid "Trigger search timer update"
-msgstr "Spustená aktualizácia vyhµadávania plánu"
+msgstr "Spustená aktualizácia vyhľadávania plánu"
 
 msgid "Show recordings done"
-msgstr "Zobrazi» spravené nahrávky"
+msgstr "Zobraziť spravené nahrávky"
 
 msgid "Show timers created"
-msgstr "Zobrazi» vytvorené plány"
+msgstr "Zobraziť vytvorené plány"
 
 msgid "Create a copy"
-msgstr "Vytvori» a kopírova»"
+msgstr "Vytvoriť a kopírovať"
 
 msgid "Use as template"
-msgstr "Pou¾i» ako ¹ablonu"
+msgstr "Použiť ako šablonu"
 
 msgid "Show switch list"
-msgstr "Zobrazi» zoznam"
+msgstr "Zobraziť zoznam"
 
 msgid "Show blacklists"
-msgstr "Zobrazi» èiernu listinu"
+msgstr "Zobraziť čiernu listinu"
 
 msgid "Delete created timers?"
-msgstr "Vymaza» vytvorené plány?"
+msgstr "Vymazať vytvorené plány?"
 
 msgid "Timer conflict check"
-msgstr "Kontrola konfliktu plánov"
+msgstr "Kontrola konfliktu plánov"
 
 msgid "Disable associated timers too?"
-msgstr "Zakáza» súvisiace plány?"
+msgstr "Zakázať súvisiace plány?"
 
 msgid "Activate associated timers too?"
-msgstr "Povoli» aj súvisiace plány?"
+msgstr "Povoliť aj súvisiace plány?"
 
 msgid "Search timers activated in setup."
-msgstr "Vyhµadávaè plánov aktivovaný v nastavení."
+msgstr "Vyhľadávač plánov aktivovaný v nastavení."
 
 msgid "Run search timer update?"
-msgstr "Spusti» aktualizáciu vyhladávania plánov?"
+msgstr "Spustiť aktualizáciu vyhladávania plánov?"
 
 msgid "Copy this entry?"
-msgstr "Kopírova» tieto údaje?"
+msgstr "Kopírovať tieto údaje?"
 
 msgid "Copy"
-msgstr "Kopírova»"
+msgstr "Kopírovať"
 
 msgid "Copy this entry to templates?"
-msgstr "Kopírova» tieto údaje z ¹ablon?"
+msgstr "Kopírovať tieto údaje z šablon?"
 
 msgid "Delete all timers created from this search?"
-msgstr "Vymaza» v¹etky plány vytvorené cez vyhµadávaè?"
+msgstr "Vymazať všetky plány vytvorené cez vyhľadávač?"
 
 msgid "Button$Actions"
 msgstr "Akcia"
 
 msgid "Search entries"
-msgstr "Vyhµada» údaje"
+msgstr "Vyhľadať údaje"
 
 msgid "active"
-msgstr "aktívne"
+msgstr "aktívne"
 
 msgid "Edit$Delete search?"
-msgstr "Vymaza» vyhµadané?"
+msgstr "Vymazať vyhľadané?"
 
 msgid "Edit search"
-msgstr "Upravi» vyhladávanie"
+msgstr "Upraviť vyhladávanie"
 
 msgid "Record"
-msgstr "Nahra»"
+msgstr "Nahrať"
 
 #, fuzzy
 msgid "Announce by OSD"
-msgstr "Iba oznámi»"
+msgstr "Iba oznámiť"
 
 msgid "Switch only"
-msgstr "Prepnú» iba"
+msgstr "Prepnúť iba"
 
 #, fuzzy
 msgid "Announce and switch"
-msgstr "Iba oznámi»"
+msgstr "Iba oznámiť"
 
 #, fuzzy
 msgid "Announce by mail"
-msgstr "Iba oznámi»"
+msgstr "Iba oznámiť"
 
 msgid "only globals"
 msgstr ""
 
 msgid "Selection"
-msgstr "Vybrané"
+msgstr "Vybrané"
 
 msgid "all"
-msgstr "v¹etko"
+msgstr "všetko"
 
 msgid "count recordings"
-msgstr "Poèet nahrávok"
+msgstr "Počet nahrávok"
 
 msgid "count days"
-msgstr "Poèet dní"
+msgstr "Počet dní"
 
 msgid "if present"
 msgstr ""
 
 #, fuzzy
 msgid "same day"
-msgstr "Posledný deò"
+msgstr "Posledný deň"
 
 #, fuzzy
 msgid "same week"
-msgstr " Deò v tý¾dni"
+msgstr " Deň v týždni"
 
 msgid "same month"
 msgstr ""
 
 msgid "Template name"
-msgstr "Meno ¹ablony"
+msgstr "Meno Å¡ablony"
 
 msgid "Help$Specify the name of the template."
-msgstr "Uveïte meno ¹ablony"
+msgstr "Uveďte meno šablony"
 
 msgid "Help$Specify here the term to search for."
-msgstr "Sem zadajte termín pre vyhåadávanie"
+msgstr "Sem zadajte termín pre vyhĺadávanie"
 
 msgid ""
 "Help$The following search modes exist:\n"
@@ -1049,98 +1042,98 @@ msgid ""
 "- regular expression: match a regular expression\n"
 "- fuzzy searching: searches approximately"
 msgstr ""
-"Podµa spôsobu vyhåadávania je: \n"
+"Podľa spôsobu vyhĺadávania je: \n"
 "\n"
-"- Veta: vyhµadávanie èiastkového termínu \n"
-"- V¹etky slová: v¹etky jednotlivé slová musia by» \n"
-"- Aspoò jedno slovo: aspoò jedno jediné slovo, musí by» \n"
-"- Presne sa zhodujú: musia presne zodpoveda» \n"
-"- Zvyèajný výraz: presný výraz \n"
-"- Nepresné vyhµadávanie: vyhµadávanie pribli¾ne"
+"- Veta: vyhľadávanie čiastkového termínu \n"
+"- Všetky slová: všetky jednotlivé slová musia byť \n"
+"- Aspoň jedno slovo: aspoň jedno jediné slovo, musí byť \n"
+"- Presne sa zhodujú: musia presne zodpovedať \n"
+"- Zvyčajný výraz: presný výraz \n"
+"- Nepresné vyhľadávanie: vyhľadávanie približne"
 
 msgid "Help$This sets the tolerance of fuzzy searching. The value represents the allowed errors."
-msgstr "Toto nastaví toleranciu nepresnosti vyhµadávania. Hodnota predstavuje povolené chyby."
+msgstr "Toto nastaví toleranciu nepresnosti vyhľadávania. Hodnota predstavuje povolené chyby."
 
 msgid "Help$Set this to 'Yes' if your search should match the case."
-msgstr "Nastavte 'Áno', ak va¹e vyhµadávanie by malo zodpoveda» prípadu."
+msgstr "Nastavte 'Áno', ak vaše vyhľadávanie by malo zodpovedať prípadu."
 
 msgid "Help$Set this to 'Yes' if you like to search in the title of an event."
-msgstr "Nastavte 'Áno', ak chcete hµada» v názvoch ."
+msgstr "Nastavte 'Áno', ak chcete hľadať v názvoch ."
 
 msgid "Help$Set this to 'Yes' if you like to search in the episode of an event."
-msgstr "Nastavte 'Áno', ak chcete hµada» v epizóde ."
+msgstr "Nastavte 'Áno', ak chcete hľadať v epizóde ."
 
 msgid "Help$Set this to 'Yes' if you like to search in the summary of an event."
-msgstr "Nastavte 'Áno', ak chcete hµada» vo v¹etkých údajoch."
+msgstr "Nastavte 'Áno', ak chcete hľadať vo všetkých údajoch."
 
 #, fuzzy
 msgid "Use content descriptor"
-msgstr "Pou¾i» popis"
+msgstr "Použiť popis"
 
 #, fuzzy
 msgid "Help$Set this to 'Yes' if you want to search the contents by a descriptor."
-msgstr "Nastavte 'Áno', ak chcete hµada» v názvoch ."
+msgstr "Nastavte 'Áno', ak chcete hľadať v názvoch ."
 
 msgid "Help$The summary of an event, can contain additional information like 'Genre', 'Category', 'Year',... called 'EPG categories' within EPGSearch. External EPG providers often deliver this information. This allows refining a search and other nice things, like searching for the 'tip of the day'. To use it set this to 'Yes'."
-msgstr "Súhrn udalostí, mô¾e obsahova» ïal¹ie informácie, ako '®áner', 'Kategória', 'Rok',... tzv 'EPG kategórie' v epgsearch. Vonkaj¹ie EPG slu¾by èasto takéto informácie poskytujú. To umo¾òuje kvalitnej¹ie vyhµadávanie a iné veci, ako je hµadanie 'typ dòa' alebo 'kino na' . Pre pou¾itie nastavte na 'Áno'."
+msgstr "Súhrn udalostí, môže obsahovať ďalšie informácie, ako 'Žáner', 'Kategória', 'Rok',... tzv 'EPG kategórie' v epgsearch. Vonkajšie EPG služby často takéto informácie poskytujú. To umožňuje kvalitnejšie vyhľadávanie a iné veci, ako je hľadanie 'typ dňa' alebo 'kino na' . Pre použitie nastavte na 'Áno'."
 
 msgid "Help$The file epgsearchcats.conf specifies the search mode for this entry. One can search by text or by value. You can also edit a list of predefined values in this file that can be selected here."
-msgstr "Súbor epgsearchcats.conf ¹pecifikuje re¾im hµadania pre túto polo¾ku. Mô¾e vyhµadáva» podµa textu alebo hodnoty. Mô¾ete tie¾ upravova» zoznam preddefinovaných hodnôt, v tomto súbore, ktorý mo¾no vybra» tu."
+msgstr "Súbor epgsearchcats.conf špecifikuje režim hľadania pre túto položku. Môže vyhľadávať podľa textu alebo hodnoty. Môžete tiež upravovať zoznam preddefinovaných hodnôt, v tomto súbore, ktorý možno vybrať tu."
 
 msgid "Help$If a selected category is not part of the summary of an event this normally excludes this event from the search results. To avoid this, set this option to 'Yes', but please handle this with care to avoid a huge amount of results."
-msgstr "Ak vybraná kategória nie je súèas»ou súhrnu údajov, tak je zvyèajne vylúèená z výsledkov vyhµadávania. Ak chcete tomu predís», nastavte túto voµbu na 'Áno', ale s mierou prosím , aby sa zabránilo veµkému mno¾stvu výsledkov."
+msgstr "Ak vybraná kategória nie je súčasťou súhrnu údajov, tak je zvyčajne vylúčená z výsledkov vyhľadávania. Ak chcete tomu predísť, nastavte túto voľbu na 'Áno', ale s mierou prosím , aby sa zabránilo veľkému množstvu výsledkov."
 
 msgid "Use in favorites menu"
-msgstr "Pou¾i» v obµúbenom menu"
+msgstr "Použiť v obľúbenom menu"
 
 msgid "Result menu layout"
-msgstr "Usporiada» výsledné menu"
+msgstr "Usporiadať výsledné menu"
 
 msgid "Use as search timer"
-msgstr "Pou¾i» ako vyhµadávaè plánu"
+msgstr "Použiť ako vyhľadávač plánu"
 
 msgid "Action"
 msgstr "Akcia"
 
 msgid "Switch ... minutes before start"
-msgstr "Prepnú» ... minút pred ¹tartom"
+msgstr "Prepnúť ... minút pred štartom"
 
 msgid "Unmute sound"
-msgstr "Pusti» zvuk"
+msgstr "Pustiť zvuk"
 
 #, fuzzy
 msgid "Ask ... minutes before start"
-msgstr "Prepnú» ... minút pred ¹tartom"
+msgstr "Prepnúť ... minút pred štartom"
 
 msgid "  Series recording"
-msgstr " Sériové nahrávky"
+msgstr " Sériové nahrávky"
 
 msgid "Delete recordings after ... days"
-msgstr "Vymaza» nahrávky po ... dòoch"
+msgstr "Vymazať nahrávky po ... dňoch"
 
 msgid "Keep ... recordings"
-msgstr "Uchova» ... nahrávok"
+msgstr "Uchovať ... nahrávok"
 
 msgid "Pause when ... recordings exist"
-msgstr "Zastavi» ak ... nahrávka existuje"
+msgstr "Zastaviť ak ... nahrávka existuje"
 
 msgid "Avoid repeats"
-msgstr "Vyhýba» sa reprízam"
+msgstr "Vyhýbať sa reprízam"
 
 msgid "Allowed repeats"
-msgstr "povoli» reprízy"
+msgstr "povoliť reprízy"
 
 msgid "Only repeats within ... days"
-msgstr "Iba reprízy behom ... dní"
+msgstr "Iba reprízy behom ... dní"
 
 msgid "Compare title"
-msgstr "porovna» tituly"
+msgstr "porovnať tituly"
 
 msgid "Compare subtitle"
-msgstr "porovna» titulky"
+msgstr "porovnať titulky"
 
 msgid "Compare summary"
-msgstr "porovna» celkovo"
+msgstr "porovnať celkovo"
 
 #, fuzzy
 msgid "Min. match in %"
@@ -1148,37 +1141,37 @@ msgstr " Min. doba"
 
 #, fuzzy
 msgid "Compare date"
-msgstr "porovna» tituly"
+msgstr "porovnať tituly"
 
 msgid "Compare categories"
-msgstr "porovna» kategórie"
+msgstr "porovnať kategórie"
 
 msgid "VPS"
 msgstr "VPS"
 
 msgid "Auto delete"
-msgstr "automaticky vymaza»"
+msgstr "automaticky vymazať"
 
 msgid "after ... recordings"
-msgstr "po ... nahrávkach"
+msgstr "po ... nahrávkach"
 
 msgid "after ... days after first rec."
-msgstr "po ... dòoch od prvého nahratia."
+msgstr "po ... dňoch od prvého nahratia."
 
 msgid "Edit user-defined days of week"
-msgstr "Upravi» u¾ívateµom urèený deò v tý¾dni"
+msgstr "Upraviť užívateľom určený deň v týždni"
 
 msgid "Compare"
-msgstr "porovna»"
+msgstr "porovnať"
 
 msgid "Select blacklists"
-msgstr "Vybra» èiernu listinu"
+msgstr "Vybrať čiernu listinu"
 
 msgid "Values for EPG category"
-msgstr "Hodnota pre EPG kategóriu"
+msgstr "Hodnota pre EPG kategóriu"
 
 msgid "Button$Apply"
-msgstr "Pou¾i»"
+msgstr "Použiť"
 
 msgid "less"
 msgstr "menej"
@@ -1190,100 +1183,100 @@ msgid "greater"
 msgstr "viacej"
 
 msgid "greater or equal"
-msgstr "Väè¹í alebo rovný"
+msgstr "Väčší alebo rovný"
 
 msgid "equal"
-msgstr "rovnaký"
+msgstr "rovnaký"
 
 msgid "not equal"
-msgstr "nerovná sa"
+msgstr "nerovná sa"
 
 msgid "Activation of search timer"
-msgstr "Aktivácia vyhµadávania plánu"
+msgstr "Aktivácia vyhľadávania plánu"
 
 msgid "First day"
-msgstr "Prvý deò"
+msgstr "Prvý deň"
 
 msgid "Last day"
-msgstr "Posledný deò"
+msgstr "Posledný deň"
 
 msgid "Button$all channels"
-msgstr "v¹etky kanály"
+msgstr "všetky kanály"
 
 msgid "Button$only FTA"
-msgstr "iba voµne ¹íriteµné"
+msgstr "iba voľne šíriteľné"
 
 msgid "Button$Timer preview"
-msgstr "Náhµad plánu"
+msgstr "Náhľad plánu"
 
 msgid "Blacklist results"
-msgstr "výsledky èierneho zoznamu"
+msgstr "výsledky čierneho zoznamu"
 
 msgid "found recordings"
-msgstr "nájdené nahrávky"
+msgstr "nájdené nahrávky"
 
 msgid "Error while accessing recording!"
-msgstr "Chyba prístupu k záznamom!"
+msgstr "Chyba prístupu k záznamom!"
 
 msgid "Button$Default"
-msgstr "Predvolené"
+msgstr "Predvolené"
 
 msgid "Edit$Delete template?"
-msgstr "Vymaza» ¹ablónu?"
+msgstr "Vymazať šablónu?"
 
 msgid "Overwrite existing entries?"
-msgstr "Prepísa» existujúce údaje?"
+msgstr "Prepísať existujúce údaje?"
 
 msgid "Edit entry"
-msgstr "Upravi» údaje"
+msgstr "Upraviť údaje"
 
 #, fuzzy
 msgid "Switch"
-msgstr "Prepnú» iba"
+msgstr "Prepnúť iba"
 
 msgid "Announce only"
-msgstr "Iba oznámi»"
+msgstr "Iba oznámiť"
 
 #, fuzzy
 msgid "Announce ... minutes before start"
-msgstr "Prepnú» ... minút pred ¹tartom"
+msgstr "Prepnúť ... minút pred štartom"
 
 msgid "action at"
 msgstr "za akciou"
 
 msgid "Switch list"
-msgstr "Prepnú» zoznam"
+msgstr "Prepnúť zoznam"
 
 msgid "Edit template"
-msgstr "Upravi» ¹ablóny"
+msgstr "Upraviť šablóny"
 
 msgid "Timers"
-msgstr "Plány"
+msgstr "Plány"
 
 msgid ">>> no info! <<<"
-msgstr ">>> ¾iadne informácie! <<<"
+msgstr ">>> žiadne informácie! <<<"
 
 msgid "Overview"
-msgstr "Prehµad"
+msgstr "Prehľad"
 
 msgid "Button$Favorites"
-msgstr "Obµúbené"
+msgstr "Obľúbené"
 
 msgid "Quick search for broadcasts"
-msgstr "Rýchle vyhµadávanie vo vysielaní"
+msgstr "Rýchle vyhľadávanie vo vysielaní"
 
 msgid "Quick search"
-msgstr "Rýchle hµadanie"
+msgstr "Rýchle hľadanie"
 
 msgid "Show in main menu"
-msgstr "Zobrazi» v hlavnom menu"
+msgstr "Zobraziť v hlavnom menu"
 
 #, c-format
 msgid "%d new broadcast(s) found! Show them?"
-msgstr "%d nové vysielanie(a) nájdené! Zobrazi» ich?"
+msgstr "%d nové vysielanie(a) nájdené! Zobraziť ich?"
 
 msgid "Search timer update done!"
-msgstr "Aktualizácia vyhµadávania plánov skonèená!"
+msgstr "Aktualizácia vyhľadávania plánov skončená!"
 
 #, c-format
 msgid "small EPG content on:%s"
@@ -1297,7 +1290,7 @@ msgid "Switch to (%d) '%s'?"
 msgstr ""
 
 msgid "Programming timer failed!"
-msgstr "Chyba programovania plánovaèa"
+msgstr "Chyba programovania plánovača"
 
 #, c-format
 msgid "in %02ldd"
@@ -1313,10 +1306,10 @@ msgstr "v %02ldm"
 
 #, fuzzy
 #~ msgid "Compare expression"
-#~ msgstr "be¾ný výraz"
+#~ msgstr "bežný výraz"
 
 #~ msgid "File"
-#~ msgstr "Súbor"
+#~ msgstr "Súbor"
 
 #~ msgid "Day"
-#~ msgstr "Deò"
+#~ msgstr "Deň"
diff --git a/po/sl_SI.po b/po/sl_SI.po
index 6b75922..9e9e615 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Matjaz Thaler <matjaz.thaler at guest.arnes.si>\n"
 "Language-Team: Slovenian <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: sl\n"
 
@@ -96,12 +96,6 @@ msgstr ""
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -838,6 +830,9 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+msgid "Button$Orphaned"
+msgstr ""
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/sv_SE.po b/po/sv_SE.po
index b707d0e..81dcc61 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
 "Last-Translator: Tomas Prybil <tomas at prybil.se>\n"
 "Language-Team: Swedish <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: sv\n"
 
@@ -96,12 +96,6 @@ msgstr "Inspelning"
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -192,9 +186,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -329,7 +321,7 @@ msgid ""
 msgstr ""
 
 msgid "Button$Setup"
-msgstr "Inställningar"
+msgstr "Inställningar"
 
 msgid "Use search timers"
 msgstr ""
@@ -502,7 +494,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -518,10 +510,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -837,6 +829,10 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+#, fuzzy
+msgid "Button$Orphaned"
+msgstr "Inspelning"
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/po/tr_TR.po b/po/tr_TR.po
index 15efc63..1e5775b 100644
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
@@ -1,18 +1,18 @@
 # VDR plugin language source file.
 # Copyright (C) 2007 Klaus Schmidinger <kls at cadsoft.de>
 # This file is distributed under the same license as the VDR package.
-# Oktay Yolgeçen <oktay_73 at yahoo.de>, 2007
+# Oktay Yolgeçen <oktay_73 at yahoo.de>, 2007
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.5.7\n"
 "Report-Msgid-Bugs-To: <cwieninger at gmx.de>\n"
-"POT-Creation-Date: 2011-06-13 14:06+0200\n"
+"POT-Creation-Date: 2012-03-15 19:51+0100\n"
 "PO-Revision-Date: 2007-08-14 20:21+0200\n"
-"Last-Translator: Oktay Yolgeçen <oktay_73 at yahoo.de>\n"
+"Last-Translator: Oktay Yolgeçen <oktay_73 at yahoo.de>\n"
 "Language-Team: Turkish <vdr at linuxtv.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-9\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: tr\n"
 
@@ -95,12 +95,6 @@ msgstr ""
 msgid "Button$Search"
 msgstr ""
 
-msgid "pipes"
-msgstr ""
-
-msgid "graphical"
-msgstr ""
-
 msgid "never"
 msgstr ""
 
@@ -191,9 +185,7 @@ msgstr ""
 msgid "Show progress in 'Now'"
 msgstr ""
 
-msgid ""
-"Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event.\n"
-"Depending on your selected skin you can choose between 'Pipes' or 'graphical' to get the best look."
+msgid "Help$Shows a progressbar in 'Overview - Now' that informs about the remaining time of the current event."
 msgstr ""
 
 msgid "Show channel numbers"
@@ -501,7 +493,7 @@ msgstr ""
 msgid "Send to"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent to."
+msgid "Help$Specify the email address where notifications should be sent to."
 msgstr ""
 
 msgid "Mail method"
@@ -517,10 +509,10 @@ msgstr ""
 msgid "--- Email account ---"
 msgstr ""
 
-msgid "Email adress"
+msgid "Email address"
 msgstr ""
 
-msgid "Help$Specify the email adress where notifications should be sent from."
+msgid "Help$Specify the email address where notifications should be sent from."
 msgstr ""
 
 msgid "SMTP server"
@@ -836,6 +828,9 @@ msgstr ""
 msgid "Edit$Search text too short - use anyway?"
 msgstr ""
 
+msgid "Button$Orphaned"
+msgstr ""
+
 msgid "Button$by name"
 msgstr ""
 
diff --git a/pod2htmd.tmp b/pod2htmd.tmp
new file mode 100644
index 0000000..61e86d9
--- /dev/null
+++ b/pod2htmd.tmp
@@ -0,0 +1,2 @@
+
+.
diff --git a/pod2htmi.tmp b/pod2htmi.tmp
new file mode 100644
index 0000000..61e86d9
--- /dev/null
+++ b/pod2htmi.tmp
@@ -0,0 +1,2 @@
+
+.
diff --git a/quickepgsearch.c b/quickepgsearch.c
index aedfdd6..b1e4457 100644
--- a/quickepgsearch.c
+++ b/quickepgsearch.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -24,7 +24,6 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 #include <string>
 #include <list>
 #include <vdr/plugin.h>
-#include "i18n.h"
 #include "services.h"
 #include "mainmenushortcut.h"
 
@@ -33,109 +32,21 @@ static const char DESCRIPTION[]    = trNOOP("Quick search for broadcasts");
 static const char MAINMENUENTRY[]  = trNOOP("Quick search");
 static const char SETUPTEXT[]      = trNOOP("Show in main menu");
 
-#if APIVERSNUM < 10507
-const tI18nPhrase PhrasesLocal[] =
-{
-    {
-        "Quick search for broadcasts",
-        "Schnelle Suche nach Sendungen",// Deutsch
-        "",// TODO 
-        "",// TODO
-        "",// TODO
-        "",// TODO 
-        "",// TODO
-        "",// TODO 
-        "Pikahaku ohjelmaoppaalle",// suomi
-        "",// TODO Polski
-        "Búsqueda rápida de emisiones",// Español
-        "",// TODO ÅëëçíéêÜ (Greek)
-        "",// TODO Svenska
-        "",// TODO Romaneste
-        "",// TODO Magyar
-        "",// TODO Català
-        "",// TODO ÀãááÚØÙ (Russian)
-        "",// TODO Hrvatski (Croatian)
-        "", // Eesti
-        "", // Dansk
-        "", // Czech
-    },
-    {
-        "Quick search",
-        "Schnellsuche",
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "Pikahaku",
-        "",// TODO
-        "Búsqueda rápida",
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "", // Eesti
-        "", // Dansk
-        "", // Czech
-    },
-    {
-        "Show in main menu",
-        "Im Hauptmenü anzeigen",
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "Näytä valinta päävalikossa",
-        "",// TODO
-        "Mostrar en menú principal",
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "",// TODO
-        "", // Eesti
-        "", // Dansk
-        "", // Czech
-    },
-    { NULL }
-};
-#endif
-  
 class cPluginQuicksearch : public cMainMenuShortcut
 {
     public:
         virtual const char* Version() { return VERSION; }
-#if APIVERSNUM < 10507
-        virtual const char* Description() { return tr(DESCRIPTION); }
-#else
         virtual const char* Description() { return I18nTranslate(DESCRIPTION, I18nEpgsearch); }
-#endif
         virtual bool Initialize();
         virtual cOsdObject* MainMenuAction() { return GetEpgSearchMenu("Epgsearch-quicksearch-v1.0"); };
 
     protected:
-#if APIVERSNUM < 10507
-        virtual const char* SetupText() { return tr(SETUPTEXT); }
-        virtual const char* MainMenuText() { return tr(MAINMENUENTRY); };
-#else
         virtual const char* SetupText() { return I18nTranslate(SETUPTEXT, I18nEpgsearch); }
         virtual const char* MainMenuText() { return I18nTranslate(MAINMENUENTRY, I18nEpgsearch); }
-#endif
 };
 
 bool cPluginQuicksearch::Initialize()
 {
-#if APIVERSNUM < 10507
-    RegisterI18n(PhrasesLocal);
-#endif
     return cMainMenuShortcut::Initialize();
 }
 
diff --git a/rcfile.c b/rcfile.c
index 2567ac8..8880d24 100644
--- a/rcfile.c
+++ b/rcfile.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -44,12 +44,12 @@ cRCLine::~cRCLine()
 bool cRCLine::Parse(char *s)
 {
   char *p = strchr(s, '=');
-  if (p) 
+  if (p)
   {
       *p = 0;
       char *Name  = compactspace(s);
       char *Value = compactspace(p + 1);
-      if (*Name) 
+      if (*Name)
       {
 	  name = strdup(Name);
 	  value = strdup(Value);
@@ -71,15 +71,15 @@ cRCFile::cRCFile()
 
 bool cRCFile::Load(const char *FileName)
 {
-  if (cConfig<cRCLine>::Load(FileName, true)) 
+  if (cConfig<cRCLine>::Load(FileName, true))
   {
       bool result = true;
-      for (cRCLine *l = First(); l; l = Next(l)) 
+      for (cRCLine *l = First(); l; l = Next(l))
       {
 	  bool error = false;
 	  if (!Parse(l->Name(), l->Value()))
 	      error = true;
-	  if (error) 
+	  if (error)
 	  {
 	      LogFile.eSysLog("ERROR: unknown parameter: %s = %s", l->Name(), l->Value());
 	      result = false;
diff --git a/rcfile.h b/rcfile.h
index ec15b1d..c28eee0 100644
--- a/rcfile.h
+++ b/rcfile.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -42,7 +42,7 @@ public:
 };
 
 
-class cRCFile : public cConfig<cRCLine> 
+class cRCFile : public cConfig<cRCLine>
 {
     bool Parse(const char *Name, const char *Value);
 public:
diff --git a/recdone.c b/recdone.c
index c4345d3..04d7085 100644
--- a/recdone.c
+++ b/recdone.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -145,9 +145,9 @@ bool cRecDone::Read(FILE *f)
 			RecsDone.Add(recDone);
 		    }
 		}
-	    }		
+	    }
 		break;
-	    case 'C': 
+	    case 'C':
 	    {
 		s = skipspace(s + 1);
 		char *p = strchr(s, ' ');
@@ -193,13 +193,13 @@ const char *cRecDone::ToText(void)
     if (buffer)
 	free(buffer);
     buffer = NULL;
-    
+
     cChannel *channel = Channels.GetByChannelID(channelID, true, true);
     if (!channel)
 	LogFile.Log(3,"invalid channel in recs done!");
 
-    msprintf(&buffer, "R %ld %d %d\nC %s\n%s%s%s%s%s%s%s%s%s%s%s%sr", 
-	     startTime, duration, searchID, 
+    msprintf(&buffer, "R %ld %d %d\nC %s\n%s%s%s%s%s%s%s%s%s%s%s%sr",
+	     startTime, duration, searchID,
 	     channel?CHANNELSTRING(channel):"",
 	     title?"T ":"",title?title:"", title?"\n":"",
 	     shortText?"S ":"",shortText?shortText:"", shortText?"\n":"",
@@ -224,7 +224,7 @@ int cRecDone::ChannelNr()
     if (!channel)
 	return -1;
     else
-	return channel->Number();						
+	return channel->Number();
 }
 
 // -- cRecsDone -----------------------------------------------------------------
@@ -238,7 +238,7 @@ bool CatValuesMatch(unsigned long catvaluesAvoidRepeat, const string& rDescr, co
   bool bCatMatch = ((rDescr != "" && eDescr != "") || (rDescr == "" && eDescr == ""));
   cSearchExtCat *SearchExtCat = SearchExtCats.First();
   int index = 0;
-  while (catvaluesAvoidRepeat > 0 && SearchExtCat && bCatMatch) 	    
+  while (catvaluesAvoidRepeat > 0 && SearchExtCat && bCatMatch)
     {
       if (catvaluesAvoidRepeat & (1<<index))
 	{
@@ -260,7 +260,7 @@ bool CatValuesMatch(unsigned long catvaluesAvoidRepeat, const string& rDescr, co
 bool MatchesInExpression(const string& expression, const cRecDone* recDone, const cEvent* event)
 {
   cVarExpr varExpr(expression);
-  
+
   cEvent recDoneEvent(0);
   recDoneEvent.SetTitle(recDone->title);
   recDoneEvent.SetShortText(recDone->shortText);
@@ -279,7 +279,7 @@ int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int co
       *first = NULL;
    if (!event)
       return 0;
-    
+
    cMutexLock RecsDoneLock(this);
    int count = 0;
 
@@ -302,7 +302,7 @@ int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int co
    if ((compareSummary || catvaluesAvoidRepeat != 0) && event->Description())
    {
       eDescr = event->Description();
-      char* rawDescr = GetRawDescription(event->Description());       
+      char* rawDescr = GetRawDescription(event->Description());
       eRawDescr = rawDescr?rawDescr:"";
       if (rawDescr) free(rawDescr);
    }
@@ -314,7 +314,7 @@ int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int co
 
    cRecDone* firstrecDone = NULL;
    cRecDone* recDone = First();
-   while (recDone) 
+   while (recDone)
    {
       string rTitle = "";
       if (compareTitle)
@@ -329,14 +329,14 @@ int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int co
          string s = recDone->shortText?recDone->shortText:"";
          rSubtitle = GetAlNum(s);
          std::transform(rSubtitle.begin(), rSubtitle.end(), rSubtitle.begin(), tolower);
-      }      
+      }
       string rDescr = "";
       string rRawDescr = "";
       if ((compareSummary || catvaluesAvoidRepeat != 0) && recDone->description)
       {
          rDescr = recDone->description;
          char* rawDescr = recDone->rawdescription?recDone->rawdescription:GetRawDescription(recDone->description);
-	 recDone->rawdescription = rawDescr;       
+	 recDone->rawdescription = rawDescr;
          rRawDescr = rawDescr?rawDescr:"";
       }
 
@@ -350,6 +350,7 @@ int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int co
 	else
 	  if (firstrecDone->startTime > recDone->startTime)
 	    firstrecDone = recDone;
+	LogFile.Log(3,"same event already recorded at %s", DAYDATETIME(recDone->startTime));
 	count++;
       }
 
@@ -371,7 +372,7 @@ void cRecsDone::RemoveSearchID(int ID)
     if (Count() == 0)
 	Load(AddDirectory(CONFIGDIR, "epgsearchdone.data"));
     cRecDone* recDone = First();
-    while (recDone) 
+    while (recDone)
     {
 	if (recDone->searchID == ID)
 	{
@@ -396,9 +397,10 @@ bool cRecsDone::Load(const char *FileName)
 	LogFile.iSysLog("loading %s", fileName);
 	FILE *f = fopen(fileName, "r");
 	bool result = false;
-	if (f)
+	if (f) {
 	    result = cRecDone::Read(f);
-        fclose(f);
+	    fclose(f);
+	}
 	if (result)
 	    LogFile.Log(2,"loaded recordings done from %s (count: %d)", fileName, Count());
 	else
@@ -440,15 +442,15 @@ int cRecsDone::GetTotalCountRecordings(cSearchExt* search, cRecDone** first)
    if (!search) return 0;
    if (first)
       *first = NULL;
-    
+
    cMutexLock RecsDoneLock(this);
    int count = 0;
 
    cRecDone* firstrecDone = NULL;
    cRecDone* recDone = First();
-   while (recDone) 
+   while (recDone)
    {
-      if (recDone->searchID == search->ID) 
+      if (recDone->searchID == search->ID)
       {
          count++;
          if (!firstrecDone) firstrecDone = recDone;
diff --git a/recdone.h b/recdone.h
index ea00ccb..7921c14 100644
--- a/recdone.h
+++ b/recdone.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -39,9 +39,9 @@ public:
     char *description;       // Description of this event
     char *aux;               // Aux info
     time_t startTime;        // Start time of the timer
-    int duration; 
+    int duration;
     int searchID;          // ID of the search, that triggered this recording
-    tChannelID channelID;    
+    tChannelID channelID;
 
     char* rawdescription;
     static char *buffer;
diff --git a/recstatus.c b/recstatus.c
index 1c43f9e..bd3fe61 100644
--- a/recstatus.c
+++ b/recstatus.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -40,21 +40,21 @@ cRecStatusMonitor::cRecStatusMonitor()
 {
 }
 
-void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const char* Filename, bool On) 
+void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const char* Filename, bool On)
 {
    time_t now = time(NULL);
    // insert new timers currently recording in TimersRecording
    if (On && Name)
    {
       if (EPGSearchConfig.checkTimerConflOnRecording)
-         cConflictCheckThread::Init((cPluginEpgsearch*)cPluginManager::GetPlugin("epgsearch"), true);   
+         cConflictCheckThread::Init((cPluginEpgsearch*)cPluginManager::GetPlugin("epgsearch"), true);
 
-      for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti)) 
+      for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti))
          if (ti->Recording())
          {
             // check if this is a new entry
             cRecDoneTimerObj *tiRFound = NULL;
-            for (cRecDoneTimerObj *tiR = TimersRecording.First(); tiR; tiR = TimersRecording.Next(tiR)) 
+            for (cRecDoneTimerObj *tiR = TimersRecording.First(); tiR; tiR = TimersRecording.Next(tiR))
                if (tiR->timer == ti)
                {
                   tiRFound = tiR;
@@ -68,14 +68,14 @@ void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const
                   LogFile.Log(1,"accepting resume of '%s' on device %d", Name, Device->CardIndex());
                   tiRFound->lastBreak = 0;
                }
-               continue; 
+               continue;
             }
-		
+
             cRecDoneTimerObj* timerObj = new cRecDoneTimerObj(ti, Device->DeviceNumber());
             TimersRecording.Add(timerObj);
 
             cSearchExt* search = TriggeredFromSearchTimer(ti);
-            if (!search || (search->avoidRepeats == 0 && search->delMode == 0)) // ignore if not avoid repeats and no auto-delete 
+            if (!search || (search->avoidRepeats == 0 && search->delMode == 0)) // ignore if not avoid repeats and no auto-delete
                continue;
 
             bool vpsUsed = ti->HasFlags(tfVps) && ti->Event() && ti->Event()->Vps();
@@ -102,7 +102,7 @@ void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const
                LogFile.Log(1,"recording started too late! will be ignored");
          }
    }
-    
+
    if (!On)
    {
       cMutexLock RecsDoneLock(&RecsDone);
@@ -113,8 +113,8 @@ void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const
       {
          // check if timer still exists
          bool found = false;
-         for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti)) 
-            if (ti == tiR->timer) 
+         for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti))
+            if (ti == tiR->timer)
             {
                found = true;
                break;
@@ -126,7 +126,7 @@ void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const
             {
                cSearchExt* search = SearchExts.GetSearchFromID(tiR->recDone->searchID);
                if (!search) return;
-		    
+
                // check if recording has ended before timer end
 
                bool complete = true;
@@ -153,7 +153,7 @@ void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const
                if (complete)
                {
                   RecsDone.Add(tiR->recDone);
-                  LogFile.Log(1,"added rec done for '%s~%s';%s", tiR->recDone->title?tiR->recDone->title:"unknown title", 
+                  LogFile.Log(1,"added rec done for '%s~%s';%s", tiR->recDone->title?tiR->recDone->title:"unknown title",
                               tiR->recDone->shortText?tiR->recDone->shortText:"unknown subtitle",
                               search->search);
                   RecsDone.Save();
@@ -165,13 +165,13 @@ void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const
 
                   // trigger a search timer update (skip running events)
 		  search->skipRunningEvents = true;
-                  updateForced = 1;			
+                  updateForced = 1;
                }
                else if (tiR->lastBreak == 0) // store first break
                   tiR->lastBreak = now;
             }
-            if (tiR->lastBreak == 0 || (now - tiR->lastBreak) > ALLOWED_BREAK_INSECS) 
-            { // remove finished recordings or those with an unallowed break 
+            if (tiR->lastBreak == 0 || (now - tiR->lastBreak) > ALLOWED_BREAK_INSECS)
+            { // remove finished recordings or those with an unallowed break
                if (tiR->recDone) delete tiR->recDone; // clean up
                cRecDoneTimerObj *tiRNext = TimersRecording.Next(tiR);
                TimersRecording.Del(tiR);
@@ -196,7 +196,7 @@ void cRecStatusMonitor::Recording(const cDevice *Device, const char *Name, const
 int cRecStatusMonitor::TimerRecDevice(cTimer* timer)
 {
    if (!timer) return 0;
-   for (cRecDoneTimerObj *tiR = TimersRecording.First(); tiR; tiR = TimersRecording.Next(tiR)) 
+   for (cRecDoneTimerObj *tiR = TimersRecording.First(); tiR; tiR = TimersRecording.Next(tiR))
       if (tiR->timer == timer && timer->Recording()) return tiR->deviceNr+1;
    return 0;
 }
@@ -218,18 +218,18 @@ int cRecStatusMonitor::RecLengthInSecs(cRecording *pRecording)
 {
   struct stat buf;
   cString fullname = cString::sprintf("%s%s", pRecording->FileName(), "/index.vdr");
-  if (stat(fullname, &buf) == 0) 
-  {      
+  if (stat(fullname, &buf) == 0)
+  {
     struct tIndex { int offset; uchar type; uchar number; short reserved; };
     int delta = buf.st_size % sizeof(tIndex);
-    if (delta) 
+    if (delta)
     {
       delta = sizeof(tIndex) - delta;
       esyslog("ERROR: invalid file size (%ld) in '%s'", buf.st_size, *fullname);
     }
     return (buf.st_size + delta) / sizeof(tIndex) / SecondsToFrames(1);
   }
-  else 
+  else
     return -1;
 }
 
diff --git a/recstatus.h b/recstatus.h
index 6d2f3b2..1dbad80 100644
--- a/recstatus.h
+++ b/recstatus.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -36,7 +36,7 @@ public:
     ~cRecDoneTimerObj() { timer = NULL; recDone = NULL; } // do not delete anything!
 };
 
-class cRecStatusMonitor : public cStatus 
+class cRecStatusMonitor : public cStatus
 {
     cList<cRecDoneTimerObj> TimersRecording;
 protected:
diff --git a/scripts/autotimer2searchtimer.pl b/scripts/autotimer2searchtimer.pl
index 6cb24b2..c068b39 100755
--- a/scripts/autotimer2searchtimer.pl
+++ b/scripts/autotimer2searchtimer.pl
@@ -157,9 +157,9 @@ sub CONF_Collect {
     $stitle       = $at->{section} & 1 ? 1 : 0;
     $ssubtitle    = $at->{section} & 2 ? 1 : 0;
     $sdescription = $at->{section} & 4 ? 1 : 0;
-    
+
     $id += 1 if ($EPGSEARCH_FILENAME);
-    
+
     $data = sprintf $conf_str,
     									$id,
     									$pattern,
diff --git a/scripts/convert_epgsearchdone_data.pl b/scripts/convert_epgsearchdone_data.pl
index 0a04c68..719b456 100755
--- a/scripts/convert_epgsearchdone_data.pl
+++ b/scripts/convert_epgsearchdone_data.pl
@@ -84,7 +84,7 @@ while(<DATEI>) {
     print NEU sprintf("%s\n",$aux);
   }
   print NEU sprintf("@ <epgsearch>%s</epgsearch>\n",$epgsearch) if ( $neuformat == 0 && $epgsearch ne "" );
-  
+
 }
 
 close(DATEI);
diff --git a/scripts/convert_info_vdr.pl b/scripts/convert_info_vdr.pl
index 87a0524..7f3611a 100755
--- a/scripts/convert_info_vdr.pl
+++ b/scripts/convert_info_vdr.pl
@@ -43,7 +43,7 @@ printf ("Konvertiere %s\n",$DateiAlt);
 while(<DATEI>) {
 
   $Zeile = $_;
-  
+
   print NEU $Zeile if $Zeile =~ /^[CETSX] .+/;
 
   $epgsearch = $1 if $Zeile =~ /^D .*(Kanal.+Suchtimer.+S-ID.+)$/;
@@ -58,7 +58,7 @@ while(<DATEI>) {
     $neuformat=1;
     $aux = $1;
   }
-  
+
 }
 
 if ( $neuformat == 1 && $aux !~ /epgsearch/ && $epgsearch ne "" ) {
diff --git a/scripts/epgsearchcmds-french.conf b/scripts/epgsearchcmds-french.conf
index cc87a9f..7ed836f 100644
--- a/scripts/epgsearchcmds-french.conf
+++ b/scripts/epgsearchcmds-french.conf
@@ -24,7 +24,7 @@
 # ENG epg2taste                     : /usr/local/bin/epg2taste.sh
 # ENG epg2autotimer                 : /usr/local/bin/epg2autotimer.sh
 #
-# En Francais : 
+# En Francais :
 Rappel de l'émission?                              : /usr/lib/vdr/epgsearch/rememberevent.sh 0
 Rappel de l'émission? (avec changement de chaînes) : /usr/lib/vdr/epgsearch/rememberevent.sh 1
 Programme interdit                                 : /usr/lib/vdr/epgsearch/epg2taste.sh
diff --git a/scripts/mtdone2epgsearchdone.sh b/scripts/mtdone2epgsearchdone.sh
index 897dcd3..52d9062 100755
--- a/scripts/mtdone2epgsearchdone.sh
+++ b/scripts/mtdone2epgsearchdone.sh
@@ -49,7 +49,7 @@ function AddRecToDone()
   Title=$(echo $Rec|cut -f1 -d'|')
   Subtitle=$(echo $Rec|cut -f2 -d'|')
   [ "$Subtitle" = "NoSub" ] && Subtitle=""
-  
+
 
       if [ "$ASK_SID" = "yes" ]; then
 	if [ "$Title" != "$PrevTitle" ]; then
@@ -112,6 +112,6 @@ if [ "$TEST" = "yes" ]; then
  printf "\n\nTEST run !!!!\nNow take a look at the File $EPGSEARCHDONE_FILE to see if everything is OK.\n\n"
 else
   # Tell epgsearch that done-file was changed
-  echo "$SVDRPSEND PLUG epgsearch UPDD >/dev/null 2>&1" | at now >/dev/null 2>&1 
+  echo "$SVDRPSEND PLUG epgsearch UPDD >/dev/null 2>&1" | at now >/dev/null 2>&1
 fi
 
diff --git a/scripts/recordingdone.sh b/scripts/recordingdone.sh
index ca71aa9..a176841 100755
--- a/scripts/recordingdone.sh
+++ b/scripts/recordingdone.sh
@@ -40,7 +40,7 @@
 TEST=yes
 
 # should we add recordings that have a S-ID in info.vdr ?
-# That is recordings already recorded with epgsearch-autotimer 
+# That is recordings already recorded with epgsearch-autotimer
 # and they are probably already in the done file!
 # yes = add recodrings with S-ID
 # no = don't add recordings with S-ID
diff --git a/scripts/sendEmail.pl b/scripts/sendEmail.pl
index 2f2d143..642ac0f 100755
--- a/scripts/sendEmail.pl
+++ b/scripts/sendEmail.pl
@@ -2,7 +2,7 @@
 ##############################################################################
 ## sendEmail
 ## Written by: Brandon Zehm <caspian at dotconf.net>
-## 
+##
 ## License:
 ##  sendEmail (hereafter referred to as "program") is free software;
 ##  you can redistribute it and/or modify it under the terms of the GNU General
@@ -11,7 +11,7 @@
 ##  Note that when redistributing modified versions of this source code, you
 ##  must ensure that this disclaimer and the above coder's names are included
 ##  VERBATIM in the modified code.
-##  
+##
 ## Disclaimer:
 ##  This program is provided with no warranty of any kind, either expressed or
 ##  implied.  It is the responsibility of the user (you) to fully research and
@@ -21,9 +21,9 @@
 ##  or anything that happens because of your use (or misuse) of this program,
 ##  including but not limited to anything you, your lawyers, or anyone else
 ##  can dream up.  And now, a relevant quote directly from the GPL:
-##    
+##
 ## NO WARRANTY
-## 
+##
 ##  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 ##  FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
 ##  OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
@@ -33,7 +33,7 @@
 ##  TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
 ##  PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 ##  REPAIR OR CORRECTION.
-##    
+##
 ##############################################################################
 use strict;
 use IO::Socket;
@@ -54,25 +54,25 @@ my %conf = (
     "hostname"             => 'localhost',                         ## Used in printmsg() for all output, and in SMTP EHLO.
     "debug"                => 0,                                   ## Default debug level
     "error"                => '',                                  ## Error messages will often be stored here
-    
+
     ## Logging
     "debug"                => 0,
     "stdout"               => 1,
     "logging"              => 0,                                   ## If this is true the printmsg function prints to the log file
     "logFile"              => '',                                  ## If this is specified (form the command line via -l) this file will be used for logging.
-    
+
     ## Network
     "server"               => 'localhost',                         ## Default SMTP server
     "port"                 => 25,                                  ## Default port
     "alarm"                => '',                                  ## Default timeout for connects and reads, this gets set from $opt{'timeout'}
-    
+
     ## Email
     "delimiter"            => "----MIME delimiter for sendEmail-"  ## MIME Delimiter
                               . rand(1000000),                     ## Add some randomness to the delimiter
     "Message-ID"           => rand(1000000) . "-sendEmail",        ## Message-ID for email header
     "authUsername"         => '',                                  ## Username used in SMTP Auth
     "authPassword"         => '',                                  ## Password used in SMTP Auth
-    
+
 );
 
 
@@ -80,16 +80,16 @@ my %conf = (
 my %opt = (
     ## Addressing
     "reply-to"             => '',                                  ## Reply-To field
-    
+
     ## Message
     "message-file"         => '',                                  ## File to read message body from
     "message-header"       => '',                                  ## Additional email header line
     "message-format"       => 'normal',                            ## If "raw" is specified the message is sent unmodified
     "message-charset"      => 'iso-8859-1',                        ## Message character-set
-    
+
     ## Network
     "timeout"              => 60,                                  ## Default timeout for connects and reads, this is copied to $conf{'alarm'} later.
-    
+
 );
 
 ## More variables used later in the program
@@ -173,7 +173,7 @@ if (!($message)) {
         }
         close(MFILE);
     }
-    
+
     ## Read message body from STDIN
     else {
         alarm($conf{'alarm'}) if ($^O !~ /win/i);  ## alarm() doesn't work in win32
@@ -213,8 +213,8 @@ my $date = sprintf("%s, %s %s %d %.2d:%.2d:%.2d %s",$day, $mday, $mon, $year, $h
 ##  Connect to the SMTP server  ##
 ##################################
 printmsg("DEBUG => Connecting to $conf{'server'}:$conf{'port'}", 1);
-$SIG{'ALRM'} = sub { 
-    printmsg("ERROR => Timeout while connecting to $conf{'server'}:$conf{'port'}  There was no response after $conf{'alarm'} seconds.", 0); 
+$SIG{'ALRM'} = sub {
+    printmsg("ERROR => Timeout while connecting to $conf{'server'}:$conf{'port'}  There was no response after $conf{'alarm'} seconds.", 0);
     printmsg("HINT => Try specifying a different mail relay with the -s option.", 1);
     quit("", 1);
 };
@@ -247,7 +247,7 @@ if ( (!$SERVER) or (!$SERVER->opened()) ) {
 if (SMTPchat()) { quit($conf{'error'}, 1); }
 
 ## EHLO
-if (SMTPchat('EHLO ' . $conf{'hostname'}))   { 
+if (SMTPchat('EHLO ' . $conf{'hostname'}))   {
     printmsg($conf{'error'}, 0);
     printmsg("NOTICE => EHLO command failed, attempting HELO instead");
     if (SMTPchat('HELO ' . $conf{'hostname'}))   { quit($conf{'error'}, 1); }
@@ -301,36 +301,36 @@ if ($opt{'message-format'} =~ /^raw$/i) {
 
 ## If the message-format isn't raw, then build and send the message,
 else {
-    
+
     ## Message-ID: <MessageID>
     print $SERVER 'Message-ID: <' . $conf{'Message-ID'} . '@' . $conf{'hostname'} . '>' . $CRLF;
-    
+
     ## From: "Name" <address at domain.com> (the pointless test below is just to keep scoping correct)
     if ($from) {
         my ($name, $address) = returnAddressParts($from);
         print $SERVER 'From: "' . $name . '" <' . $address . '>' . $CRLF;
     }
-    
-    ## Reply-To: 
+
+    ## Reply-To:
     if ($opt{'reply-to'}) {
         my ($name, $address) = returnAddressParts($opt{'reply-to'});
         print $SERVER 'Reply-To: "' . $name . '" <' . $address . '>' . $CRLF;
     }
-    
+
     ## To: "Name" <address at domain.com>
     if (scalar(@to) > 0) {
         print $SERVER "To:";
         for (my $a = 0; $a < scalar(@to); $a++) {
             my $msg = "";
-            
+
             my ($name, $address) = returnAddressParts($to[$a]);
             $msg = " \"$name\" <$address>";
-            
+
             ## If we're not on the last address add a comma to the end of the line.
             if (($a + 1) != scalar(@to)) {
                 $msg .= ",";
             }
-            
+
             print $SERVER $msg . $CRLF;
         }
     }
@@ -338,41 +338,41 @@ else {
     else {
         print $SERVER "To: \"Undisclosed Recipients\" <>$CRLF";
     }
-    
+
     if (scalar(@cc) > 0) {
         print $SERVER "Cc:";
         for (my $a = 0; $a < scalar(@cc); $a++) {
             my $msg = "";
-            
+
             my ($name, $address) = returnAddressParts($cc[$a]);
             $msg = " \"$name\" <$address>";
-            
+
             ## If we're not on the last address add a comma to the end of the line.
             if (($a + 1) != scalar(@cc)) {
                 $msg .= ",";
             }
-            
+
             print $SERVER $msg . $CRLF;
         }
     }
-    
+
     print $SERVER 'Subject: ' . $subject . $CRLF;                   ## Subject
     print $SERVER 'Date: ' . $date . $CRLF;                         ## Date
     print $SERVER 'X-Mailer: sendEmail-'.$conf{'version'}.$CRLF;    ## X-Mailer
-    
+
     ## Send an additional message header line if specified
     if ($opt{'message-header'}) {
         print $SERVER $opt{'message-header'} . $CRLF;
     }
-    
+
     ## Encode all messages with MIME.
     print $SERVER "MIME-Version: 1.0$CRLF";
     print $SERVER "Content-Type: multipart/mixed; boundary=\"$conf{'delimiter'}\"$CRLF";
     print $SERVER "$CRLF";
     print $SERVER "This is a multi-part message in MIME format. To properly display this message you need a MIME-Version 1.0 compliant Email program.$CRLF";
     print $SERVER "$CRLF";
-    
-    
+
+
     ## Send message body
     print $SERVER "--$conf{'delimiter'}$CRLF";
     ## If the message contains HTML change the Content-Type
@@ -388,14 +388,14 @@ else {
     print $SERVER "Content-Transfer-Encoding: 7bit$CRLF";
     print $SERVER $CRLF;
     print $SERVER $message;
-    
-    
-    
+
+
+
     ## Send Attachemnts
     if ($attachments[0]) {
         ## Disable the alarm so people on modems can send big attachments
         alarm(0) if ($^O !~ /win/i);  ## alarm() doesn't work in win32
-        
+
         ## Send the attachments
         foreach my $filename (@attachments) {
             ## This is check 2, we already checked this above, but just in case...
@@ -411,10 +411,10 @@ else {
             }
         }
     }
-    
-    
+
+
     ## End the mime encoded message
-    print $SERVER "$CRLF--$conf{'delimiter'}--$CRLF";  
+    print $SERVER "$CRLF--$conf{'delimiter'}--$CRLF";
 }
 
 
@@ -443,10 +443,10 @@ close $SERVER;
 
 if ($conf{'debug'} or $conf{'logging'}) {
     printmsg("Generating a detailed exit message", 3);
-    
+
     ## Put the message together
     my $output = "Email was sent successfully!  From: <" . (returnAddressParts($from))[1] . "> ";
-    
+
     if (scalar(@to) > 0) {
         $output .= "To: ";
         for ($a = 0; $a < scalar(@to); $a++) {
@@ -466,19 +466,19 @@ if ($conf{'debug'} or $conf{'logging'}) {
         }
     }
     $output .= "Subject: [$subject] " if ($subject);
-    if (scalar(@attachments_names) > 0) { 
+    if (scalar(@attachments_names) > 0) {
         $output .= "Attachment(s): ";
         foreach(@attachments_names) {
             $output .= "[$_] ";
         }
     }
     $output .= "Server: [$conf{'server'}:$conf{'port'}]";
-    
-    
+
+
 ######################
 #  Exit the program  #
 ######################
-    
+
     ## Print / Log the detailed message
     quit($output, 0);
 }
@@ -526,35 +526,35 @@ else {
 
 ###############################################################################################
 ##  Function: initialize ()
-##  
+##
 ##  Does all the script startup jibberish.
-##  
+##
 ###############################################################################################
 sub initialize {
 
-    ## Set STDOUT to flush immediatly after each print  
+    ## Set STDOUT to flush immediatly after each print
     $| = 1;
-    
+
     ## Intercept signals
     $SIG{'QUIT'}  = sub { quit("EXITING: Received SIG$_[0]", 1); };
     $SIG{'INT'}   = sub { quit("EXITING: Received SIG$_[0]", 1); };
     $SIG{'KILL'}  = sub { quit("EXITING: Received SIG$_[0]", 1); };
     $SIG{'TERM'}  = sub { quit("EXITING: Received SIG$_[0]", 1); };
-  
+
     ## ALARM and HUP signals are not supported in Win32
     unless ($^O =~ /win/i) {
         $SIG{'HUP'}   = sub { quit("EXITING: Received SIG$_[0]", 1); };
         $SIG{'ALRM'}  = sub { quit("EXITING: Received SIG$_[0]", 1); };
     }
-    
+
     ## Fixup $conf{'programName'}
     $conf{'programName'} =~ s/(.)*[\/,\\]//;
     $0 = $conf{'programName'} . " " . join(" ", @ARGV);
-    
+
     ## Fixup $conf{'hostname'}
     if ($conf{'hostname'} eq 'localhost') {
         $conf{'hostname'} = "";
-        
+
         if ($ENV{'HOSTNAME'}) {
             $conf{'hostname'} = lc($ENV{'HOSTNAME'});
         }
@@ -566,15 +566,15 @@ sub initialize {
             use Sys::Hostname;
             $conf{'hostname'} = lc(hostname());
         }
-        
+
         ## Assign a name of "localhost" if it can't find anything else.
         if (!$conf{'hostname'}) {
             $conf{'hostname'} = 'localhost';
         }
-        
+
         $conf{'hostname'} =~ s/\..*$//;  ## Remove domain name if it's present
     }
-    
+
     return(1);
 }
 
@@ -594,32 +594,32 @@ sub initialize {
 
 ###############################################################################################
 ##  Function: processCommandLine ()
-##  
+##
 ##  Processes command line storing important data in global vars (usually %conf)
-##  
+##
 ###############################################################################################
 sub processCommandLine {
-    
-    
+
+
     ############################
     ##  Process command line  ##
     ############################
-    
+
     my @ARGS = @ARGV;  ## This is so later we can re-parse the command line args later if we need to
     my $numargv = @ARGS;
     help() unless ($numargv);
     my $counter = 0;
-    
+
     for ($counter = 0; $counter < $numargv; $counter++) {
-  
+
         if ($ARGS[$counter] =~ /^-h$/i) {                    ## Help ##
             help();
         }
-        
+
         elsif ($ARGS[$counter] eq "") {                      ## Ignore null arguments
             ## Do nothing
         }
-        
+
         elsif ($ARGS[$counter] =~ /^--help/) {               ## Topical Help ##
             $counter++;
             if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
@@ -629,12 +629,12 @@ sub processCommandLine {
                 help();
             }
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-o$/i) {                 ## Options specified with -o ##
             $counter++;
             ## Loop through each option passed after the -o
             while ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-                
+
                 if ($ARGS[$counter] !~ /(\S+)=(\S.*)/) {
                     printmsg("WARNING => Name/Value pair [$ARGS[$counter]] is not properly formatted", 0);
                     printmsg("WARNING => Arguments proceeding -o should be in the form of \"name=value\"", 0);
@@ -652,13 +652,13 @@ sub processCommandLine {
                 $counter++;
             }   $counter--;
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-f$/) {                  ## From ##
             $counter++;
             if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { $from = $ARGS[$counter]; }
             else { printmsg("WARNING => The argument after -f was not an email address!", 0); $counter--; }
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-t$/) {                  ## To ##
             $counter++;
             while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) {
@@ -671,7 +671,7 @@ sub processCommandLine {
                 $counter++;
             }   $counter--;
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-cc$/) {                 ## Cc ##
             $counter++;
             while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) {
@@ -684,7 +684,7 @@ sub processCommandLine {
                 $counter++;
             }   $counter--;
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-bcc$/) {                ## Bcc ##
             $counter++;
             while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) {
@@ -697,7 +697,7 @@ sub processCommandLine {
                 $counter++;
             }   $counter--;
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-m$/) {                  ## Message ##
             $counter++;
             $message = "";
@@ -706,12 +706,12 @@ sub processCommandLine {
                 $message .= $ARGS[$counter];
                 $counter++;
             }   $counter--;
-            
+
             ## Replace '\n' with $CRLF.
             ## This allows newlines with messages sent on the command line
             $message =~ s/\\n/$CRLF/g;
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-u$/) {                  ## Subject ##
             $counter++;
             $subject = "";
@@ -721,7 +721,7 @@ sub processCommandLine {
                 $counter++;
             }   $counter--;
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-s$/) {                  ## Server ##
             $counter++;
             if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
@@ -732,7 +732,7 @@ sub processCommandLine {
             }
             else { printmsg("WARNING - The argument after -s was not the server!", 0); $counter--; }
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-a$/) {                  ## Attachments ##
             $counter++;
             while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) {
@@ -740,7 +740,7 @@ sub processCommandLine {
                 $counter++;
             }   $counter--;
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-xu$/) {                  ## AuthSMTP Username ##
             $counter++;
             if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
@@ -750,12 +750,12 @@ sub processCommandLine {
                $tmp =~ tr|` -_|AA-Za-z0-9+/|;                           ## Translate from uuencode to base64
                $conf{'authUsername'} = $tmp;
             }
-            else { 
+            else {
                 printmsg("WARNING => The argument after -xu was not valid username!", 0);
                 $counter--;
             }
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-xp$/) {                  ## AuthSMTP Password ##
             $counter++;
             if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
@@ -770,28 +770,28 @@ sub processCommandLine {
                 $counter--;
             }
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-l$/) {                  ## Logging ##
             $counter++;
             $conf{'logging'} = 1;
             if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { $conf{'logFile'} = $ARGS[$counter]; }
             else { printmsg("WARNING - The argument after -l was not the log file!", 0); $counter--; }
         }
-        
+
         elsif ($ARGS[$counter] =~ s/^-v+//i) {               ## Verbosity ##
             my $tmp = (length($&) - 1);
             $conf{'debug'} += $tmp;
         }
-        
+
         elsif ($ARGS[$counter] =~ /^-q$/) {                  ## Quiet ##
             $conf{'stdout'} = 0;
         }
-        
+
         else {
             printmsg("Error: \"$ARGS[$counter]\" is not a recognized option!", 0);
             help();
         }
-        
+
     }
 
 
@@ -799,8 +799,8 @@ sub processCommandLine {
 
 
 
-    
-    
+
+
     ###################################################
     ##  Verify required variables are set correctly  ##
     ###################################################
@@ -817,7 +817,7 @@ sub processCommandLine {
     if ( ((scalar(@to)) + (scalar(@cc)) + (scalar(@bcc))) <= 0) {
         quit("ERROR => You must specify at least one recipient via -t, -cc, or -bcc", 1);
     }
-    
+
     ## Make sure email addresses look OK.
     foreach my $addr (@to, @cc, @bcc, $from, $opt{'reply-to'}) {
         if ($addr) {
@@ -828,7 +828,7 @@ sub processCommandLine {
             }
         }
     }
-    
+
     ## Make sure all attachments exist.
     foreach my $file (@attachments) {
         if ( (! -f $file) or (! -r $file) ) {
@@ -837,17 +837,17 @@ sub processCommandLine {
             quit("", 1);
         }
     }
-    
+
     if ($conf{'logging'} and (!$conf{'logFile'})) {
         quit("ERROR => You used -l to enable logging but didn't specify a log file!", 1);
-    }    
-    
+    }
+
     if ( $conf{'authUsername'} ) {
         if (!$conf{'authPassword'}) {
             quit ("ERROR => You must supply both a username and a password to use SMTP auth.",1);
         }
     }
-    
+
     ## Return 0 errors
     return(0);
 }
@@ -907,49 +907,49 @@ sub getResponse {
 ##               be sent to the server, but a valid response is still required from the server.
 ##
 ##  Input:       [$command]          A (optional) valid SMTP command (ex. "HELO")
-##  
-##  
-##  Output:      Returns zero on success, or non-zero on error.  
+##
+##
+##  Output:      Returns zero on success, or non-zero on error.
 ##               Error messages will be stored in $conf{'error'}
-##               
-##  
+##
+##
 ##  Example:     SMTPchat ("HELO mail.isp.net");
 ###############################################################################################
 sub SMTPchat {
     my ($command) = @_;
-    
+
     printmsg("INFO => Sending: \t$command", 1) if ($command);
-    
+
     ## Send our command
     print $SERVER "$command$CRLF" if ($command);
-    
+
     ## Read a response from the server
     $SIG{'ALRM'} = sub { $conf{'error'} = "alarm"; $SERVER->close(); };
     alarm($conf{'alarm'}) if ($^O !~ /win/i);  ## alarm() doesn't work in win32;
-    my $result = getResponse(\$SERVER); 
+    my $result = getResponse(\$SERVER);
     alarm(0) if ($^O !~ /win/i);  ## alarm() doesn't work in win32;
-    
+
     ## Generate an alert if we timed out
     if ($conf{'error'} eq "alarm") {
         $conf{'error'} = "ERROR => Timeout while reading from $conf{'server'}:$conf{'port'} There was no response after $conf{'alarm'} seconds.";
         return(1);
     }
-    
+
     ## Make sure the server actually responded
     if (!$result) {
         $conf{'error'} = "ERROR => $conf{'server'}:$conf{'port'} returned a zero byte response to our query.";
         return(2);
     }
-    
+
     ## Validate the response
     if (evalSMTPresponse($result)) {
         ## conf{'error'} will already be set here
         return(2);
     }
-    
+
     ## Print the success messsage
     printmsg($conf{'error'}, 1);
-    
+
     ## Return Success
     return(0);
 }
@@ -970,46 +970,46 @@ sub SMTPchat {
 ##
 ##  Description: Searches $message for either an  SMTP success or error code, and returns
 ##               0 on success, and the actual error code on error.
-##               
 ##
-##  Input:       $message          Data received from a SMTP server (ex. "220 
-##                                
-##  
-##  Output:      Returns zero on success, or non-zero on error.  
+##
+##  Input:       $message          Data received from a SMTP server (ex. "220
+##
+##
+##  Output:      Returns zero on success, or non-zero on error.
 ##               Error messages will be stored in $conf{'error'}
-##               
-##  
+##
+##
 ##  Example:     SMTPchat ("HELO mail.isp.net");
 ###############################################################################################
 sub evalSMTPresponse {
     my ($message) = @_;
-    
+
     ## Validate input
-    if (!$message) { 
+    if (!$message) {
         $conf{'error'} = "ERROR => No message was passed to evalSMTPresponse().  What happened?";
         return(1)
     }
-    
+
     printmsg("DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in the message: $message ", 3);
-    
+
     ## Look for a SMTP success code
     if ($message =~ /^([23]\d\d)/) {
         printmsg("DEBUG => evalSMTPresponse() - Found SMTP success code: $1", 2);
         $conf{'error'} = "SUCCESS => Received: \t$message";
         return(0);
     }
-    
+
     ## Look for a SMTP error code
     if ($message =~ /^([45]\d\d)/) {
         printmsg("DEBUG => evalSMTPresponse() - Found SMTP error code: $1", 2);
         $conf{'error'} = "ERROR => Received: \t$message";
         return($1);
     }
-    
+
     ## If no SMTP codes were found return an error of 1
     $conf{'error'} = "ERROR => Received a message with no success or error code. The message received was: $message";
     return(2);
-    
+
 }
 
 
@@ -1093,12 +1093,12 @@ sub return_day {
 ###############################################################################################
 ##  Function:    returnAddressParts(string $address)
 ##
-##  Description: Returns a two element array containing the "Name" and "Address" parts of 
+##  Description: Returns a two element array containing the "Name" and "Address" parts of
 ##               an email address.
-##  
+##
 ## Example:      "Brandon Zehm <caspian at dotconf.net>"
 ##               would return: ("Brandon Zehm", "caspian at dotconf.net");
-## 
+##
 ##               "caspian at dotconf.net"
 ##               would return: ("caspian at dotconf.net", "caspian at dotconf.net")
 ###############################################################################################
@@ -1106,35 +1106,35 @@ sub returnAddressParts {
     my $input = $_[0];
     my $name = "";
     my $address = "";
-    
+
     ## Make sure to fail if it looks totally invalid
     if ($input !~ /(\S+\@\S+)/) {
         $conf{'error'} = "ERROR => The address [$input] doesn't look like a valid email address, ignoring it";
         return(undef());
     }
-    
+
     ## Check 1, should find addresses like: "Brandon Zehm <caspian at dotconf.net>"
     elsif ($input =~ /^\s*(\S(.*\S)?)\s*<(\S+\@\S+)>/o) {
         ($name, $address) = ($1, $3);
     }
-    
+
     ## Otherwise if that failed, just get the address: <caspian at dotconf.net>
     elsif ($input =~ /<(\S+\@\S+)>/o) {
         $name = $address = $1;
     }
-    
+
     ## Or maybe it was formatted this way: caspian at dotconf.net
     elsif ($input =~ /(\S+\@\S+)/o) {
         $name = $address = $1;
     }
-    
+
     ## Something stupid happened, just return an error.
     unless ($name and $address) {
         printmsg("ERROR => Couldn't parse the address: $input", 0);
         printmsg("HINT => If you think this should work, consider reporting this as a bug to $conf{'authorEmail'}", 1);
         return(undef());
     }
-    
+
     ## Make sure there aren't invalid characters in the address, and return it.
     my $ctrl        = '\000-\037';
     my $nonASCII    = '\x80-\xff';
@@ -1169,18 +1169,18 @@ sub send_attachment {
     my (@fields, $y, $filename_name, $encoding,      ## Local variables
         @attachlines, $content_type);
     my $bin = 1;
-    
-    @fields = split(/\/|\\/, $filename);             ## Get the actual filename without the path  
-    $filename_name = pop(@fields);       
+
+    @fields = split(/\/|\\/, $filename);             ## Get the actual filename without the path
+    $filename_name = pop(@fields);
     push @attachments_names, $filename_name;         ## FIXME: This is only used later for putting in the log file
-    
+
     ##########################
     ## Autodetect Mime Type ##
     ##########################
-    
+
     @fields = split(/\./, $filename_name);
     $encoding = $fields[$#fields];
-    
+
     if ($encoding =~ /txt|text|log|conf|^c$|cpp|^h$|inc|m3u/i) {   $content_type = 'text/plain';                      }
     elsif ($encoding =~ /html|htm|shtml|shtm|asp|php|cfm/i) {      $content_type = 'text/html';                       }
     elsif ($encoding =~ /sh$/i) {                                  $content_type = 'application/x-sh';                }
@@ -1216,16 +1216,16 @@ sub send_attachment {
     elsif ($encoding =~ /latex/i) {                                $content_type = 'application/x-latex';             }
     elsif ($encoding =~ /vcf/i) {                                  $content_type = 'application/x-vcard';             }
     else { $content_type = 'application/octet-stream';  }
-  
-  
+
+
   ############################
   ## Process the attachment ##
   ############################
-    
+
     #####################################
     ## Generate and print MIME headers ##
     #####################################
-    
+
     $y  = "$CRLF--$conf{'delimiter'}$CRLF";
     $y .= "Content-Type: $content_type;$CRLF";
     $y .= "        name=\"$filename_name\"$CRLF";
@@ -1233,24 +1233,24 @@ sub send_attachment {
     $y .= "Content-Disposition: attachment; filename=\"$filename_name\"$CRLF";
     $y .= "$CRLF";
     print $SERVER $y;
-    
-    
+
+
     ###########################################################
     ## Convert the file to base64 and print it to the server ##
     ###########################################################
-    
-    open (FILETOATTACH, $filename) || do { 
+
+    open (FILETOATTACH, $filename) || do {
         printmsg("ERROR => Opening the file [$filename] for attachment failed with the error: $!", 0);
         return(1);
     };
     binmode(FILETOATTACH);                 ## Hack to make Win32 work
-    
+
     my $res = "";
     my $tmp = "";
     my $base64 = "";
     while (<FILETOATTACH>) {               ## Read a line from the (binary) file
         $res .= $_;
-        
+
         ###################################
         ## Convert binary data to base64 ##
         ###################################
@@ -1260,16 +1260,16 @@ sub send_attachment {
             $tmp =~ tr|` -_|AA-Za-z0-9+/|;     ## Translate from uuencode to base64
             $base64 .= $tmp;
         }
-        
+
         ################################
         ## Print chunks to the server ##
         ################################
         while ($base64 =~ s/(.{76})//s) {
             print $SERVER "$1$CRLF";
         }
-      
+
     }
-    
+
     ###################################
     ## Encode and send the leftovers ##
     ###################################
@@ -1280,7 +1280,7 @@ sub send_attachment {
         chop($res);
         $res =~ tr|` -_|AA-Za-z0-9+/|;             ## Translate from uuencode to base64
     }
-    
+
     ############################
     ## Fix padding at the end ##
     ############################
@@ -1291,12 +1291,12 @@ sub send_attachment {
             print $SERVER "$1$CRLF";
         }
     }
-    
+
     close (FILETOATTACH) || do {
         printmsg("ERROR - Closing the filehandle for file [$filename] failed with the error: $!", 0);
         return(2);
     };
-    
+
     ## Return 0 errors
     return(0);
 
@@ -1327,9 +1327,9 @@ sub send_attachment {
 ##  Input:       $message          A message to be printed, logged, etc.
 ##               $level            The debug level of the message. If
 ##                                 not defined 0 will be assumed.  0 is
-##                                 considered a normal message, 1 and 
+##                                 considered a normal message, 1 and
 ##                                 higher is considered a debug message.
-##  
+##
 ##  Output:      Prints to STDOUT
 ##
 ##  Assumptions: $conf{'hostname'} should be the name of the computer we're running on.
@@ -1344,33 +1344,33 @@ sub send_attachment {
 sub printmsg {
     ## Assign incoming parameters to variables
     my ( $message, $level ) = @_;
-    
+
     ## Make sure input is sane
     $level = 0 if (!defined($level));
     $message =~ s/\s+$//sgo;
     $message =~ s/\r?\n/, /sgo;
-    
+
     ## Continue only if the debug level of the program is >= message debug level.
     if ($conf{'debug'} >= $level) {
-        
+
         ## Get the date in the format: Dec  3 11:14:04
         my ($sec, $min, $hour, $mday, $mon) = localtime();
         $mon = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')[$mon];
         my $date = sprintf("%s %02d %02d:%02d:%02d", $mon, $mday, $hour, $min, $sec);
-        
+
         ## Print to STDOUT always if debugging is enabled, or if conf{stdout} is true.
         if ( ($conf{'debug'} >= 1) or ($conf{'stdout'} == 1) ) {
             print "$date $conf{'hostname'} $conf{'programName'}\[$$\]: $message\n";
         }
-        
+
         ## Print to the log file if $conf{'logging'} is true
         if ($conf{'logFile'}) {
             if (openLogFile($conf{'logFile'})) { $conf{'logFile'} = ""; printmsg("ERROR => Opening the file [$conf{'logFile'}] for appending returned the error: $!", 1); }
             print LOGFILE "$date $conf{'hostname'} $conf{'programName'}\[$$\]: $message\n";
         }
-        
+
     }
-    
+
     ## Return 0 errors
     return(0);
 }
@@ -1387,24 +1387,24 @@ sub printmsg {
 
 
 ###############################################################################################
-## FUNCTION:    
+## FUNCTION:
 ##   openLogFile ( $filename )
-## 
-## 
-## DESCRIPTION: 
+##
+##
+## DESCRIPTION:
 ##   Opens the file $filename and attaches it to the filehandle "LOGFILE".  Returns 0 on success
 ##   and non-zero on failure.  Error codes are listed below, and the error message gets set in
 ##   global variable $!.
-##   
-##   
-## Example: 
+##
+##
+## Example:
 ##   openFile ("/var/log/sendEmail.log");
 ##
 ###############################################################################################
 sub openLogFile {
     ## Get the incoming filename
     my $filename = $_[0];
-    
+
     ## Make sure our file exists, and if the file doesn't exist then create it
     if ( ! -f $filename ) {
         print STDERR "NOTICE: The log file [$filename] does not exist.  Creating it now with mode [0600].\n" if ($conf{'stdout'});
@@ -1412,15 +1412,15 @@ sub openLogFile {
         close LOGFILE;
         chmod (0600, $filename);
     }
-    
+
     ## Now open the file and attach it to a filehandle
     open (LOGFILE,">>$filename") or return (1);
-    
+
     ## Put the file into non-buffering mode
     select LOGFILE;
     $| = 1;
     select STDOUT;
-    
+
     ## Return success
     return(0);
 }
@@ -1442,9 +1442,9 @@ sub openLogFile {
 
 ###############################################################################################
 ##  Function:    quit (string $message, int $errorLevel)
-##  
-##  Description: Exits the program, optionally printing $message.  It 
-##               returns an exit error level of $errorLevel to the 
+##
+##  Description: Exits the program, optionally printing $message.  It
+##               returns an exit error level of $errorLevel to the
 ##               system  (0 means no errors, and is assumed if empty.)
 ##
 ##  Example:     quit("Exiting program normally", 0);
@@ -1456,12 +1456,12 @@ sub quit {
       $incoming{'errorLevel'}
     ) = @_;
     $incoming{'errorLevel'} = 0 if (!defined($incoming{'errorLevel'}));
-    
+
     ## Print exit message
-    if ($incoming{'message'}) { 
+    if ($incoming{'message'}) {
         printmsg($incoming{'message'}, 0);
     }
-    
+
     ## Exit
     exit($incoming{'errorLevel'});
 }
@@ -1480,9 +1480,9 @@ sub quit {
 ###############################################################################################
 ## Function:    help ()
 ##
-## Description: For all those newbies ;) 
+## Description: For all those newbies ;)
 ##              Prints a help message and exits the program.
-## 
+##
 ###############################################################################################
 sub help {
 exit(1) if (!$conf{'stdout'});
@@ -1491,23 +1491,23 @@ print <<EOM;
 ${colorBold}$conf{'programName'}-$conf{'version'} by $conf{'authorName'} <$conf{'authorEmail'}>${colorNoBold}
 
 Synopsis:  $conf{'programName'} -f ADDRESS [options]
-  
+
   ${colorRed}Required:${colorNormal}
     -f ADDRESS                from (sender) email address
     * At least one recipient required via -t, -cc, or -bcc
     * Message body required via -m, STDIN, or -o message-file=FILE
-    
+
   ${colorGreen}Common:${colorNormal}
     -t ADDRESS [ADDR ...]     to email address(es)
     -u SUBJECT                message subject
     -m MESSAGE                message body
     -s SERVER[:PORT]          smtp mail relay, default is $conf{'server'}:$conf{'port'}
-    
+
   ${colorGreen}Optional:${colorNormal}
     -a   FILE [FILE ...]      file attachment(s)
     -cc  ADDRESS [ADDR ...]   cc  email address(es)
     -bcc ADDRESS [ADDR ...]   bcc email address(es)
-    
+
   ${colorGreen}Paranormal:${colorNormal}
     -xu USERNAME              authentication user (for SMTP authentication)
     -xp PASSWORD              authentication password (for SMTP authentication)
@@ -1515,7 +1515,7 @@ Synopsis:  $conf{'programName'} -f ADDRESS [options]
     -v                        verbosity, use multiple times for greater effect
     -q                        be quiet (no stdout output)
     -o NAME=VALUE             see extended help topic "misc" for details
-  
+
   ${colorGreen}Help:${colorNormal}
     --help TOPIC              The following extended help topics are available:
         addressing            explain addressing and related options
@@ -1539,9 +1539,9 @@ exit(1);
 ###############################################################################################
 ## Function:    helpTopic ($topic)
 ##
-## Description: For all those newbies ;) 
+## Description: For all those newbies ;)
 ##              Prints a help message and exits the program.
-## 
+##
 ###############################################################################################
 sub helpTopic {
     exit(1) if (!$conf{'stdout'});
@@ -1565,17 +1565,17 @@ Options related to addressing:
     -cc  ADDRESS [ADDRESS ...]
     -bcc ADDRESS [ADDRESS ...]
     -o   reply-to=ADDRESS
-    
+
 -f ADDRESS
     This required option specifies who the email is from, I.E. the sender's
     email address.
-    
+
 -t ADDRESS [ADDRESS ...]
     This option specifies the primary recipient(s).  At least one recipient
     address must be specified via the -t, -cc. or -bcc options.
 
 -cc ADDRESS [ADDRESS ...]
-    This option specifies the "carbon copy" recipient(s).  At least one 
+    This option specifies the "carbon copy" recipient(s).  At least one
     recipient address must be specified via the -t, -cc. or -bcc options.
 
 -bcc ADDRESS [ADDRESS ...]
@@ -1585,7 +1585,7 @@ Options related to addressing:
 -o reply-to=ADDRESS
     This option specifies that an optional "Reply-To" address should be
     written in the email's headers.
-    
+
 
 ${colorGreen}Email Address Syntax${colorNormal}
 Email addresses may be specified in one of two ways:
@@ -1595,7 +1595,7 @@ Email addresses may be specified in one of two ways:
 The "Full Name" method is useful if you want a name, rather than a plain
 email address, to be displayed in the recipient's From, To, or Cc fields
 when they view the message.
-    
+
 
 ${colorGreen}Multiple Recipients${colorNormal}
 The -t, -cc, and -bcc options each accept multiple addresses.  They may be
@@ -1608,16 +1608,16 @@ Examples:
 
   * Space separated list:
     -t jane.doe\@yahoo.com "John Doe <john.doe\@gmail.com>"
-    
+
   * Semi-colon separated list:
     -t "jane.doe\@yahoo.com; John Doe <john.doe\@gmail.com>"
- 
+
   * Comma separated list:
     -t "jane.doe\@yahoo.com, John Doe <john.doe\@gmail.com>"
-  
+
   * Multiple -t, -cc, or -bcc options:
     -t "jane.doe\@yahoo.com" -t "John Doe <john.doe\@gmail.com>"
-  
+
 
 EOM
             last CASE;
@@ -1642,12 +1642,12 @@ Options related to the message:
     -o  message-header=EMAIL HEADER
     -o  message-format=raw
     -o  message-charset=CHARSET
-    
+
 -u SUBJECT
     This option allows you to specify the subject for your email message.
-    It is not required (anymore) that the subject be quoted, although it 
+    It is not required (anymore) that the subject be quoted, although it
     is recommended.  The subject will be read until an argument starting
-    with a hyphen (-) is found.  
+    with a hyphen (-) is found.
     Examples:
       -u "Contact information while on vacation"
       -u New Microsoft vulnerability discovered
@@ -1657,21 +1657,21 @@ Options related to the message:
     body for your email.  The message may be specified on the command line
     with this -m option, read from a file with the -o message-file=FILE
     option, or read from STDIN if neither of these options are present.
-    
+
     It is not required (anymore) that the message be quoted, although it is
     recommended.  The message will be read until an argument starting with a
     hyphen (-) is found.
     Examples:
       -m "See you in South Beach, Hawaii.  -Todd"
       -m Please ensure that you upgrade your systems right away
-    
+
     Multi-line message bodies may be specified with the -m option by putting
     a "\\n" into the message.  Example:
       -m "This is line 1.\\nAnd this is line 2."
-    
+
     HTML messages are supported, simply begin your message with "<html>" and
     sendEmail will properly label the mime header so MUAs properly render
-    the message.  
+    the message.
 
 -o message-file=FILE
     This option is one of three methods that allow you to specify the message
@@ -1697,23 +1697,23 @@ Options related to the message:
       -o message-header=EMAIL HEADER
       -o message-charset=CHARSET
       -a ATTACHMENT
-      
+
 -o message-charset=CHARSET
     This option allows you to specify the character-set for the message body.
     The default is iso-8859-1.
-      
+
 
 ${colorGreen}The Message Body${colorNormal}
 The message body may be specified in one of three ways:
  1) Via the -m MESSAGE command line option.
     Example:
       -m "This is the message body"
-      
+
  2) By putting the message body in a file and using the -o message-file=FILE
     command line option.
     Example:
       -o message-file=/root/message.txt
-      
+
  3) By piping the message body to sendEmail when nither of the above command
     line options were specified.
     Example:
@@ -1722,14 +1722,14 @@ The message body may be specified in one of three ways:
 If the message body begins with "<html>" then the message will be treated as
 an HTML message and the MIME headers will be written so that a HTML capable
 email client will display the message in it's HTML form.
-Any of the above methods may be used with the -o message-format=raw option 
+Any of the above methods may be used with the -o message-format=raw option
 to deliver an already complete email message.
 
 
 EOM
             last CASE;
         };
-        
+
 
 
 
@@ -1747,7 +1747,7 @@ Options that don't fit anywhere else:
     -xp  PASSWORD
     -a   ATTACHMENT
     -o   timeout=SECONDS
-    
+
 -xu  USERNAME
     This option, in conjunction with the -xp option, allows you to specify
     a username and password to be used with SMTP servers requiring
@@ -1761,12 +1761,12 @@ Options that don't fit anywhere else:
 -a   ATTACHMENT [ATTACHMENT]
     This option allows you to attach any number of files to your email
     message.
-    
--o   timeout=SECONDS    
+
+-o   timeout=SECONDS
     This option sets the timeout value in seconds used for all network reads,
     writes, and a few other things.
 
-    
+
 ${colorGreen}The Complete -o Parameter List${colorNormal}
     -o message-file=FILE
     -o message-header=EMAIL HEADER
@@ -1775,11 +1775,11 @@ ${colorGreen}The Complete -o Parameter List${colorNormal}
     -o reply-to=ADDRESS
     -o timeout=SECONDS
 
-        
+
 EOM
             last CASE;
         };
-        
+
 
 
 
@@ -1795,7 +1795,7 @@ ${colorGreen}Networking Options${colorNormal}
 Options related to networking:
     -s   SERVER[:PORT]
     -o   timeout=SECONDS
-    
+
 -s SERVER[:PORT]
     This option allows you to specify the SMTP server sendEmail should
     connect to to deliver your email message to.  If this option is not
@@ -1809,21 +1809,21 @@ Options related to networking:
     If you have your own email server running on port 300 you would
     probably use an option like this:
        -s myserver.mydomain.com:300
-    
--o timeout=SECONDS    
+
+-o timeout=SECONDS
     This option sets the timeout value in seconds used for all network reads,
     writes, and a few other things.
 
-    
+
 EOM
             last CASE;
         };
-        
-        
-        
-        
-        
-        
+
+
+
+
+
+
 ## OUTPUTO
         ($topic eq 'output') && do {
             print <<EOM;
@@ -1835,7 +1835,7 @@ Options related to output:
     -l LOGFILE
     -v
     -q
-    
+
 -l LOGFILE
     This option allows you to specify a log file to append to.  Every message
     that is displayed to STDOUT is also written to the log file.  This may be
@@ -1845,7 +1845,7 @@ Options related to output:
     This option tells sendEmail to disable printing to STDOUT.  In other
     words nothing will be printed to the console.  This does not affect the
     behavior of the -l or -v options.
-    
+
 -v
     This option allows you to increase the debug level of sendEmail.  You may
     either use this option more than once, or specify more than one v at a
@@ -1853,20 +1853,20 @@ Options related to output:
         Specifies a debug level of 1:  -v
         Specifies a debug level of 2:  -vv
         Specifies a debug level of 2:  -v -v
-    A debug level of one is recommended when doing any sort of debugging.  
+    A debug level of one is recommended when doing any sort of debugging.
     At that level you will see the entire SMTP transaction (except the
     body of the email message), and hints will be displayed for most
     warnings and errors.  The highest debug level is three.
 
-    
+
 EOM
             last CASE;
         };
-        
+
         ## Unknown option selected!
         quit("ERROR => The help topic specified is not valid!", 1);
     };
-    
+
 exit(1);
 }
 
diff --git a/scripts/timereventdone.sh b/scripts/timereventdone.sh
deleted file mode 100755
index eece068..0000000
--- a/scripts/timereventdone.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-#
-# Put the event of a timer to epgsearch's done file
-#
-# Use it as command in timercmds.conf
-#
-# Example:
-#
-# Mark as already recorded :  /usr/local/bin/timereventdone.sh
-#
-# 2008-02-09 Christian Wieninger
-# Version 0.1
-#
-
-#<Configuration>
-
-# path where epgsearch stores its data
-CONFDIR="/etc/vdr/plugins/epgsearch"
-SVDRPSEND="/usr/local/src/VDR/svdrpsend.pl"
-#</Configuration>
-
-DONEFILE=$CONFDIR/epgsearchdone.data
-CHANNELID="$2"
-START="$3"
-STOP="$4"
-TITLE="$5"
-SUBTITLE="$6"
-let DURATION=$STOP-$START
-
-echo "" >> $DONEFILE
-echo R $START $DURATION -1 >> $DONEFILE
-echo C $CHANNELID >> $DONEFILE
-echo T $TITLE >> $DONEFILE
-echo S $SUBTITLE >> $DONEFILE
-echo r >> $DONEFILE
-
-# Tell epgsearch that done-file was changed
-echo "$SVDRPSEND PLUG epgsearch UPDD >/dev/null 2>&1" | at now >/dev/null 2>&1;
diff --git a/scripts/timerrep.sh b/scripts/timerrep.sh
index ab9bae5..d00ea1c 100755
--- a/scripts/timerrep.sh
+++ b/scripts/timerrep.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 #------------------------------------------------------------------------------
 # this script allows searching for a repeat of timer using epgsearch (>=0.9.3).
-# it requires the timercmd patch from Gerhard Steiner, that extends the timers 
+# it requires the timercmd patch from Gerhard Steiner, that extends the timers
 # menu of VDR with commands like in recordings menu
 #
 # add the following lines to your timercmds.conf
@@ -29,7 +29,7 @@ cat << EOM >/tmp/cmd.sh
 
 SEARCHTERM="$6"~"$7";
 #event info not yet present? then extract it from the file name
-if test "\$SEARCHTERM" == "~"; then 
+if test "\$SEARCHTERM" == "~"; then
 SEARCHTERM='$8'
 #cut leading special folders
 i=0;
diff --git a/scripts/undoneepgsearch.sh b/scripts/undoneepgsearch.sh
index ee502c0..8716ec8 100755
--- a/scripts/undoneepgsearch.sh
+++ b/scripts/undoneepgsearch.sh
@@ -137,7 +137,7 @@ else
 
     [ $DEBUG = yes ] && printf "\nMatch=$Match\n"
 
-    [ $Match -eq 1 ] && grep -m$Match -A4 "^T $Title$" $EPGSEARCHDONE_WORK >$TempFile || grep -m$Match -A4 "^T $Title$" $EPGSEARCHDONE_WORK | grep -A5 "^--$" >$TempFile 
+    [ $Match -eq 1 ] && grep -m$Match -A4 "^T $Title$" $EPGSEARCHDONE_WORK >$TempFile || grep -m$Match -A4 "^T $Title$" $EPGSEARCHDONE_WORK | grep -A5 "^--$" >$TempFile
 
     if [ -z "$Subtitle" ]; then
       grep -q "$Description" $TempFile
diff --git a/searchtimer_thread.c b/searchtimer_thread.c
index 833b2cd..af67988 100644
--- a/searchtimer_thread.c
+++ b/searchtimer_thread.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -66,11 +66,11 @@ cSearchTimerThread::cSearchTimerThread(cPluginEpgsearch* thePlugin)
 }
 
 cSearchTimerThread::~cSearchTimerThread() {
-   if (m_Active) 
+   if (m_Active)
       Stop();
 }
 
-void cSearchTimerThread::Init(cPluginEpgsearch* thePlugin, bool activatePermanently) 
+void cSearchTimerThread::Init(cPluginEpgsearch* thePlugin, bool activatePermanently)
 {
    if (activatePermanently)
    {
@@ -78,7 +78,7 @@ void cSearchTimerThread::Init(cPluginEpgsearch* thePlugin, bool activatePermanen
       thePlugin->SetupStore("UseSearchTimers",  EPGSearchConfig.useSearchTimers);
    }
    if (!EPGSearchConfig.useSearchTimers)
-      return;    
+      return;
    if (m_Instance == NULL) {
       m_Instance = new cSearchTimerThread(thePlugin);
       m_Instance->Start();
@@ -128,8 +128,8 @@ cTimer *cSearchTimerThread::GetTimer(cSearchExt *searchExt, const cEvent *pEvent
    }
 
    tm *tmStartEv = localtime_r(&eStart, &tm_r);
-    
-   for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti)) 
+
+   for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti))
    {
       if (ti->Channel() != channel)
          continue;
@@ -160,7 +160,7 @@ cTimer *cSearchTimerThread::GetTimer(cSearchExt *searchExt, const cEvent *pEvent
          tm *tmStartTi = localtime_r(&tStart, &tm_r);
          if (tmStartEv->tm_mday != tmStartTi->tm_mday)
             continue;
-	    
+
 	 // some providers change EPG times only for a few seconds
 	 // ignore this to avoid search timer mails because of such changes
          bTimesMatchExactly = (abs(tStart -eStart) < 60 && abs(tStop - eStop) < 60);
@@ -192,7 +192,7 @@ bool cSearchTimerThread::TimerWasModified(cTimer* t)
    return bMod;
 }
 
-void cSearchTimerThread::Action(void) 
+void cSearchTimerThread::Action(void)
 {
    if (EPGSearchConfig.useExternalSVDRP && !cSVDRPClient::SVDRPSendCmd)
    {
@@ -209,7 +209,7 @@ void cSearchTimerThread::Action(void)
       Wait.Wait(1000);
 
    time_t nextUpdate = time(NULL);
-   while (m_Active) 
+   while (m_Active)
    {
       time_t now = time(NULL);
       bool needUpdate = NeedUpdate();
@@ -228,7 +228,7 @@ void cSearchTimerThread::Action(void)
 	    while(EITScanner.Active() && m_Active);
   	    LogFile.Log(1,"EPG scan finished");
 	 }
-         if (Timers.BeingEdited()) 		
+         if (Timers.BeingEdited())
          {
             Wait.Wait(1000);
             continue;
@@ -239,12 +239,13 @@ void cSearchTimerThread::Action(void)
          cTimerObjList* pOutdatedTimers = NULL;
 
          // for thread safeness we work with a copy of the current searches,
-         // because SVDRP would not work if the main thread would be locked 
-         cSearchExts* localSearchExts = SearchExts.Clone(); 
+         // because SVDRP would not work if the main thread would be locked
+         cSearchExts* localSearchExts = SearchExts.Clone();
+	 localSearchExts->SortBy(CompareSearchExtPrioDescTerm);
          cSearchExt *searchExt = localSearchExts->First();
          // reset announcelist
          announceList.Clear();
-         while (searchExt && m_Active) 
+         while (searchExt && m_Active)
          {
 	   if (!searchExt->IsActiveAt(now))
             {
@@ -264,26 +265,26 @@ void cSearchTimerThread::Action(void)
             if (searchExt->pauseOnNrRecordings > 0)
                searchExt->CheckExistingRecordings(pSearchResults);
 
-            for (cSearchResult* pResultObj = pSearchResults->First(); 
-                 pResultObj; 
+            for (cSearchResult* pResultObj = pSearchResults->First();
+                 pResultObj;
                  pResultObj = pSearchResults->Next(pResultObj))
             {
                const cEvent* pEvent = pResultObj->event;
                if (!pEvent)
                   continue;
-			    
+
                cChannel *channel = Channels.GetByChannelID(pEvent->ChannelID(), true, true);
                if (!channel)
                   continue;
-			
+
                int index = 0;
                cTimer *timer = new cTimer(pEvent);
 
-               // create the file 
+               // create the file
                char* file = NULL;
                if ((file = searchExt->BuildFile(pEvent)) != NULL)
                {
-                  while(strstr(file, "!^pipe^!")) file = strreplace(file, "!^pipe^!", "|"); // revert the translation of '|' in BuildFile 
+                  while(strstr(file, "!^pipe^!")) file = strreplace(file, "!^pipe^!", "|"); // revert the translation of '|' in BuildFile
                   if (strstr(file, "!^invalid^!") || strlen(file) == 0)
                   {
                      LogFile.eSysLog("Skipping timer due to invalid or empty filename");
@@ -298,7 +299,7 @@ void cSearchTimerThread::Action(void)
                }
                int Priority = searchExt->Priority;
                int Lifetime = searchExt->Lifetime;
-			
+
                // search for an already existing timer
                bool bTimesMatchExactly = false;
                cTimer *t = GetTimer(searchExt, pEvent, bTimesMatchExactly);
@@ -306,7 +307,7 @@ void cSearchTimerThread::Action(void)
                char* Summary = NULL;
 	       uint timerMod = tmNoChange;
 
-               if (t) 
+               if (t)
                { // already exists
                   pOutdatedTimers->DelTimer(t);
 
@@ -316,7 +317,7 @@ void cSearchTimerThread::Action(void)
                      delete timer;
                      continue;
                   }
-			    
+
                   int triggerID = TriggeredFromSearchTimerID(t);
                   if (!pResultObj->needsTimer && !t->Recording()) // not needed
                   {
@@ -325,14 +326,14 @@ void cSearchTimerThread::Action(void)
                         LogFile.Log(1,"delete timer for '%s~%s' (%s - %s, channel %d)", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent));
                         RemoveTimer(t, pEvent);
                      }
-                     else if (triggerID == -1) //manual timer 
+                     else if (triggerID == -1) //manual timer
                      {
                         LogFile.Log(2,"keep obsolete timer for '%s~%s' (%s - %s, channel %d) - was manually created", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent));
                      }
                      delete timer;
                      continue;
                   }
-                  if (TimerWasModified(t)) // don't touch timer modified by user 
+                  if (TimerWasModified(t)) // don't touch timer modified by user
                   {
                      LogFile.Log(2,"timer for '%s~%s' (%s - %s, channel %d) modified by user - won't be touched", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent));
                      delete timer;
@@ -350,9 +351,9 @@ void cSearchTimerThread::Action(void)
                   pFile = strreplace(pFile, ':', '|');
                   pFile = strreplace(pFile, " ~", "~");
                   pFile = strreplace(pFile, "~ ", "~");
-			    
+
                   Summary =  SummaryExtended(searchExt, t, pEvent);
-			    
+
                   if (bTimesMatchExactly && strcmp(pFile, timer->File()) == 0
                       && (t->Aux() != NULL && strcmp(t->Aux(), Summary) == 0)
                      )
@@ -376,8 +377,8 @@ void cSearchTimerThread::Action(void)
 			free(newEventID);
 		      }
 
-		    if (LogFile.Level() >= 3) // output reasons for a timer modification 
-		      { 
+		    if (LogFile.Level() >= 3) // output reasons for a timer modification
+		      {
                         if (timerMod & tmStartStop)
 			  LogFile.Log(3,"timer for '%s~%s' (%s - %s, channel %d) : start/stop has changed", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent));
                         if (timerMod & tmFile)
@@ -391,14 +392,14 @@ void cSearchTimerThread::Action(void)
                   }
                   free(pFile);
 
-                  if (t->Recording() && t->StopTime() == timer->StopTime()) 
+                  if (t->Recording() && t->StopTime() == timer->StopTime())
                   {
                      // only update recording timers if stop time has changed, since all other settings can't be modified
                      LogFile.Log(2,"timer for '%s~%s' (%s - %s, channel %d) already recording - no changes possible", pEvent->Title()?pEvent->Title():"no title", pEvent->ShortText()?pEvent->ShortText():"no subtitle", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), ChannelNrFromEvent(pEvent));
                      delete timer;
                      continue;
                   }
-               }			       
+               }
                else
                {
                   if (!pResultObj->needsTimer)
@@ -407,15 +408,15 @@ void cSearchTimerThread::Action(void)
                      continue;
                   }
                }
-		
-               if (searchExt->action == searchTimerActionAnnounceViaOSD) 
+
+               if (searchExt->action == searchTimerActionAnnounceViaOSD)
                {
                   if (t || // timer already exists or
                       NoAnnounces.InList(pEvent) || // announcement not wanted anymore or
-                      (EPGSearchConfig.noAnnounceWhileReplay && 
-		       cDevice::PrimaryDevice()->Replaying() && 
+                      (EPGSearchConfig.noAnnounceWhileReplay &&
+		       cDevice::PrimaryDevice()->Replaying() &&
 		       !(updateForced & UPDS_WITH_OSD))  // no announce while replay within automatic updates
-                     ) 
+                     )
                   {
                      if (Summary) free(Summary);
                      delete timer;
@@ -429,52 +430,52 @@ void cSearchTimerThread::Action(void)
                   continue;
                }
 
-               if (searchExt->action == searchTimerActionAnnounceViaMail) 
+               if (searchExt->action == searchTimerActionAnnounceViaMail)
                {
                   if (t || // timer already exists or
                       NoAnnounces.InList(pEvent) ||
-		      pEvent->StartTime() < time(NULL)) // already started? 
+		      pEvent->StartTime() < time(NULL)) // already started?
                   {
                      if (Summary) free(Summary);
                      delete timer;
                      continue;
                   }
-		  mailNotifier.AddAnnounceEventNotification(pEvent->EventID(), pEvent->ChannelID(), searchExt->ID); 
+		  mailNotifier.AddAnnounceEventNotification(pEvent->EventID(), pEvent->ChannelID(), searchExt->ID);
 
                   if (Summary) free(Summary);
                   delete timer;
                   continue;
                }
-               if (searchExt->action == searchTimerActionSwitchOnly || 
+               if (searchExt->action == searchTimerActionSwitchOnly ||
 		   searchExt->action == searchTimerActionAnnounceAndSwitch) // add to switch list
                {
                   time_t now = time(NULL);
                   if (now < pEvent->StartTime())
                   {
                      if (!SwitchTimers.InSwitchList(pEvent))
-                     {			
+                     {
                         cMutexLock SwitchTimersLock(&SwitchTimers);
 			int mode = 0;
 			if (searchExt->action == searchTimerActionAnnounceAndSwitch)
 			  mode = 2;
 			LogFile.Log(3,"adding switch timer event for '%s~%s' (%s - %s); search timer: '%s'", pEvent->Title(), pEvent->ShortText()?pEvent->ShortText():"", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), searchExt->search);
-                        SwitchTimers.Add(new cSwitchTimer(pEvent, searchExt->switchMinsBefore, mode, 
+                        SwitchTimers.Add(new cSwitchTimer(pEvent, searchExt->switchMinsBefore, mode,
 							  searchExt->unmuteSoundOnSwitch));
                         SwitchTimers.Save();
-                        cSwitchTimerThread::Init(); 
+                        cSwitchTimerThread::Init();
                      }
                   }
                   if (Summary) free(Summary);
                   delete timer;
                   continue;
                }
-			
+
                if (AddModTimer(timer, index, searchExt, pEvent, Priority, Lifetime, Summary, timerMod))
                {
                   if (index == 0)
                      LogFile.Log(1,"added timer for '%s~%s' (%s - %s); search timer: '%s'", pEvent->Title(), pEvent->ShortText()?pEvent->ShortText():"", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), searchExt->search);
                   else
-                     LogFile.Log(1,"modified timer %d for '%s~%s' (%s - %s); search timer: '%s'", index, pEvent->Title(), pEvent->ShortText()?pEvent->ShortText():"", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), searchExt->search);			    
+                     LogFile.Log(1,"modified timer %d for '%s~%s' (%s - %s); search timer: '%s'", index, pEvent->Title(), pEvent->ShortText()?pEvent->ShortText():"", GETDATESTRING(pEvent), GETTIMESTRING(pEvent), searchExt->search);
                }
                if (Summary) free(Summary);
                delete timer;
@@ -495,7 +496,7 @@ void cSearchTimerThread::Action(void)
                   cTimer* t = tObj->timer;
                   // timer could have been deleted meanwhile, so check if its still there
                   bool found = false;
-                  for(cTimer* checkT = Timers.First(); checkT; checkT = Timers.Next(checkT)) 
+                  for(cTimer* checkT = Timers.First(); checkT; checkT = Timers.Next(checkT))
                      if (checkT == t)
                      {
                         found = true;
@@ -521,10 +522,10 @@ void cSearchTimerThread::Action(void)
          if (announceList.Count() > 0)
          {
 	   cString msgfmt = cString::sprintf(tr("%d new broadcast(s) found! Show them?"), announceList.Count());
-	   if (SendMsg(msgfmt, true,7) == kOk)		   
+	   if (SendMsg(msgfmt, true,7) == kOk)
 	     {
 	       m_plugin->showAnnounces = true;
-	       cRemote::CallPlugin("epgsearch");	
+	       cRemote::CallPlugin("epgsearch");
 	     }
          }
 
@@ -536,8 +537,8 @@ void cSearchTimerThread::Action(void)
          if (EPGSearchConfig.checkTimerConflictsAfterUpdate && m_Active)
          {
             LogFile.iSysLog("check for timer conflicts");
-            cConflictCheck conflictCheck;   
-            conflictCheck.Check(); 
+            cConflictCheck conflictCheck;
+            conflictCheck.Check();
 
             if (conflictCheck.relevantConflicts > 0)
             {
@@ -549,21 +550,21 @@ void cSearchTimerThread::Action(void)
 
  	       conflictCheck.EvaluateConflCheckCmd();
 
-               cString msgfmt = cString::sprintf(tr("%d timer conflict(s)! First at %s. Show them?"), 
+               cString msgfmt = cString::sprintf(tr("%d timer conflict(s)! First at %s. Show them?"),
 						 conflictCheck.relevantConflicts,
 						 *DateTime(conflictCheck.nextRelevantConflictDate));
-               bool doMessage = EPGSearchConfig.noConflMsgWhileReplay == 0 || 
-                  !cDevice::PrimaryDevice()->Replaying() || 
+               bool doMessage = EPGSearchConfig.noConflMsgWhileReplay == 0 ||
+                  !cDevice::PrimaryDevice()->Replaying() ||
                   conflictCheck.nextRelevantConflictDate - now < 2*60*60 ||
 		 (updateForced & UPDS_WITH_OSD);
-               if (doMessage && SendMsg(msgfmt, true,7) == kOk)			
+               if (doMessage && SendMsg(msgfmt, true,7) == kOk)
                {
                   m_plugin->showConflicts = true;
-                  cRemote::CallPlugin("epgsearch");	
+                  cRemote::CallPlugin("epgsearch");
                }
             }
-		
-            LogFile.iSysLog("check for timer conflicts - done");	    
+
+            LogFile.iSysLog("check for timer conflicts - done");
          }
 
          // delete expired recordings
@@ -586,7 +587,7 @@ void cSearchTimerThread::Action(void)
 	 justRunning = false;
       }
       if (m_Active)
-	Wait.Wait(2000); // to avoid high system load if time%30==0 
+	Wait.Wait(2000); // to avoid high system load if time%30==0
       while (m_Active && !NeedUpdate() && time(NULL)%30 != 0) // sync heart beat to a multiple of 5secs
          Wait.Wait(1000);
    };
@@ -619,11 +620,11 @@ char* cSearchTimerThread::SummaryExtended(cSearchExt* searchExt, cTimer* Timer,
    time_t stop  = eStop + (UseVPS?0:(searchExt->MarginStop * 60));
 
    char* addSummaryFooter = NULL;
-   msprintf(&addSummaryFooter, "<channel>%d - %s</channel><searchtimer>%s</searchtimer><start>%ld</start><stop>%ld</stop><s-id>%d</s-id><eventid>%ld</eventid>", 
+   msprintf(&addSummaryFooter, "<channel>%d - %s</channel><searchtimer>%s</searchtimer><start>%ld</start><stop>%ld</stop><s-id>%d</s-id><eventid>%ld</eventid>",
             Timer->Channel()->Number(), CHANNELNAME(Timer->Channel()),
-            searchExt->search, 
-            start, 
-            stop, 
+            searchExt->search,
+            start,
+            stop,
             searchExt->ID,
             (long) pEvent->EventID());
 
@@ -649,7 +650,7 @@ char* cSearchTimerThread::SummaryExtended(cSearchExt* searchExt, cTimer* Timer,
    return tmpSummary;
 }
 
-bool cSearchTimerThread::AddModTimer(cTimer* Timer, int index, cSearchExt* searchExt, const cEvent* pEvent, int Prio, int Lifetime, char* Summary, uint timerMod) 
+bool cSearchTimerThread::AddModTimer(cTimer* Timer, int index, cSearchExt* searchExt, const cEvent* pEvent, int Prio, int Lifetime, char* Summary, uint timerMod)
 {
    char *cmdbuf = NULL;
 
@@ -686,62 +687,54 @@ bool cSearchTimerThread::AddModTimer(cTimer* Timer, int index, cSearchExt* searc
       tmpSummary = strdup(Summary);
       strreplace(tmpSummary, '\n', '|');
    }
-   else 
+   else
       tmpSummary = SummaryExtended(searchExt, Timer, pEvent);
 
    if (index==0)
-      msprintf(&cmdbuf, "NEWT %d:%d:%s:%s:%s:%d:%d:%s:%s", 
+      msprintf(&cmdbuf, "NEWT %d:%d:%s:%s:%s:%d:%d:%s:%s",
                Flags,
                Timer->Channel()->Number(),
-#if VDRVERSNUM < 10503
-               *Timer->PrintDay(start, Timer->WeekDays()),
-#else
                *Timer->PrintDay(start, Timer->WeekDays(), true),
-#endif
                bufStart,
                bufEnd,
-               Prio, 
-               Lifetime, 
+               Prio,
+               Lifetime,
                Timer->File(),
                tmpSummary?tmpSummary:"");
    else
-      msprintf(&cmdbuf, "MODT %d %d:%d:%s:%s:%s:%d:%d:%s:%s", 
+      msprintf(&cmdbuf, "MODT %d %d:%d:%s:%s:%s:%d:%d:%s:%s",
                index,
                Flags,
                Timer->Channel()->Number(),
-#if VDRVERSNUM < 10503
-               *Timer->PrintDay(start, Timer->WeekDays()),
-#else
                *Timer->PrintDay(start, Timer->WeekDays(), true),
-#endif
                bufStart,
                bufEnd,
-               Prio, 
-               Lifetime, 
+               Prio,
+               Lifetime,
                Timer->File(),
                tmpSummary?tmpSummary:"");
 
    if (!SendViaSVDRP(cmdbuf))
      return false;
-   
-   if (gl_timerStatusMonitor) gl_timerStatusMonitor->SetConflictCheckAdvised(); 
-   
+
+   if (gl_timerStatusMonitor) gl_timerStatusMonitor->SetConflictCheckAdvised();
+
    cTimerDone* timerdone = new cTimerDone(start, stop, pEvent, searchExt->ID);
    if (index==0)
      TimersDone.Add(timerdone);
    else
      TimersDone.Update(start, stop, pEvent, searchExt->ID, timerdone);
-   
+
    if (EPGSearchConfig.sendMailOnSearchtimers)
      {
        if (index==0) // new
-         mailNotifier.AddNewTimerNotification(pEvent->EventID(), pEvent->ChannelID()); 
+         mailNotifier.AddNewTimerNotification(pEvent->EventID(), pEvent->ChannelID());
        else
-	 mailNotifier.AddModTimerNotification(pEvent->EventID(), pEvent->ChannelID(), timerMod); 
+	 mailNotifier.AddModTimerNotification(pEvent->EventID(), pEvent->ChannelID(), timerMod);
      }
    free(cmdbuf);
    if (tmpSummary) free(tmpSummary);
-   
+
    return true;
 }
 
@@ -749,7 +742,7 @@ void cSearchTimerThread::RemoveTimer(cTimer* t, const cEvent* e)
 {
    if (!t) return;
    if (EPGSearchConfig.sendMailOnSearchtimers)
-      mailNotifier.AddRemoveTimerNotification(t,e); 
+      mailNotifier.AddRemoveTimerNotification(t,e);
    if (!EPGSearchConfig.TimerProgRepeat)
    {
       cTimerDone * TimerDone = TimersDone.InList(t->StartTime(), t->StopTime(), e, -1);
@@ -765,7 +758,7 @@ void cSearchTimerThread::RemoveTimer(cTimer* t, const cEvent* e)
 
 void cSearchTimerThread::DelRecording(int index)
 {
-  cString cmdbuf = cString::sprintf("DELR %d", index);    
+  cString cmdbuf = cString::sprintf("DELR %d", index);
   LogFile.Log(2, "delete recording %d", index);
   SendViaSVDRP(cmdbuf);
 }
@@ -775,9 +768,9 @@ void cSearchTimerThread::CheckExpiredRecs()
    LogFile.Log(1, "check for expired recordings started");
    cThreadLock RecordingsLock(&Recordings);
    cList<cRecordingObj> DelRecordings;
-   for (cRecording *recording = Recordings.First(); recording && m_Active; recording = Recordings.Next(recording)) 
+   for (cRecording *recording = Recordings.First(); recording && m_Active; recording = Recordings.Next(recording))
    {
-#if APIVERSNUM < 10721 
+#if APIVERSNUM < 10721
       LogFile.Log(3, "check recording %s from %s for expiration", recording->Name(), DAYDATETIME(recording->start));
       if (recording->start == 0)
 #else
@@ -791,10 +784,10 @@ void cSearchTimerThread::CheckExpiredRecs()
       if (recording->IsEdited()) continue;
 
       if (!recording->Info()) continue;
-      char* searchID = GetAuxValue(recording, "s-id");	
-      char* searchName = GetAuxValue(recording, "searchtimer");	
+      char* searchID = GetAuxValue(recording, "s-id");
+      char* searchName = GetAuxValue(recording, "searchtimer");
       if (!searchName)
-         searchName = GetAuxValue(recording, "search timer");	
+         searchName = GetAuxValue(recording, "search timer");
 
       if (!searchID || !searchName)
       {
@@ -803,7 +796,7 @@ void cSearchTimerThread::CheckExpiredRecs()
          continue;
       }
       cSearchExt* search = SearchExts.GetSearchFromID(atoi(searchID));
-      if (!search || strcmp(search->search, searchName) != 0) 
+      if (!search || strcmp(search->search, searchName) != 0)
       {
          if (searchID) free(searchID);
          if (searchName) free(searchName);
@@ -815,7 +808,7 @@ void cSearchTimerThread::CheckExpiredRecs()
       if (search->delAfterDays == 0) continue;
       time_t now = time(NULL);
 
-#if APIVERSNUM < 10721 
+#if APIVERSNUM < 10721
       int daysBetween = int(double((now - recording->start)) / (60*60*24));
 #else
       int daysBetween = int(double((now - recording->Start())) / (60*60*24));
@@ -824,27 +817,27 @@ void cSearchTimerThread::CheckExpiredRecs()
          DelRecordings.Add(new cRecordingObj(recording, search));
       else
          LogFile.Log(3, "recording will expire in %d days, search timer %s", search->delAfterDays - daysBetween, search->search);
-   }    
-   for (cRecordingObj *recordingObj = DelRecordings.First(); recordingObj && m_Active; recordingObj = DelRecordings.Next(recordingObj)) 
+   }
+   for (cRecordingObj *recordingObj = DelRecordings.First(); recordingObj && m_Active; recordingObj = DelRecordings.Next(recordingObj))
    {
       cRecording* recording = recordingObj->recording;
       cSearchExt* search = recordingObj->search;
       if (search->recordingsKeep > 0 && search->recordingsKeep >= search->GetCountRecordings())
       {
-#if APIVERSNUM < 10721 
+#if APIVERSNUM < 10721
          LogFile.Log(1, "recording '%s' from %s expired, but will be kept, search timer %s", recording->Name(), DAYDATETIME(recording->start), recordingObj->search->search);
 #else
          LogFile.Log(1, "recording '%s' from %s expired, but will be kept, search timer %s", recording->Name(), DAYDATETIME(recording->Start()), recordingObj->search->search);
 #endif
          continue;
       }
-#if APIVERSNUM < 10721 
+#if APIVERSNUM < 10721
       LogFile.Log(1, "delete expired recording '%s' from %s, search timer %s", recording->Name(), DAYDATETIME(recording->start), recordingObj->search->search);
 #else
       LogFile.Log(1, "delete expired recording '%s' from %s, search timer %s", recording->Name(), DAYDATETIME(recording->Start()), recordingObj->search->search);
 #endif
       cRecordControl *rc = cRecordControls::GetRecordControl(recording->FileName());
-      if (!rc) 
+      if (!rc)
       {
          if (!recording->Delete())
             LogFile.Log(1, "error deleting recording!");
@@ -873,25 +866,25 @@ void cSearchTimerThread::ModifyManualTimer(const cEvent* event, const cTimer* ti
    strftime(daybuffer, DAYBUFFERSIZE, "%Y-%m-%d", &tm_r_start);
    strftime(startbuffer, DAYBUFFERSIZE, "%H%M", &tm_r_start);
    strftime(stopbuffer, DAYBUFFERSIZE, "%H%M", &tm_r_stop);
-    
+
    char* cmdbuf = NULL;
-   msprintf(&cmdbuf, "MODT %d %d:%d:%s:%s:%s:%d:%d:%s:%s", 
+   msprintf(&cmdbuf, "MODT %d %d:%d:%s:%s:%s:%d:%d:%s:%s",
             timer->Index()+1,
             timer->Flags(),
             timer->Channel()->Number(),
             daybuffer,
             startbuffer,
             stopbuffer,
-            timer->Priority(), 
-            timer->Lifetime(), 
+            timer->Priority(),
+            timer->Lifetime(),
             timer->File(),
             timer->Aux());
-    
+
    if (EPGSearchConfig.sendMailOnSearchtimers)
-      mailNotifier.AddModTimerNotification(event->EventID(), event->ChannelID()); 
+      mailNotifier.AddModTimerNotification(event->EventID(), event->ChannelID());
 
    cTimerThread timerThread;
-   timerThread.Init(cmdbuf);			   
+   timerThread.Init(cmdbuf);
    free(cmdbuf);
 }
 
@@ -903,7 +896,7 @@ void cSearchTimerThread::CheckManualTimers()
    const cSchedules *schedules;
    schedules = cSchedules::Schedules(schedulesLock);
 
-   for (cTimer *ti = Timers.First(); ti && m_Active; ti = Timers.Next(ti)) 
+   for (cTimer *ti = Timers.First(); ti && m_Active; ti = Timers.Next(ti))
    {
       if (TriggeredFromSearchTimerID(ti) != -1) continue; // manual timer?
 
@@ -920,7 +913,7 @@ void cSearchTimerThread::CheckManualTimers()
       int bstop = szbstop? atoi(szbstop) : 0;
       free(szbstop);
 
-      // how to check? 
+      // how to check?
       char* updateMethod = GetAuxValue(ti, "update");
       if (updateMethod && atoi(updateMethod) == UPD_EVENTID) // by event ID?
       {
@@ -931,7 +924,7 @@ void cSearchTimerThread::CheckManualTimers()
             tEventID eventID = 0;
             char* szEventID = GetAuxValue(ti, "eventid");
             if (szEventID)
-               eventID = atol(szEventID); 
+               eventID = atol(szEventID);
             LogFile.Log(3,"checking manual timer %d by event ID %u", ti->Index()+1, eventID);
             const cEvent* event = schedule->GetEvent(eventID);
             if (event)
@@ -962,13 +955,13 @@ void cSearchTimerThread::CheckManualTimers()
             if (eventlist.Count() > 0)
             {
                // choose the event with the best match by duration
-               long origlen = (ti->StopTime() - bstop) - (ti->StartTime() + bstart); 
+               long origlen = (ti->StopTime() - bstop) - (ti->StartTime() + bstart);
                double maxweight = 0;
                const cEvent* event = eventlist.First()->event;
                for (cSearchResult* pResultObj = eventlist.First();  pResultObj; pResultObj = eventlist.Next(pResultObj))
                {
                   const cEvent* testevent = pResultObj->event;
-                  time_t start = (testevent->StartTime() < ti->StartTime()) ? ti->StartTime() : testevent->StartTime(); 
+                  time_t start = (testevent->StartTime() < ti->StartTime()) ? ti->StartTime() : testevent->StartTime();
                   time_t stop =  (testevent->EndTime() > ti->StopTime()) ? ti->StopTime() : testevent->EndTime();
                   double weight = double(stop - start) / double(testevent->EndTime() - testevent->StartTime());
                   LogFile.Log(3,"candidate '%s~%s' (%s - %s) timer match: %f, duration match: %f", testevent->Title(), testevent->ShortText()?testevent->ShortText():"", GETDATESTRING(testevent), GETTIMESTRING(testevent), weight, (double(testevent->EndTime() - testevent->StartTime()) / origlen));
@@ -980,7 +973,7 @@ void cSearchTimerThread::CheckManualTimers()
                }
                LogFile.Log(3,"selected candidate is '%s~%s' (%s - %s)", event->Title(), event->ShortText()?event->ShortText():"", GETDATESTRING(event), GETTIMESTRING(event));
                if ((maxweight > 0 && event->StartTime() - bstart != ti->StartTime()) || (event->EndTime() + bstop != ti->StopTime()))
-                  ModifyManualTimer(event, ti, bstart, bstop);		    
+                  ModifyManualTimer(event, ti, bstart, bstop);
 	       else if (maxweight <= 0)
 		 LogFile.Log(3,"selected candidate is too bad");
             }
@@ -988,7 +981,7 @@ void cSearchTimerThread::CheckManualTimers()
                LogFile.Log(1,"ooops - no events found touching manual timer %d", ti->Index()+1);
          }
          if (updateMethod) free(updateMethod);
-      }    
+      }
    }
    LogFile.Log(1, "manual timer check finished");
 }
@@ -996,7 +989,7 @@ void cSearchTimerThread::CheckManualTimers()
 // check if EPG is present for the configured hours
 void cSearchTimerThread::CheckEPGHours()
 {
-  if (EPGSearchConfig.checkEPGHours <= 0 || 
+  if (EPGSearchConfig.checkEPGHours <= 0 ||
       (EPGSearchConfig.checkEPGWarnByOSD == 0 && EPGSearchConfig.checkEPGWarnByMail == 0) ||
       EPGSearchConfig.checkEPGchannelGroupNr <= 0)
     return;
@@ -1012,45 +1005,45 @@ void cSearchTimerThread::CheckEPGHours()
    LogFile.Log(2,"checking channel group '%s'", channelGroup->name);
 
   time_t checkTime = time(NULL) + EPGSearchConfig.checkEPGHours * 60 * 60;
-  
+
   cSchedulesLock schedulesLock;
   const cSchedules *schedules;
   schedules = cSchedules::Schedules(schedulesLock);
-  
+
   cChannelGroup channelsWithSmallEPG;
   cChannelGroupItem* channelInGroup = channelGroup->channels.First();
-  while (channelInGroup) 
+  while (channelInGroup)
     {
       cChannel* channel = channelInGroup->channel;
       // get the channels schedule
       const cSchedule* schedule = schedules->GetSchedule(channel);
-      if (!schedule || !schedule->GetEventAround(checkTime))      
+      if (!schedule || !schedule->GetEventAround(checkTime))
 	{
 	  LogFile.Log(3,"less than %d hours of EPG for channel %s!", EPGSearchConfig.checkEPGHours, channel->Name());
 	  cChannelGroupItem* channelitem = new cChannelGroupItem(channel);
 	  channelsWithSmallEPG.channels.Add(channelitem);
 	}
       channelInGroup = channelGroup->channels.Next(channelInGroup);
-    }	
+    }
 
   // create a string list of the channels found
   if (channelsWithSmallEPG.channels.Count() > 0)
     {
       string sBuffer;
       channelInGroup = channelsWithSmallEPG.channels.First();
-      while (channelInGroup) 
+      while (channelInGroup)
 	{
 	  cChannel* channel = channelInGroup->channel;
 	  if (channel)
 	    sBuffer += " " + string(channel->ShortName(true));
 	  channelInGroup = channelsWithSmallEPG.channels.Next(channelInGroup);
-	}	
-      
-      
+	}
+
+
       if (EPGSearchConfig.checkEPGWarnByOSD)
 	{
 	  cString msgfmt = cString::sprintf(tr("small EPG content on:%s"), sBuffer.c_str());
-	  SendMsg(msgfmt);		   
+	  SendMsg(msgfmt);
 	}
       if (EPGSearchConfig.checkEPGWarnByMail)
 	{
diff --git a/searchtimer_thread.h b/searchtimer_thread.h
index 541f12c..e1b3863 100644
--- a/searchtimer_thread.h
+++ b/searchtimer_thread.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -75,4 +75,4 @@ class cSearchTimerThread: public cThread {
     void CheckEPGHours();
 };
 
-#endif 
+#endif
diff --git a/services.c b/services.c
index 30d3cc6..e577a24 100644
--- a/services.c
+++ b/services.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -42,13 +42,13 @@ std::list<std::string> cEpgsearchServiceHandler::SearchTimerList()
 {
    std::list<std::string> list;
    cMutexLock SearchExtsLock(&SearchExts);
-   for (int i = 0; i < SearchExts.Count(); i++) 
+   for (int i = 0; i < SearchExts.Count(); i++)
    {
       cSearchExt* search = SearchExts.Get(i);
       if (search)
          list.push_back(search->ToText());
    }
-   return list;    
+   return list;
 }
 
 int cEpgsearchServiceHandler::AddSearchTimer(const std::string& settings)
@@ -85,7 +85,7 @@ bool cEpgsearchServiceHandler::ModSearchTimer(const std::string& settings)
          LogFile.Log(1,"modified search '%s' (%d) via service interface", searchTemp->search, searchTemp->ID);
          SearchExts.Save();
          if (searchTemp->useAsSearchTimer && !EPGSearchConfig.useSearchTimers) // enable search timer thread if necessary
-            cSearchTimerThread::Init((cPluginEpgsearch*) cPluginManager::GetPlugin("epgsearch"), true);	    
+            cSearchTimerThread::Init((cPluginEpgsearch*) cPluginManager::GetPlugin("epgsearch"), true);
          return true;
       }
    }
@@ -122,14 +122,14 @@ std::list<std::string> cEpgsearchServiceHandler::TranslateResults(cSearchResults
       // transfer to result list
       pCompleteSearchResults->SortBy(CompareEventTime);
       cSearchResult *result = pCompleteSearchResults->First();
-      while (result && result->search) 
+      while (result && result->search)
       {
          const cEvent* pEvent = result->event;
          cTimer* Timer = new cTimer(pEvent);
-		
+
          static char bufStart[25];
          static char bufEnd[25];
-	    
+
          struct tm tm_r;    time_t eStart = pEvent->StartTime();
          time_t eStop = pEvent->EndTime();
          time_t start = eStart - (result->search->MarginStart * 60);
@@ -139,18 +139,18 @@ std::list<std::string> cEpgsearchServiceHandler::TranslateResults(cSearchResults
             start = pEvent->Vps();
             stop = start + pEvent->Duration();
          }
-	    
+
          strftime(bufStart, sizeof(bufStart), "%H%M", localtime_r(&start, &tm_r));
          strftime(bufEnd, sizeof(bufEnd), "%H%M", localtime_r(&stop, &tm_r));
-	    
+
          int timerMatch;
          bool hasTimer = false;
-         if (Timers.GetMatch(pEvent, &timerMatch)) 
+         if (Timers.GetMatch(pEvent, &timerMatch))
             hasTimer = (timerMatch == tmFull);
-		
+
          if (!result->search->useAsSearchTimer)
             result->needsTimer = false;
-		
+
          cChannel *channel = Channels.GetByChannelID(pEvent->ChannelID(), true, true);
          int timerMode = hasTimer?1:(result->needsTimer?2:0);
 
@@ -161,7 +161,7 @@ std::list<std::string> cEpgsearchServiceHandler::TranslateResults(cSearchResults
          std::string description = pEvent->Description()?ReplaceAll(pEvent->Description(), "|", "!^pipe!^"):"";
          description = ReplaceAll(description, ":", "|");
 
-         cString cmdbuf = cString::sprintf("%d:%u:%s:%s:%s:%ld:%ld:%s:%ld:%ld:%s:%d", 
+         cString cmdbuf = cString::sprintf("%d:%u:%s:%s:%s:%ld:%ld:%s:%ld:%ld:%s:%d",
                   result->search->ID,
                   pEvent->EventID(),
                   title.c_str(),
@@ -173,8 +173,8 @@ std::list<std::string> cEpgsearchServiceHandler::TranslateResults(cSearchResults
                   timerMode>0?start:-1,
                   timerMode>0?stop:-1,
                   timerMode>0?result->search->BuildFile(pEvent):"",
-                  timerMode);				 
-		
+                  timerMode);
+
          list.push_back(*cmdbuf);
 
          delete(Timer);
@@ -203,20 +203,20 @@ std::list<std::string> cEpgsearchServiceHandler::QuerySearch(std::string query)
    std::list<std::string> list;
 
    cSearchExt* temp_SearchExt = new cSearchExt;
-   if (temp_SearchExt->Parse(query.c_str()))	
+   if (temp_SearchExt->Parse(query.c_str()))
    {
-      cSearchResults* pCompleteSearchResults = temp_SearchExt->Run();    
+      cSearchResults* pCompleteSearchResults = temp_SearchExt->Run();
       list = TranslateResults(pCompleteSearchResults);
       if (pCompleteSearchResults) delete pCompleteSearchResults;
    }
    delete temp_SearchExt;
-   return list;    
+   return list;
 }
 
 std::list<std::string> cEpgsearchServiceHandler::ExtEPGInfoList()
 {
    std::list<std::string> list;
-   for (int i = 0; i < SearchExtCats.Count(); i++) 
+   for (int i = 0; i < SearchExtCats.Count(); i++)
    {
       cSearchExtCat *SearchExtCat = SearchExtCats.Get(i);
       if (SearchExtCat)
@@ -228,7 +228,7 @@ std::list<std::string> cEpgsearchServiceHandler::ExtEPGInfoList()
 std::list<std::string> cEpgsearchServiceHandler::ChanGrpList()
 {
    std::list<std::string> list;
-   for (int i = 0; i < ChannelGroups.Count(); i++) 
+   for (int i = 0; i < ChannelGroups.Count(); i++)
    {
       cChannelGroup *changrp = ChannelGroups.Get(i);
       if (changrp)
@@ -242,13 +242,13 @@ std::list<std::string> cEpgsearchServiceHandler::BlackList()
    std::list<std::string> list;
    cMutexLock BlacklistLock(&Blacklists);
 
-   for (int i = 0; i < Blacklists.Count(); i++) 
+   for (int i = 0; i < Blacklists.Count(); i++)
    {
       cBlacklist* blacklist = Blacklists.Get(i);
       if (blacklist)
          list.push_back(blacklist->ToText());
    }
-   return list;    
+   return list;
 }
 
 std::set<std::string> cEpgsearchServiceHandler::DirectoryList()
@@ -276,8 +276,8 @@ std::list<std::string> cEpgsearchServiceHandler::TimerConflictList(bool relOnly)
 {
    std::list<std::string> list;
    cConflictCheck conflictCheck;
-   conflictCheck.Check(); 
-     
+   conflictCheck.Check();
+
    if ((relOnly && conflictCheck.numConflicts > 0) ||
        conflictCheck.relevantConflicts > 0)
      {
@@ -286,13 +286,13 @@ std::list<std::string> cEpgsearchServiceHandler::TimerConflictList(bool relOnly)
        for(cConflictCheckTime* ct = failedList->First(); ct; ct = failedList->Next(ct))
 	 {
 	   if (relOnly && ct->ignore) continue;
-	   
+
 	   std::ostringstream conflline;
 	   conflline << ct->evaltime << ":";
 	   std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
-	   
+
 	   std::ostringstream timerparts;
-	   for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); it++) 
+	   for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); ++it)
 	     {
 	       if (relOnly && (*it)->ignore) continue;
 	       std::ostringstream timerpart;
@@ -302,7 +302,7 @@ std::list<std::string> cEpgsearchServiceHandler::TimerConflictList(bool relOnly)
 	       if ((*it)->concurrentTimers)
 		 {
 		   std::ostringstream cctimers;
-		   for (itcc = (*it)->concurrentTimers->begin(); itcc != (*it)->concurrentTimers->end(); itcc++) 
+		   for (itcc = (*it)->concurrentTimers->begin(); itcc != (*it)->concurrentTimers->end(); ++itcc)
 		     cctimers << (cctimers.str().empty()?"":"#") << (*itcc)->origIndex+1;
 		   timerpart << cctimers.str();
 		 }
@@ -312,17 +312,17 @@ std::list<std::string> cEpgsearchServiceHandler::TimerConflictList(bool relOnly)
 	   list.push_back(conflline.str());
 	 }
      }
-   
+
    // set advised to false after an external conflict check
    if (gl_timerStatusMonitor) gl_timerStatusMonitor->SetConflictCheckAdvised(false);
 
-   return list;    
+   return list;
 }
 
 bool cEpgsearchServiceHandler::IsConflictCheckAdvised()
 {
-  return gl_timerStatusMonitor?gl_timerStatusMonitor->ConflictCheckAdvised():false;  
-}    
+  return gl_timerStatusMonitor?gl_timerStatusMonitor->ConflictCheckAdvised():false;
+}
 
 std::set<std::string> cEpgsearchServiceHandler::ShortDirectoryList()
 {
diff --git a/services.h b/services.h
index 748d94d..96ed0b6 100644
--- a/services.h
+++ b/services.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -100,7 +100,7 @@ struct Epgsearch_searchresults_v1_0
       bool useDescription;       // search in description
 // out
 
-      class cServiceSearchResult : public cListObject 
+      class cServiceSearchResult : public cListObject
       {
         public:
          const cEvent* event;
@@ -119,7 +119,7 @@ struct Epgsearch_switchtimer_v1_0
 // in/out
       int switchMinsBefore;
       int announceOnly;
-// out   		
+// out
       bool success;              // result
 };
 
@@ -128,7 +128,7 @@ class cServiceHandler
 {
   public:
    virtual std::list<std::string> SearchTimerList() = 0;
-   // returns a list of search timer entries in the same format as used in epgsearch.conf 
+   // returns a list of search timer entries in the same format as used in epgsearch.conf
    virtual int AddSearchTimer(const std::string&) = 0;
    // adds a new search timer and returns its ID (-1 on error)
    virtual bool ModSearchTimer(const std::string&) = 0;
@@ -136,11 +136,11 @@ class cServiceHandler
    virtual bool DelSearchTimer(int) = 0;
    // deletes search timer with given ID and returns success
    virtual std::list<std::string> QuerySearchTimer(int) = 0;
-   // returns the search result of the searchtimer with given ID in the same format as used in SVDRP command 'QRYS' (->MANUAL)        
+   // returns the search result of the searchtimer with given ID in the same format as used in SVDRP command 'QRYS' (->MANUAL)
    virtual std::list<std::string> QuerySearch(std::string) = 0;
-   // returns the search result of the searchtimer with given settings in the same format as used in SVDRP command 'QRYS' (->MANUAL)        
+   // returns the search result of the searchtimer with given settings in the same format as used in SVDRP command 'QRYS' (->MANUAL)
    virtual std::list<std::string> ExtEPGInfoList() = 0;
-   // returns a list of extended EPG categories in the same format as used in epgsearchcats.conf 
+   // returns a list of extended EPG categories in the same format as used in epgsearchcats.conf
    virtual std::list<std::string> ChanGrpList() = 0;
    // returns a list of channel groups maintained by epgsearch
    virtual std::list<std::string> BlackList() = 0;
@@ -165,9 +165,9 @@ class cServiceHandler_v1_1 : public cServiceHandler
 {
   public:
    // Get timer conflicts
-   virtual std::list<std::string> TimerConflictList(bool relOnly=false) = 0;    
+   virtual std::list<std::string> TimerConflictList(bool relOnly=false) = 0;
    // Check if a conflict check is advised
-   virtual bool IsConflictCheckAdvised() = 0;    
+   virtual bool IsConflictCheckAdvised() = 0;
 };
 
 struct Epgsearch_services_v1_1
@@ -183,7 +183,7 @@ class cServiceHandler_v1_2 : public cServiceHandler_v1_1
   // List of all recording directories used in recordings, timers (and optionally search timers or in epgsearchdirs.conf)
   virtual std::set<std::string> ShortDirectoryList() = 0;
   // Evaluate an expression against an event
-  virtual std::string Evaluate(const std::string& expr, const cEvent* event) = 0;    
+  virtual std::string Evaluate(const std::string& expr, const cEvent* event) = 0;
 };
 
 struct Epgsearch_services_v1_2
diff --git a/svdrpclient.h b/svdrpclient.h
index 2ca7dd3..b3ddeca 100644
--- a/svdrpclient.h
+++ b/svdrpclient.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -41,7 +41,7 @@ public:
 	{
 	    bConnected = false;
 	    sock  = socket(PF_INET, SOCK_STREAM, 0);
-	    if (sock < 0) 
+	    if (sock < 0)
 	    {
 		LogFile.eSysLog("error creating socket!");
 		return;
@@ -68,7 +68,7 @@ public:
 	        close(sock);
 	}
 
-    bool SendCmd(const char* cmd) 
+    bool SendCmd(const char* cmd)
 	{
 	    if (!bConnected)
 		return false;
@@ -83,12 +83,12 @@ public:
 	    long rc = 0;
 	    if ((rc = Receive()) != SVDRPDISCONNECT)
 		LogFile.eSysLog("could not disconnect (%ld)!", rc);
-	    
+
 	    close(sock);
 	    sock = -1;
 	    return cmdret;
 	}
-    bool Send(const char* szSend) 
+    bool Send(const char* szSend)
 	{
 	    int length = strlen(szSend);
 	    int sent = 0;
@@ -104,7 +104,7 @@ public:
 	    while ( sent < length );
 	    return true;
 	}
-    long Receive() 
+    long Receive()
 	{
 	    char* csResp = strdup("");
 	    char ch;
@@ -134,7 +134,7 @@ public:
 		}
 		free(csResp);
 		csResp = strdup("");
-	    }		
+	    }
 	    free(csResp);
 	    return rc;
 	}
diff --git a/switchtimer.c b/switchtimer.c
index 8a0d6df..7948fba 100644
--- a/switchtimer.c
+++ b/switchtimer.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -60,7 +60,7 @@ bool cSwitchTimer::Parse(const char *s)
 
   char value[MAXVALUELEN];
   startTime=0;
-  
+
   pos = line = strdup(s);
   pos_next = pos + strlen(pos);
   if (*pos_next == '\n') *pos_next = 0;
@@ -72,12 +72,12 @@ bool cSwitchTimer::Parse(const char *s)
         if (!pos_next)
           pos_next = pos + strlen(pos);
         valuelen = pos_next - pos + 1;
-        if (valuelen > MAXVALUELEN) 
+        if (valuelen > MAXVALUELEN)
 	    valuelen = MAXVALUELEN;
         strn0cpy(value, pos, valuelen);
         pos = pos_next;
         switch (parameter) {
-	    case 1:  
+	    case 1:
 		channelID = tChannelID::FromString(value);
 		break;
 	    case 2:
@@ -103,7 +103,7 @@ bool cSwitchTimer::Parse(const char *s)
     }
     if (*pos) pos++;
   } //while
-  
+
   free(line);
   return (parameter >= 3) ? true : false;
 }
@@ -118,7 +118,7 @@ const cEvent* cSwitchTimer::Event()
       const cSchedules* schedules = cSchedules::Schedules(schedulesLock);
       if (!schedules) return NULL;
       const cSchedule *Schedule = schedules->GetSchedule(channelID);
-      if (Schedule) 
+      if (Schedule)
       {
 	  event = Schedule->GetEvent(eventID, startTime);
 	  if (!event)
@@ -138,9 +138,9 @@ cString cSwitchTimer::ToText(bool& ignore)
     }
     cChannel *channel = Channels.GetByChannelID(channelID, true, true);
     if (!channel) return NULL;
-    cString buffer = cString::sprintf("%s:%u:%ld:%d:%d:%d", 
-				      CHANNELSTRING(channel), eventID, 
-				      startTime, switchMinsBefore, 
+    cString buffer = cString::sprintf("%s:%u:%ld:%d:%d:%d",
+				      CHANNELSTRING(channel), eventID,
+				      startTime, switchMinsBefore,
 				      mode, unmute?1:0);
     return buffer;
 }
@@ -160,10 +160,10 @@ cSwitchTimer* cSwitchTimers::InSwitchList(const cEvent* event)
     if (!event) return false;
     cMutexLock SwitchTimersLock(this);
     cSwitchTimer* switchTimer = SwitchTimers.First();
-    while (switchTimer) 
+    while (switchTimer)
     {
-      if (switchTimer->eventID == event->EventID() && 
-	  switchTimer->channelID == event->ChannelID() && 
+      if (switchTimer->eventID == event->EventID() &&
+	  switchTimer->channelID == event->ChannelID() &&
 	  switchTimer->startTime == event->StartTime())
 	    return switchTimer;
 	switchTimer = SwitchTimers.Next(switchTimer);
@@ -175,7 +175,7 @@ bool cSwitchTimers::Exists(const cSwitchTimer* SwitchTimer)
 {
     cMutexLock SwitchTimersLock(this);
     cSwitchTimer* switchTimer = SwitchTimers.First();
-    while (switchTimer) 
+    while (switchTimer)
     {
 	if (switchTimer == SwitchTimer)
 	    return true;
diff --git a/switchtimer.h b/switchtimer.h
index 9cf168b..0c21ec9 100644
--- a/switchtimer.h
+++ b/switchtimer.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -45,7 +45,7 @@ public:
     bool Save(FILE *f);
 };
 
-class cSwitchTimers : public cConfig<cSwitchTimer>, public cMutex 
+class cSwitchTimers : public cConfig<cSwitchTimer>, public cMutex
 {
 public:
     cSwitchTimers(void) {}
diff --git a/switchtimer_thread.c b/switchtimer_thread.c
index 9f48421..bc7db11 100644
--- a/switchtimer_thread.c
+++ b/switchtimer_thread.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -40,7 +40,7 @@ cSwitchTimerThread::cSwitchTimerThread(void)
 }
 
 cSwitchTimerThread::~cSwitchTimerThread() {
-   if (m_Active) 
+   if (m_Active)
       Stop();
 }
 
@@ -64,10 +64,10 @@ void cSwitchTimerThread::Stop(void) {
    Cancel(6);
 }
 
-void cSwitchTimerThread::Action(void) 
+void cSwitchTimerThread::Action(void)
 {
   m_Active = true;
-  
+
   // let VDR do its startup
   if (!cPluginEpgsearch::VDR_readyafterStartup)
     LogFile.Log(2, "SwitchTimerThread: waiting for VDR to become ready...");
@@ -75,7 +75,7 @@ void cSwitchTimerThread::Action(void)
     Wait.Wait(1000);
 
    time_t nextUpdate = time(NULL);
-   while (m_Active) 
+   while (m_Active)
    {
       time_t now = time(NULL);
       if (now >= nextUpdate)
@@ -84,7 +84,7 @@ void cSwitchTimerThread::Action(void)
          SwitchTimers.Lock();
          LogFile.Log(3,"switch timer check started");
          cSwitchTimer* switchTimer = SwitchTimers.First();
-         while (switchTimer && m_Active) 
+         while (switchTimer && m_Active)
          {
             if (switchTimer->startTime - now < switchTimer->switchMinsBefore*60 + MSG_DELAY + 1)
             {
@@ -94,10 +94,10 @@ void cSwitchTimerThread::Action(void)
 	       bool doUnmute = switchTimer->unmute;
                SwitchTimers.Del(switchTimer);
 
-  	       const cEvent* event = switchTimer->Event();     
+  	       const cEvent* event = switchTimer->Event();
                if (event && channel && (event->EndTime() >= now))
                {
-                  cString Message = cString::sprintf("%s: %s - %s", event->Title(), 
+                  cString Message = cString::sprintf("%s: %s - %s", event->Title(),
 						     CHANNELNAME(channel), GETTIMESTRING(event));
 		  cString SwitchCmd = cString::sprintf("CHAN %d", channel->Number());
                   // switch
@@ -121,13 +121,13 @@ void cSwitchTimerThread::Action(void)
 			  LogFile.Log(1,"switching to channel %d", channel->Number());
 			  if (cDevice::CurrentChannel() != channel->Number())
 			    SendViaSVDRP(SwitchCmd);
-			  
+
 			  if (doUnmute && cDevice::PrimaryDevice()->IsMute())
 			    cDevice::PrimaryDevice()->ToggleMute();
 
 			}
-		    }			
-		
+		    }
+
                   if (m_Active)
 		    Wait.Wait(1000 * MSG_DELAY);
                }
diff --git a/switchtimer_thread.h b/switchtimer_thread.h
index 3ae946b..e650298 100644
--- a/switchtimer_thread.h
+++ b/switchtimer_thread.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -44,4 +44,4 @@ class cSwitchTimerThread: public cThread {
     static void Exit(void);
 };
 
-#endif 
+#endif
diff --git a/templatefile.c b/templatefile.c
index 02bcbd1..166f7bd 100644
--- a/templatefile.c
+++ b/templatefile.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -38,7 +38,7 @@ bool cMenuTemplate::PrepareTemplate(const char* templateLine)
     pstrSearchToken=strtok_r(pstrSearch, "|", &pptr);
     cString stripped;
     int iToken = 0;
-    while(pstrSearchToken) 
+    while(pstrSearchToken)
     {
 	char* tmp = strchr(pstrSearchToken,':');
 	if (tmp)
@@ -107,12 +107,12 @@ bool cTemplLine::Parse(char *s)
     if (s && s[0] == '#')
 	return true;
     char *p = strchr(s, '=');
-    if (p) 
+    if (p)
     {
 	*p = 0;
 	char *Name  = compactspace(s);
 	char *Value = compactspace(p + 1);
-	if (*Name) 
+	if (*Name)
 	{
 	    name = strdup(Name);
 	    value = strdup(Value);
@@ -130,7 +130,7 @@ cTemplFile::cTemplFile()
 void cTemplFile::Reset()
 {
     std::set<cMenuTemplate*>::iterator it;
-    for (it = menuTemplates.begin(); it != menuTemplates.end(); it++) 
+    for (it = menuTemplates.begin(); it != menuTemplates.end(); ++it)
 	delete (*it);
     menuTemplates.clear();
 }
@@ -138,28 +138,26 @@ void cTemplFile::Reset()
 cMenuTemplate* cTemplFile::GetTemplateByName(const char* Name)
 {
     std::set<cMenuTemplate*>::iterator it;
-    for (it = menuTemplates.begin(); it != menuTemplates.end(); it++) 
+    for (it = menuTemplates.begin(); it != menuTemplates.end(); ++it)
 	if (!strcasecmp(Name, (*it)->Name())) return (*it);
     return NULL;
 }
 
 bool cTemplFile::Load(const char *FileName)
 {
-#if APIVERSNUM >= 10503
   // auto-enable WarEagle-Icons if VDRSymbols font is used
   if (strstr(Setup.FontOsd, "VDRSymbols") == Setup.FontOsd)
     EPGSearchConfig.WarEagle = 1;
-#endif
 
-  if (cConfig<cTemplLine>::Load(FileName, true)) 
+  if (cConfig<cTemplLine>::Load(FileName, true))
   {
       bool result = true;
-      for (cTemplLine *l = First(); l; l = Next(l)) 
+      for (cTemplLine *l = First(); l; l = Next(l))
       {
 	  bool error = false;
 	  if (!Parse(l->Name(), l->Value()))
 	      error = true;
-	  if (error) 
+	  if (error)
 	  {
 	      result = false;
 	  }
@@ -177,18 +175,18 @@ bool cTemplFile::Parse(const char *Name, const char *Value)
 	EPGSearchConfig.WarEagle = atoi(Value);
 	return true;
     }
-    
+
     if (!strcasecmp(Name, "MenuWhatsOnNow") ||
 	!strcasecmp(Name, "MenuWhatsOnNext") ||
 	!strcasecmp(Name, "MenuWhatsOnElse") ||
 	!strcasecmp(Name, "MenuSchedule") ||
-	!strncasecmp(Name, "MenuSearchResults", strlen("MenuSearchResults")) || 
+	!strncasecmp(Name, "MenuSearchResults", strlen("MenuSearchResults")) ||
 	!strcasecmp(Name, "MenuFavorites"))
     {
 	cMenuTemplate* menuTemplate = new cMenuTemplate(Name);
 	if (menuTemplate->PrepareTemplate(Value))
 	{
-	    LogFile.Log(3, "loaded menu template: %s", Name);      	    
+	    LogFile.Log(3, "loaded menu template: %s", Name);
 	    cMenuTemplate* TemplOld = GetTemplateByName(Name);
 	    if (TemplOld)
 	      {
@@ -200,9 +198,9 @@ bool cTemplFile::Parse(const char *Name, const char *Value)
 	    return true;
 	}
     }
-    else 
+    else
     {
-	LogFile.eSysLog("ERROR: unknown parameter: %s = %s", Name, Value);      
+	LogFile.eSysLog("ERROR: unknown parameter: %s = %s", Name, Value);
 	return false;
     }
     return true;
@@ -211,7 +209,7 @@ bool cTemplFile::Parse(const char *Name, const char *Value)
 void cTemplFile::PrepareDefaultTemplates()
 {
     char channelnr[20] = "";
-    sprintf(channelnr, "%%chnr%%:%d|", CHNUMWIDTH); 
+    sprintf(channelnr, "%%chnr%%:%d|", CHNUMWIDTH);
 
     bool text2skin = !(strcmp(Setup.OSDSkin, "soppalusikka") == 0 ||
 		       strcmp(Setup.OSDSkin, "classic") == 0 ||
@@ -227,15 +225,15 @@ void cTemplFile::PrepareDefaultTemplates()
     }
     if (WhatsOnNow && WhatsOnNow->MenuTemplate() == 0)
     {
-	sprintf(menutemplate, "%s%%chsh%%:12|%%time%%:6|%s%s$status$:3|%%title%% ~ %%subtitle%%:30", 
+	sprintf(menutemplate, "%s%%chsh%%:12|%%time%%:6|%s%s$status$:3|%%title%% ~ %%subtitle%%:30",
 		EPGSearchConfig.showChannelNr?channelnr:"",
 		EPGSearchConfig.showProgress==0?"":(EPGSearchConfig.showProgress==1?"%progrT2S%:4|":"%progr%:5|"),
 		text2skin?" ":"");
 	WhatsOnNow->PrepareTemplate(menutemplate);
     }
-	
+
     // What's on next and else
-    sprintf(menutemplate, "%s%%chsh%%:12|%%time%%:7|$status$:4|%%title%% ~ %%subtitle%%:30", 
+    sprintf(menutemplate, "%s%%chsh%%:12|%%time%%:7|$status$:4|%%title%% ~ %%subtitle%%:30",
 	    EPGSearchConfig.showChannelNr?channelnr:"");
     cMenuTemplate* WhatsOnNext = GetTemplateByName("MenuWhatsOnNext");
     if (!WhatsOnNext)
@@ -246,7 +244,7 @@ void cTemplFile::PrepareDefaultTemplates()
     if (WhatsOnNext && WhatsOnNext->MenuTemplate() == 0)
 	WhatsOnNext->PrepareTemplate(menutemplate);
     cMenuTemplate* WhatsOnElse = GetTemplateByName("MenuWhatsOnElse");
-    if (!WhatsOnElse) 
+    if (!WhatsOnElse)
     {
 	WhatsOnElse = new cMenuTemplate("MenuWhatsOnElse");
 	menuTemplates.insert(WhatsOnElse);
@@ -256,7 +254,7 @@ void cTemplFile::PrepareDefaultTemplates()
 
     // Schedule
     cMenuTemplate* Schedule = GetTemplateByName("MenuSchedule");
-    if (!Schedule) 
+    if (!Schedule)
     {
 	Schedule = new cMenuTemplate("MenuSchedule");
 	menuTemplates.insert(Schedule);
@@ -276,7 +274,7 @@ void cTemplFile::PrepareDefaultTemplates()
     }
     if (SearchResults && SearchResults->MenuTemplate() == 0)
     {
-	sprintf(menutemplate, "%s%%chsh%%:12|%%datesh%%:6|%%time%%:6|$status$:3|%%title%% ~ %%subtitle%%:30", 
+	sprintf(menutemplate, "%s%%chsh%%:12|%%datesh%%:6|%%time%%:6|$status$:3|%%title%% ~ %%subtitle%%:30",
 		EPGSearchConfig.showChannelNr?channelnr:"");
 	SearchResults->PrepareTemplate(menutemplate);
     }
@@ -290,7 +288,7 @@ void cTemplFile::PrepareDefaultTemplates()
     }
     if (Favorites && Favorites->MenuTemplate() == 0)
     {
-	sprintf(menutemplate, "%s%%chsh%%:12|%%time%%:6|%%timespan%%:7|$status$:3|%%title%% ~ %%subtitle%%:30", 
+	sprintf(menutemplate, "%s%%chsh%%:12|%%time%%:6|%%timespan%%:7|$status$:3|%%title%% ~ %%subtitle%%:30",
 		EPGSearchConfig.showChannelNr?channelnr:"");
 	Favorites->PrepareTemplate(menutemplate);
     }
@@ -301,7 +299,7 @@ void cTemplFile::PrepareDefaultTemplates()
     SearchTemplates = new char*[CountSearchResultsTemplates()];
     std::set<cMenuTemplate*>::iterator it;
     int Count = 0;
-    for (it = menuTemplates.begin(); it != menuTemplates.end(); it++) 
+    for (it = menuTemplates.begin(); it != menuTemplates.end(); ++it)
 	if (!strncasecmp("MenuSearchResults", (*it)->Name(), strlen("MenuSearchResults")))
 	{
 	    char* templateName = strdup((*it)->Name() + strlen("MenuSearchResults"));
@@ -314,7 +312,7 @@ int cTemplFile::CountSearchResultsTemplates()
 {
     int Count = 0;
     std::set<cMenuTemplate*>::iterator it;
-    for (it = menuTemplates.begin(); it != menuTemplates.end(); it++) 
+    for (it = menuTemplates.begin(); it != menuTemplates.end(); ++it)
 	if (!strncasecmp("MenuSearchResults", (*it)->Name(), strlen("MenuSearchResults"))) Count++;
     return Count;
 }
@@ -323,7 +321,7 @@ cMenuTemplate* cTemplFile::GetSearchTemplateByPos(int iPos)
 {
     int Count = 0;
     std::set<cMenuTemplate*>::iterator it;
-    for (it = menuTemplates.begin(); it != menuTemplates.end(); it++) 
+    for (it = menuTemplates.begin(); it != menuTemplates.end(); ++it)
 	if (!strncasecmp("MenuSearchResults", (*it)->Name(), strlen("MenuSearchResults")))
 	    if(Count++ == iPos)
 		return (*it);
diff --git a/templatefile.h b/templatefile.h
index 93af155..4b8f221 100644
--- a/templatefile.h
+++ b/templatefile.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -37,15 +37,15 @@ class cMenuTemplate
  private:
     char name[MAXTEMPLLEN];
     char* menuTemplate;
-    int  menuTabs[cSkinDisplayMenu::MaxTabs];    
+    int  menuTabs[cSkinDisplayMenu::MaxTabs];
  public:
-    cMenuTemplate(const char* Name) 
+    cMenuTemplate(const char* Name)
       {
-	strcpy(name, Name); 
+	strcpy(name, Name);
 	menuTemplate = 0;
 	for(int i=0; i<cSkinDisplayMenu::MaxTabs; i++) menuTabs[i] = 0;
       }
-    ~cMenuTemplate() 
+    ~cMenuTemplate()
       {
 	if (menuTemplate) free(menuTemplate);
       }
@@ -69,7 +69,7 @@ public:
 };
 
 
-class cTemplFile : public cConfig<cTemplLine> 
+class cTemplFile : public cConfig<cTemplLine>
 {
 public:
     static set<cMenuTemplate*> menuTemplates; // the set of all templates
diff --git a/timer_thread.c b/timer_thread.c
index 5f24e38..d38122b 100644
--- a/timer_thread.c
+++ b/timer_thread.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -47,7 +47,7 @@ cTimerThread::cTimerThread()
 }
 
 cTimerThread::~cTimerThread() {
-    if (m_Active) 
+    if (m_Active)
 	Stop();
     cTimerThread::m_Instance = NULL;
 }
@@ -73,7 +73,7 @@ void cTimerThread::Stop(void) {
     Cancel(3);
 }
 
-void cTimerThread::Action(void) 
+void cTimerThread::Action(void)
 {
     m_Active = true;
     if (EPGSearchConfig.useExternalSVDRP && !cSVDRPClient::SVDRPSendCmd)
@@ -82,9 +82,9 @@ void cTimerThread::Action(void)
 	m_Active = false;
 	return;
     }
-    while (m_Active) 
+    while (m_Active)
     {
-	if (Timers.BeingEdited()) 		
+	if (Timers.BeingEdited())
 	{
 	    sleepSec(1);
 	    continue;
@@ -101,7 +101,7 @@ void cTimerThread::Action(void)
 	else
 	  {
 	    gl_TimerProgged = 1;
-	    if (gl_timerStatusMonitor) gl_timerStatusMonitor->SetConflictCheckAdvised(); 
+	    if (gl_timerStatusMonitor) gl_timerStatusMonitor->SetConflictCheckAdvised();
 	  }
 	m_Active = false;
     };
diff --git a/timer_thread.h b/timer_thread.h
index d3b43f3..ecfb61c 100644
--- a/timer_thread.h
+++ b/timer_thread.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -56,4 +56,4 @@ public:
         void Exit(void);
 };
 
-#endif 
+#endif
diff --git a/timerdone.c b/timerdone.c
index eea0336..d52fb97 100644
--- a/timerdone.c
+++ b/timerdone.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -54,7 +54,7 @@ bool cTimerDone::operator== (const cTimerDone &arg) const
    {
       if (title != arg.title) return false;
       if (shorttext != "" && arg.shorttext != "" && shorttext != arg.shorttext) return false;
-	 
+
       if (searchID > -1 && arg.searchID > -1)
          return searchID == arg.searchID;
       else
@@ -71,11 +71,11 @@ bool cTimerDone::Parse(const char *s)
    char *pos_next;
    int parameter = 1;
    int valuelen;
-    
+
 #define MAXVALUELEN (10 * MaxFileName)
-    
+
    char value[MAXVALUELEN];
-    
+
    pos = line = strdup(s);
    pos_next = pos + strlen(pos);
    if (*pos_next == '\n') *pos_next = 0;
@@ -87,9 +87,9 @@ bool cTimerDone::Parse(const char *s)
             if (!pos_next)
                pos_next = pos + strlen(pos);
             valuelen = pos_next - pos + 1;
-            if (valuelen > MAXVALUELEN) 
+            if (valuelen > MAXVALUELEN)
             {
-               LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);  
+               LogFile.eSysLog("entry '%s' is too long. Will be truncated!", pos);
                valuelen = MAXVALUELEN;
             }
             strn0cpy(value, pos, valuelen);
@@ -115,8 +115,8 @@ bool cTimerDone::Parse(const char *s)
       }
       if (*pos) pos++;
    } //while
-    
-    
+
+
    title = ReplaceAll(title, "|", ":");
    shorttext = ReplaceAll(shorttext, "|", ":");
 
@@ -129,10 +129,10 @@ cString cTimerDone::ToText(void) const
    cChannel *channel = Channels.GetByChannelID(channelID, true, true);
    string info = string(DAYDATETIME(start)) + " - " + string(channel?channel->Name():"");
 
-   cString buffer = cString::sprintf("%s:%ld:%ld:%d:%s:%s:%s", 
+   cString buffer = cString::sprintf("%s:%ld:%ld:%d:%s:%s:%s",
             *channelID.ToString(),
             start,
-            stop, 
+            stop,
             searchID,
             ReplaceAll(title, ":", "|").c_str(),
             ReplaceAll(shorttext, ":", "|").c_str(),
@@ -161,12 +161,12 @@ cTimerDone* cTimersDone::InList(const time_t Start, const time_t Stop, const cEv
 {
    cTimerDone td(Start, Stop, pEvent, SearchID);
    cTimerDone* timerdone = First();
-   while (timerdone) 
+   while (timerdone)
    {
       if (*timerdone == td)
          return timerdone;
       timerdone = Next(timerdone);
-   }	
+   }
    return NULL;
 }
 
@@ -174,19 +174,19 @@ void cTimersDone::ClearOutdated(void)
 {
    // remove outdated items
    cTimerDone* timerdone = First();
-   while (timerdone) 
+   while (timerdone)
    {
       cTimerDone* timerdoneNext = Next(timerdone);
       if (timerdone->stop < time(NULL))
          Del(timerdone);
       timerdone = timerdoneNext;
-   }	
+   }
 }
 
 void cTimersDone::Update(const time_t Start, const time_t Stop, const cEvent* pEvent, const int SearchID, cTimerDone* Timerdone)
-{   
+{
    cTimerDone* timerdone = InList(Start, Stop, pEvent, SearchID);
-   if(timerdone) 
+   if(timerdone)
    {
       timerdone->start = Timerdone->start;
       timerdone->stop = Timerdone->stop;
@@ -203,11 +203,11 @@ void cTimersDone::Update(const time_t Start, const time_t Stop, const cEvent* pE
 void cTimersDone::RemoveEntriesOfSearch(const int SearchID)
 {
    cTimerDone* timerdone = First();
-   while (timerdone) 
+   while (timerdone)
    {
       cTimerDone* timerdoneNext = Next(timerdone);
       if (timerdone->searchID == SearchID)
 	Del(timerdone);
       timerdone = timerdoneNext;
-   }	
+   }
 }
diff --git a/timerdone.h b/timerdone.h
index 0f292d7..75b7a21 100644
--- a/timerdone.h
+++ b/timerdone.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -34,7 +34,7 @@ class cTimerDone : public cListObject {
 public:
     time_t start;        // Start time of the timer
     time_t stop;         // Stop time of the timer
-    tChannelID channelID;    
+    tChannelID channelID;
     int searchID;
     string title;
     string shorttext;
diff --git a/timerstatus.c b/timerstatus.c
index 534ffac..d35b97e 100644
--- a/timerstatus.c
+++ b/timerstatus.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
diff --git a/timerstatus.h b/timerstatus.h
index 9cfc925..1405596 100644
--- a/timerstatus.h
+++ b/timerstatus.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -27,15 +27,15 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
 enum eTimerChange { tcMod, tcAdd, tcDel };
 #endif
 
-class cTimerStatusMonitor : public cStatus 
+class cTimerStatusMonitor : public cStatus
 {
   bool conflictCheckAdvised;
  protected:
   virtual void TimerChange(const cTimer *Timer, eTimerChange Change);
  public:
   cTimerStatusMonitor();
-  void SetConflictCheckAdvised(bool ConflictCheckAdvised = true); 
-  bool ConflictCheckAdvised(); 
+  void SetConflictCheckAdvised(bool ConflictCheckAdvised = true);
+  bool ConflictCheckAdvised();
 };
 
 extern cTimerStatusMonitor* gl_timerStatusMonitor;
diff --git a/uservars.c b/uservars.c
index 2da06f5..1a15706 100644
--- a/uservars.c
+++ b/uservars.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -66,7 +66,7 @@ string cUserVar::Evaluate(const cEvent* e, bool escapeStrings)
    // avoid double dir separators
    int pos = 0;
    while((pos = result.find("~~")) >= 0)
-      result.replace(pos, 2, "~"); 
+      result.replace(pos, 2, "~");
 
    return result;
 }
@@ -78,15 +78,15 @@ string cUserVar::EvaluateShellCmd(const cEvent* e)
    if (varparser.cmdArgs != "")
    {
       string args = varparser.cmdArgs;
-      varparser.compExpr = args; //handle the args as composed expr	
+      varparser.compExpr = args; //handle the args as composed expr
       cmdArgs = EvaluateCompExpr(e, true);
    }
    const char* res = varparser.cmd->Execute(cmdArgs.c_str());
    string result = res?res:"";
    int crPos = 0; // remove any CR
    while((crPos = result.find("\n")) >= 0)
-      result.replace(crPos, 1, ""); 
-    
+      result.replace(crPos, 1, "");
+
    return result;
 }
 
@@ -98,8 +98,8 @@ string cUserVar::EvaluateConnectCmd(const cEvent* e)
    int       conn_s;                /*  connection socket         */
    struct    sockaddr_in servaddr;  /*  socket address structure  */
    char      buffer[MAX_LINE];      /*  character buffer          */
- 
-   if ( (conn_s = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) 
+
+   if ( (conn_s = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
    {
      LogFile.eSysLog("Error creating listening socket");
      return "";
@@ -115,7 +115,7 @@ string cUserVar::EvaluateConnectCmd(const cEvent* e)
      return "";
    }
 
-   if ( connect(conn_s, (struct sockaddr *) &servaddr, sizeof(servaddr) ) < 0 ) 
+   if ( connect(conn_s, (struct sockaddr *) &servaddr, sizeof(servaddr) ) < 0 )
    {
      LogFile.eSysLog("Error calling connect()");
      return "";
@@ -145,7 +145,7 @@ string cUserVar::EvaluateCondExpr(const cEvent* e, bool escapeStrings)
    string resRight = rightExp.Evaluate(e);
    if (varparser.condOp == condEq && resLeft == resRight)  condresult = "1"; // assign any value
    if (varparser.condOp == condNeq && resLeft != resRight) condresult = "1"; // assign any value
-    
+
    cUserVar* condVarTrue = UserVars.GetFromName(varparser.condvarTrue);
    cUserVar* condVarFalse = UserVars.GetFromName(varparser.condvarFalse);
    if (!condVarTrue || !condVarFalse) return "";
@@ -188,13 +188,13 @@ string cUserVar::EvaluateInternalVars(const string& Expr, const cEvent* e, bool
    if (expr.find('%') == string::npos) return expr;
 
    std::map<string, cInternalVar*>::iterator it;
-   for (it = UserVars.internalVars.begin(); it != UserVars.internalVars.end(); it++) 
+   for (it = UserVars.internalVars.begin(); it != UserVars.internalVars.end(); ++it)
    {
       string varName = (it->second)->Name();
       int varPos = 0;
       while((varPos = FindIgnoreCase(expr, varName)) >= 0)
       {
-         usedVars.insert(it->second); 
+         usedVars.insert(it->second);
          expr.replace(varPos, varName.size(), (it->second)->Evaluate(e, escapeStrings));
       }
    }
@@ -207,14 +207,14 @@ string cUserVar::EvaluateExtEPGVars(const string& Expr, const cEvent* e, bool es
    if (expr.find('%') == string::npos) return expr;
 
    std::map<string, cExtEPGVar*>::iterator evar;
-   for (evar = UserVars.extEPGVars.begin(); evar != UserVars.extEPGVars.end(); evar++) 
+   for (evar = UserVars.extEPGVars.begin(); evar != UserVars.extEPGVars.end(); ++evar)
    {
       string varName = evar->second->Name();
       int varPos = 0;
       while((varPos = FindIgnoreCase(expr, varName)) >= 0)
       {
          expr.replace(varPos, varName.size(), evar->second->Evaluate(e, escapeStrings));
-         usedVars.insert(evar->second); 		
+         usedVars.insert(evar->second);
       }
    }
    return expr;
@@ -226,7 +226,7 @@ string cUserVar::EvaluateUserVars(const string& Expr, const cEvent* e, bool esca
    if (expr.find('%') == string::npos) return expr;
 
    std::set<cUserVar*>::iterator it;
-   for (it = UserVars.userVars.begin(); it != UserVars.userVars.end(); it++) 
+   for (it = UserVars.userVars.begin(); it != UserVars.userVars.end(); ++it)
    {
       string varName = (*it)->Name();
       int varPos = 0;
@@ -245,7 +245,7 @@ string cUserVar::EvaluateInternalTimerVars(const string& Expr, const cTimer* t)
    if (expr.find('%') == string::npos) return expr;
 
    std::map<string, cTimerVar*>::iterator tvar;
-   for (tvar = UserVars.internalTimerVars.begin(); tvar != UserVars.internalTimerVars.end(); tvar++) 
+   for (tvar = UserVars.internalTimerVars.begin(); tvar != UserVars.internalTimerVars.end(); ++tvar)
    {
       string varName = tvar->second->Name();
       int varPos = 0;
@@ -264,7 +264,7 @@ string cUserVar::EvaluateInternalSearchVars(const string& Expr, const cSearchExt
    if (expr.find('%') == string::npos) return expr;
 
    std::map<string, cSearchVar*>::iterator svar;
-   for (svar = UserVars.internalSearchVars.begin(); svar != UserVars.internalSearchVars.end(); svar++) 
+   for (svar = UserVars.internalSearchVars.begin(); svar != UserVars.internalSearchVars.end(); ++svar)
    {
       string varName = svar->second->Name();
       int varPos = 0;
@@ -289,7 +289,7 @@ bool cUserVar::DependsOnVar(cUserVar* var)
    if (!var) return false;
    if (usedVars.find(var) != usedVars.end()) return true;
    std::set<cUserVar*>::iterator it;
-   for (it = usedVars.begin(); it != usedVars.end(); it++) 
+   for (it = usedVars.begin(); it != usedVars.end(); ++it)
       if ((*it)->DependsOnVar(var))
          return true;
    return false;
@@ -302,7 +302,7 @@ bool cUserVar::AddDepVar(cUserVar* var)
       LogFile.eSysLog("ERROR - found cylic reference to var '%s' in var '%s'", var->Name().c_str(), Name().c_str());
       return false;
    }
-   usedVars.insert(var); 		    
+   usedVars.insert(var);
    return true;
 }
 
@@ -318,7 +318,7 @@ bool cUserVarLine::Parse(char *s)
    if (s && s[0] == '#')
       return true;
    char *p = strchr(s, '=');
-   if (p) 
+   if (p)
    {
       cUserVar* userVar = new cUserVar;
       if (userVar->varparser.Parse(s))
@@ -342,18 +342,18 @@ cUserVar* cUserVars::GetFromName(const string& varName, bool log)
 {
    string VarName = Strip(varName);
    std::transform(VarName.begin(), VarName.end(), VarName.begin(), tolower);
-    
+
    std::map<string, cInternalVar*>::iterator ivar = internalVars.find(VarName);
-   if (ivar != internalVars.end()) 
+   if (ivar != internalVars.end())
       return ivar->second;
 
    std::set<cUserVar*>::iterator uvar;
-   for (uvar = userVars.begin(); uvar != userVars.end(); uvar++) 
+   for (uvar = userVars.begin(); uvar != userVars.end(); ++uvar)
       if (EqualsNoCase((*uvar)->Name(), VarName))
          return (*uvar);
 
    std::map<string, cExtEPGVar*>::iterator evar = extEPGVars.find(VarName);
-   if (evar != extEPGVars.end()) 
+   if (evar != extEPGVars.end())
       return evar->second;
 
    if (log)
diff --git a/uservars.h b/uservars.h
index e98c0ec..062bd34 100644
--- a/uservars.h
+++ b/uservars.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -41,8 +41,8 @@ using std::map;
 using std::ostringstream;
 
 class cUserVar : public cListObject {
-    const cEvent* oldEvent; // cache 
-    bool oldescapeStrings; 
+    const cEvent* oldEvent; // cache
+    bool oldescapeStrings;
 
     string oldResult;
     string EvaluateCondExpr(const cEvent* e, bool escapeStrings = false);
@@ -80,12 +80,12 @@ class cExtEPGVar : public cUserVar {
     string Name() { return name; }
     bool IsCondExpr() { return false; }
     bool IsShellCmd() { return false; }
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 
 	    cSearchExtCat* SearchExtCat = SearchExtCats.First();
-	    while (SearchExtCat) 
+	    while (SearchExtCat)
 	    {
 		string varName = string("%") + SearchExtCat->name + string("%");
 		int varPos = FindIgnoreCase(varName, name);
@@ -113,9 +113,9 @@ class cInternalVar : public cUserVar {
 class cTitleVar : public cInternalVar {
 public:
     cTitleVar() : cInternalVar("%title%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
 	{
-	    string res = (e && !isempty(e->Title()))? e->Title() : ""; 
+	    string res = (e && !isempty(e->Title()))? e->Title() : "";
 	    if (escapeStrings) return "'" + EscapeString(res) + "'"; else return res;
 	}
 };
@@ -123,9 +123,9 @@ public:
 class cSubtitleVar : public cInternalVar {
 public:
     cSubtitleVar() : cInternalVar("%subtitle%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
 	{
-	    string res = (e && !isempty(e->ShortText()))? e->ShortText() : ""; 
+	    string res = (e && !isempty(e->ShortText()))? e->ShortText() : "";
 	    if (escapeStrings) return "'" + EscapeString(res) + "'"; else return res;
 	}
 };
@@ -133,9 +133,9 @@ public:
 class cSummaryVar : public cInternalVar {
 public:
     cSummaryVar() : cInternalVar("%summary%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
-	    string res = (e && !isempty(e->Description()))? e->Description() : ""; 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
+	    string res = (e && !isempty(e->Description()))? e->Description() : "";
 	    if (escapeStrings) return "'" + EscapeString(res) + "'"; else return res;
 	}
 };
@@ -143,8 +143,8 @@ public:
 class cHTMLSummaryVar : public cInternalVar {
 public:
     cHTMLSummaryVar() : cInternalVar("%htmlsummary%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (e && !isempty(e->Description()))
 	    {
 		string res = ReplaceAll(e->Description(), "\n", "<br />");
@@ -158,9 +158,9 @@ public:
 class cEventIDVar : public cInternalVar {
 public:
     cEventIDVar() : cInternalVar("%eventid%") {}
-    string Evaluate(const cEvent* e,  bool escapeStrings = false) 
-    { 
-      if (e) 
+    string Evaluate(const cEvent* e,  bool escapeStrings = false)
+    {
+      if (e)
 	{
 	  ostringstream os;
 	  os << e->EventID();
@@ -172,12 +172,12 @@ public:
 class cLiveEventIDVar : public cInternalVar {
 public:
     cLiveEventIDVar() : cInternalVar("%liveeventid%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true);
 	    if (!channel) return "";
-	    
+
 	    string res(channel->GetChannelID().ToString());
 	    res = "event_" + res;
 	    res = ReplaceAll(res, ".", "p");
@@ -190,9 +190,9 @@ public:
 class cTimeVar : public cInternalVar {
 public:
     cTimeVar() : cInternalVar("%time%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
-	    string res = (e? *(e->GetTimeString()) : ""); 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
+	    string res = (e? *(e->GetTimeString()) : "");
 	    if (escapeStrings) return "'" + EscapeString(res) + "'"; else return res;
 	}
 };
@@ -200,9 +200,9 @@ public:
 class cTimeEndVar : public cInternalVar {
 public:
     cTimeEndVar() : cInternalVar("%timeend%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
-	    string res = (e? *(e->GetEndTimeString()) : ""); 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
+	    string res = (e? *(e->GetEndTimeString()) : "");
 	    if (escapeStrings) return "'" + EscapeString(res) + "'"; else return res;
 	}
 };
@@ -210,9 +210,9 @@ public:
 class cTime_wVar : public cInternalVar {
 public:
     cTime_wVar() : cInternalVar("%time_w%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
-	    string res = (e? WEEKDAYNAME(e->StartTime()) : ""); 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
+	    string res = (e? WEEKDAYNAME(e->StartTime()) : "");
 	    if (escapeStrings) return "'" + EscapeString(res) + "'"; else return res;
 	}
 };
@@ -220,8 +220,8 @@ public:
 class cTime_dVar : public cInternalVar {
 public:
     cTime_dVar() : cInternalVar("%time_d%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    char day[3] = "";
 	    struct tm tm_r;
@@ -235,8 +235,8 @@ public:
 class cTime_lngVar : public cInternalVar {
 public:
     cTime_lngVar() : cInternalVar("%time_lng%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    ostringstream os;
 	    os << e->StartTime();
@@ -247,8 +247,8 @@ public:
 class cTimeSpanVar : public cInternalVar {
 public:
     cTimeSpanVar() : cInternalVar("%timespan%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    time_t diff = e->StartTime() - time(NULL);
 	    string res;
@@ -286,17 +286,17 @@ public:
 class cLength_Var : public cInternalVar {
 public:
     cLength_Var() : cInternalVar("%length%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
-	    return (e? NumToString(e->Duration()) : ""); 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
+	    return (e? NumToString(e->Duration()) : "");
 	}
 };
 
 class cDateVar : public cInternalVar {
 public:
     cDateVar() : cInternalVar("%date%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    char date[9] = "";
 	    struct tm tm_r;
@@ -310,8 +310,8 @@ public:
 class cDateShortVar : public cInternalVar {
 public:
     cDateShortVar() : cInternalVar("%datesh%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    char dateshort[7] = "";
 	    struct tm tm_r;
@@ -325,8 +325,8 @@ public:
 class cDateISOVar : public cInternalVar {
 public:
     cDateISOVar() : cInternalVar("%date_iso%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    char dateISO[11] = "";
 	    struct tm tm_r;
@@ -340,8 +340,8 @@ public:
 class cYearVar : public cInternalVar {
 public:
     cYearVar() : cInternalVar("%year%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    char year[5] = "";
 	    struct tm tm_r;
@@ -355,8 +355,8 @@ public:
 class cMonthVar : public cInternalVar {
 public:
     cMonthVar() : cInternalVar("%month%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    char month[3] = "";
 	    struct tm tm_r;
@@ -370,8 +370,8 @@ public:
 class cDayVar : public cInternalVar {
 public:
     cDayVar() : cInternalVar("%day%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    char day[3] = "";
 	    struct tm tm_r;
@@ -385,8 +385,8 @@ public:
 class cWeekVar : public cInternalVar {
 public:
     cWeekVar() : cInternalVar("%week%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    char day[3] = "";
 	    struct tm tm_r;
@@ -400,8 +400,8 @@ public:
 class cChannelNrVar : public cInternalVar {
 public:
     cChannelNrVar() : cInternalVar("%chnr%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    int chnr = ChannelNrFromEvent(e);
 	    if (chnr < 0) return "";
 	    return NumToString(chnr);
@@ -411,8 +411,8 @@ public:
 class cChannelShortVar : public cInternalVar {
 public:
     cChannelShortVar() : cInternalVar("%chsh%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true);
 	    string res = channel?channel->ShortName(true):"";
@@ -423,8 +423,8 @@ public:
 class cChannelLongVar : public cInternalVar {
 public:
     cChannelLongVar() : cInternalVar("%chlng%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true);
 	    string res = channel?channel->Name():"";
@@ -435,8 +435,8 @@ public:
 class cChannelDataVar : public cInternalVar {
  public:
     cChannelDataVar() : cInternalVar("%chdata%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true);
 	    return channel?CHANNELSTRING(channel):"";
@@ -446,8 +446,8 @@ class cChannelDataVar : public cInternalVar {
 class cChannelGroupVar : public cInternalVar {
 public:
     cChannelGroupVar() : cInternalVar("%chgrp%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    ostringstream os;
 	    cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true);
@@ -462,8 +462,8 @@ public:
 class cNEWTCmdVar : public cInternalVar {
  public:
     cNEWTCmdVar() : cInternalVar("%newtcmd%") {}
-    string Evaluate(const cEvent* e, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent* e, bool escapeStrings = false)
+	{
 	    if (!e) return "";
 	    cTimer* timer = new cTimer(e);
 	    string newtCmd =  *(timer->ToText());
@@ -475,17 +475,17 @@ class cNEWTCmdVar : public cInternalVar {
 class cColonVar : public cInternalVar {
  public:
     cColonVar() : cInternalVar("%colon%") {}
-    string Evaluate(const cEvent*, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent*, bool escapeStrings = false)
+	{
 	    return ":";
 	}
 };
- 
+
 class cDateNowVar : public cInternalVar {
  public:
     cDateNowVar() : cInternalVar("%datenow%") {}
-    string Evaluate(const cEvent*, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent*, bool escapeStrings = false)
+	{
 	    char date[9] = "";
 	    struct tm tm_r;
 	    const time_t t = time(NULL);
@@ -498,8 +498,8 @@ class cDateNowVar : public cInternalVar {
 class cDateShortNowVar : public cInternalVar {
 public:
     cDateShortNowVar() : cInternalVar("%dateshnow%") {}
-    string Evaluate(const cEvent*, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent*, bool escapeStrings = false)
+	{
 	    char dateshort[7] = "";
 	    struct tm tm_r;
 	    const time_t t = time(NULL);
@@ -512,8 +512,8 @@ public:
 class cDateISONowVar : public cInternalVar {
 public:
     cDateISONowVar() : cInternalVar("%date_iso_now%") {}
-    string Evaluate(const cEvent*, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent*, bool escapeStrings = false)
+	{
 	    char dateISO[11] = "";
 	    struct tm tm_r;
 	    const time_t t = time(NULL);
@@ -526,8 +526,8 @@ public:
 class cTimeNowVar : public cInternalVar {
 public:
     cTimeNowVar() : cInternalVar("%timenow%") {}
-    string Evaluate(const cEvent*, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent*, bool escapeStrings = false)
+	{
 	    return TIMESTRING(time(NULL));
 	}
 };
@@ -535,18 +535,18 @@ public:
 class cVideodirVar : public cInternalVar {
  public:
     cVideodirVar() : cInternalVar("%videodir%") {}
-    string Evaluate(const cEvent*, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent*, bool escapeStrings = false)
+	{
 	    return VideoDirectory;
 	}
 };
- 
+
 class cPlugconfdirVar : public cInternalVar {
  public:
     static string dir;
     cPlugconfdirVar() : cInternalVar("%plugconfdir%") {}
-    string Evaluate(const cEvent*, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent*, bool escapeStrings = false)
+	{
 	    return dir;
 	}
 };
@@ -555,8 +555,8 @@ class cEpgsearchconfdirVar : public cInternalVar {
  public:
     static string dir;
     cEpgsearchconfdirVar() : cInternalVar("%epgsearchdir%") {}
-    string Evaluate(const cEvent*, bool escapeStrings = false) 
-	{ 
+    string Evaluate(const cEvent*, bool escapeStrings = false)
+	{
 	    return CONFIGDIR;
 	}
 };
@@ -564,7 +564,7 @@ class cEpgsearchconfdirVar : public cInternalVar {
 // timer variables
 class cTimerVar {
     const string name;
- public:    
+ public:
     cTimerVar(const string& Name) : name(Name) {}
     virtual ~cTimerVar() {}
     string Name() { return name; }
@@ -574,8 +574,8 @@ class cTimerVar {
 class cTimerDateVar : public cTimerVar {
  public:
     cTimerDateVar() : cTimerVar("%timer.date%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t) return "";
 	    return DATESTRING(t->StartTime());
 	}
@@ -584,8 +584,8 @@ class cTimerDateVar : public cTimerVar {
 class cTimerStartVar : public cTimerVar {
  public:
     cTimerStartVar() : cTimerVar("%timer.start%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t) return "";
 	    return TIMESTRING(t->StartTime());
 	}
@@ -594,8 +594,8 @@ class cTimerStartVar : public cTimerVar {
 class cTimerStopVar : public cTimerVar {
  public:
     cTimerStopVar() : cTimerVar("%timer.stop%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t) return "";
 	    return TIMESTRING(t->StopTime());
 	}
@@ -604,8 +604,8 @@ class cTimerStopVar : public cTimerVar {
 class cTimerFileVar : public cTimerVar {
  public:
     cTimerFileVar() : cTimerVar("%timer.file%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t) return "";
 	    return t->File();
 	}
@@ -614,8 +614,8 @@ class cTimerFileVar : public cTimerVar {
 class cTimerChnrVar : public cTimerVar {
  public:
     cTimerChnrVar() : cTimerVar("%timer.chnr%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t || !t->Channel()) return "";
 	    return NumToString(t->Channel()->Number());
 	}
@@ -624,8 +624,8 @@ class cTimerChnrVar : public cTimerVar {
 class cTimerChannelShortVar : public cTimerVar {
 public:
     cTimerChannelShortVar() : cTimerVar("%timer.chsh%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t || !t->Channel()) return "";
 	    return t->Channel()->ShortName(true);
 	}
@@ -634,8 +634,8 @@ public:
 class cTimerChannelLongVar : public cTimerVar {
 public:
     cTimerChannelLongVar() : cTimerVar("%timer.chlng%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t || !t->Channel()) return "";
 	    return t->Channel()->Name();
 	}
@@ -644,8 +644,8 @@ public:
 class cTimerSearchVar : public cTimerVar {
  public:
     cTimerSearchVar() : cTimerVar("%timer.search%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t) return "";
 	    cSearchExt* s = TriggeredFromSearchTimer(t);
 	    if (!s) return "";
@@ -656,8 +656,8 @@ class cTimerSearchVar : public cTimerVar {
 class cTimerSearchIDVar : public cTimerVar {
  public:
     cTimerSearchIDVar() : cTimerVar("%timer.searchid%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t) return "";
 	    int ID = TriggeredFromSearchTimerID(t);
 	    if (ID < 0) return "";
@@ -668,12 +668,12 @@ class cTimerSearchIDVar : public cTimerVar {
 class cTimerLiveIDVar : public cTimerVar {
 public:
     cTimerLiveIDVar() : cTimerVar("%timer.liveid%") {}
-    string Evaluate(const cTimer* t) 
-	{ 
+    string Evaluate(const cTimer* t)
+	{
 	    if (!t || !t->Channel()) return "";
 	    ostringstream builder;
 	    builder << *(t->Channel()->GetChannelID().ToString()) << ":" << t->WeekDays() << ":"
-				<< t->Day() << ":" << t->Start() << ":" << t->Stop();	    
+				<< t->Day() << ":" << t->Start() << ":" << t->Stop();
 	    string res = builder.str();
 	    res = "timer_" + res;
 	    res = ReplaceAll(res, ".", "p");
@@ -686,7 +686,7 @@ public:
 // search variables
 class cSearchVar {
     const string name;
- public:    
+ public:
     cSearchVar(const string& Name) : name(Name) {}
     virtual ~cSearchVar() {}
     string Name() { return name; }
@@ -696,8 +696,8 @@ class cSearchVar {
 class cSearchQueryVar : public cSearchVar {
 public:
     cSearchQueryVar() : cSearchVar("%search.query%") {}
-    string Evaluate(const cSearchExt* s) 
-	{ 
+    string Evaluate(const cSearchExt* s)
+	{
 	    if (!s) return "";
 	    return s->search;
 	}
@@ -706,8 +706,8 @@ public:
 class cSearchSeriesVar : public cSearchVar {
 public:
     cSearchSeriesVar() : cSearchVar("%search.series%") {}
-    string Evaluate(const cSearchExt* s) 
-	{ 
+    string Evaluate(const cSearchExt* s)
+	{
 	    if (!s) return "";
 	    return NumToString(s->useEpisode);
 	}
@@ -760,8 +760,8 @@ class cUserVars : public cList<cUserVar> {
     cTimerChnrVar timerChnrVar;
     cTimerChannelShortVar timerChShortVar;
     cTimerChannelLongVar timerChLongVar;
-    cTimerSearchVar timerSearchVar; 
-    cTimerSearchIDVar timerSearchIDVar; 
+    cTimerSearchVar timerSearchVar;
+    cTimerSearchIDVar timerSearchIDVar;
     cTimerLiveIDVar timerLiveIDVar;
 
     map<string, cExtEPGVar*> extEPGVars;
@@ -808,7 +808,7 @@ class cUserVars : public cList<cUserVar> {
 	    internalVars[plugconfdirVar.Name()] = &plugconfdirVar;
 	    internalVars[epgsearchconfdirVar.Name()] = &epgsearchconfdirVar;
 
-	    internalTimerVars[timerDateVar.Name()] = &timerDateVar;	    
+	    internalTimerVars[timerDateVar.Name()] = &timerDateVar;
 	    internalTimerVars[timerStartVar.Name()] = &timerStartVar;
 	    internalTimerVars[timerStopVar.Name()] = &timerStopVar;
 	    internalTimerVars[timerFileVar.Name()] = &timerFileVar;
@@ -826,7 +826,7 @@ class cUserVars : public cList<cUserVar> {
     void InitExtEPGVars()
 	{
 	    cSearchExtCat* SearchExtCat = SearchExtCats.First();
-	    while (SearchExtCat) 
+	    while (SearchExtCat)
 	    {
 		string varName = string("%") + SearchExtCat->name + string("%");
 		std::transform(varName.begin(), varName.end(), varName.begin(), tolower);
@@ -838,7 +838,7 @@ class cUserVars : public cList<cUserVar> {
     void ResetCache()
 	{
 	    cUserVar* var = First();
-	    while (var) 
+	    while (var)
 	    {
 		var->ResetCache();
 		var = Next(var);
@@ -847,12 +847,12 @@ class cUserVars : public cList<cUserVar> {
     ~cUserVars()
 	{
 	    std::map<string, cExtEPGVar*>::iterator evar;
-	    for (evar = extEPGVars.begin(); evar != extEPGVars.end(); evar++)
+	    for (evar = extEPGVars.begin(); evar != extEPGVars.end(); ++evar)
 		delete evar->second;
 	    extEPGVars.clear();
 
 	    std::set<cUserVar*>::iterator uvar;
-	    for (uvar = userVars.begin(); uvar != userVars.end(); uvar++)
+	    for (uvar = userVars.begin(); uvar != userVars.end(); ++uvar)
 		delete (*uvar);
 	    userVars.clear();
 	}
@@ -867,18 +867,18 @@ public:
 };
 
 
-class cUserVarFile : public cConfig<cUserVarLine> 
+class cUserVarFile : public cConfig<cUserVarLine>
 {
 public:
     cUserVarFile() { UserVars.Clear(); };
 };
 
-class cVarExpr 
+class cVarExpr
 {
     string expr;
  public:
     set<cUserVar*> usedVars;
-    cVarExpr(const string& Expr) : expr(Expr) {} 
+    cVarExpr(const string& Expr) : expr(Expr) {}
     string Evaluate(const cEvent* e = NULL);
     string Evaluate(const cTimer* t);
     string Evaluate(const cSearchExt* s);
diff --git a/varparser.c b/varparser.c
index ec69a31..54a7bdb 100644
--- a/varparser.c
+++ b/varparser.c
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -33,7 +33,7 @@ bool cVarParser::Parse(const string& input)
 }
 
 bool cVarParser::ParseAssign(const string& input)
-{   
+{
    int assignPos = input.find("=");
    if (assignPos >= 0)
    {
@@ -45,7 +45,7 @@ bool cVarParser::ParseAssign(const string& input)
          return ParseExp(assign);
       }
    }
-   LogFile.eSysLog("error parsing '%s'", input.c_str());  
+   LogFile.eSysLog("error parsing '%s'", input.c_str());
    return false;
 }
 
@@ -77,7 +77,7 @@ bool cVarParser::ParseExp(const string& input)
      }
    // composed expression
    compExpr = input;
-   return true; 
+   return true;
 }
 
 bool cVarParser::ParseShellCmd(const string& input)
@@ -145,7 +145,7 @@ bool cVarParser::ParseLengthCmd(const string& input)
 }
 
 bool cVarParser::ParseCondExp(const string& input)
-{   
+{
    int condEndPos = input.find("?");
    string cond(input.begin(), input.begin() + condEndPos);
    int condNeqPos = cond.find("!=");
@@ -161,14 +161,14 @@ bool cVarParser::ParseCondExp(const string& input)
    {
       if (!ParseEquality(cond))
       {
-         LogFile.eSysLog("error parsing '%s'", input.c_str());  
+         LogFile.eSysLog("error parsing '%s'", input.c_str());
          return false;
       }
       condOp = (condEqPos >= 0)?condEq:condNeq;
    }
    else
    {
-      LogFile.eSysLog("error parsing '%s'", input.c_str());  
+      LogFile.eSysLog("error parsing '%s'", input.c_str());
       return false;
    }
 
@@ -180,13 +180,13 @@ bool cVarParser::ParseCondExp(const string& input)
       string falsePart(truefalse.begin() + elsePos + 1, truefalse.end());
       if (ParseVar(truePart) && ParseVar(falsePart))
       {
-         condvarTrue = Strip(truePart); 
-         condvarFalse = Strip(falsePart);		
+         condvarTrue = Strip(truePart);
+         condvarFalse = Strip(falsePart);
 	 type = cVarParser::condition;
          return true;
       }
    }
-   LogFile.eSysLog("error parsing '%s'", input.c_str());  
+   LogFile.eSysLog("error parsing '%s'", input.c_str());
    condEqLeft = condEqRight = "";
    return false;
 }
@@ -211,7 +211,7 @@ bool cVarParser::ParseEquality(const string& input)
 }
 
 bool cVarParser::ParseVar(const string& input)
-{   
+{
    string str = Strip(input);
    if (str.size() > 2 && str[0] == '%' && str[str.size()-1] == '%')
       return true;
diff --git a/varparser.h b/varparser.h
index 328b812..a8dfccd 100644
--- a/varparser.h
+++ b/varparser.h
@@ -1,4 +1,4 @@
-/*
+/*                                                                  -*- c++ -*-
 Copyright (C) 2004-2011 Christian Wieninger
 
 This program is free software; you can redistribute it and/or
@@ -48,7 +48,7 @@ class cVarParser
     connectcmd,
     lengthcmd
   } exprType;
-  
+
  public:
     string varName;
     string condEqLeft;
@@ -62,7 +62,7 @@ class cVarParser
     string cmdArgs;
 
     string connectAddr;
-    int connectPort;  
+    int connectPort;
     exprType type;
 
  cVarParser() : cmd(NULL), connectPort(-1), type(composed) {}

-- 
vdr-plugin-epgsearch packaging repository



More information about the pkg-vdr-dvb-changes mailing list