Index: includes/programs.php
===================================================================
--- includes/programs.php	(revision 9646)
+++ includes/programs.php	(working copy)
@@ -261,6 +261,7 @@
     var $is_movie;
 
     var $timestretch;
+    var $playgroup;
 
     var $credits = array();
 
@@ -333,7 +334,8 @@
             $this->recpriority     = $data[36];
             $this->airdate         = date('Y-m-d', $data[37]);
             $this->hasairdate      = $data[38];
-            $this->timestretch     = $data[39];
+            $this->playgroup       = $data[39];
+            $this->timestretch     = '';            # Not printed by ToStringList() 
             $this->recpriority2    = $data[40];
         // Assign the program flags
             $this->has_commflag = ($progflags & 0x01) ? true : false;    // FL_COMMFLAG  = 0x01
Index: includes/recording_schedules.php
===================================================================
--- includes/recording_schedules.php	(revision 9646)
+++ includes/recording_schedules.php	(working copy)
@@ -143,6 +143,7 @@
     var $findid;
     var $transcoder;
     var $parentid;
+    var $playgroup;
 
     var $texttype;
     var $channel;
@@ -251,7 +252,7 @@
     // Update the type, in case it changed
         $this->type = $new_type;
     // Update the record
-        $result = mysql_query('REPLACE INTO record (recordid,type,chanid,starttime,startdate,endtime,enddate,search,title,subtitle,description,profile,recpriority,category,maxnewest,inactive,maxepisodes,autoexpire,startoffset,endoffset,recgroup,dupmethod,dupin,station,seriesid,programid,autocommflag,findday,findtime,findid,autotranscode,transcoder,parentid,tsdefault,autouserjob1,autouserjob2,autouserjob3,autouserjob4) values ('
+        $result = mysql_query('REPLACE INTO record (recordid,type,chanid,starttime,startdate,endtime,enddate,search,title,subtitle,description,profile,recpriority,category,maxnewest,inactive,maxepisodes,autoexpire,startoffset,endoffset,recgroup,dupmethod,dupin,station,seriesid,programid,autocommflag,findday,findtime,findid,autotranscode,transcoder,parentid,tsdefault,autouserjob1,autouserjob2,autouserjob3,autouserjob4,playgroup) values ('
                                 .escape($this->recordid, true)             .','
                                 .escape($this->type)                       .','
                                 .escape($this->chanid)                     .','
@@ -289,7 +290,8 @@
                                 .escape($this->autouserjob1)               .','
                                 .escape($this->autouserjob2)               .','
                                 .escape($this->autouserjob3)               .','
-                                .escape($this->autouserjob4)               .')')
+                                .escape($this->autouserjob4)               .','
+				.escape($this->playgroup)                  .')')
             or trigger_error('SQL Error: '.mysql_error(), FATAL);
     // Get the id that was returned
         $recordid = mysql_insert_id();
@@ -512,4 +514,31 @@
         echo '</select>';
     }
 
