/**
  * Display list of services
  */
 function showResourcesBoard($width = '', $perfdatas = false, $params = array())
 {
     global $DB, $CFG_GLPI;
     $col_to_display = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
     $data = Search::prepareDatasForSearch($params['itemtype'], $params, $col_to_display);
     $data['tocompute'] = $data['toview'];
     Search::constructSQL($data);
     //echo "<pre>";      print_r($data['sql']['search']);
     Search::constructDatas($data);
     /*
           if (! isset($_SESSION['plugin_monitoring_reduced_interface'])) {
              $_SESSION['plugin_monitoring_reduced_interface'] = false;
           }
     
           if (! isset($_GET['order'])) {
              $_GET['order'] = "ASC";
           }
           if (! isset($_GET['sort'])) {
              $_GET['sort'] = "";
           }
     
           $order = "ASC";
           if (isset($_GET['order'])) {
              $order = $_GET['order'];
           }
     
           $where = '';
           if (isset($_GET['field'])) {
              foreach ($_GET['field'] as $key=>$value) {
                 $wheretmp = '';
                 if (isset($_GET['link'][$key])) {
                    $wheretmp.= " ".$_GET['link'][$key]." ";
                 }
                 $wheretmp .= Search::addWhere(
                                        "",
                                        0,
                                        "PluginMonitoringService",
                                        $_GET['field'][$key],
                                        $_GET['searchtype'][$key],
                                        $_GET['contains'][$key]);
                 if (!strstr($wheretmp, "``.``")) {
                    if ($where != ''
                            AND !isset($_GET['link'][$key])) {
                       $where .= " AND ";
                    }
                    $where .= $wheretmp;
                 }
              }
           }
           if ($where != '') {
              $where = "(".$where;
              $where .= ") AND ";
           }
           $where .= ' `glpi_plugin_monitoring_services`.`entities_id` IN ('.$_SESSION['glpiactiveentities_string'].')';
     
           if ($where != '') {
              $where = " WHERE ".$where;
              $where = str_replace("`".getTableForItemType("PluginMonitoringDisplay")."`.",
                      "", $where);
     
           }
     
           $leftjoin = "
              INNER JOIN `glpi_plugin_monitoring_services`
                 ON (`glpi_plugin_monitoring_services`.`plugin_monitoring_componentscatalogs_hosts_id` = `glpi_plugin_monitoring_componentscatalogs_hosts`.`id`)
              INNER JOIN `glpi_plugin_monitoring_hosts`
                 ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` = `glpi_plugin_monitoring_hosts`.`items_id`
                 AND `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype` = `glpi_plugin_monitoring_hosts`.`itemtype`
              INNER JOIN `glpi_plugin_monitoring_componentscatalogs`
                 ON `plugin_monitoring_componentscalalog_id` = `glpi_plugin_monitoring_componentscatalogs`.`id`
              INNER JOIN `glpi_plugin_monitoring_components`
                 ON (`glpi_plugin_monitoring_services`.`plugin_monitoring_components_id` = `glpi_plugin_monitoring_components`.`id`)
              INNER JOIN `glpi_entities`
                 ON (`glpi_plugin_monitoring_services`.`entities_id` = `glpi_entities`.`id`)
           ";
     
           $leftjoin .= " LEFT JOIN `glpi_computers`
              ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` =
                    `glpi_computers`.`id`
                    AND `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype`='Computer'";
           $leftjoin .= " LEFT JOIN `glpi_printers`
              ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` =
                    `glpi_printers`.`id`
                    AND `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype`='Printer'";
           $leftjoin .= " LEFT JOIN `glpi_networkequipments`
              ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` =
                    `glpi_networkequipments`.`id`
                    AND `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype`='NetworkEquipment'";
     
     
           // * ORDER
           $ORDERQUERY = "ORDER BY `glpi_plugin_monitoring_services`.`name` ASC";
           $toview = array(1, 2, 3, 4, 5);
           $toviewComplete = array(
               'ITEM_0' => 'host_name',
               'ITEM_1' => 'component_name',
               'ITEM_2' => 'state',
               'ITEM_3' => 'last_check',
               'ITEM_4' => 'event'
           );
           foreach ($toview as $key => $val) {
              if ($_GET['sort']==$val) {
                 $ORDERQUERY = Search::addOrderBy("PluginMonitoringService", $_GET['sort'],
                                                  $_GET['order'], $key);
                 foreach ($toviewComplete as $keyi=>$vali) {
                    $ORDERQUERY= str_replace($keyi, $vali, $ORDERQUERY);
                 }
              }
           }
     
           $query = "SELECT
              `glpi_plugin_monitoring_services`.*,
              CONCAT_WS('', `glpi_computers`.`name`, `glpi_printers`.`name`, `glpi_networkequipments`.`name`) AS host_name,
              `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype`,
              `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id`,
              `glpi_plugin_monitoring_hosts`.`id` AS host_id, `glpi_plugin_monitoring_hosts`.`state` AS host_state, `glpi_plugin_monitoring_hosts`.`is_acknowledged` AS host_acknowledged,
              `glpi_plugin_monitoring_components`.`id` AS component_id, `glpi_plugin_monitoring_components`.`name` AS component_name
              FROM `glpi_plugin_monitoring_componentscatalogs_hosts`
              ".$leftjoin."
              ".$where."
              ".$ORDERQUERY;
           $result = $DB->query($query);
     
           $start = 0;
           if (isset($_GET["start"])) {
              $start = $_GET["start"];
           }
     
           $numrows = $DB->numrows($result);
           $parameters = '';
     
           $globallinkto = Toolbox::append_params(
                   array('criteria'     => Toolbox::stripslashes_deep($_GET['search']['criteria']),
                         'metacriteria' => Toolbox::stripslashes_deep($_GET['search']['metacriteria'])),
                   '&amp;');
     
           $parameters = "sort=".$_GET['sort']."&amp;order=".$_GET['order'].$globallinkto;
           Html::printPager($start, $numrows, $CFG_GLPI['root_doc']."/plugins/monitoring/front/service.php", $parameters);
     
           $limit = $numrows;
           if ($_SESSION["glpilist_limit"] < $numrows) {
              $limit = $_SESSION["glpilist_limit"];
           }
           $query .= " LIMIT ".intval($start)."," . intval($_SESSION['glpilist_limit']);
     
           // Fred : on repose la requête sur la base une 2ème fois ... ?
           $result = $DB->query($query);
     */
     $rand = mt_rand();
     if (!isset($data['data']) || !isset($data['data']['totalcount'])) {
         return false;
     }
     // Contruct Pager parameters
     $globallinkto = Toolbox::append_params(array('criteria' => Toolbox::stripslashes_deep($data['search']['criteria']), 'metacriteria' => Toolbox::stripslashes_deep($data['search']['metacriteria'])), '&amp;');
     $parameters = "sort=" . $data['search']['sort'] . "&amp;order=" . $data['search']['order'] . '&amp;' . $globallinkto;
     if (isset($_GET['_in_modal'])) {
         $parameters .= "&amp;_in_modal=1";
     }
     // If the begin of the view is before the number of items
     if ($data['data']['count'] > 0) {
         // Display pager only for HTML
         if ($data['display_type'] == Search::HTML_OUTPUT) {
             $search_config_top = "";
             $search_config_bottom = "";
             Html::printPager($data['search']['start'], $data['data']['totalcount'], $data['search']['target'], $parameters, $data['itemtype'], 0, $search_config_top);
         }
         // Define begin and end var for loop
         // Search case
         $begin_display = $data['data']['begin'];
         $end_display = $data['data']['end'];
     } else {
         $search_config_top = "";
         $search_config_bottom = "";
         $begin_display = 0;
         $end_display = 0;
     }
     // Pour la génération des graphes ...
     echo '<div style="display:none"><input type="text" id="custom_date" value="' . date('m/d/Y') . '"> ' . ' <input type="text" id="custom_time" value="' . date('H:i') . '"></div>';
     echo "<br/>";
     if ($perfdatas) {
         echo "<table class='tab_cadrehov' style='width:100%;'>\n            <tr class='tab_bg_1'><th colspan='2' class='left'>" . __('Global counters', 'monitoring') . "</th></tr>\n            <tr class='tab_bg_3' id='global_counters'></tr>\n            </table>";
         echo "<br/>";
     }
     if ($width == '') {
         echo "<table class='tab_cadrehov' style='width:100%;'>";
     } else {
         echo "<table class='tab_cadrehov' style='width:" . $width . "px;'>";
     }
     $num = 0;
     echo "<tr class='tab_bg_1'>";
     if (!isset($_SESSION['plugin_monitoring_reduced_interface'])) {
         $_SESSION['plugin_monitoring_reduced_interface'] = 0;
     }
     if (!$_SESSION['plugin_monitoring_reduced_interface']) {
         // echo Search::showHeaderItem(0, __('Show counters', 'monitoring'), $num);
         echo Search::showHeaderItem(0, __('Show graphics', 'monitoring'), $num);
     }
     $this->showHeaderItem(__('Host name', 'monitoring'), 1, $num, $begin_display, $globallinkto, 'service.php', 'PluginMonitoringService');
     $this->showHeaderItem(__('Component', 'monitoring'), 2, $num, $begin_display, $globallinkto, 'service.php', 'PluginMonitoringService');
     if (!$perfdatas) {
         $this->showHeaderItem(__('Resource state', 'monitoring'), 3, $num, $begin_display, $globallinkto, 'service.php', 'PluginMonitoringService');
         $this->showHeaderItem(__('Last check', 'monitoring'), 4, $num, $begin_display, $globallinkto, 'service.php', 'PluginMonitoringService');
         echo Search::showHeaderItem(0, __('Result details', 'monitoring'), $num);
         echo Search::showHeaderItem(0, __('Check period', 'monitoring'), $num);
         if (Session::haveRight("plugin_monitoring_acknowledge", READ)) {
             echo Search::showHeaderItem(0, __('Acknowledge', 'monitoring'), $num);
         }
     }
     echo "</tr>";
     PluginMonitoringDisplay::$ar_counterTypes = array();
     PluginMonitoringToolbox::loadLib();
     //      while ($data=$DB->fetch_array($result)) {
     //echo "<pre>";      print_r($data['data']);
     foreach ($data['data']['rows'] as $row) {
         // Reduced array or not ?
         if ($_SESSION['plugin_monitoring_reduced_interface'] and $row[2]['displayname'] == 'OK') {
             continue;
         }
         echo "<tr class='tab_bg_3'>";
         $this->displayLine($row, 1, $perfdatas);
         echo "</tr>";
     }
     echo "</table>";
     echo "<br/>";
     Html::printPager($data['search']['start'], $data['data']['totalcount'], $data['search']['target'], $parameters, '', 0, $search_config_bottom);
     if ($perfdatas) {
         // foreach(PluginMonitoringDisplay::$ar_counterTypes as $counter_id => $counter_name) {
         // Toolbox::logInFile("pm", "Counter type +++ : $counter_id => $counter_name\n");
         // }
         echo "<script>\n            Ext.onReady(function(){\n               // console.log('Ready ...');\n               window.setTimeout(function(){";
         foreach (PluginMonitoringDisplay::$ar_counterTypes as $counter_id => $counter_name) {
             echo "\n                  var global = Ext.get('#global_counter_" . $counter_id . "');\n                  if (! global) {\n                     var html = \"<th id='global_counter_" . $counter_id . "' counterType ='" . $counter_id . "' class='global_counter'>\";\n                     html += \"<span class='global_counter_name'>" . $counter_name . "</span>\";\n                     html += \"<span>&nbsp;:&nbsp;</span>\";\n                     html += \"<span class='global_counter_value'>0</span>\";\n                     html += \"</th>\";\n                     Ext.select('#global_counters').createChild(html);\n                     console.log('Created an element for global \\'" . $counter_id . " / " . $counter_name . "\\' counter.');\n                  }\n";
         }
         echo "\n               }, 100);\n               window.setInterval(function(){\n                  Ext.select('.global_counter').each(function(el) {\n                     var counterType = el.getAttribute('counterType');\n                     // console.log('Global counter for '+counterType+' exists.');\n\n                     el.select('.global_counter_value').each(function(elGlobalValue) {\n                        elGlobalValue.update('0');\n                        // console.log('Global counter value is : '+parseFloat(elGlobalValue.dom.innerHTML));\n\n                        var select = 'td[counter=\\'' + counterType + '\\'][counterType=\\'difference\\']';\n                        Ext.select(select).each(function(el) {\n                           // console.log('Local counter is ' + el.getAttribute('counter') + ', value is : '+parseFloat(el.dom.innerHTML));\n                           var newCounter = parseFloat(elGlobalValue.dom.innerHTML) + parseFloat(el.dom.innerHTML);\n                           elGlobalValue.update(newCounter.toString());\n                        });\n                     });\n                  });\n               }, 1000);\n            });\n         </script>";
     }
 }