diff --git a/zabbix/zabbix-2.2.1/frontends/php/events.php b/zabbix/zabbix-2.2.1/frontends/php/events.php
index ea4dad8..f6d6732 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/events.php
+++ b/zabbix/zabbix-2.2.1/frontends/php/events.php
@@ -665,6 +665,7 @@ else {
 			$hosts = API::Host()->get(array(
 				'output' => array('name', 'hostid', 'status'),
 				'hostids' => $hostids,
+				'selectGraphs' => API_OUTPUT_COUNT,
 				'selectScreens' => API_OUTPUT_COUNT,
 				'preservekeys' => true
 			));
diff --git a/zabbix/zabbix-2.2.1/frontends/php/include/blocks.inc.php b/zabbix/zabbix-2.2.1/frontends/php/include/blocks.inc.php
index 699b35f..35d5d45 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/include/blocks.inc.php
+++ b/zabbix/zabbix-2.2.1/frontends/php/include/blocks.inc.php
@@ -876,6 +876,7 @@ function make_latest_issues(array $filter = array()) {
 	$hosts = API::Host()->get(array(
 		'hostids' => $hostIds,
 		'output' => array('hostid', 'name', 'status', 'maintenance_status', 'maintenance_type', 'maintenanceid'),
+		'selectGraphs' => API_OUTPUT_COUNT,
 		'selectScreens' => API_OUTPUT_COUNT,
 		'preservekeys' => true
 	));
diff --git a/zabbix/zabbix-2.2.1/frontends/php/include/func.inc.php b/zabbix/zabbix-2.2.1/frontends/php/include/func.inc.php
index 6e3373c..818a9cb 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/include/func.inc.php
+++ b/zabbix/zabbix-2.2.1/frontends/php/include/func.inc.php
@@ -2644,10 +2644,11 @@ function clearCookies($clear = false, $id = null) {
 }
 
 /**
- * Prepare data for host menu popup.
+ * Prepare data for map menu popup. 
  *
  * @param array  $host						host data
  * @param string $host['hostid']			host id
+ * @param array  $host['graphs']			host charts (optional)
  * @param array  $host['screens']			host screens (optional)
  * @param array  $scripts					host scripts (optional)
  * @param string $scripts[]['name']			script name
@@ -2661,6 +2662,7 @@ function getMenuPopupHost(array $host, array $scripts = null, $hasGoTo = true) {
 	$data = array(
 		'type' => 'host',
 		'hostid' => $host['hostid'],
+		'hasGraphs' => (isset($host['graphs']) && $host['graphs']),
 		'hasScreens' => (isset($host['screens']) && $host['screens']),
 		'hasGoTo' => $hasGoTo
 	);
@@ -2689,6 +2691,7 @@ function getMenuPopupHost(array $host, array $scripts = null, $hasGoTo = true) {
  * @param string $scripts[]['scriptid']		script id
  * @param string $scripts[]['confirmation']	confirmation text
  * @param array  $gotos						goto links (optional)
+ * @param array  $gotos['graphs']			link to host charts page with url parameters ("name" => "value") (optional)
  * @param array  $gotos['screens']			link to host screen page with url parameters ("name" => "value") (optional)
  * @param array  $gotos['triggerStatus']	link to trigger status page with url parameters ("name" => "value") (optional)
  * @param array  $gotos['submap']			link to submap page with url parameters ("name" => "value") (optional)
diff --git a/zabbix/zabbix-2.2.1/frontends/php/include/items.inc.php b/zabbix/zabbix-2.2.1/frontends/php/include/items.inc.php
index 01b26b4..6dfa707 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/include/items.inc.php
+++ b/zabbix/zabbix-2.2.1/frontends/php/include/items.inc.php
@@ -758,6 +758,7 @@ function getItemsDataOverview($hostIds, $application, $viewMode) {
 		'hostids' => $hostIds,
 		'with_monitored_items' => true,
 		'preservekeys' => true,
+		'selectGraphs' => ($viewMode == STYLE_LEFT) ? API_OUTPUT_COUNT : null,
 		'selectScreens' => ($viewMode == STYLE_LEFT) ? API_OUTPUT_COUNT : null
 	));
 
diff --git a/zabbix/zabbix-2.2.1/frontends/php/include/maps.inc.php b/zabbix/zabbix-2.2.1/frontends/php/include/maps.inc.php
index 7cab3b7..3e0e0be 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/include/maps.inc.php
+++ b/zabbix/zabbix-2.2.1/frontends/php/include/maps.inc.php
@@ -104,6 +104,7 @@ function getActionMapBySysmap($sysmap, array $options = array()) {
 		'output' => array('status'),
 		'nopermissions' => true,
 		'preservekeys' => true,
+		'selectGraphs' => API_OUTPUT_COUNT,
 		'selectScreens' => API_OUTPUT_COUNT
 	));
 
@@ -138,6 +139,11 @@ function getActionMapBySysmap($sysmap, array $options = array()) {
 						'show_severity' => isset($options['severity_min']) ? $options['severity_min'] : null
 					);
 				}
+				if ($host['graphs']) {
+					$gotos['graphs'] = array(
+						'hostid' => $host['hostid']
+					);
+				}
 				if ($host['screens']) {
 					$gotos['screens'] = array(
 						'hostid' => $host['hostid']
diff --git a/zabbix/zabbix-2.2.1/frontends/php/include/triggers.inc.php b/zabbix/zabbix-2.2.1/frontends/php/include/triggers.inc.php
index 15d4501..2679691 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/include/triggers.inc.php
+++ b/zabbix/zabbix-2.2.1/frontends/php/include/triggers.inc.php
@@ -1177,6 +1177,7 @@ function getTriggersOverview($hostIds, $application, $pageFile, $viewMode = null
 		'output' => array('name', 'hostid', 'status'),
 		'hostids' => $hostIds,
 		'preservekeys' => true,
+		'selectGraphs' => ($viewMode == STYLE_LEFT) ? API_OUTPUT_COUNT : null,
 		'selectScreens' => ($viewMode == STYLE_LEFT) ? API_OUTPUT_COUNT : null
 	));
 
@@ -1582,6 +1583,7 @@ function make_trigger_details($trigger) {
 	$hosts = API::Host()->get(array(
 		'output' => array('name', 'hostid', 'status'),
 		'hostids' => $hostId,
+		'selectGraphs' => API_OUTPUT_COUNT,
 		'selectScreens' => API_OUTPUT_COUNT,
 		'preservekeys' => true
 	));
diff --git a/zabbix/zabbix-2.2.1/frontends/php/js/menupopup.js b/zabbix/zabbix-2.2.1/frontends/php/js/menupopup.js
index 6dfe3f1..2956bae 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/js/menupopup.js
+++ b/zabbix/zabbix-2.2.1/frontends/php/js/menupopup.js
@@ -27,6 +27,7 @@
  * @param string options[]['scriptid']		script id
  * @param string options[]['confirmation']	confirmation text
  * @param bool   options['hasScreens']		link to host screen page
+ * @param bool   options['hasGraphs']		link to host charts page
  * @param bool   options['hasGoTo']			"Go to" block in popup
  *
  * @return array
@@ -76,6 +77,14 @@ function getMenuPopupHost(options) {
 			url: new Curl('hostinventories.php?hostid=' + options.hostid).getUrl()
 		};
 
+		// graphs
+		if (options.hasGraphs) {
+			gotos[gotos.length] = {
+				label: t('Host graphs'),
+				url: new Curl('charts.php?hostid=' + options.hostid).getUrl()
+			};
+		}
+
 		// screens
 		if (options.hasScreens) {
 			gotos[gotos.length] = {
@@ -157,7 +166,21 @@ function getMenuPopupMap(options) {
 			});
 
 			gotos[gotos.length] = {
-			label: t('Host inventory'),
+				label: t('Host inventory'),
+				url: url.getUrl()
+			};
+		}
+
+		// graphs
+		if (typeof options.gotos.graphs !== 'undefined') {
+			var url = new Curl('charts.php');
+
+			jQuery.each(options.gotos.graphs, function(name, value) {
+				url.setArgument(name, value);
+			});
+
+			gotos[gotos.length] = {
+				label: t('Host graphs'),
 				url: url.getUrl()
 			};
 		}
diff --git a/zabbix/zabbix-2.2.1/frontends/php/latest.php b/zabbix/zabbix-2.2.1/frontends/php/latest.php
index cf3ba2c..5be8756 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/latest.php
+++ b/zabbix/zabbix-2.2.1/frontends/php/latest.php
@@ -278,6 +278,17 @@ if ($items) {
 			foreach ($screens as $screen) {
 				$hosts[$screen['hostid']]['screens'] = $screen['rowscount'];
 			}
+
+			#TODO: groupCount is not documented either TemplateScreen or Graphs
+			// get graph count
+			$graphs = API::Graph()->get(array(
+				'hostids' => $hostIds,
+				'countOutput' => true,
+				'groupCount' => true
+			));
+			foreach ($graphs as $graph) {
+				$hosts[$graph['hostid']]['graphs'] = $graph['rowscount'];
+			}
 		}
 	}
 }
diff --git a/zabbix/zabbix-2.2.1/frontends/php/tr_status.php b/zabbix/zabbix-2.2.1/frontends/php/tr_status.php
index 3993b45..add61f0 100644
--- a/zabbix/zabbix-2.2.1/frontends/php/tr_status.php
+++ b/zabbix/zabbix-2.2.1/frontends/php/tr_status.php
@@ -542,6 +542,7 @@ foreach ($triggers as $tnum => $trigger) {
 $hosts = API::Host()->get(array(
 	'hostids' => $hostIds,
 	'preservekeys' => true,
+	'selectGraphs' => API_OUTPUT_COUNT,
 	'selectScreens' => API_OUTPUT_COUNT
 ));
 
