function viewEventSummary($domainID, $eventDate, $CSVFlag)
{
    global $CSOs, $oUser;
    global $calledPrograms, $epsReportProgram, $epsReportProgramDetails;
    global $calledZones, $epsReportZone, $epsReportZoneDetails;
    global $PointChannels;
    global $viewEventSummary;
    $oUser = clone $_SESSION['UserObject'];
    $dateParts = explode('-', $eventDate);
    $month = $dateParts[0];
    $day = $dateParts[1];
    $year = $dateParts[2];
    $eventDate = $year . '-' . $month . '-' . $day;
    $eventPerformanceSummary = new EventPerformanceSummary($domainID, $eventDate);
    $eventPerformanceSummary->Get();
    $involvedAssetsList = $eventPerformanceSummary->allInvolvedAssets();
    //preDebugger($involvedAssetsList);
    $calledPrograms = $involvedAssetsList['calledPrograms'];
    //$calledPrograms             = $eventPerformanceSummary->calledPrograms(); MCB: leaving a traceable trail behind as today's mods are a shim
    $epsReportProgram = $eventPerformanceSummary->reportProgram();
    $epsReportProgramDetails = $eventPerformanceSummary->reportProgramDetails();
    $calledZones = $eventPerformanceSummary->calledZones();
    $epsReportZone = $eventPerformanceSummary->reportZone();
    $epsReportZoneDetails = $eventPerformanceSummary->reportZoneDetails();
    $viewEventSummary = BuildEventSummaryHeader("Event Summary", $oUser->localDomain()->description(), $eventDate, $domainID, $CSVFlag);
    // TODO: This can be reworked so that the PointChannels object isn't needed -- see
    // mdr/EvtPerfSummary.php for clues :)
    // For now, we're filling display data from there so we'll leave it alone (2012-05-31)
    $PointChannels = new PointChannels();
    $PointChannels->Load($oUser->id(), $oUser->Domains(0)->id(), null, null, true, $month, $year);
    preDebugger($eventPerformanceSummary, 'blue');
    foreach ($calledPrograms as $inx => $calledProgram) {
        $CSOs[$calledProgram]['value'] = 0;
        foreach ($PointChannels->Resources() as $resourceObjectId => $attribs) {
            //preDebugger($epsReportProgramDetails[$calledProgram][$resourceObjectId],'blue');
            if (array_key_exists($resourceObjectId, $involvedAssetsList['reportProgramSummary'][$calledProgram])) {
                $programDetailToUse = isset($epsReportProgramDetails[$calledProgram][$resourceObjectId]) ? $epsReportProgramDetails[$calledProgram][$resourceObjectId] : $involvedAssetsList['epsReportProgramDetails'][$calledProgram][$resourceObjectId];
                $epsReportProgramDetails[$calledProgram][$resourceObjectId];
                $programStack[$calledProgram][$attribs['identifier']] = restackAsset($resourceObjectId, $attribs['assets'], $programDetailToUse, $attribs, $calledProgram, $involvedAssetsList);
            }
            foreach ($calledZones[$calledProgram] as $inx => $calledZone) {
                if (!isset($CSOs[$calledProgram][$calledZone]['value'])) {
                    $CSOs[$calledProgram][$calledZone]['value'] = 0;
                }
                if (array_key_exists($resourceObjectId, $involvedAssetsList['reportProgramSummary'][$calledProgram])) {
                    $zoneDetailToUse = isset($epsReportZoneDetails[$calledProgram][$calledZone][$resourceObjectId]) ? $epsReportZoneDetails[$calledProgram][$calledZone][$resourceObjectId] : $involvedAssetsList['epsReportZoneDetails'][$calledProgram][$resourceObjectId];
                    $zoneStack[$calledProgram][$calledZone][$attribs['identifier']] = restackAsset($resourceObjectId, $attribs['assets'], $zoneDetailToUse, $attribs, $calledProgram, $calledZone);
                }
            }
        }
    }
    //preDebugger($zoneStack,'green');
    return $CSVFlag ? renderCSV($programStack, $zoneStack) : renderHMTL($programStack, $zoneStack, $involvedAssetsList);
}
function renderCSV($qr_result, $va_columns, $va_charting_rows, $va_total_columns)
{
    $qr_result->seek();
    foreach ($va_columns as $va_column => $va_colum_label) {
        print "{$va_colum_label};";
    }
    print "\n";
    while ($qr_result->nextRow()) {
        foreach ($va_columns as $va_column => $va_colum_label) {
            print $qr_result->get($va_colum_label) . ";";
            if (in_array($va_colum_label, $va_total_columns)) {
                $va_total_value["{$va_colum_label}"] = $va_total_value["{$va_colum_label}"] + $qr_result->get($va_colum_label);
            }
        }
        print "\n";
    }
    print "\n";
}
/** ---------------------------------------------------------------------
 * main part 
 * ---------------------------------------------------------------------- */
// local variables
$va_statistics = $this->getVar('informations');
$va_columns = $va_statistics->columns;
$va_total_columns = $va_statistics->total_columns;
$query = $this->getVar('sql');
$qr_result = $query['result'];
header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");
renderCSV($qr_result, $va_columns, $va_charting_rows, $va_total_columns);
exit;