/**
 * Webcamera JavaScript for Website of HSDN Project
 *
 * Author (C) 2011 Nikolay V Ispanyuk <nikolay.i@hsdn.org> 
 * Copyright (C) 2011 Information Networks Ltd. <info@informnets.ru> 
 */

$(document).ready(function() 
{
	// Image parameters
	var fr = $('select#fr');
	var quality = $('select#quality');
	var resolution = $('select#resolution');
	var camera_image = $('img#camera_image');
	var blank_image = $('img#blank_image');

	// Rotate camera
	var control = $('.control');
	
	// Camera views
	var number_views = $('span#number_views');
	var list_views = $('div#list_views');

	// Default time interval
	var temp_time = setTimeout(function()
	{
		updateCamera();  
	}, 100);


	/**
	 * Set update interval
	 *
	 * @return	void
	 */
	fr.change(function () 
	{
		setTimer();
	});

	/**
	 * Set image quality
	 *
	 * @return	void
	 */
	quality.change(function () 
	{
		updateCamera();
	});

	/**
	 * Set image resolution
	 *
	 * @return	void
	 */
	resolution.change(function () 
	{
		updateCamera();
	});

	/**
	 * Image click selector
	 *
	 * @return	void
	 */
	blank_image.click(function() 
	{
		updateCamera();
	});

	/**
	 * Move camera click selector
	 *
	 * @return	void
	 */
	control.click(function() 
	{
		moveCamera($(this).attr('id'));

		return false;
	});

	/**
	 * Move ptz camera
	 *
	 * @return	void
	 */
	function moveCamera(act)
	{
		// Camera rotate URL
		var url = j_site_prefix + '/webcam/rotate/' + j_webcam_name + '/' + act;

		$.get(
			url, '',
			function (result) 
			{
				updateCamera();  
			},
			'json'
		);
	}

	/**
	 * Update image
	 *
	 * @return	void
	 */
	function updateCamera()
	{
		if (fr.val() == undefined)
		{
			return;
		}

		// Image resolution
		var res = resolution.val().split('x');

		// Current date
		var date = new Date();

		camera_image.attr({ 
			src: j_webcam_base + j_webcam_name + '/' + resolution.val() + '/' + quality.val() + '.jpg?' + date.getTime().toString(10),
			width: res[0],
			height: res[1]
		});

		blank_image.attr({ 
			width: res[0],
			height: res[1]
		});

		setTimer();
		upadteViews();
		upadteList();
	}

	/**
	 * Update image
	 *
	 * @return	void
	 */
	function setTimer()
	{
		// Image update interval
		var fr_mseconds = fr.val() * 1000;

		if (temp_time != undefined)
		{
			clearTimeout(temp_time);
		}

		temp_time = setTimeout(function()
		{
			updateCamera();  
		}, fr_mseconds);
	}

	/**
	 * Update views counter
	 *
	 * @return	void
	 */
	function upadteViews()
	{
		// Current number of views URL
		var url = j_ajax_base + 'number_views/' + j_webcam_name;
	
		$.get(
			url, '',
			function (result) 
			{
				if (result != undefined)
				{
					number_views.html(result.number_views);
				}
			},
			'json'
		);
	}

	/**
	 * Update views list
	 *
	 * @return	void
	 */
	function upadteList()
	{
		// Current number of views URL
		var url = j_ajax_base + 'list_views/' + j_webcam_name;
	
		$.get(
			url, '',
			function (result) 
			{
				if (result != undefined)
				{
					var list = '<ul>';

					for (var key in result.list_views) 
					{
						var value = result.list_views[key];

						list += '<li><a href="http://noc.hsdn.org/whois.phtml?host=' + value['client_ip'] + '" target="_blank" title="' + value['client_name'] + '">' + value['client_ip'] + '</a>' + value['client_descr'] + '</li>';
					}

					list += '</ul>';
					
					list_views.html(list);
				}
			},
			'json'
		);
	}

	updateCamera();
});

/* End of file */