+/**
+ * prints a <select> of the various playback groups available
+/**/
+    function playgroup_select($this_playgroup, $name = 'playgroup', $js = '', $id = '')
+    {
+        static $playgroups = array();
+        if(!sizeof($playgroups))
+        {
+            $res = mysql_query('SELECT name FROM playgroup');
+            while($row = mysql_fetch_row($res))
+                $playgroups[$row[0]] = $row[0];
+            mysql_free_result($res);
+        }
 
+        echo "<select name=\"$name\"";
+        if(strlen($js))
+           echo " onchange=\"$js\" id=\"playgroup_$id\" name=\"playgroup_$id\"";
+        echo ">\n";
+        foreach($playgroups as $playgroup)
+        {
+            echo "\t<option value=\"" . html_entities($playgroup) . '"';
+            if($this_playgroup == $playgroup)
+                echo ' SELECTED';
+            echo '>' . html_entities($playgroup) . "</option>\n";
+        }
+        echo "</select>\n";
+        return;
+    }
Index: includes/css.php
===================================================================
--- includes/css.php	(revision 9646)
+++ includes/css.php	(working copy)
@@ -31,14 +31,15 @@
     // Scan the $Categories hash for any matches
         else {
             global $Categories;
-            foreach ($Categories as $cat => $details) {
-                if (!$details[1])
-                    continue;
-                if (preg_match('/'.$details[1].'/', $category)) {
-                    $class[] = $cache[$category] = 'cat_'.$cat;
-                    break;
+            if(is_array($Categories))
+                foreach ($Categories as $cat => $details) {
+                    if (!$details[1])
+                        continue;
+                    if (preg_match('/'.$details[1].'/', $category)) {
+                        $class[] = $cache[$category] = 'cat_'.$cat;
+                        break;
+                    }
                 }
-            }
         }
     // No category found?
         if (!$cache[$category])
Index: modules/settings/playgroup.php
===================================================================
--- modules/settings/playgroup.php	(revision 0)
+++ modules/settings/playgroup.php	(revision 0)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Configure MythTV playback groups 
+ *
+ * @url         $URL$
+ * @date        $Date$
+ * @version     $Revision$
+ * @author      $Author$
+ * @license     GPL
+ *
+ * @package     MythWeb
+ * @subpackage  Settings
+ *
+/**/
+// We need the list of available playgroups
+    require_once 'includes/recording_schedules.php';
+
+// Load a playgroup to edit
+    $row = array();
+    if(isset($_GET['playgroup'])) {
+        $sh = $db->query('SELECT * FROM playgroup WHERE name = ?', $_GET['playgroup']);
+        if($sh->num_rows() == 1)
+           $row = $sh->fetch_assoc();
+    }
+    $name        = isset($row['name']) ? $row['name'] : '';
+    $titlematch  = isset($row['titlematch']) ? $row['titlematch'] : '';
+    $skipahead   = isset($row['skipahead']) ? $row['skipahead'] : '';
+    $skipback    = isset($row['skipback']) ? $row['skipback'] : '';
+    $timestretch = isset($row['timestretch']) ? $row['timestretch'] : '';
+    $jump        = isset($row['jump']) ? $row['jump'] : '';
+
+// Save changes
+    if(isset($_POST['save']))
+        $db->query('REPLACE INTO playgroup (name, titlematch, skipahead, skipback, timestretch, jump) VALUES (?, ?, ?, ?, ?, ?)', $_POST['name'], $_POST['titlematch'], $_POST['skipahead'], $_POST['skipback'], $_POST['timestretch'], $_POST['jump']);
+
+// Delete group
+    if(isset($_POST['delete']))
+        $db->query('DELETE FROM playgroup WHERE name = ?', $_POST['name']);
+
+// Load the class for this page
+    require_once tmpl_dir.'playgroup.php';
+
+    exit(0);
Index: modules/settings/init.php
===================================================================
--- modules/settings/init.php	(revision 9646)
+++ modules/settings/init.php	(working copy)
@@ -23,5 +23,6 @@
                                                         'channels'  => t('MythTV channel info'),
                                                         'keys'      => t('MythTV key bindings'),
                                                         'settings'  => t('MythTV settings table'),
+							'playgroup' => t('MythTV playback group editor')
                                                        ),
                                 );
Index: modules/settings/tmpl/default/playgroup.php
===================================================================
--- modules/settings/tmpl/default/playgroup.php	(revision 0)
+++ modules/settings/tmpl/default/playgroup.php	(revision 0)
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Configure MythTV playback groups 
+ *
+ * @url         $URL$
+ * @date        $Date$
+ * @version     $Revision$
+ * @author      $Author$
+ * @license     GPL
+ *
+ * @package     MythWeb
+ * @subpackage  Settings
+ *
+/**/
+
+
+// Set the desired page title
+    $page_title = 'MythWeb - '.t('Playback Group Editor');
+
+// Print the page header
+    require 'modules/_shared/tmpl/'.tmpl.'/header.php';
+
+?>
+<table align="center" width="40%" cellspacing="2" cellpadding="2">
+<tr>
+    <td width="50%" class="command command_border_l command_border_t command_border_b command_border_r" align="center">
+        <form class="form" method="get" action="<?php echo root ?>settings/playgroup">
+        <table width="100%" border="0" cellspacing="0" cellpadding="2">
+        <tr>
+            <td nowrap align="center"><?php echo t('Edit existing group') ?>:&nbsp;&nbsp;</td>
+                <td><?php playgroup_select(NULL); ?></td>
+            <td align="center"><input type="submit" class="submit" value="<?php echo t('Load Group') ?>"></td>
+        </tr>
+        </table>
+        </form>
+        </td>
+</tr>
+</table>
+
+<form class="form" method="post" action="<?php echo root ?>settings/playgroup">
+
+<table border="0" cellpadding="4" cellspacing="2" class="list small" align="center">
+<tr class="menu large" align="center">
+    <td colspan="6"><?php echo t('Playback Group Editor') ?></td>
+</tr><tr class="menu" align="center">
+    <td><?php echo t('Name') ?></td>
+    <td><?php echo t('Title Match') ?></td>
+    <td><?php echo t('Skip Ahead') ?></td>
+    <td><?php echo t('Skip Back') ?></td>
+    <td><?php echo t('Time Stretch') ?></td>
+    <td><?php echo t('Jump') ?></td>
+</tr>
+<tr class="menu">
+    <td><input type="text" name="name" value="<?php echo $name ?>" /></td>
+    <td><input type="text" name="titlematch" value="<?php echo $titlematch ?>" /></td>
+    <td><input type="text" name="skipahead" value="<?php echo $skipahead ?>" /></td>
+    <td><input type="text" name="skipback" value="<?php echo $skipback ?>" /></td>
+    <td><input type="text" name="timestretch" value="<?php echo $timestretch ?>" /></td>
+    <td><input type="text" name="jump" value="<?php echo $jump ?>" /></td>
+</tr>
+</table>
+
+<p align="center">
+<input type="submit" name="save" value="<?php echo t('Save') ?>">
+<input type="submit" name="delete" value="<?php echo t('Delete') ?>">
+</p>
+
+</form>
+<?php
+
+// Print the page footer
+    require 'modules/_shared/tmpl/'.tmpl.'/footer.php';
+
Index: modules/_shared/lang/English_GB.lang
===================================================================
--- modules/_shared/lang/English_GB.lang	(revision 9646)
+++ modules/_shared/lang/English_GB.lang	(working copy)
@@ -106,6 +106,7 @@
 "Duplicates"
 "Duration"
 "Edit"
