<?php

// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Load global vars

if ((! file_exists("../../include/config.php")) || (! is_readable("../../include/config.php"))) {
	exit;
}

require_once ('../../include/config.php');
require_once ('../../include/functions.php');
require_once ('../../include/functions_db.php');
require_once ('../../include/auth/mysql.php');

global $config;

// Real start
session_start ();

// Check user
check_login ();
$config["id_user"] = $_SESSION["id_usuario"];


if (! check_acl ($config['id_user'], 0, "ER")) {
	db_pandora_audit("ACL Violation","Trying to access event viewer");
	require ("general/noaccess.php");
	
	return;
}

echo "<html>";
echo "<head>";
echo "<title>" . __("Sound Events") . "</title>";
?>
<style type='text/css'>
	* {
		margin: 0;
		padding: 0;
	}
	
	img {
		border: 0;
	}
</style>
<?php
echo '<link rel="icon" href="../../images/pandora.ico" type="image/ico" />';
echo '<link rel="stylesheet" href="../../include/styles/pandora.css" type="text/css" />';
echo "</head>";
echo "<body>";
echo html_print_image('images/pandora_logo_head.png', true);
echo "<h1 style='background: #66AA44; color: #fff;'>" . __("Sound console"). "</h1>";

$table = null;
$table->width = '100%';

$table->size[0] = '10%';
$table->size[1] = '90%';
$table->style[0] = 'font-weight: bold; vertical-align: top;';

$table->data[0][0] = __('Group');
$table->data[0][1] = html_print_select_groups(false, "ER", true, 'group', '', 'changeGroup();', '', 0, true);
$table->data[1][0] = __('Type');
$table->data[1][1] = html_print_checkbox('alert_fired', 'alert_fired', true, true, false, 'changeType();') . __('Alert fired') . '<br />' .
	html_print_checkbox('critical', 'critical', true, true, false, 'changeType();') . __('Monitor critical') . '<br />' .
	html_print_checkbox('warning', 'warning', true, true, false, 'changeType();') . __('Monitor warning') . '<br />' .
$table->data[2][0] = '';
$table->data[2][1] = '<a href="javascript: toggleButton();">' .
	html_print_image("images/play.button.png", true, array("id" => "button")) .
	'</a>';
$table->data[2][1] .= '<a href="javascript: ok();">' .
	html_print_image("images/ok.button.png", true,
		array("style" => "margin-left: 10px;")) . '</a>';

html_print_table($table);
?>
<script src="../../include/javascript/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var group = 0;
var alert_fired = true;
var critical = true;
var warning = true;

var running = false;
var fired = false;

var id_row = 0;

var redBackground = false;

var button_play_status = "play";

function changeGroup() {
	group = $("#group").val();
}

function changeType() {
	alert_fired = $("input[name=alert_fired]").attr('checked');
	critical = $("input[name=critical]").attr('checked');
	warning = $("input[name=warning]").attr('checked');
}

function toggleButton() {
	
	if (button_play_status == 'pause') {
	//~ if ($("#button").attr('src') == '../../images/pause.button.png') {
		
		$("#button").attr('src', '../../images/play.button.png');
		stopSound();
		
		button_play_status = 'play';
	}
	else {
		
		$("#button").attr('src', '../../images/pause.button.png');
		forgetPreviousEvents();
		startSound();
		
		button_play_status = 'pause';
	}
}

function ok() {
	fired = false;
	$('body').css('background', 'white');
	$('audio').remove();
}

function stopSound() {
	$('audio').remove();
	
	$('body').css('background', 'white');
	redBackground = false;
	
	running = false;
	fired = false;
}

function startSound() {
	//running = true;
}

function forgetPreviousEvents() {
	jQuery.post ("../../ajax.php",
		{"page" : "operation/events/events",
			"get_events_fired": 1,
			"id_group": group,
			"alert_fired": alert_fired,
			"critical": critical,
			"warning": warning,
			"id_row": id_row
		},
		function (data) {
			firedId = parseInt(data['fired']);
			if (firedId != 0) {
				id_row = firedId;
			}
			running = true;
		},
		"json"
	);
}

function check_event() {
	if (running) {
		if (!fired) {
			jQuery.post ("../../ajax.php",
				{"page" : "operation/events/events",
					"get_events_fired": 1,
					"id_group": group,
					"alert_fired": alert_fired,
					"critical": critical,
					"warning": warning,
					"id_row": id_row
				},
				function (data) {
					firedId = parseInt(data['fired']);
					if (firedId != 0) {
						id_row = firedId;
						fired = true;
						$('body').append("<audio src='../../" + data['sound'] + "' autoplay='true' hidden='true' loop='true'>");
					}
				},
				"json"
			);
		}
	}
}

function animation() {
	if (fired) {
		window.focus();
		if (redBackground) {
			redBackground = false;
			$('body').css('background', 'white');
			//~ window.moveBy(5, 0);
		}
		else {
			redBackground = true;
			$('body').css('background-color', 'red');
			//~ window.moveBy(-5, 0);
		}
	}
}

$(document).ready (function () {
	setInterval("check_event()", (10 * 1000)); //10 seconds between ajax request
	setInterval("animation()", (0.1 * 1000)); 
});
</script>
<?php
echo "</body>";
echo "</html>";
?>