diff -uNrp zabbix-2.0.4.orig/frontends/php/api/classes/CEvent.php zabbix-2.0.4/frontends/php/api/classes/CEvent.php
--- zabbix-2.0.4.orig/frontends/php/api/classes/CEvent.php	2012-12-08 20:09:20.000000000 +0900
+++ zabbix-2.0.4/frontends/php/api/classes/CEvent.php	2012-12-26 16:11:45.638875359 +0900
@@ -78,6 +78,7 @@ class CEvent extends CZBXAPI {
 			'object'					=> null,
 			'source'					=> null,
 			'acknowledged'				=> null,
+			'severity'					=> null,
 			'nopermissions'				=> null,
 			// filter
 			'showUnknown'				=> null,
@@ -256,6 +257,14 @@ class CEvent extends CZBXAPI {
 			$sqlParts['where'][] = 'e.acknowledged='.($options['acknowledged'] ? 1 : 0);
 		}
 
+		// severity
+		if (!is_null($options['severity'])) {
+			zbx_value2array($options['severity']);
+			$sqlParts['from']['triggers'] = 'triggers t';
+			$sqlParts['where'][] = 'e.objectid=t.triggerid';
+			$sqlParts['where'][] = DBcondition('t.priority', $options['severity']);
+		}
+
 		// showUnknown
 		if (!is_null($options['showUnknown'])) {
 			if (is_null($options['filter'])) {
diff -uNrp zabbix-2.0.4.orig/frontends/php/events.php zabbix-2.0.4/frontends/php/events.php
--- zabbix-2.0.4.orig/frontends/php/events.php	2012-12-08 20:09:20.000000000 +0900
+++ zabbix-2.0.4/frontends/php/events.php	2012-12-26 16:11:45.638875359 +0900
@@ -83,6 +83,10 @@ $fields = array(
 	'filter_set'=>		array(T_ZBX_STR, O_OPT,	P_SYS,	null,	null),
 
 	'showUnknown'=>		array(T_ZBX_INT, O_OPT,	P_SYS,	IN(array(0,1)),	null),
+// Severity filters
+	'show_triggers'=>		array(T_ZBX_INT, O_OPT, P_SYS,  IN(array(0,1,2,3)), null),
+	'ack_status'=>		array(T_ZBX_INT, O_OPT, P_SYS,  IN(array(0,1,2)), null),
+	'show_severity'=>		array(T_ZBX_INT, O_OPT, P_SYS,  IN(array(-1,0,1,2,3,4,5)), null),
 //ajax
 	'favobj'=>		array(T_ZBX_STR, O_OPT, P_ACT,	null,			null),
 	'favref'=>		array(T_ZBX_STR, O_OPT, P_ACT,  NOT_EMPTY,		'isset({favobj})&&("filter"=={favobj})'),
@@ -115,6 +119,9 @@ if ((PAGE_TYPE_JS == $page['type']) || (
 if (isset($_REQUEST['filter_rst'])) {
 	$_REQUEST['triggerid'] = 0;
 	$_REQUEST['showUnknown'] = 0;
+	$_REQUEST['show_triggers'] = EVENTS_SHOW_TRIGGERS_ALL;
+	$_REQUEST['ack_status'] = EVENTS_SHOW_ALL;
+	$_REQUEST['show_severity'] = -1;
 }
 
 $source = get_request('triggerid') > 0 ? EVENT_SOURCE_TRIGGERS
@@ -122,6 +129,9 @@ $source = get_request('triggerid') > 0 ?
 
 $_REQUEST['triggerid'] = get_request('triggerid', CProfile::get('web.events.filter.triggerid', 0));
 $_REQUEST['showUnknown'] = get_request('showUnknown', CProfile::get('web.events.filter.showUnknown', 0));
+$_REQUEST['show_triggers'] = get_request('show_triggers', CProfile::get('web.events.filter.show_triggers', EVENTS_SHOW_TRIGGERS_ALL));
+$_REQUEST['ack_status'] = get_request('ack_status', CProfile::get('web.events.filter.ack_status', EVENTS_SHOW_ALL));
+$_REQUEST['show_severity'] = get_request('show_severity', CProfile::get('web.events.filter.show_severity', -1));
 
 // Change triggerId filter if change hostId
 if (($_REQUEST['triggerid'] > 0) && isset($_REQUEST['hostid'])) {
@@ -223,6 +233,9 @@ if (($_REQUEST['triggerid'] > 0) && isse
 if (isset($_REQUEST['filter_set']) || isset($_REQUEST['filter_rst'])) {
 	CProfile::update('web.events.filter.triggerid', $_REQUEST['triggerid'], PROFILE_TYPE_ID);
 	CProfile::update('web.events.filter.showUnknown', $_REQUEST['showUnknown'], PROFILE_TYPE_INT);
+	CProfile::update('web.events.filter.show_triggers',$_REQUEST['show_triggers'], PROFILE_TYPE_INT);
+	CProfile::update('web.events.filter.ack_status',$_REQUEST['ack_status'], PROFILE_TYPE_INT);
+	CProfile::update('web.events.filter.show_severity',$_REQUEST['show_severity'], PROFILE_TYPE_INT);
 }
 // --------------
 
@@ -368,6 +381,34 @@ if (EVENT_SOURCE_TRIGGERS == $source) {
 
 	$filterForm->addRow(_('Show unknown events'), $unkcbx);
 
+	$tr_select = new CComboBox('show_triggers', $_REQUEST['show_triggers']);
+	$tr_select->addItem(EVENTS_SHOW_TRIGGERS_ALL, _('Any'));
+	$tr_select->addItem(EVENTS_SHOW_TRIGGERS_OK, _('Ok'));
+	$tr_select->additem(EVENTS_SHOW_TRIGGERS_PROBLEM, _('Problem'));
+	$filterForm->addRow(_('Triggers status'), $tr_select);
+
+	$config = select_config();
+	if($config['event_ack_enable']){
+		$cb_ack_status = new CComboBox('ack_status', $_REQUEST['ack_status']);
+		$cb_ack_status->addItem(EVENTS_SHOW_ALL, _('Any'));
+		$cb_ack_status->additem(EVENTS_SHOW_ZBX_ACK, _('Yes'));
+		$cb_ack_status->additem(EVENTS_SHOW_ZBX_UNACK, _('No'));
+		$filterForm->addRow(_('Acknowledge status'), $cb_ack_status);
+	}
+	$severity_select = new CComboBox('show_severity', $_REQUEST['show_severity']);
+	$cb_items = array(
+		-1 => _('All'),
+		TRIGGER_SEVERITY_NOT_CLASSIFIED => _('Not classified'),
+		TRIGGER_SEVERITY_INFORMATION => _('Information'),
+		TRIGGER_SEVERITY_WARNING => _('Warning'),
+		TRIGGER_SEVERITY_AVERAGE => _('Average'),
+		TRIGGER_SEVERITY_HIGH => _('High'),
+		TRIGGER_SEVERITY_DISASTER => _('Disaster'),
+	);
+
+	$severity_select->addItems($cb_items);
+	$filterForm->addRow(_('Min severity'), $severity_select);
+
 	$reset = new CButton('filter_rst', _('Reset'), 'javascript: var uri = new Curl(location.href); uri.setArgument("filter_rst",1); location.href = uri.getUrl();');
 
 	$filterForm->addItemToBottomRow(new CSubmit('filter_set', _('Filter')));
@@ -619,6 +660,22 @@ else {
 
 			$triggers = API::Trigger()->get($trigOpt);
 			$options['triggerids'] = zbx_objectValues($triggers, 'triggerid');
+			
+			// Event Show triggers
+			if($_REQUEST['show_triggers'] == EVENTS_SHOW_TRIGGERS_OK)
+				$options['value'] = array(0, 2);
+
+			if($_REQUEST['show_triggers'] == EVENTS_SHOW_TRIGGERS_PROBLEM)
+				$options['value'] = array(1, 2);
+
+			if($_REQUEST['ack_status'] == EVENTS_SHOW_ZBX_ACK)
+				$options['acknowledged'] = EVENTS_SHOW_ZBX_ACK;
+
+			if($_REQUEST['ack_status'] == EVENTS_SHOW_ZBX_UNACK)
+				$options['acknowledged'] = EVENTS_SHOW_ZBX_UNACK;
+
+			if(isset($_REQUEST['show_severity']) && $_REQUEST['show_severity'] != -1)
+				$options['severity'] = range($_REQUEST['show_severity'], TRIGGER_SEVERITY_DISASTER);
 
 			// query event with short data
 			$events = API::Event()->get($options);
diff -uNrp zabbix-2.0.4.orig/frontends/php/include/defines.inc.php zabbix-2.0.4/frontends/php/include/defines.inc.php
--- zabbix-2.0.4.orig/frontends/php/include/defines.inc.php	2012-12-08 20:09:18.000000000 +0900
+++ zabbix-2.0.4/frontends/php/include/defines.inc.php	2012-12-26 16:12:58.342916641 +0900
@@ -83,6 +83,16 @@ define('EVENTS_OPTION_NOEVENT', 1);
 define('EVENTS_OPTION_ALL',		2);
 define('EVENTS_OPTION_NOT_ACK', 3);
 
+// Event tracking
+define('EVENTS_SHOW_ZBX_UNACK',        0);
+define('EVENTS_SHOW_ZBX_ACK',  1);
+define('EVENTS_SHOW_ALL',      2);
+
+define('EVENTS_SHOW_TRIGGERS_OK',      0);
+define('EVENTS_SHOW_TRIGGERS_PROBLEM', 1);
+define('EVENTS_SHOW_TRIGGERS_UNKNOWN', 2);
+define('EVENTS_SHOW_TRIGGERS_ALL',     3);
+
 define('ZBX_FONT_NAME', 'DejaVuSans');
 
 define('ZBX_AUTH_INTERNAL',	0);