+"Edit existing group"
 "Edit keybindings on"
 "Edit MythWeb and some MythTV settings."
 "Edit settings for"
@@ -182,6 +183,7 @@
 "Listing &quot;Jump to&quot;"
 "Listing Time Key"
 "Listings"
+"Load Group"
 "Logs"
 "Low"
 "Manual"
@@ -202,6 +204,7 @@
 "MythTV channel info"
 "MythTV global defaults"
 "MythTV key bindings"
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
 "MythVideo Artwork Dir"
@@ -244,6 +247,8 @@
 "Past Year"
 "People"
 "People Search"
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
 "Please search for something."
 "plot"
@@ -414,6 +419,8 @@
 "Showing all programs."
     Showing all programmes.
 "SI Units?"
+"Skip Ahead"
+"Skip Back"
 "sourceid"
 "Special Searches"
 "Star character"
@@ -434,10 +441,12 @@
 "The requested recording schedule has been deleted."
 "Thursday"
 "Time"
+"Time Stretch"
 "Time Stretch Default"
 "Timeslot size"
 "title"
 "Title"
+"Title Match"
 "Title Search"
 "Today"
 "Tomorrow"
Index: modules/_shared/lang/French.lang
===================================================================
--- modules/_shared/lang/French.lang	(revision 9646)
+++ modules/_shared/lang/French.lang	(working copy)
@@ -161,6 +161,7 @@
     Doublonner
 "Duration"
 "Edit"
+"Edit existing group"
 "Edit keybindings on"
     Editer les touches sur
 "Edit MythWeb and some MythTV settings."
@@ -275,6 +276,7 @@
     Lister Touches de temps
 "Listings"
     Liste
+"Load Group"
 "Logs"
 "Low"
     faible
@@ -295,6 +297,7 @@
 "MythTV channel info"
 "MythTV global defaults"
 "MythTV key bindings"
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
 "MythVideo Artwork Dir"
@@ -347,6 +350,8 @@
 "Past Year"
 "People"
 "People Search"
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
     Nous vous pr&eacute;venons que modifier les touches sans savoir ce que vous fa&icirc;tes peut s&eacute;rieusement endomager le fonctionnement de MythTV
 "Please search for something."
@@ -552,6 +557,8 @@
 "Showing all programs."
 "SI Units?"
     Unités métriques?
+"Skip Ahead"
+"Skip Back"
 "sourceid"
 "Special Searches"
 "Star character"
@@ -584,12 +591,14 @@
     Jeudi
 "Time"
     Heure
+"Time Stretch"
 "Time Stretch Default"
 "Timeslot size"
 "title"
     Titre
 "Title"
     Titre
+"Title Match"
 "Title Search"
 "Today"
     Aujourd&acute;hui
Index: modules/_shared/lang/Spanish.lang
===================================================================
--- modules/_shared/lang/Spanish.lang	(revision 9646)
+++ modules/_shared/lang/Spanish.lang	(working copy)
@@ -198,6 +198,7 @@
     DuraciÃ³n
 "Edit"
     Editar
+"Edit existing group"
 "Edit keybindings on"
     Editar Teclas en
 "Edit MythWeb and some MythTV settings."
@@ -332,6 +333,7 @@
     Hora Listado
 "Listings"
     Listados
+"Load Group"
 "Logs"
 "Low"
     Bajo
@@ -360,6 +362,7 @@
 "MythTV global defaults"
 "MythTV key bindings"
     VÃ­nculos Teclas MythTV
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
     Estado MythTV
