/**
 * initialize Gui
 */
function initializeGui(&$dbHandler, &$argsObj, $dateFormat)
{
    new dBug($argsObj);
    /*		$my['filters'] = array('exec_ts_from' => null, 'exec_ts_to' => null,
    							   'assigned_to' => null, 'tester_id' => null,
    							   'keywords' => null, 'builds' => null,
    							   'plaforms' => null, 'top_level_tsuites' => null);
    	
    */
    $reports_cfg = config_get('reportsCfg');
    $tplan_mgr = new tlTestPlanMetrics($dbHandler);
    $tproject_mgr = new testproject($dbHandler);
    $gui = new stdClass();
    $gui->resultsCfg = config_get('results');
    $gui->title = lang_get('query_metrics_report');
    $gui->tplan_id = $argsObj->tplan_id;
    $gui->tproject_id = $argsObj->tproject_id;
    $tplan_info = $tplan_mgr->get_by_id($gui->tplan_id);
    $tproject_info = $tproject_mgr->get_by_id($gui->tproject_id);
    $gui->tplan_name = $tplan_info['name'];
    $gui->tproject_name = $tproject_info['name'];
    $getOpt = array('outputFormat' => 'map');
    $gui->platformSet = $tplan_mgr->getPlatforms($argsObj->tplan_id, $getOpt);
    $gui->showPlatforms = true;
    if (is_null($gui->platformSet)) {
        $gui->platformSet = null;
        $gui->showPlatforms = false;
    } else {
        $filters['platforms'] = array_keys($gui->platformSet);
    }
    // convert starttime to iso format for database usage
    list($gui->startTime, $gui->endTime) = helper2ISO($_REQUEST);
    //die();
    $gui_open = config_get('gui_separator_open');
    $gui_close = config_get('gui_separator_close');
    $gui->str_option_any = $gui_open . lang_get('any') . $gui_close;
    $gui->str_option_none = $gui_open . lang_get('nobody') . $gui_close;
    $gui->search_notes_string = $argsObj->search_notes_string;
    $testsuiteNames = null;
    $everest = $tplan_mgr->getRootTestSuites($gui->tplan_id, $gui->tproject_id, array('output' => 'plain'));
    $tsuites_qty = sizeOf($argsObj->testsuitesSelected);
    $userWantsAll = $tsuits_qty == 0 || $tsuits_qty == count($everest);
    $filters['top_level_tsuites'] = $tsuites_qty == 0 || $tsuites_qty == count($everest) ? null : $argsObj->testsuitesSelected;
    $gui->testsuitesSelected = array();
    foreach ($argsObj->testsuitesSelected as $dmy) {
        $gui->testsuitesSelected[$dmy] = $everest[$dmy]['name'];
    }
    $filters['builds'] = null;
    if (sizeof($argsObj->buildsSelected)) {
        $filters['builds'] = implode(",", $argsObj->buildsSelected);
    }
    $filters['keywords'] = (array) $argsObj->keywordSelected;
    if (in_array(0, $filters['keywords'])) {
        $filters['keywords'] = null;
    }
    // statusForClass is used for results.class.php
    // lastStatus is used to be displayed
    $statusForClass = 'a';
    // amitkhullar - added this parameter to get the latest results.
    $latest_resultset = $argsObj->display->latest_results;
    $assignee = $argsObj->ownerSelected > 0 ? $argsObj->ownerSelected : TL_USER_ANYBODY;
    $tester = $argsObj->executorSelected > 0 ? $argsObj->executorSelected : TL_USER_ANYBODY;
    //$rs = $tplan_mgr->queryMetrics($gui->tplan_id,$filters);
    //new dBug($rs);
    // die();
    //$re = new newResults($dbHandler, $tplan_mgr,$tproject_info,$tplan_info,
    //                  	 $testsuiteIds, $buildsToQuery,
    //                     $argsObj->platformsSelected, $statusForClass,
    //                     $latest_resultset, $argsObj->keywordSelected,
    //                     $assignee, $gui->startTime,
    //                     $gui->endTime, $tester,
    //                     $argsObj->search_notes_string, null);
    //
    //$gui->suiteList = $re->getSuiteList();  // test executions results
    //// Filter test cases on selected platforms
    //foreach ($gui->suiteList as $suiteid => $tcases)
    //{
    //    $filtered = array();
    //    foreach ($tcases as $index => $tcase) {
    //        if ($tcase['platform_id'] == 0 ||
    //            $argsObj->platformsSelected[0] == ALL_PLATFORMS ||
    //            array_search($tcase['platform_id'], $argsObj->platformsSelected) !== false) {
    //            array_push($filtered, $tcase);
    //        }
    //    }
    //    unset($gui->suiteList[$suiteid]);
    //    $gui->suiteList[$suiteid] = $filtered;
    //}
    //$gui->flatArray = $re->getFlatArray();
    //$gui->mapOfSuiteSummary =  $re->getAggregateMap();
    //
    // Prepare User Feedback
    $gui->totals = new stdClass();
    $gui->totals->items = 0;
    $gui->totals->labels = array();
    foreach ($gui->totals->items as $key => $value) {
        $l18n = $key == 'total' ? 'th_total_cases' : $gui->resultsCfg['status_label'][$key];
        $gui->totals->labels[$key] = lang_get($l18n);
    }
    $gui->keywords = new stdClass();
    $gui->keywords->items[0] = $gui->str_option_any;
    // Sorry MAGIC 0
    if (!is_null($tplan_keywords_map = $tplan_mgr->get_keywords_map($gui->tplan_id))) {
        $gui->keywords->items += $tplan_keywords_map;
    }
    $gui->keywords->qty = count($gui->keywords->items);
    $gui->keywordSelected = $gui->keywords->items[$argsObj->keywordSelected];
    $gui->builds_html = $tplan_mgr->get_builds_for_html_options($gui->tplan_id);
    $gui->users = getUsersForHtmlOptions($dbHandler, ALL_USERS_FILTER, array(TL_USER_ANYBODY => $gui->str_option_any));
    $gui->ownerSelected = $gui->users[$argsObj->ownerSelected];
    $gui->executorSelected = $gui->users[$argsObj->executorSelected];
    $gui->buildsSelected = $argsObj->buildsSelected;
    $gui->platformsSelected = $argsObj->platformsSelected;
    $gui->display = $argsObj->display;
    // init display rows attribute and some status localized labels
    $gui->displayResults = array();
    $gui->lastStatus = array();
    foreach ($reports_cfg->exec_status as $verbose => $label) {
        $gui->displayResults[$gui->resultsCfg['status_code'][$verbose]] = false;
    }
    foreach ($gui->resultsCfg['status_label'] as $status_verbose => $label_key) {
        $gui->statusLabels[$gui->resultsCfg['status_code'][$status_verbose]] = lang_get($label_key);
    }
    $lastStatus_localized = null;
    foreach ($argsObj->lastStatus as $key => $status_code) {
        $verbose = $gui->resultsCfg['code_status'][$status_code];
        $gui->displayResults[$status_code] = true;
        $lastStatus_localized[] = lang_get($gui->resultsCfg['status_label'][$verbose]);
    }
    $gui->lastStatus = $lastStatus_localized;
    return $gui;
}