
function MapTv(map_tv_id, pan_area_id)
{
	var me = this;

	this.map_tv = E(map_tv_id);
	this.pan_area = E(pan_area_id);



	
	// visu slāņu bīdīšana	
	this.map_tv.onmousedown = MouseDown;
	if (document.addEventListener) // ff
	{
		document.addEventListener("mouseup", MouseUp, false);
		document.addEventListener("mousemove", MouseMove, false);
	} 
	else if (document.attachEvent) // ie
	{
		document.attachEvent("onmouseup", MouseUp);
		document.attachEvent("onmousemove", MouseMove);
	}


	this.pan_mode = true;

	var drag_start_x;
	var drag_start_y;
	var dragging = false;
	function MouseDown(event)
	{
		if (me.pan_mode == false) return;

		// pieglabājam bildes koordinātes pie peles nospiešanas
		me.pan_area.drag_start_left = ObjectLeft(me.pan_area);
		me.pan_area.drag_start_top = ObjectTop(me.pan_area);

		// iegūst un pieglabā kursora sākuma koordinātes
		drag_start_x = pointerX(event);
		drag_start_y = pointerY(event);

		// atzīmējam, ka sākusies panošana
		dragging = true;
	}
	
	function MouseMove(event)
	{
		if (me.pan_mode == false) return;

		if (dragging == true) 
		{
			// iegūst un pieglabā kursora sākuma koordinātes
			var pointer_x = pointerX(event);
			var pointer_y = pointerY(event);

			// kopējā nobīde no peles klikšķa
			var offset_left = pointer_x - drag_start_x;
			var offset_top = pointer_y - drag_start_y;

			// aprēķina jaunās nobīdes
			var left = me.pan_area.drag_start_left + offset_left;
			var top = me.pan_area.drag_start_top + offset_top;




			// bildi ļauj bīdīt tā, lai jebkurš tās stūris varētu atrasties karšu tv vidū
			// tas nodrošina to, ka zūmējoties pa līmeņiem, būs iespējams saglabāt kartes centru

			// iekšējā rāmja izmēri, lai zinātu, pa kurieni atļaut bīdīties
			var region_width = ObjectWidth(me.map_tv);
			var region_height = ObjectHeight(me.map_tv);

			// labo malu atļauj bīdīt līdz rāmja vidum
			if (left > region_width/2) { left = region_width/2; }

			// kreiso malu ļauj bīdīt līdz rāmja vidum
			var min_left = 0 - image_move.ImageWidth() + region_width/2;
			if (left < min_left) { left = min_left; }

			// augšu ļauj bīdīt līdz rāmja vidum
			if (top > region_height/2) { top = region_height/2; }

			// apakšu ļauj bīdīt līdz vidum
			var min_top = 0 - image_move.ImageHeight() + region_height/2;
			if (top < min_top) { top = min_top; }

			me.pan_area.style.left = left + "px";
			me.pan_area.style.top = top + "px";
			return;



			// iegūst iekšējā rāmja platumu, par kuru ļaut bīdīties
			// ja platums ir lielāks par bildi, tad bildi neizlaižam no rāmjiem
			// ja platums ir mazāks par bildes platumu, tad bildi neielaižam iekšā
			var region_width = ObjectWidth(me.map_tv) - 0 - 0;
			if (region_width >= image_move.ImageWidth())
			{
				if (left < 0) left = 0;
				var max_left = ObjectWidth(me.map_tv) - image_move.ImageWidth() - 0;
				if (left > max_left) left = max_left;
			}
			else
			{
				if (left > 50) left = 50;
				var min_left = 0 - image_move.ImageWidth() + ObjectWidth(me.map_tv) - 50;
				if (left < min_left) left = min_left;
			}

			var region_height = ObjectHeight(me.map_tv) - 0 - 0;
			if (region_height >= image_move.ImageHeight())
			{
				if (top < 0) top = 0;
				var max_top = ObjectHeight(me.map_tv) - image_move.ImageHeight() - 0;
				if (top > max_top) top = max_top;
			}
			else
			{
				if (top  > 50) top  = 50;
				var min_top = 0 - image_move.ImageHeight() + ObjectHeight(me.map_tv) - 50;
				if (top < min_top) top = min_top;
			}


			

			me.pan_area.style.left = left + "px";
			me.pan_area.style.top = top + "px";
			//alert(E('pan_area').style.top);
		}
	}

	
	function MouseUp(event)
	{
		dragging = false;
	}










	
	WheelListener(this.map_tv); // klausamies skrolli
	function WheelListener(object)
	{
		if (window.addEventListener)
		{
			object.addEventListener('DOMMouseScroll', WheelEvent, false);
			object.onmousewheel = WheelEvent;
		}
		else
		{
			object.onmousewheel = WheelEvent;
		}
	}
	function WheelEvent(event)
	{
		if (!event) event = window.event;

		var delta = 0;
		if (event.wheelDelta) // IE/Opera
			delta = event.wheelDelta/120;
		else if (event.detail) // Mozilla case
			delta = -event.detail/3;

		if (delta) WheelHandle(delta);

		if (event.preventDefault) event.preventDefault();
		event.returnValue = false;
		return false;

	}
	function WheelHandle(delta)
	{
		if (delta < 0) 
			image_move.ZoomOut();
		else
			image_move.ZoomIn();

		// izraisa notikumu
		me.event_zoom_changed.Fire();
	}



	this.event_zoom_changed = new Event();





}