@@ -427,6 +430,8 @@
     Gente
 "People Search"
     BÃºsqueda gente
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
     Tenga cuidado al alterar esta tabla sin saber lo que hace, puede romper el funcionamiento de MythTV
 "Please search for something."
@@ -654,6 +659,8 @@
     Mostrando todos los programas
 "SI Units?"
     Â¿Unidades SI?
+"Skip Ahead"
+"Skip Back"
 "sourceid"
     id fuente
 "Special Searches"
@@ -692,6 +699,7 @@
     Jueves
 "Time"
     Hora
+"Time Stretch"
 "Time Stretch Default"
     Ajuste de tiempo por defecto
 "Timeslot size"
@@ -699,6 +707,7 @@
     tÃ­tulo
 "Title"
     TÃ­tulo
+"Title Match"
 "Title Search"
     Buscar tÃ­tulo
 "Today"
Index: modules/_shared/lang/Danish.lang
===================================================================
--- modules/_shared/lang/Danish.lang	(revision 9646)
+++ modules/_shared/lang/Danish.lang	(working copy)
@@ -179,6 +179,7 @@
     Varighed
 "Edit"
     Ã†ndre
+"Edit existing group"
 "Edit keybindings on"
     Rediger tastaturgenveje for
 "Edit MythWeb and some MythTV settings."
@@ -295,6 +296,7 @@
     Programoversigt tid
 "Listings"
     Programoversigt
+"Load Group"
 "Logs"
 "Low"
     Lav
@@ -318,6 +320,7 @@
 "MythTV global defaults"
 "MythTV key bindings"
     MythTV taste indstillinger
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
 "MythVideo Artwork Dir"
@@ -374,6 +377,8 @@
 "Past Year"
 "People"
 "People Search"
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
     BemÃ¦rk at ved at Ã¦ndre i denne tabel uden at vide hvad du laver, kan du Ã¸delÃ¦gge mythtvs funktioner.
 "Please search for something."
@@ -589,6 +594,8 @@
 "Showing all programs."
 "SI Units?"
     SI enheder?
+"Skip Ahead"
+"Skip Back"
 "sourceid"
 "Special Searches"
     Specielle sÃ¸gninger
@@ -624,6 +631,7 @@
     Torsdag
 "Time"
     Tidspunkt
+"Time Stretch"
 "Time Stretch Default"
     Standard Afspilnings hastighed
 "Timeslot size"
@@ -631,6 +639,7 @@
     titel
 "Title"
     Titel
+"Title Match"
 "Title Search"
 "Today"
     I dag
Index: modules/_shared/lang/Swedish.lang
===================================================================
--- modules/_shared/lang/Swedish.lang	(revision 9646)
+++ modules/_shared/lang/Swedish.lang	(working copy)
@@ -200,6 +200,7 @@
     LÃ¤ngd
 "Edit"
     Redigera
+"Edit existing group"
 "Edit keybindings on"
     Editera knappar pÃ¥
 "Edit MythWeb and some MythTV settings."
@@ -335,6 +336,7 @@
     TV-tablÃ¥ tid
 "Listings"
     TV-tablÃ¥er
+"Load Group"
 "Logs"
     Logg
 "Low"
@@ -364,6 +366,7 @@
 "MythTV global defaults"
 "MythTV key bindings"
     MythTV tangentbindningar
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
     MythTV-status
@@ -431,6 +434,8 @@
     Person
 "People Search"
     SÃ¶k person
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
     OBS! Genom att Ã¤ndra dessa instÃ¤llningar utan att veta vad du gÃ¶r kan du allvarligt stÃ¶ra MythTVs funktionalitet.
 "Please search for something."
@@ -658,6 +663,8 @@
     Visar alla program.
 "SI Units?"
     SI-enheter?
+"Skip Ahead"
+"Skip Back"
 "sourceid"
     kÃ¤ll-id
 "Special Searches"
@@ -696,6 +703,7 @@
     Torsdag
 "Time"
     Tid
+"Time Stretch"
 "Time Stretch Default"
     FÃ¶rvalt tempo
 "Timeslot size"
@@ -703,6 +711,7 @@
     titel
 "Title"
     Titel
+"Title Match"
 "Title Search"
     SÃ¶k titel
 "Today"
Index: modules/_shared/lang/Dutch.lang
===================================================================
--- modules/_shared/lang/Dutch.lang	(revision 9646)
+++ modules/_shared/lang/Dutch.lang	(working copy)
@@ -200,6 +200,7 @@
     Lengte
 "Edit"
     Bewerken
+"Edit existing group"
 "Edit keybindings on"
     Toetsbindingen bewerken op
 "Edit MythWeb and some MythTV settings."
@@ -334,6 +335,7 @@
     Weergave Tijd Gids
 "Listings"
     Programmagids
+"Load Group"
 "Logs"
     Logboek
 "Low"
