$(document).ready(function ()
{
	// Воспроизведение
		var reg=/\#play/;
		if (reg_arr=reg.exec(window.location))
		{
			no_visitor=1;
			alert('no_visitor');
		}
	// Воспроизведение End
	
	// Запись
		if (no_visitor!=1)
		{
			last_rec_data=new Date();
			visitor=$("<div></div>").hide();
			$('body').append(visitor).mouseleave(visitor_ping).mousedown(visitor_ping);
			$(visitor).visitor();
			$('body').visitor_rec();
		}
	// Запись End
});

var no_visitor=0;

// Visitor
	var visitor;
	var visitor_seconds=0;
	var visitor_hit_seconds=0;
	var visitor_first_val='&screen='+screen.width+'x'+screen.height;
	
	jQuery.fn.visitor=function ()
	{
		$(this).everyTime(1000, 'every_sec', function ()
		{
			visitor_seconds++;
			visitor_hit_seconds++;
			//test(visitor_hit_seconds);
		}).visitor_every_min();
		
		return this;
	};
// Visitor End

// Ping
	var visitor_ping=function (e)
	{
		if ((und(rec[rec_i]))&&(rec[rec_i].length>1)) // Если есть запись
		{
			var _get='_visitor_ping.php?visitor_hit='+visitor_hit+'&visitor_s='+visitor_s;
			
			// Первые данные (разрешение экрана
				if (visitor_first_val!='')
				{
					_get+=visitor_first_val;
					visitor_first_val='';
				}
			// Первые данные (разрешение экрана End
			
			// Post
				$.post(_get, {
					visitor_sec:visitor_seconds,
					visitor_hit_sec:visitor_hit_seconds,
					rec:{i:rec_i, rec:rec[rec_i]}
				}
				, function (ob)
				{
					//test(ob);
				});
			// Post End
			
			new_rec_blok(); // Новый блок записи
			visitor_seconds=0; 
			$(visitor).visitor_every_min();
			//test(visitor_hit_seconds+' ping');
		}
	};
// Ping End

// Rec
	var rec=new Array();
	var rec_i=0;
	rec[rec_i]=new Array();
	
	var last_top=0, last_left=0;
	
	jQuery.fn.visitor_rec=function ()
	{
		var _body=this;
		
		visitor_resize();
		$(window).resize(function () { visitor_resize(); });
		
		// Move
			$(_body).mousemove(function (e)
			{
				visitor_rec_add({
					x:e.pageX,
					y:e.pageY
				});
				
				// scroll
					var _top=$(document).scrollTop();
					var _left=$(document).scrollLeft();
					if ((_top!=last_top)||(_left!=last_left))
					{
						last_left=_left;
						last_top=_top;
						
						visitor_rec_add({
							t:_top,
							l:_left
						});
					}
				// scroll End
			})
		// Move End
		
		// Down
			.mousedown(function ()
			{
				visitor_rec_add({
					a:'down'
				});
			})
		// Down End
		
		// Up
			.mouseup(function ()
			{
				visitor_rec_add({
					a:'up'
				});
				visitor_ping();
			})
		// Up End
		
		// Hover
			.hover(function ()
			{
				visitor_rec_add({
					a:'over'
				});
			}
			,function ()
			{
				visitor_rec_add({
					a:'out'
				});
			});
		// Hover End
		
		// Input
			$(":input").each(function (i)
			{
				// Focus
					$(this).focus(function ()
					{
						visitor_rec_add({
							a:'input_focus',
							input_i:i
						});
					});
				// Focus End
				
				// Change
					if ($(this).is(":checkbox"))
					{
						$(this).change(function ()
						{
							visitor_rec_add({
								a:'input_checked',
								input_i:i,
								checked:$(this).is(":checked")
							});
						});
					}
				// Change End
				
				// Text
					if (($(this).is(":text")||($(this).is("textarea"))))
					{
						$(this).change(function()
						{
							visitor_rec_add({
								a:'input_text',
								input_i:i,
								text:$(this).val()
							});
						});
					}
				// Text End
			});
		// Input End
		
		// Scroll
			$(window).scroll(function ()
			{
				var _left=$(document).scrollLeft();
				var _top=$(document).scrollTop();
				
				last_left=_left;
				last_top=_top;
				
				visitor_rec_add({
					t:_top,
					l:_left
				});
				//test('scroll='+$(document).scrollTop());
			});
		// Scroll End
		
		// Dop Click
			$(".visitor_click").click(function ()
			{
				visitor_rec_add({
					a:'visitor_click',
					id:$(this).attr("id")
				});
			});
		// Dop Click ENd
		
		return this;
	};
// Rec End

// Rec Add
	var last_rec_data=-1;
	
	function visitor_rec_add(ob)
	{
		// Mili
			if (last_rec_data!=-1)
			{
				var _new_rec_data=new Date();
				var _mili=_new_rec_data.getTime() - last_rec_data;
				if (_mili<0) { _mili=_mili*(-1); }
				ob.m=_mili;
			}
		// Mili End
		
		var _echo='';
		for(n in ob)
		{
			if (_echo!='') { _echo+=', '; }
			_echo+=n+': '+ob[n];
		}
		//test(_echo);
		
		rec[rec_i].push(ob);
		last_rec_data=_new_rec_data.getTime();
	}
// Rec Add End

// Resize
	function visitor_resize()
	{
		visitor_rec_add({
			width:$(window).width(),
			height:$(window).height()
		});
		//$("#test_h").height($(window).height()).html($(window).height());
	}
// Resize End

// New Rec Blok
	function new_rec_blok()
	{
		rec_i++;
		rec[rec_i]=new Array();
	}
// New Rec Blok End

// Every Min
	jQuery.fn.visitor_every_min=function ()
	{
		$(this).stopTime('every_min').oneTime(1000*10, 'every_min', function ()
		{
			visitor_ping();
		});
		
		return this;
	};
// Every Min End
