Index: includes/sorting.php
===================================================================
--- includes/sorting.php	(revision 9204)
+++ includes/sorting.php	(working copy)
@@ -126,7 +126,7 @@
     }
 
     function by_title(&$a, &$b) {
-        return strcasecmp($a->title, $b->title);
+        return sort_prog_titles($a->title, $b->title);
     }
 
     function by_type(&$a, &$b) {
@@ -198,3 +198,18 @@
         return ($a->transcoder > $b->transcoder) ? 1 : -1;
     }
 
+    function strip_articles($str)
+    {
+        if(preg_match('/^A /', $str))
+           return substr($str, 2);
+        if(preg_match('/^An /', $str))
+           return substr($str, 3);
+        if(preg_match('/^The /', $str))
+           return substr($str, 4);
+        return $str;
+    }
+
+    function sort_prog_titles($a, $b) // Arguments are strings
+    {
+        return strcasecmp(strip_articles($a), strip_articles($b));
+    } 
Index: modules/tv/recorded.php
===================================================================
--- modules/tv/recorded.php	(revision 9204)
+++ modules/tv/recorded.php	(working copy)
@@ -203,7 +203,7 @@
     }
 
 // Sort the program titles
-    ksort($Program_Titles);
+    uksort($Program_Titles, 'sort_prog_titles');
     ksort($Groups);
 
 // Keep track of the program/title the user wants to view