@@ -363,6 +365,7 @@
 "MythTV global defaults"
 "MythTV key bindings"
     MythTV toetsbindingen
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
     MythTV status
@@ -430,6 +433,8 @@
     Personen
 "People Search"
     Personen zoeken
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
     Waarschuwing! Als u niet weet wat u doet, kan het veranderen van deze tabel de werking van MythTV ernstig verstoren.
 "Please search for something."
@@ -656,6 +661,8 @@
     Alle programma's laten zien
 "SI Units?"
     SI eenheden?
+"Skip Ahead"
+"Skip Back"
 "sourceid"
     bron
 "Special Searches"
@@ -694,6 +701,7 @@
     Donderdag
 "Time"
     Tijd
+"Time Stretch"
 "Time Stretch Default"
     TimeStretch Standaard
 "Timeslot size"
@@ -701,6 +709,7 @@
     titel
 "Title"
     Titel
+"Title Match"
 "Title Search"
     Titel zoeken
 "Today"
Index: modules/_shared/lang/German.lang
===================================================================
--- modules/_shared/lang/German.lang	(revision 9646)
+++ modules/_shared/lang/German.lang	(working copy)
@@ -200,6 +200,7 @@
     Dauer
 "Edit"
     Bearbeiten
+"Edit existing group"
 "Edit keybindings on"
     Tastaturbelegung Ã¤ndern fÃ¼r
 "Edit MythWeb and some MythTV settings."
@@ -332,6 +333,7 @@
 "Listing Time Key"
 "Listings"
     TV Programm
+"Load Group"
 "Logs"
     Logs
 "Low"
@@ -361,6 +363,7 @@
 "MythTV global defaults"
 "MythTV key bindings"
     MythTV Tastaturbelegung
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
     MythTV Status
@@ -427,6 +430,8 @@
     Leute
 "People Search"
     Suche nach Darsteller
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
     Achtung! Falls diese Tabelle ohne das nÃ¶tige Hintergrundwissen verÃ¤ndert wird, kÃ¶nnte MythTVs FunktionalitÃ¤t nachhaltig gestÃ¶rt werden.
 "Please search for something."
@@ -654,6 +659,8 @@
     Zeige alle Sendungen.
 "SI Units?"
     SI Einheiten?
+"Skip Ahead"
+"Skip Back"
 "sourceid"
     Source ID
 "Special Searches"
@@ -690,6 +697,7 @@
     Donnerstag
 "Time"
     Zeit
+"Time Stretch"
 "Time Stretch Default"
     Zeitraffer Vorgabewert
 "Timeslot size"
@@ -697,6 +705,7 @@
     Titel
 "Title"
     Titel
+"Title Match"
 "Title Search"
     Titel Suche
 "Today"
Index: modules/_shared/lang/Japanese.lang
===================================================================
--- modules/_shared/lang/Japanese.lang	(revision 9646)
+++ modules/_shared/lang/Japanese.lang	(working copy)
@@ -185,6 +185,7 @@
     æ™‚é–“
 "Edit"
     ç·¨é›†
+"Edit existing group"
 "Edit keybindings on"
     ã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‰ç·¨é›†å¯¾è±¡
 "Edit MythWeb and some MythTV settings."
@@ -312,6 +313,7 @@
     ä¸€è¦§ ã‚¿ã‚¤ãƒ ã‚­ãƒ¼
 "Listings"
     ç•ªçµ„è¡¨
+"Load Group"
 "Logs"
     ãƒ­ã‚°
 "Low"
@@ -337,6 +339,7 @@
 "MythTV global defaults"
 "MythTV key bindings"
     MythTVã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‰
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
     MythTVã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹
@@ -399,6 +402,8 @@
     ãƒ”ãƒ¼ãƒ—ãƒ«
 "People Search"
     ãƒ”ãƒ¼ãƒ—ãƒ«ã‚µãƒ¼ãƒ
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
     è¨­å®šé …ç›®ã®æ„å‘³ãŒã‚ã‹ã‚‰ãªã„ã¨ãã¯å¤‰æ›´ã—ãªã„ã§ãã ã•ã„ã€‚MythTVãŒæ­£å¸¸ã«å‹•ä½œã—ãªããªã‚Šã¾ã™ã€‚
 "Please search for something."
@@ -623,6 +628,8 @@
     ã™ã¹ã¦ã®ç•ªçµ„ã‚’è¡¨ç¤º
 "SI Units?"
     SIå˜ä½ã‚’ä½¿ç”¨ã™ã‚‹
+"Skip Ahead"
+"Skip Back"
 "sourceid"
 "Special Searches"
     ã‚¹ãƒšã‚·ãƒ£ãƒ«æ¤œç´¢
