function loadIItems($sqlWhere, &$lNumItems, &$items, $bLoadStatus = false)
 {
     //---------------------------------------------------------------------
     //
     //---------------------------------------------------------------------
     $clsACO = new madmin_aco();
     $items = array();
     $sqlStr = "SELECT\n            ivi_lKeyID, ivi_strItemName, ivi_strItemSNa, ivi_strItemSNb,\n            ivi_strLocation, ivi_strDescription, ivi_lCategoryID,\n            ivi_strRParty,\n            ivi_dteObtained, ivi_dteRemInventory, ivi_dteReportedLost,\n            ivi_bAvailForLoan,\n            ivi_strLostNotes,\n            ivi_lFlaggedLostByID, ivi_lRemInventoryByID,\n\n            ivc_strCatName,\n            ivi_lOriginID, ivi_lLastUpdateID,\n            UNIX_TIMESTAMP(ivi_dteOrigin)     AS dteOrigin,\n            UNIX_TIMESTAMP(ivi_dteLastUpdate) AS dteLastUpdate,\n\n            ivi_curEstValue, ivi_lACOID, aco_strFlag, aco_strCurrencySymbol, aco_strName,\n\n            uc.us_strFirstName    AS strCFName,      uc.us_strLastName    AS strCLName,\n            ul.us_strFirstName    AS strLFName,      ul.us_strLastName    AS strLLName,\n            ur.us_strFirstName    AS strRemInvFName, ur.us_strLastName    AS strRemInvLName,\n            ulost.us_strFirstName AS strLostFName,   ulost.us_strLastName AS strLostLName\n\n         FROM inv_items\n               INNER JOIN admin_users  AS uc    ON uc.us_lKeyID    = ivi_lOriginID\n               INNER JOIN admin_users  AS ul    ON ul.us_lKeyID    = ivi_lLastUpdateID\n               LEFT  JOIN admin_users  AS ur    ON ur.us_lKeyID    = ivi_lRemInventoryByID\n               LEFT  JOIN admin_users  AS ulost ON ulost.us_lKeyID = ivi_lFlaggedLostByID\n               INNER JOIN inv_cats              ON ivc_lKeyID      = ivi_lCategoryID\n               INNER JOIN admin_aco             ON ivi_lACOID      = aco_lKeyID\n\n         WHERE NOT ivi_bRetired {$sqlWhere}\n         ORDER BY ivi_strItemName, ivi_lKeyID;";
     $query = $this->db->query($sqlStr);
     $lNumItems = $query->num_rows();
     if ($lNumItems == 0) {
         $items[0] = new stdClass();
         $item =& $items[0];
         $item->lKeyID = null;
         $item->strItemName = $item->strItemSNa = $item->strItemSNb = $item->strLocation = $item->strDescription = $item->lCategoryID = $item->strCatName = $item->dteObtained = $item->strRParty = null;
         $item->bAvailForLoan = $item->dteRemInventory = $item->lRemInventoryByID = $item->strRemInvFName = $item->strRemInvLName = null;
         $item->dteReportedLost = $item->bLost = $item->strLostNotes = $item->lFlaggedLostByID = $item->strLostFName = $item->strLostLName = null;
         $item->curEstValue = $item->lACOID = $item->strFlagImg = $item->strACOCurSymbol = $item->strACOCountry = $item->strFormattedAmnt = null;
         $item->lOriginID = $item->lLastUpdateID = $item->ucstrFName = $item->ucstrLName = $item->ulstrFName = $item->ulstrLName = $item->dteOrigin = $item->dteLastUpdate = null;
     } else {
         $idx = 0;
         foreach ($query->result() as $row) {
             $items[$idx] = new stdClass();
             $item =& $items[$idx];
             $item->lKeyID = $lIItemID = (int) $row->ivi_lKeyID;
             $item->strItemName = $row->ivi_strItemName;
             $item->strItemSNa = $row->ivi_strItemSNa;
             $item->strItemSNb = $row->ivi_strItemSNb;
             $item->strLocation = $row->ivi_strLocation;
             $item->strDescription = $row->ivi_strDescription;
             $item->lCategoryID = (int) $row->ivi_lCategoryID;
             $item->strCatName = $row->ivc_strCatName;
             $item->dteObtained = dteMySQLDate2Unix($row->ivi_dteObtained);
             $item->strRParty = $row->ivi_strRParty;
             $item->bAvailForLoan = (bool) $row->ivi_bAvailForLoan;
             $item->dteRemInventory = dteMySQLDate2Unix($row->ivi_dteRemInventory);
             $item->bRemoved = !is_null($item->dteRemInventory);
             $item->lRemInventoryByID = $row->ivi_lRemInventoryByID;
             $item->strRemInvFName = $row->strRemInvFName;
             $item->strRemInvLName = $row->strRemInvLName;
             $item->dteReportedLost = dteMySQLDate2Unix($row->ivi_dteReportedLost);
             $item->bLost = !is_null($item->dteReportedLost);
             $item->strLostNotes = $row->ivi_strLostNotes;
             $item->lFlaggedLostByID = $row->ivi_lFlaggedLostByID;
             $item->strLostFName = $row->strLostFName;
             $item->strLostLName = $row->strLostLName;
             $item->curEstValue = (double) $row->ivi_curEstValue;
             $item->lACOID = (int) $row->ivi_lACOID;
             $item->strFlagImg = $clsACO->strFlagImage($row->aco_strFlag, $row->aco_strName);
             $item->strACOCurSymbol = $row->aco_strCurrencySymbol;
             $item->strACOCountry = $row->aco_strName;
             $item->strFormattedAmnt = $item->strACOCurSymbol . ' ' . number_format($item->curEstValue, 2) . ' ' . $item->strFlagImg;
             $item->lOriginID = (int) $row->ivi_lOriginID;
             $item->lLastUpdateID = (int) $row->ivi_lLastUpdateID;
             $item->ucstrFName = $row->strCFName;
             $item->ucstrLName = $row->strCLName;
             $item->ulstrFName = $row->strLFName;
             $item->ulstrLName = $row->strLLName;
             $item->dteOrigin = (int) $row->dteOrigin;
             $item->dteLastUpdate = (int) $row->dteLastUpdate;
             if ($bLoadStatus) {
                 $item->statProps = new stdClass();
                 $item->statProps->bAvail = $item->bAvailForLoan;
                 $item->statProps->bLost = $item->bLost;
                 $item->statProps->bCheckedOut = $this->bItemCheckedOutInfo($lIItemID, $item->statProps->strCO_To, $item->statProps->cicoID, $item->statProps->dteCO);
                 $item->statProps->bRemovedFromInv = $item->bRemoved;
                 $item->strStatus = cico\strItemStatus($item->statProps);
             }
             ++$idx;
         }
     }
 }
 function loadAllItems($lStartRec, $lRecsPerPage, $enumSort, $strTmpTable, &$lNumItems, &$items)
 {
     //---------------------------------------------------------------------
     // caller must previously called
     //    $this->buildTempCatTable($strTmpTable, &$icats)   //
     //---------------------------------------------------------------------
     $items = array();
     $strOrder = $this->strItemOrder($enumSort);
     $strLimit = "LIMIT {$lStartRec}, {$lRecsPerPage} ";
     $sqlStr = "SELECT\n            ivi_lKeyID,\n            ivi_strItemName, ivi_strItemSNa, ivi_strItemSNb, ivi_strRParty,\n            ivi_bAvailForLoan,\n            ivi_dteRemInventory, ivi_dteReportedLost,\n            ivi_lCategoryID,\n            tmp_strFullCatName\n\n         FROM inv_items\n            INNER JOIN inv_cats     ON ivi_lCategoryID=ivc_lKeyID\n            INNER JOIN {$strTmpTable} ON tmp_lICatID=ivc_lKeyID\n         WHERE NOT ivi_bRetired\n         ORDER BY {$strOrder}\n         {$strLimit};";
     $query = $this->db->query($sqlStr);
     $lNumItems = $query->num_rows();
     if ($lNumItems > 0) {
         $idx = 0;
         foreach ($query->result() as $row) {
             $items[$idx] = new stdClass();
             $item =& $items[$idx];
             $item->lItemID = $lIItemID = (int) $row->ivi_lKeyID;
             $item->strItemName = $row->ivi_strItemName;
             $item->strItemSNa = $row->ivi_strItemSNa;
             $item->strItemSNb = $row->ivi_strItemSNb;
             $item->strRParty = $row->ivi_strRParty;
             $item->dteRemInventory = dteMySQLDate2Unix($row->ivi_dteRemInventory);
             $item->dteReportedLost = dteMySQLDate2Unix($row->ivi_dteReportedLost);
             $item->lCategoryID = (int) $row->ivi_lCategoryID;
             $item->strFullCatName = $row->tmp_strFullCatName;
             $item->properties = new stdClass();
             $item->properties->bAvail = (bool) $row->ivi_bAvailForLoan;
             $item->properties->bLost = !is_null($item->dteReportedLost);
             $item->properties->bCheckedOut = $this->bItemCheckedOutInfo($lIItemID, $item->properties->strCO_To, $cicoID, $item->properties->dteCO);
             $item->properties->bRemovedFromInv = !is_null($item->dteRemInventory);
             $item->strStatus = cico\strItemStatus($item->properties);
             ++$idx;
         }
     }
 }