diff -Naur original/mod/scorm/lib.php dev/mod/scorm/lib.php
--- original/mod/scorm/lib.php	2009-10-28 08:02:44.000000000 +0100
+++ dev/mod/scorm/lib.php	2010-02-08 14:23:56.779903400 +0100
@@ -252,6 +252,12 @@
     $lastmodify = 0;
     $sometoreport = false;
     $report = '';
+	
+	// First Access and Last Access dates for SCOs
+    require_once("locallib.php");
+	$timetracks = scorm_get_sco_runtime($scorm->id, false, $user->id);
+	$firstmodify = $timetracks->start;
+	$lastmodify = $timetracks->finish;
     
     $grades = grade_get_grades($course->id, 'mod', 'scorm', $scorm->id, $user->id);
     if (!empty($grades->items[0]->grades)) {
@@ -318,7 +324,6 @@
                     }
 
                     if ($sco->launch) {
-                        require_once('locallib.php');
                         $score = '';
                         $totaltime = '';
                         if ($usertrack=scorm_get_tracks($sco->id,$user->id)) {
@@ -327,14 +332,6 @@
                             }
                             $strstatus = get_string($usertrack->status,'scorm');
                             $report .= "<img src='".$scormpixdir.'/'.$usertrack->status.".gif' alt='$strstatus' title='$strstatus' />";
-                            if ($usertrack->timemodified != 0) {
-                                if ($usertrack->timemodified > $lastmodify) {
-                                    $lastmodify = $usertrack->timemodified;
-                                }
-                                if ($usertrack->timemodified < $firstmodify) {
-                                    $firstmodify = $usertrack->timemodified;
-                                }
-                            }
                         } else {
                             if ($sco->scormtype == 'sco') {
                                 $report .= '<img src="'.$scormpixdir.'/'.'notattempted.gif" alt="'.get_string('notattempted','scorm').'" title="'.get_string('notattempted','scorm').'" />';
diff -Naur original/mod/scorm/locallib.php dev/mod/scorm/locallib.php
--- original/mod/scorm/locallib.php	2009-12-19 08:02:48.000000000 +0100
+++ dev/mod/scorm/locallib.php	2010-02-08 14:22:42.520708600 +0100
@@ -405,11 +405,7 @@
         $tracks = array_values($tracks);
     }
 
-    if ($start_track = get_records_select('scorm_scoes_track',"$sql AND element='x.start.time' ORDER BY scoid ASC")) {
-        $start_track = array_values($start_track);
-        $timedata->start = $start_track[0]->value;
-    }
-    else if ($tracks) {
+	if ($tracks) {
         $timedata->start = $tracks[0]->timemodified;
     }
     else {
@@ -1324,4 +1320,45 @@
     delete_records('scorm_scoes_track', 'userid', $userid, 'scormid', $scormid, 'attempt', $attemptid);
     return true;
 }
+
+/**
+ * Converts SCORM date/time notation to human-readable format
+ * The function works with both SCORM 1.2 and SCORM 2004 time formats
+ * @param $datetime string SCORM date/time
+ * @return string human-readable date/time
+ */
+function scorm_format_date_time($datetime) {
+    // fetch date/time strings
+    $stryears = get_string('numyears');
+    $strmonths = get_string('nummonths');
+    $strdays = get_string('numdays');
+    $strhours = get_string('numhours');
+    $strminutes = get_string('numminutes');
+    $strseconds = get_string('numseconds'); 
+    
+    if ($datetime[0] == 'P') {
+        // if timestamp starts with 'P' - it's a SCORM 2004 format
+        // this regexp discards empty sections, takes Month/Minute ambiguity into consideration,
+        // and outputs filled sections, discarding leading zeroes and any format literals
+        // also saves the only zero before seconds decimals (if there are any) and discards decimals if they are zero
+        $pattern = array( '#([A-Z])0+Y#', '#([A-Z])0+M#', '#([A-Z])0+D#', '#P(|\d+Y)0*(\d+)M#', '#0*(\d+)Y#', '#0*(\d+)D#', '#P#',
+                          '#([A-Z])0+H#', '#([A-Z])[0.]+S#', '#\.0+S#', '#T(|\d+H)0*(\d+)M#', '#0*(\d+)H#', '#0+\.(\d+)S#', '#0*([\d.]+)S#', '#T#' );
+        $replace = array( '$1', '$1', '$1', '$1$2'.$strmonths.' ', '$1'.$stryears.' ', '$1'.$strdays.' ', '',
+                          '$1', '$1', 'S', '$1$2'.$strminutes.' ', '$1'.$strhours.' ', '0.$1'.$strseconds, '$1'.$strseconds, '');
+    } else {
+        // else we have SCORM 1.2 format there
+        // first convert the timestamp to some SCORM 2004-like format for conveniency
+        $datetime = preg_replace('#^(\d+):(\d+):([\d.]+)$#', 'T$1H$2M$3S', $datetime);
+        // then convert in the same way as SCORM 2004
+        $pattern = array( '#T0+H#', '#([A-Z])0+M#', '#([A-Z])[0.]+S#', '#\.0+S#', '#0*(\d+)H#', '#0*(\d+)M#', '#0+\.(\d+)S#', '#0*([\d.]+)S#', '#T#' );
+        $replace = array( 'T', '$1', '$1', 'S', '$1'.$strhours.' ', '$1'.$strminutes.' ', '0.$1'.$strseconds, '$1'.$strseconds, '' );
+        //$pattern = '##';
+        //$replace = '';
+    }
+    
+    $result = preg_replace($pattern, $replace, $datetime);
+
+    return $result;
+}
+
 ?>
\ No newline at end of file
diff -Naur original/mod/scorm/view.php dev/mod/scorm/view.php
--- original/mod/scorm/view.php	2009-03-30 23:59:36.000000000 +0200
+++ dev/mod/scorm/view.php	2010-02-08 14:20:20.758842200 +0100
@@ -59,15 +59,9 @@
     print_header($pagetitle, $course->fullname, $navigation,
                  '', '', true, update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
 
-    if (has_capability('mod/scorm:viewreport', $context)) {
-        
-        $trackedusers = scorm_get_count_users($scorm->id, $cm->groupingid);
-        if ($trackedusers > 0) {
-            echo "<div class=\"reportlink\"><a $CFG->frametarget href=\"report.php?id=$cm->id\"> ".get_string('viewalluserreports','scorm',$trackedusers).'</a></div>';
-        } else {
-            echo '<div class="reportlink">'.get_string('noreports','scorm').'</div>';
-        }
-    }
+	// tabs navigation
+	$currenttab = 'info';
+	require($CFG->dirroot . '/mod/scorm/tabs.php');
 
     // Print the main part of the page
     print_heading(format_string($scorm->name));