@@ -659,6 +666,7 @@
     æœ¨æ›œæ—¥
 "Time"
     æ”¾é€æ™‚é–“
+"Time Stretch"
 "Time Stretch Default"
     ã‚¿ã‚¤ãƒ ã‚¹ãƒˆãƒ¬ãƒƒãƒè¨­å®š
 "Timeslot size"
@@ -666,6 +674,7 @@
     ã‚¿ã‚¤ãƒˆãƒ«
 "Title"
     ã‚¿ã‚¤ãƒˆãƒ«
+"Title Match"
 "Title Search"
     ã‚¿ã‚¤ãƒˆãƒ«ã‚µãƒ¼ãƒ
 "Today"
Index: modules/_shared/lang/English.lang
===================================================================
--- modules/_shared/lang/English.lang	(revision 9646)
+++ modules/_shared/lang/English.lang	(working copy)
@@ -102,6 +102,7 @@
 "Duplicates"
 "Duration"
 "Edit"
+"Edit existing group"
 "Edit keybindings on"
 "Edit MythWeb and some MythTV settings."
 "Edit settings for"
@@ -177,6 +178,7 @@
 "Listing &quot;Jump to&quot;"
 "Listing Time Key"
 "Listings"
+"Load Group"
 "Logs"
 "Low"
 "Manual"
@@ -194,6 +196,7 @@
 "MythTV channel info"
 "MythTV global defaults"
 "MythTV key bindings"
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
 "MythVideo Artwork Dir"
@@ -234,6 +237,8 @@
 "Past Year"
 "People"
 "People Search"
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
 "Please search for something."
 "plot"
@@ -402,6 +407,8 @@
 "Showing all programs from the $1 group."
 "Showing all programs."
 "SI Units?"
+"Skip Ahead"
+"Skip Back"
 "sourceid"
 "Special Searches"
 "Star character"
@@ -422,10 +429,12 @@
 "The requested recording schedule has been deleted."
 "Thursday"
 "Time"
+"Time Stretch"
 "Time Stretch Default"
 "Timeslot size"
 "title"
 "Title"
+"Title Match"
 "Title Search"
 "Today"
 "Tomorrow"
Index: modules/_shared/lang/Czech.lang
===================================================================
--- modules/_shared/lang/Czech.lang	(revision 9646)
+++ modules/_shared/lang/Czech.lang	(working copy)
@@ -135,6 +135,7 @@
 "Duplicates"
 "Duration"
 "Edit"
+"Edit existing group"
 "Edit keybindings on"
 "Edit MythWeb and some MythTV settings."
 "Edit settings for"
@@ -224,6 +225,7 @@
 "Listing Time Key"
 "Listings"
     VÃ½pisy
+"Load Group"
 "Logs"
 "Low"
 "Manual"
@@ -245,6 +247,7 @@
 "MythTV channel info"
 "MythTV global defaults"
 "MythTV key bindings"
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
 "MythVideo Artwork Dir"
@@ -295,6 +298,8 @@
 "Past Year"
 "People"
 "People Search"
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
 "Please search for something."
 "plot"
@@ -474,6 +479,8 @@
 "Showing all programs from the $1 group."
 "Showing all programs."
 "SI Units?"
+"Skip Ahead"
+"Skip Back"
 "sourceid"
 "Special Searches"
 "Star character"
@@ -499,12 +506,14 @@
 "Thursday"
     ÄŒtvrtek
 "Time"
+"Time Stretch"
 "Time Stretch Default"
 "Timeslot size"
 "title"
     nÃ¡zev
 "Title"
     NÃ¡zev
+"Title Match"
 "Title Search"
 "Today"
     Dnes
Index: modules/_shared/lang/Finnish.lang
===================================================================
--- modules/_shared/lang/Finnish.lang	(revision 9646)
+++ modules/_shared/lang/Finnish.lang	(working copy)
@@ -197,6 +197,7 @@
     Kesto
 "Edit"
     Muokkaa
+"Edit existing group"
 "Edit keybindings on"
     Muokkaa nÃ¤ppÃ¤inkomentoja
 "Edit MythWeb and some MythTV settings."
@@ -326,6 +327,7 @@
     Listauksen AikanÃ¤ppÃ¤in
 "Listings"
     Listaus
+"Load Group"
 "Logs"
     Lokit
 "Low"
@@ -351,6 +353,7 @@
 "MythTV global defaults"
 "MythTV key bindings"
     MythTV komennot
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
     MythTV Tila
@@ -414,6 +417,8 @@
 "People"
 "People Search"
     Haku NimellÃ¤
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
     Varoitus: NÃ¤iden asetusten muokkaus voi haitata MythTV:n toimintaa.
 "Please search for something."
