function viewMainScreen()
 {
     #printf ("this->uifelamimail->viewMainScreen() start: %s<br>",date("H:i:s",mktime()));
     $bopreferences =& CreateObject('felamimail.bopreferences');
     $bofilter =& CreateObject('felamimail.bofilter');
     $uiwidgets =& CreateObject('felamimail.uiwidgets');
     $preferences =& $bopreferences->getPreferences();
     $urlMailbox = urlencode($this->mailbox);
     $imapServer =& $preferences->getIncomingServer(0);
     $activeIdentity =& $preferences->getIdentity(0);
     #_debug_array($activeIdentity);
     $maxMessages =& $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'];
     if (empty($maxMessages)) {
         $maxMessages = 23;
     }
     // this seems to be the number off messages that fit the height of the folder tree
     $userPreferences =& $GLOBALS['phpgw_info']['user']['preferences']['felamimail'];
     $this->display_app_header();
     $this->t->set_file(array("body" => 'mainscreen.tpl'));
     $this->t->set_block('body', 'main');
     $this->t->set_block('body', 'status_row_tpl');
     $this->t->set_block('body', 'table_header_felamimail');
     $this->t->set_block('body', 'table_header_outlook');
     $this->t->set_block('body', 'error_message');
     $this->t->set_block('body', 'quota_block');
     $this->t->set_block('body', 'subject_same_window');
     $this->t->set_block('body', 'subject_new_window');
     $this->translate();
     $this->t->set_var('oldMailbox', $urlMailbox);
     $this->t->set_var('image_path', PHPGW_IMAGES);
     #printf ("this->uifelamimail->viewMainScreen() Line 272: %s<br>",date("H:i:s",mktime()));
     $linkData = array('menuaction' => 'felamimail.uifelamimail.viewMainScreen');
     $refreshURL = $GLOBALS['phpgw']->link('/index.php', $linkData);
     $this->t->set_var('reloadView', $refreshURL);
     // display a warning if vacation notice is active
     if (is_a($imapServer, 'defaultimap') && $imapServer->enableSieve) {
         $this->bosieve =& CreateObject('felamimail.bosieve', $imapServer);
         $this->bosieve->retrieveRules($this->bosieve->scriptName);
         $vacation = $this->bosieve->getVacation($this->bosieve->scriptName);
     }
     if (is_array($vacation) && $vacation['status'] == 'on') {
         $this->t->set_var('vacation_warning', html::image('phpgwapi', 'dialog_warning', false, 'style="vertical-align: middle; width: 16px;"') . lang('Vacation notice is active'));
     } else {
         $this->t->set_var('vacation_warning', '&nbsp;');
     }
     // ui for the quotas
     if ($this->connectionStatus !== false) {
         $quota = $this->bofelamimail->getQuotaRoot();
     } else {
         $quota['limit'] = 'NOT SET';
     }
     if ($quota !== false && $quota['limit'] != 'NOT SET') {
         $quotaDisplay = $uiwidgets->quotaDisplay($quota['usage'], $quota['limit']);
         $this->t->set_var('quota_display', $quotaDisplay);
     } else {
         $this->t->set_var('quota_display', '&nbsp;');
     }
     $linkData = array('menuaction' => 'felamimail.uicompose.compose');
     $urlCompose = "egw_openWindowCentered('" . $GLOBALS['phpgw']->link('/index.php', $linkData) . "','compose', 700, egw_getWindowOuterHeight());";
     $navbarImages = array('new' => array('action' => $urlCompose, 'tooltip' => lang('compose')), 'read_small' => array('action' => "flagMessages('read')", 'tooltip' => lang('mark selected as read')), 'unread_small' => array('action' => "flagMessages('unread')", 'tooltip' => lang('mark selected as unread')), 'unread_flagged_small' => array('action' => "flagMessages('flagged')", 'tooltip' => lang('mark selected as flagged')), 'read_flagged_small' => array('action' => "flagMessages('unflagged')", 'tooltip' => lang('mark selected as unflagged')), 'delete' => array('action' => "deleteMessages(xajax.getFormValues('formMessageList'))", 'tooltip' => lang('mark as deleted')));
     foreach ($navbarImages as $buttonName => $buttonInfo) {
         $navbarButtons .= $uiwidgets->navbarButton($buttonName, $buttonInfo['action'], $buttonInfo['tooltip']);
     }
     $this->t->set_var('navbarButtonsLeft', $navbarButtons);
     $navbarImages = array('last' => array('action' => "jumpEnd(); return false;", 'tooltip' => ''), 'right' => array('action' => "skipForward(); return false;", 'tooltip' => ''), 'left' => array('action' => "skipPrevious(); return false;", 'tooltip' => ''), 'first' => array('action' => "jumpStart(); return false;", 'tooltip' => ''));
     $navbarButtons = '';
     foreach ($navbarImages as $buttonName => $buttonInfo) {
         $navbarButtons .= $uiwidgets->navbarButton($buttonName, $buttonInfo['action'], $buttonInfo['tooltip'], 'right');
     }
     $this->t->set_var('navbarButtonsRight', $navbarButtons);
     // set the images
     $listOfImages = array('read_small', 'unread_small', 'unread_flagged_small', 'read_flagged_small', 'trash', 'sm_envelope', 'write_mail', 'manage_filter', 'msg_icon_sm', 'mail_find', 'new', 'start_kde', 'previous_kde', 'next_kde', 'finnish_kde', 'ajax-loader');
     foreach ($listOfImages as $image) {
         $this->t->set_var($image, $GLOBALS['phpgw']->common->image('felamimail', $image));
     }
     $this->t->set_var('img_clear_left', html::image('felamimail', 'clear_left', lang('clear search'), 'style="margin-left:5px; cursor: pointer;" onclick="fm_clearSearch()"'));
     // refresh settings
     $refreshTime = $userPreferences['refreshTime'];
     $this->t->set_var('refreshTime', $refreshTime * 60 * 1000);
     // other settings
     $prefaskformove = intval($userPreferences['prefaskformove']) ? intval($userPreferences['prefaskformove']) : 0;
     $this->t->set_var('prefaskformove', $prefaskformove);
     #// set the url to open when refreshing
     #$linkData = array
     #(
     #	'menuaction'	=> 'felamimail.uifelamimail.viewMainScreen'
     #);
     #$this->t->set_var('refresh_url',$GLOBALS['phpgw']->link('/index.php',$linkData));
     // define the sort defaults
     $dateSort = '0';
     $dateCSS = 'text_small';
     $fromSort = '3';
     $fromCSS = 'text_small';
     $subjectSort = '5';
     $subjectCSS = 'text_small';
     $sizeSort = '6';
     $sizeCSS = 'text_small';
     // and no overwrite the defaults
     switch ($this->sort) {
         // sort by date newest first
         case '0':
             $dateCSS = 'text_small_bold';
             break;
             // sort by from z->a
         // sort by from z->a
         case '2':
             $fromCSS = 'text_small_bold';
             break;
             // sort by from a->z
         // sort by from a->z
         case '3':
             $subjectCSS = 'text_small_bold';
             break;
             // sort by size z->a
         // sort by size z->a
         case '6':
             $sizeCSS = 'text_small_bold';
             break;
     }
     // sort by date
     $this->t->set_var('css_class_date', $dateCSS);
     // sort by from
     $this->t->set_var('css_class_from', $fromCSS);
     // sort by subject
     $this->t->set_var('css_class_subject', $subjectCSS);
     // sort by size
     $this->t->set_var('css_class_size', $sizeCSS);
     #_debug_array($this->bofelamimail->sessionData['messageFilter']);
     if (!empty($this->bofelamimail->sessionData['messageFilter']['string'])) {
         $this->t->set_var('quicksearch', $this->bofelamimail->sessionData['messageFilter']['string']);
     }
     $defaultSearchType = isset($this->bofelamimail->sessionData['messageFilter']['type']) ? $this->bofelamimail->sessionData['messageFilter']['type'] : 'quick';
     $defaultSelectStatus = isset($this->bofelamimail->sessionData['messageFilter']['status']) ? $this->bofelamimail->sessionData['messageFilter']['status'] : 'any';
     $searchTypes = array('quick' => 'quicksearch', 'subject' => 'subject', 'body' => 'message', 'from' => 'from', 'to' => 'to', 'cc' => 'cc');
     $selectSearchType = html::select('searchType', $defaultSearchType, $searchTypes, false, "style='width:100%;' id='searchType' onchange='document.getElementById(\"quickSearch\").focus(); document.getElementById(\"quickSearch\").value=\"\" ;return false;'");
     $this->t->set_var('select_search', $selectSearchType);
     $statusTypes = array('any' => 'any status', 'flagged' => 'flagged', 'unseen' => 'unread', 'answered' => 'replied', 'seen' => 'read', 'deleted' => 'deleted');
     $selectStatus = html::select('status', $defaultSelectStatus, $statusTypes, false, "style='width:100%;' onchange='javascript:quickSearch();' id='status'");
     $this->t->set_var('select_status', $selectStatus);
     $selectedID = 0;
     if ($this->preferences->userDefinedAccounts) {
         $allAccountData = $this->bopreferences->getAllAccountData($this->preferences);
     }
     if ($allAccountData) {
         foreach ($allAccountData as $tmpkey => $accountData) {
             $identity =& $accountData['identity'];
             $icServer =& $accountData['icServer'];
             //_debug_array($identity);
             //_debug_array($icServer);
             if (empty($icServer->host)) {
                 continue;
             }
             $identities[$identity->id] = $identity->realName . ' ' . $identity->organization . ' <' . $identity->emailAddress . '>';
             if (!empty($identity->default)) {
                 $selectedID = $identity->id;
             }
         }
     }
     if (!isset($activeIdentity->id) && $selectedID == 0) {
         $identities[0] = $activeIdentity->realName . ' ' . $activeIdentity->organization . ' <' . $activeIdentity->emailAddress . '>';
     }
     // if you use user defined accounts you may want to access the profile defined with the emailadmin available to the user
     if ($activeIdentity->id) {
         $boemailadmin = new emailadmin_bo();
         $defaultProfile = $boemailadmin->getUserProfile();
         #_debug_array($defaultProfile);
         $identitys =& $defaultProfile->identities;
         $icServers =& $defaultProfile->ic_server;
         foreach ($identitys as $tmpkey => $identity) {
             if (empty($icServers[$tmpkey]->host)) {
                 continue;
             }
             $identities[0] = $identity->realName . ' ' . $identity->organization . ' <' . $identity->emailAddress . '>';
         }
         #$identities[0] = $defaultIdentity->realName.' '.$defaultIdentity->organization.' <'.$defaultIdentity->emailAddress.'>';
     }
     $selectAccount = html::select('accountSelect', $selectedID, $identities, true, "style='width:100%;' onchange='changeActiveAccount(this);'");
     $this->t->set_var('accountSelect', $selectAccount);
     if ($this->connectionStatus === false) {
         $this->t->set_var('connection_error_message', lang($this->bofelamimail->getErrorMessage()));
         $this->t->set_var('message', '&nbsp;');
         $this->t->parse('header_rows', 'error_message', True);
     } else {
         $headers = $this->bofelamimail->getHeaders($this->mailbox, $this->startMessage, $maxMessages, $this->sort, $this->sortReverse, $this->bofelamimail->sessionData['messageFilter']);
         $headerCount = count($headers['header']);
         // if there aren't any messages left (eg. after delete or move)
         // adjust $this->startMessage
         if ($headerCount == 0 && $this->startMessage > $maxMessages) {
             $this->startMessage = $this->startMessage - $maxMessages;
             $headers = $this->bofelamimail->getHeaders($this->startMessage, $maxMessages, $this->sort);
             $headerCount = count($headers['header']);
         }
         if ($this->bofelamimail->isSentFolder($this->mailbox) || $this->bofelamimail->isDraftFolder($this->mailbox) || $this->bofelamimail->isTemplateFolder($this->mailbox)) {
             $this->t->set_var('lang_from', lang("to"));
         } else {
             $this->t->set_var('lang_from', lang("from"));
         }
         $msg_icon_sm = $GLOBALS['phpgw']->common->image('felamimail', 'msg_icon_sm');
         $this->t->set_var('header_rows', $uiwidgets->messageTable($headers, $this->bofelamimail->isSentFolder($this->mailbox) || $this->bofelamimail->isDraftFolder($this->mailbox) || $this->bofelamimail->isTemplateFolder($this->mailbox), $this->mailbox, $userPreferences['message_newwindow'], $userPreferences['rowOrderStyle']));
         $firstMessage = $headers['info']['first'];
         $lastMessage = $headers['info']['last'];
         $totalMessage = $headers['info']['total'];
         $langTotal = lang("total");
         $this->t->set_var('maxMessages', $i);
         if ($_GET["select_all"] == "select_all") {
             $this->t->set_var('checkedCounter', $i);
         } else {
             $this->t->set_var('checkedCounter', '0');
         }
         // set the select all/nothing link
         if ($_GET["select_all"] == "select_all") {
             // link to unselect all messages
             $linkData = array('menuaction' => 'felamimail.uifelamimail.viewMainScreen');
             $selectLink = sprintf("<a class=\"body_link\" href=\"%s\">%s</a>", $GLOBALS['phpgw']->link('/index.php', $linkData), lang("Unselect All"));
             $this->t->set_var('change_folder_checked', '');
             $this->t->set_var('move_message_checked', 'checked');
         } else {
             // link to select all messages
             $linkData = array('select_all' => 'select_all', 'menuaction' => 'felamimail.uifelamimail.viewMainScreen');
             $selectLink = sprintf("<a class=\"body_link\" href=\"%s\">%s</a>", $GLOBALS['phpgw']->link('/index.php', $linkData), lang("Select all"));
             $this->t->set_var('change_folder_checked', 'checked');
             $this->t->set_var('move_message_checked', '');
         }
         $this->t->set_var('select_all_link', $selectLink);
         $this->t->set_var('message', lang("Viewing messages") . " <b>{$firstMessage}</b> - <b>{$lastMessage}</b> ({$totalMessage} {$langTotal})");
         if ($firstMessage > 1) {
             $linkData = array('menuaction' => 'felamimail.uifelamimail.viewMainScreen', 'startMessage' => $this->startMessage - $maxMessages);
             $link = $GLOBALS['phpgw']->link('/index.php', $linkData);
             $this->t->set_var('link_previous', "<a class=\"body_link\" href=\"{$link}\">" . lang("previous") . "</a>");
         } else {
             $this->t->set_var('link_previous', lang("previous"));
         }
         if ($totalMessage > $lastMessage) {
             $linkData = array('menuaction' => 'felamimail.uifelamimail.viewMainScreen', 'startMessage' => $this->startMessage + $maxMessages);
             $link = $GLOBALS['phpgw']->link('/index.php', $linkData);
             $this->t->set_var('link_next', "<a class=\"body_link\" href=\"{$link}\">" . lang("next") . "</a>");
         } else {
             $this->t->set_var('link_next', lang("next"));
         }
         $this->t->parse('status_row', 'status_row_tpl', True);
         //print __LINE__ . ': ' . (microtime(true) - $this->timeCounter) . '<br>';
         $folderObjects = $this->bofelamimail->getFolderObjects(true, false);
         //print __LINE__ . ': ' . (microtime(true) - $this->timeCounter) . '<br>';
         $folderStatus = $this->bofelamimail->getFolderStatus($this->mailbox);
         //print __LINE__ . ': ' . (microtime(true) - $this->timeCounter) . '<br>';
         $folderTree = $uiwidgets->createHTMLFolder($folderObjects, $this->mailbox, $folderStatus['unseen'], lang('IMAP Server'), $imapServer->username . '@' . $imapServer->host, 'divFolderTree', FALSE);
         //print __LINE__ . ': ' . (microtime(true) - $this->timeCounter) . '<br>';
         $this->bofelamimail->closeConnection();
     }
     $this->t->set_var('current_mailbox', $current_mailbox);
     $this->t->set_var('folder_tree', $folderTree);
     $this->t->set_var('options_folder', $options_folder);
     $linkData = array('menuaction' => 'felamimail.uicompose.compose');
     $this->t->set_var('url_compose_empty', "egw_openWindowCentered('" . $GLOBALS['phpgw']->link('/index.php', $linkData) . "','test',700,egw_getWindowOuterHeight());");
     $linkData = array('menuaction' => 'felamimail.uifilter.mainScreen');
     $this->t->set_var('url_filter', $GLOBALS['phpgw']->link('/index.php', $linkData));
     $linkData = array('menuaction' => 'felamimail.uifelamimail.handleButtons');
     $this->t->set_var('url_change_folder', $GLOBALS['phpgw']->link('/index.php', $linkData));
     $linkData = array('menuaction' => 'felamimail.uifelamimail.changeFilter');
     $this->t->set_var('url_search_settings', $GLOBALS['phpgw']->link('/index.php', $linkData));
     $this->t->set_var('lang_mark_messages_as', lang('mark messages as'));
     $this->t->set_var('lang_delete', lang('delete'));
     switch ($GLOBALS['phpgw_info']['user']['preferences']['felamimail']['rowOrderStyle']) {
         case 'outlook':
             $this->t->parse('messageListTableHeader', 'table_header_outlook', True);
             break;
         default:
             $this->t->parse('messageListTableHeader', 'table_header_felamimail', True);
             break;
     }
     //print __LINE__ . ': ' . (microtime(true) - $this->timeCounter) . '<br>';
     $this->t->parse("out", "main");
     print $this->t->get('out', 'main');
     $GLOBALS['phpgw']->common->phpgw_footer();
 }
 function __construct()
 {
     $boemailadmin = new emailadmin_bo();
     $this->profileData = $boemailadmin->getUserProfile('felamimail');
 }