function MapMiniMap(advMaps)
{
	var obj = new Object();

	obj.ResizeType  = 0;
	obj.Resize		= false;
	obj.Moving		= false;
	obj.TrackX		= 20;
	obj.TrackY		= 20;
	obj.TrackXtmp	= 0;
	obj.TrackYtmp	= 0;
	obj.PoleW		= 30;
	obj.PoleH		= 50;
	obj.PoleWtmp	= 0;
	obj.PoleHtmp	= 0;

	obj.Div			=	new Array('', 'DivMiniMap', 'MiniMapBox', 100, 100, '#ff0000', 1, '#0000ff'); // IdFrame, DivBody, DivBox, MiniMapWidth, MiniMapHeight, kolor lini, grubosc lini w pix - automatycznie powieksza kwadrat, kolor kwadratów
	obj.Param		=	new Array(0, 45000, 100, 55000, 0, 45000, 100, 55000); // koordynaty dla miniatury (imgx1, wspx1, imgx2, wspx2, imgy1, wspy1, imgy2, wspy2) - koordynaty do liniowej interpolacji czyli punkt o wspo na IMG x1, y1 posiada wspolrzedne wspx1, wspy1


	//---------------------------------------------
	obj.CreateBox = function(x, y, w, h) // rysyje miniature..... x, y, sze, wys, gribosc lini
	//---------------------------------------------
	{
		
		
		//alert(obj.Param[1]+' '+x+' '+y+' '+w+' '+h);
		
		if(!obj.Div[1]) return;


		var dl = (w-(5*obj.Div[6]));
		var wy = (h-(4*obj.Div[6]));

		if(dl < 3*obj.Div[6]) { dl = 3*obj.Div[6];	w = dl+(5*obj.Div[6]);}
		if(wy < 3*obj.Div[6]) { wy = 3*obj.Div[6];	h = wy+(4*obj.Div[6]);}

		var html =	'<div id="IdPole" style="position:absolute; visibility:visible; display:block; top:'+y+'px; left:'+x+'px; width:'+w+'px; height:'+h+'px;">'
						+'<div id="IdBoxLine" style="position:absolute; visibility:visible; display:block; top:0px; left:0px; width:'+w+'px; height:'+h+'px; cursor:move; z-index:1;" onMouseDown="BoxLineMouseDown();">'
							+'<div id="IdLineT" style="position:absolute; visibility:visible; display:block; top:'+obj.Div[6]+'px; left:'+(obj.Div[6]*3)+'px; width:'+dl+'px; height:'+obj.Div[6]+'px; overflow:hidden; background:'+obj.Div[5]+';"></div>'
							+'<div id="IdLineB" style="position:absolute; visibility:visible; display:block; top:'+(h-(obj.Div[6]*2))+'px; left:'+obj.Div[6]*2+'px; width:'+dl+'px; height:'+obj.Div[6]+'px; overflow:hidden; background:'+obj.Div[5]+';"></div>'
							+'<div id="IdLineL" style="position:absolute; visibility:visible; display:block; top:'+(obj.Div[6]*3)+'px; left:'+obj.Div[6]+'px; width:'+obj.Div[6]+'px; height:'+wy+'px; overflow:hidden; background:'+obj.Div[5]+';"></div>'
							+'<div id="IdLineR" style="position:absolute; visibility:visible; display:block; top:'+obj.Div[6]+'px; left:'+(w-(obj.Div[6]*2))+'px; width:'+obj.Div[6]+'px; height:'+wy+'px; overflow:hidden; background:'+obj.Div[5]+';"></div>'
						+'</div>'
						+'<div id="IdBox1" style="position:absolute; visibility:visible; display:block; top:0px; left:0px; width:'+(3*obj.Div[6])+'px; height:'+(3*obj.Div[6])+'px; overflow:hidden; background:'+obj.Div[7]+'; cursor:nw-resize;z-index:2;" onMouseDown="BoxMouseDown(0);"></div>'
						+'<div id="IdBox2" style="position:absolute; visibility:visible; display:block; top:'+(h-(3*obj.Div[6]))+'px; left:'+(w-(3*obj.Div[6]))+'px; width:'+(3*obj.Div[6])+'px; height:'+(3*obj.Div[6])+'px; overflow: hidden; background:'+obj.Div[7]+'; cursor:nw-resize; z-index:2;" onMouseDown="BoxMouseDown(1);"></div>'
					+'</div>';


		advMaps.xInnerHtml(obj.Div[0], obj.Div[1], html);

	}

	//---------------------------------------------
	obj.BoxMouseDown = function(t)
	//---------------------------------------------
	{
		advMaps.MouseOldX = advMaps.MouseX;
		advMaps.MouseOldY = advMaps.MouseY;
		obj.ResizeType  = t;
		obj.Resize  = true;
		obj.Moving = true;

	}

	//---------------------------------------------
	obj.BoxLineMouseDown = function()
	//---------------------------------------------
	{
		advMaps.MouseOldX = advMaps.MouseX;
		advMaps.MouseOldY = advMaps.MouseY;
		obj.Moving = true;
		obj.Resize  = false;
		return ;
	}

	//---------------------------------------------
	obj.DocumentMouseMove = function()
	//---------------------------------------------
	{
		if(obj.Moving && !obj.Resize)
		{
			advMaps.MapSetFormsScaleFocus();
			obj.TrackXtmp = obj.TrackX + advMaps.MouseX-advMaps.MouseOldX; if(obj.TrackXtmp < 0 ) obj.TrackXtmp = 0; else if(obj.TrackXtmp > (obj.Div[3]-obj.PoleW))  obj.TrackXtmp = obj.Div[3]-obj.PoleW;
			obj.TrackYtmp = obj.TrackY + advMaps.MouseY-advMaps.MouseOldY; if(obj.TrackYtmp < 0 ) obj.TrackYtmp = 0; else if(obj.TrackYtmp > (obj.Div[4]-obj.PoleH)) obj.TrackYtmp = obj.Div[4]-obj.PoleH;
			advMaps.xMoveTo(obj.Div[0], 'IdPole', obj.TrackXtmp, obj.TrackYtmp);
		}
		else if(obj.Moving && obj.Resize)
		{
			advMaps.MapSetFormsScaleFocus();
			if(obj.ResizeType == 1)
			{
				obj.PoleWtmp = parseInt(obj.PoleW + (advMaps.MouseX-advMaps.MouseOldX)); if(obj.PoleWtmp < 15 ) obj.PoleWtmp = 15; else if((obj.TrackX + obj.PoleWtmp) > obj.Div[3]) obj.PoleWtmp = obj.Div[3]-obj.TrackX;
				obj.PoleHtmp = parseInt(obj.PoleH + (advMaps.MouseY-advMaps.MouseOldY)); if(obj.PoleHtmp < 15 ) obj.PoleHtmp = 15; else if((obj.TrackY + obj.PoleHtmp) > obj.Div[4]) obj.PoleHtmp = obj.Div[4]-obj.TrackY;
				obj.CreateBox(obj.TrackX, obj.TrackY, obj.PoleWtmp, obj.PoleHtmp);
			}
			else
			{
				var dx = advMaps.MouseX-advMaps.MouseOldX;
				var dy = advMaps.MouseY-advMaps.MouseOldY;
				obj.PoleWtmp = obj.PoleW-dx; if(obj.PoleWtmp < 15 ) obj.PoleWtmp = 15;
				obj.PoleHtmp = obj.PoleH-dy; if(obj.PoleHtmp < 15 ) obj.PoleHtmp = 15;

				if(obj.PoleWtmp > 15 && obj.PoleHtmp > 15 )
				{
					obj.TrackXtmp = obj.TrackX + dx; if(obj.TrackXtmp < 0 ) obj.TrackXtmp = 0; else if(obj.TrackXtmp > (obj.Div[3]-obj.PoleWtmp))  obj.TrackXtmp = obj.Div[3]-obj.PoleWtmp;
					obj.TrackYtmp = obj.TrackY + dy; if(obj.TrackYtmp < 0 ) obj.TrackYtmp = 0; else if(obj.TrackYtmp > (obj.Div[4]-obj.PoleHtmp)) obj.TrackYtmp = obj.Div[4]-obj.PoleHtmp;
					obj.CreateBox(obj.TrackXtmp, obj.TrackYtmp, obj.PoleWtmp, obj.PoleHtmp);
				}
			}
		}
	}

	//---------------------------------------------
	obj.DocumentMouseUp = function()
	//---------------------------------------------
	{
		if(obj.Moving)
		{

			if(!obj.Resize)
			{
				obj.TrackX	= obj.TrackXtmp;
				obj.TrackY	= obj.TrackYtmp;
			}
			else
			{
				if(obj.ResizeType == 1)
				{
					obj.PoleW	= obj.PoleWtmp;
					obj.PoleH	= obj.PoleHtmp;
				}
				else
				{
					obj.TrackX	= obj.TrackXtmp;
					obj.TrackY	= obj.TrackYtmp;
					obj.PoleW	= obj.PoleWtmp;
					obj.PoleH	= obj.PoleHtmp;
				}
			}

			//if(obj.Moving && obj.Resize)

			var dwx = Math.abs((obj.Param[3] - obj.Param[1])/(obj.Param[2] - obj.Param[0]));
			var dwy = Math.abs((obj.Param[7] - obj.Param[5])/(obj.Param[6] - obj.Param[4]));

			var x = Math.round(obj.TrackX + obj.PoleW/2);
			var y = Math.round(obj.TrackY + obj.PoleH/2);

			var txa = (obj.Param[2] - obj.Param[0]) / (obj.Param[3]-obj.Param[1]);
			var txb = (obj.Param[0] - txa * obj.Param[1]);
			var tya = (obj.Param[6] - obj.Param[4]) / (obj.Param[7]-obj.Param[5]);
			var tyb = (obj.Param[4] - tya * obj.Param[5]);

			obj.Moving = false;
			obj.Resize  = false;

			advMaps.MapGoXcYcWxWy(Math.round((x-txb)/txa),Math.round((y-tyb)/tya), Math.round(dwx*obj.PoleW), Math.round(dwy*obj.PoleH));
		}
	}

	//---------------------------------------------
	obj.ComputeBox = function()
	//---------------------------------------------
	{

		var txa = (obj.Param[2] - obj.Param[0]) / (obj.Param[3]-obj.Param[1]);
		var txb = (obj.Param[0] - txa * obj.Param[1]);
		var Mx1 = Math.round((advMaps.MapMx*txa)+txb); if(Mx1 < 0) Mx1 = 0; else if(Mx1+3 > obj.Div[3]) Mx1 = obj.Div[3]-3;
		var Mx2 = Math.round(((advMaps.MapMx+advMaps.MapMw)*txa)+txb); if(Mx2 < 0) Mx2 = 0; else if(Mx2+3 > obj.Div[3]) Mx2 = obj.Div[3]-3;
		var MxW = (Mx2-Mx1); if(MxW < 3) MxW = 3;

		var tya = (obj.Param[6] - obj.Param[4]) / (obj.Param[7]-obj.Param[5]);
		var tyb = (obj.Param[4] - tya * obj.Param[5]);
		var My1 = Math.round(((advMaps.MapMy+(advMaps.MapMw*(advMaps.MapIh/advMaps.MapIw)))*tya)+tyb); if(My1 < 0) My1 = 0; else if(My1+3 > obj.Div[4]) My1 = obj.Div[4]-3;
		var My2 = Math.round((advMaps.MapMy*tya)+tyb); if(My2 < 0) My2 = 0; else if(My2 > obj.Div[4]) My2 = obj.Div[4];
		var MyW = (My2-My1); if(MyW < 3) MyW = 3;

		obj.TrackX	= Mx1;
		obj.TrackY	= My1;
		obj.PoleW	= MxW;
		obj.PoleH	= MyW;

		
		obj.CreateBox(obj.TrackX, obj.TrackY, obj.PoleW, obj.PoleH);
	}


	return obj;
}