@@ -638,6 +643,8 @@
     NÃ¤ytetÃ¤Ã¤n kaikki ohjelmat.
 "SI Units?"
     SI-yksikÃ¶t
+"Skip Ahead"
+"Skip Back"
 "sourceid"
 "Special Searches"
     Edistynyt Haku
@@ -675,6 +682,7 @@
     Torstai
 "Time"
     Aika
+"Time Stretch"
 "Time Stretch Default"
     Ajan SÃ¤Ã¤dÃ¶n Oletus
 "Timeslot size"
@@ -682,6 +690,7 @@
     Nimike
 "Title"
     Nimike
+"Title Match"
 "Title Search"
     Haku NimikkeellÃ¤
 "Today"
Index: modules/_shared/lang/Slovenian.lang
===================================================================
--- modules/_shared/lang/Slovenian.lang	(revision 9646)
+++ modules/_shared/lang/Slovenian.lang	(working copy)
@@ -156,6 +156,7 @@
     Duplikati
 "Duration"
 "Edit"
+"Edit existing group"
 "Edit keybindings on"
     Zamenjaj bliÅ¾njico za
 "Edit MythWeb and some MythTV settings."
@@ -269,6 +270,7 @@
     Seznam
 "Listings"
     Seznam
+"Load Group"
 "Logs"
 "Low"
     Nizka
@@ -289,6 +291,7 @@
 "MythTV channel info"
 "MythTV global defaults"
 "MythTV key bindings"
+"MythTV playback group editor"
 "MythTV settings table"
 "MythTV Status"
 "MythVideo Artwork Dir"
@@ -341,6 +344,8 @@
 "Past Year"
 "People"
 "People Search"
+"Playback Group"
+"Playback Group Editor"
 "Please be warned that by altering this table without knowing what you are doing, you could seriously disrupt mythtv functionality."
 "Please search for something."
     Prosim poiÅ¡Äite kaj
@@ -544,6 +549,8 @@
 "Showing all programs."
 "SI Units?"
     SI enote
+"Skip Ahead"
+"Skip Back"
 "sourceid"
 "Special Searches"
 "Star character"
@@ -576,12 +583,14 @@
     ÄŒetrtek
 "Time"
     ÄŒas
+"Time Stretch"
 "Time Stretch Default"
 "Timeslot size"
 "title"
     Naslov
 "Title"
     Naslov
+"Title Match"
 "Title Search"
 "Today"
     Danes
Index: modules/tv/schedules_custom.php
===================================================================
--- modules/tv/schedules_custom.php	(revision 9646)
+++ modules/tv/schedules_custom.php	(working copy)
@@ -100,6 +100,7 @@
             $schedule->findday       = $_POST['findday'];
             $schedule->autotranscode = $_POST['autotranscode'] ? 1 : 0;
             $schedule->transcoder    = $_POST['transcoder'];
+            $schedule->playgroup     = $_POST['playgroup'];
         // Parse the findtime
             $schedule->findtime      = trim($_POST['findtime']);
             if ($schedule->findtime) {
Index: modules/tv/schedules_manual.php
===================================================================
--- modules/tv/schedules_manual.php	(revision 9646)
+++ modules/tv/schedules_manual.php	(working copy)
@@ -87,6 +87,7 @@
             $schedule->findtime    = date('H:m:s', $schedule->starttime);
             $schedule->autotranscode = $_POST['autotranscode'] ? 1 : 0;
             $schedule->transcoder  = $_POST['transcoder'];
+            $schedule->playgroup   = $_POST['playgroup'];
         // Figure out the title
             $channel = $Channels[$_POST['channel']];
             if (strcasecmp($_POST['title'], t('Use callsign')) == 0) {
Index: modules/tv/detail.php
===================================================================
--- modules/tv/detail.php	(revision 9646)
+++ modules/tv/detail.php	(working copy)
@@ -132,6 +132,7 @@
             $schedule->endoffset     = intval($_POST['endoffset']);
             $schedule->autotranscode = $_POST['autotranscode'] ? 1 : 0;
             $schedule->transcoder    = $_POST['transcoder'];
+            $schedule->playgroup     = $_POST['playgroup'];
             $schedule->tsdefault     = $_POST['timestretch'];
         // Keep track of the parent recording for overrides
             if ($_POST['record'] == rectype_override) {
Index: modules/tv/tmpl/default/schedules_custom.php
===================================================================
--- modules/tv/tmpl/default/schedules_custom.php	(revision 9646)
+++ modules/tv/tmpl/default/schedules_custom.php	(working copy)
@@ -160,6 +160,8 @@
                         echo ">$i</option>";
                     }
                     ?></select></dd>
+                <dt><?php echo t('Playback Group') ?>:</dt>
+                <dd><?php playgroup_select($schedule->playgroup) ?></dd>
                 <dt><?php echo t('Check for duplicates in') ?>:</dt>
                 <dd><select name="dupin"><?php
                         echo '<option value="1"';
Index: modules/tv/tmpl/default/schedules_manual.php
===================================================================
--- modules/tv/tmpl/default/schedules_manual.php	(revision 9646)
+++ modules/tv/tmpl/default/schedules_manual.php	(working copy)
@@ -113,6 +113,8 @@
                         echo ">$i</option>";
                     }
                     ?></select></dd>
+                <dt><?php echo t('Playback Group') ?>:</dt>
+                <dd><?php playgroup_select($schedule->playgroup) ?></dd>
                 <dt><?php echo t('Check for duplicates in') ?>:</dt>
                 <dd><select name="dupin"><?php
                         echo '<option value="1"';
Index: modules/tv/tmpl/default/detail.php
===================================================================
--- modules/tv/tmpl/default/detail.php	(revision 9646)
+++ modules/tv/tmpl/default/detail.php	(working copy)
@@ -371,6 +371,8 @@
                         echo ">$i</option>";
                     }
                     ?></select></dd>
