--- loncom/interface/loncommon.pm	2002/08/01 16:48:21	1.48
+++ loncom/interface/loncommon.pm	2002/08/08 19:27:35	1.52
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.48 2002/08/01 16:48:21 bowersj2 Exp $
+# $Id: loncommon.pm,v 1.52 2002/08/08 19:27:35 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -80,7 +80,7 @@ package Apache::loncommon;
 use strict;
 use Apache::lonnet();
 use GDBM_File;
-use POSIX qw(strftime);
+use POSIX qw(strftime mktime);
 use Apache::Constants qw(:common);
 use Apache::lonmsg();
 my $readit;
@@ -242,7 +242,7 @@ of the element the selection from the se
 ###############################################################
 sub browser_and_searcher_javascript {
     return <<END;
-    var editbrowser;
+    var editbrowser = null;
     function openbrowser(formname,elementname,only,omit) {
         var url = '/res/?';
         if (editbrowser == null) {
@@ -558,7 +558,7 @@ sub select_dom_form {
 
 =pod
 
-=item get_home_servers($domain)
+=item get_library_servers($domain)
 
 Returns a hash which contains keys like '103l3' and values like 
 'kirk.lite.msu.edu'.  All of the keys will be for machines in the
@@ -567,15 +567,15 @@ given $domain.
 =cut
 
 #-------------------------------------------
-sub get_home_servers {
+sub get_library_servers {
     my $domain = shift;
-    my %home_servers;
+    my %library_servers;
     foreach (keys(%Apache::lonnet::libserv)) {
         if ($Apache::lonnet::hostdom{$_} eq $domain) {
-            $home_servers{$_} = $Apache::lonnet::hostname{$_};
+            $library_servers{$_} = $Apache::lonnet::hostname{$_};
         }
     }
-    return %home_servers;
+    return %library_servers;
 }
 
 #-------------------------------------------
@@ -592,7 +592,7 @@ returns a string which contains an <opti
 #-------------------------------------------
 sub home_server_option_list {
     my $domain = shift;
-    my %servers = &get_home_servers($domain);
+    my %servers = &get_library_servers($domain);
     my $result = '';
     foreach (sort keys(%servers)) {
         $result.=
@@ -1093,7 +1093,7 @@ sub get_previous_attempt {
 	} else {
 	  $value=$lasthash{$_};
 	}
-	if ($_ =~/$regexp$/) {$value = &$gradesub($value)}
+	if ($_ =~/$regexp$/ && (defined &$gradesub)) {$value = &$gradesub($value)}
 	$prevattempts.='<td>'.$value.'&nbsp;</td>';
       }
       $prevattempts.='</tr></table></td></tr></table>';
@@ -1151,6 +1151,47 @@ sub get_student_answers {
 
 ###############################################
 
+
+sub timehash {
+    my @ltime=localtime(shift);
+    return ( 'seconds' => $ltime[0],
+             'minutes' => $ltime[1],
+             'hours'   => $ltime[2],
+             'day'     => $ltime[3],
+             'month'   => $ltime[4]+1,
+             'year'    => $ltime[5]+1900,
+             'weekday' => $ltime[6],
+             'dayyear' => $ltime[7]+1,
+             'dlsav'   => $ltime[8] );
+}
+
+sub maketime {
+    my %th=@_;
+    return POSIX::mktime(
+        ($th{'seconds'},$th{'minutes'},$th{'hours'},
+         $th{'day'},$th{'month'}-1,$th{'year'}-1900,0,0,$th{'dlsav'}));
+}
+
+
+sub findallcourses {
+    my %courses=();
+    my $now=time;
+    foreach (keys %ENV) {
+	if ($_=~/^user\.role\.\w+\.\/(\w+)\/(\w+)/) {
+	    my ($starttime,$endtime)=$ENV{$_};
+            my $active=1;
+            if ($starttime) {
+		if ($now<$starttime) { $active=0; }
+            }
+            if ($endtime) {
+                if ($now>$endtime) { $active=0; }
+            }
+            if ($active) { $courses{$1.'_'.$2}=1; }
+        }
+    }
+    return keys %courses;
+}
+
 ###############################################
 
 sub get_unprocessed_cgi {