function writeProjectRow($idx, $project)
{
    //---------------------------------------------------------------------
    //
    //---------------------------------------------------------------------
    if (is_numeric($project->lAssignedMin)) {
        $strValue = strDurationViaMinutes($project->lAssignedMin);
    } else {
        $strValue = $project->lAssignedMin;
    }
    echoT('
         <tr>
            <td class="enpViewLabel" style="padding-top: 8px;">' . htmlspecialchars($project->strGroupName) . ':
            </td>
            <td class="enpView" style="vertical-align: top;">
               <input type="text" name="txtPMin' . $idx . '"
                    size="5"
                    maxlength="8"  
                    style="text-align: right;"   onFocus="txtPMin' . $idx . '.style.background=\'#fff\';"
                    id="addEditEntry"
                    value="' . $strValue . '">
            </td>
            <td style="vertical-align: top; padding-top: 6pt;">
               hh:mm 
            </td>
            <td style="width: 45pt; text-align: right;vertical-align: top; padding-top: 6pt;">
               Notes:
            </td>
            <td style="text-align: top;">
               <textarea name="txtNotes' . $idx . '" rows="2" cols="30">' . $project->notes . '</textarea>' . form_error('txtPMin' . $idx) . '
            </td>
         </tr>');
}
function writeTSEntryRow(&$attributes, &$lMonthGroup, $logRec)
{
    //---------------------------------------------------------------------
    //
    //---------------------------------------------------------------------
    global $genumDateFormat;
    $lMon = (int) date('n', $logRec->dteTSEntry);
    $lTSLogID = $logRec->lKeyID;
    $bPublished = !is_null($logRec->dteSubmitted);
    $dteStarting = $logRec->dteTSEntry;
    if ($lMonthGroup != $lMon) {
        if ($lMonthGroup > 0) {
            echoT('</table>' . "\n");
            $attributes->bCloseDiv = true;
            closeBlock($attributes);
            $attributes->bCloseDiv = false;
        }
        $attributes->divID = 'month' . $lMon . 'Div';
        $attributes->divImageID = 'month' . $lMon . 'DivImg';
        $attributes->bStartOpen = true;
        openBlock(date('F Y', $logRec->dteTSEntry), '', $attributes);
        echoT('<table style="border: 1px solid black;">
                <tr>
                    <td style="width: 50pt; color: #fff; background-color: #888;">
                       <b>entryID</b>
                    </td>
                    <td style="width: 50pt; color: #fff; background-color: #888;">
                       <b>Submitted?</b>
                    </td>
                    <td style="width: 200pt; color: #fff; background-color: #888;">
                      <b>Time Frame</b>
                    </td>
                    <td style="width: 150pt; color: #fff; background-color: #888;">
                      <b>Template</b>
                    </td>
                    <td style="width: 80pt; color: #fff; background-color: #888;">
                      <b>Reporting Period</b>
                    </td>
                    <td style="width: 50pt; color: #fff; background-color: #888;">
                       <b>Total Hours</b>
                    </td>

                </tr>' . "\n");
        $lMonthGroup = $lMon;
    }
    echoT('<tr class="makeStripe">
         <td style="width: 50pt; text-align: center; vertical-align: top;">' . strLinkView_TSLogEntries($lTSLogID, 'View Time Sheet', true) . '&nbsp;' . str_pad($lTSLogID, 5, '0', STR_PAD_LEFT) . '
         </td>');
    if ($bPublished) {
        if (bAllowAccess('timeSheetAdmin')) {
            $strUnsubmit = '<br>' . strLink_TSLogEntryUnsubmit($lTSLogID, 'Unsubmit', true) . '&nbsp;' . strLink_TSLogEntryUnsubmit($lTSLogID, 'Unsubmit', false);
        } else {
            $strUnsubmit = '';
        }
        echoT('
            <td style="width: 80pt; text-align: center; center; vertical-align: top;">Yes: ' . date($genumDateFormat, $logRec->dteSubmitted) . $strUnsubmit . '
            </td>');
    } else {
        echoT('
            <td style="width: 80pt; text-align: center; center; vertical-align: top;">' . strLinkEdit_TSLog($lTSLogID, 'Edit Time Sheet', true) . ' No
            </td>');
    }
    echoT('
         <td style="width: 50pt; text-align: left; center; vertical-align: top;">
            <font style="font-size: 8pt;">Week beginning: </font>' . date('l, F jS, Y', $dteStarting) . '
         </td>');
    echoT('
         <td style="width: 150pt; center; vertical-align: top;">' . htmlspecialchars($logRec->strTSName) . '
         </td>');
    echoT('
         <td style="width: 80pt; center; vertical-align: top;">' . $logRec->enumRptPeriod . '
         </td>');
    echoT('
         <td style="width: 50pt; text-align: right; padding-right: 3pt; center; vertical-align: top;">' . strDurationViaMinutes($logRec->lCumulativeMinutes) . '
         </td>
      </tr>');
}
            </td>
            <td class="enpRptLabel">
               Notes
            </td>
         </tr>');
$lTotMin = 0;
foreach ($projects as $proj) {
    $lTotMin += $proj->lMinutesToProject;
    echoT('
         <tr class="makeStripe">
            <td class="enpRpt">' . htmlspecialchars($proj->strProjectName) . '
            </td>
            <td class="enpRpt" style="text-align: center;">' . strDurationViaMinutes($proj->lMinutesToProject) . '
            </td>
            <td class="enpRpt" style="width: 375pt;">' . nl2br(htmlspecialchars($proj->strNotes)) . '
            </td>
         </tr>');
}
echoT('
         <tr class="makeStripe">
            <td class="enpRpt" style="text-align: left;" >
               <b>TOTAL
            </td>
            <td class="enpRpt" style="text-align: center;"><b>' . strDurationViaMinutes($lTotMin) . '</b>
            </td>
            <td class="enpRpt" colspan="1">
               &nbsp;
            </td>
         </tr>');
echoT('</table>');
closeBlock();
function strTSTLogOverviewBlock(&$clsRpt, &$tst, &$logRec, $bAllowSubmit, $bAllProjHrsEdit)
{
    //---------------------------------------------------------------------
    //
    //---------------------------------------------------------------------
    global $genumDateFormat;
    $lTSLogID = $logRec->lKeyID;
    $lMinutesTot = $logRec->lMinutesTot;
    $lMinutesTotProj = $logRec->lMinutesTotProj;
    $bMinutesMatch = abs($lMinutesTot - $lMinutesTotProj) < 0.1;
    $bSubmitted = !is_null($logRec->dteSubmitted);
    $strLinkProjects = '';
    if ($bSubmitted) {
        $strSubmitted = 'Submitted on ' . date($genumDateFormat . ' H:i:s', $logRec->dteSubmitted);
    } else {
        $strSubmitted = 'Not submitted';
        if ($bAllProjHrsEdit) {
            $strLinkProjects = '&nbsp;' . strLinkEdit_TSLogToProjects($lTSLogID, 'Assign hours to projects', true);
        }
        if ($bAllowSubmit) {
            if ($bMinutesMatch && $lMinutesTot > 0) {
                $strSubmitted .= '<br>' . form_open('staff/timesheets/ts_log_edit/ts_submit/' . $lTSLogID) . "\n" . '<div style="width: 300pt; border: 1px solid black; padding: 3px; margin-top: 3px;">' . form_hidden('forceSubmit', 'makeItSo') . "\n" . '<input type="checkbox" name="chkIAgree" value="true">' . "\n" . nl2br(htmlspecialchars($tst->strAckText)) . "<br><br>\n" . '<input type="submit"
                     class="btn" onmouseover="this.className=\'btn btnhov\'" onmouseout="this.className=\'btn\'"
                     value="Submit Time Sheet"><br>
                     <i>Once submitted, you can only make changes through
                     your system administrator.</i></div>' . "\n" . form_close();
            } elseif (!$bMinutesMatch) {
                $strSubmitted .= '<br>
                  <div style="color: red; width: 300pt; border: 1px solid red; padding: 3px; margin-top: 3px;">
                     Your <b>Total Hours</b> for this time period does not match the <b>Hours Assigned to Projects</b>.
                     These hours must be equal before you can submit your time sheet.
                  </div>';
            }
        }
    }
    $strOut = strOpenBlock(date('F jS, Y', $logRec->dteTSEntry) . ': Time Sheet for ' . htmlspecialchars($logRec->strUserFName . ' ' . $logRec->strUserLName), '');
    $strOut .= $clsRpt->openReport();
    $strOut .= $clsRpt->openRow() . $clsRpt->writeLabel('Time Sheet Template:', '', 'vertical-align: bottom;') . $clsRpt->writeCell(htmlspecialchars($logRec->strTSName)) . $clsRpt->closeRow();
    $strOut .= $clsRpt->openRow() . $clsRpt->writeLabel('Reporting Frequency:', '') . $clsRpt->writeCell($logRec->enumRptPeriod) . $clsRpt->closeRow();
    $strOut .= $clsRpt->openRow() . $clsRpt->writeLabel('Total Hours:', '') . $clsRpt->writeCell(strDurationViaMinutes($lMinutesTot)) . $clsRpt->closeRow();
    $strOut .= $clsRpt->openRow() . $clsRpt->writeLabel('Project Hours Assigned:', '') . $clsRpt->writeCell(strDurationViaMinutes($lMinutesTotProj) . $strLinkProjects) . $clsRpt->closeRow();
    $strOut .= $clsRpt->openRow() . $clsRpt->writeLabel('Status:', '') . $clsRpt->writeCell($strSubmitted) . $clsRpt->closeRow();
    $strOut .= $clsRpt->closeReport();
    $strOut .= strCloseBlock();
    return $strOut;
}
               <td style="text-align: center;"><b>' . strDurationViaMinutes($lDateTot) . '
               </td>
            </tr>
            <tr><td colspan="8">&nbsp;</td></tr>');
    } else {
        echoT('
            <tr>
               <td colspan="7"><i>No entries for this date.</i></td>
            </tr>
            <tr>
               <td colspan="7">&nbsp;</td>
            </tr>');
    }
}
echoT('
       <tr>
          <td style="background-color: #b4cdd2;" colspan="7">
             <b>Total:</b>
          </td>
          <td style="background-color: #b4cdd2; text-align: right;">
             <b>' . strDurationViaMinutes($lTotMinutes) . '</b>
          </td>
          <td style="background-color: #b4cdd2;">
             &nbsp;
          </td>
          <td style="background-color: #b4cdd2;">
             &nbsp;
          </td>
       </tr>');
echoT('</table><br>');
closeBlock();