+                <dt><?php echo t('Playback Group') ?>:</dt>
+                <dd><?php playgroup_select($schedule->playgroup) ?></dd>
                 <dt><?php echo t('Time Stretch Default') ?>:</dt>
                 <dd>
                     <select name="timestretch">
Index: modules/tv/tmpl/default/recorded.php
===================================================================
--- modules/tv/tmpl/default/recorded.php	(revision 9646)
+++ modules/tv/tmpl/default/recorded.php	(working copy)
@@ -68,6 +68,14 @@
                    +'&chanid='+file.chanid+'&starttime='+file.starttime);
     }
 
+    function set_playgroup(id) {
+        var file = files[id];
+        var sel  = get_element('playgroup_' + file.chanid + '.' + file.starttime);
+        submit_url('<?php echo root ?>tv/recorded?ajax&playgroup='+
+                    sel.options[sel.selectedIndex].value+
+                    '&chanid='+file.chanid+'&starttime='+file.starttime);
+    }
+
     function confirm_delete(id, forget_old) {
         var file = files[id];
         if (confirm("<?php echo t('Are you sure you want to delete the following show?') ?>\n\n     "+file.title+": "+file.subtitle)) {
@@ -325,6 +333,9 @@
              name="autoexpire_<?php echo $show->chanid, '.', $show->recstartts ?>"
              <?php if ($show->auto_expire) echo ' CHECKED' ?> onchange="set_autoexpire(<?php echo $row ?>)" />
             </span>
+        <span style="padding-right: 25px"><?php echo strtolower(t('Playback Group')) ?>:&nbsp;
+            <?php playgroup_select($show->playgroup, 'playgroup', "set_playgroup($row)", $show->chanid . '.' . $show->recstartts) ?>
+            </span>
         <?php echo t('has bookmark') ?>:&nbsp;
             <b><?php echo $show->bookmark ? t('Yes') : t('No') ?></b>
         </td>
Index: modules/tv/recorded.php
===================================================================
--- modules/tv/recorded.php	(revision 9646)
+++ modules/tv/recorded.php	(working copy)
@@ -58,18 +58,27 @@
 
 // Auto-expire
     isset($_GET['autoexpire']) or $_GET['autoexpire'] = $_POST['autoexpire'];
-    if (isset($_GET['autoexpire']) && $_GET['chanid'] && $_GET['starttime']) {
+    if (isset($_GET['autoexpire']) && $_GET['chanid'] && $_GET['starttime'])
         $sh = $db->query('UPDATE recorded
                              SET autoexpire = ?
                            WHERE chanid = ? AND starttime = FROM_UNIXTIME(?)',
                          $_GET['autoexpire'] ? 1 : 0,
                          $_GET['chanid'],
                          $_GET['starttime']);
+// Playback group edit
+    isset($_GET['playgroup']) or $_GET['playgroup'] = $_POST['playgroup'];
+    if(isset($_GET['playgroup']) && $_GET['chanid'] && $_GET['starttime'])
+        $sh = $db->query('UPDATE recorded
+                             SET playgroup = ?
+                           WHERE chanid = ? AND starttime = FROM_UNIXTIME(?)',
+                         $_GET['playgroup'],
+                         $_GET['chanid'],
+                         $_GET['starttime']);
+
     // Exit early if we're in AJAX mode.
-        if (isset($_GET['ajax'])) {
-            echo 'success';
-            exit;
-        }
+    if (isset($_GET['ajax'])) {
+        echo 'success';
+        exit;
     }
     else {
         /** @todo need some sort of handler here for the non-ajax stuff */
