function MapsSystemMiniMap(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.LineColor	= '#ff0000';  
	obj.LineSize	= 1;  
	obj.BoxColor	= '#0000ff';  
	
	//---------------------------------------------
	obj.CreateBox = function(x, y, w, h) // rysyje miniature..... x, y, sze, wys, gribosc lini
	//---------------------------------------------
	{
		var dl = (w-(5*obj.LineSize));
		var wy = (h-(4*obj.LineSize));

		if(dl < 3*obj.LineSize) { dl = 3*obj.LineSize;	w = dl+(5*obj.LineSize);}
		if(wy < 3*obj.LineSize) { wy = 3*obj.LineSize;	h = wy+(4*obj.LineSize);}

		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.LineSize+'px; left:'+(obj.LineSize*3)+'px; width:'+dl+'px; height:'+obj.LineSize+'px; overflow:hidden; background:'+obj.LineColor+';"></div>'
							+'<div id="IdLineB" style="position:absolute; visibility:visible; display:block; top:'+(h-(obj.LineSize*2))+'px; left:'+obj.LineSize*2+'px; width:'+dl+'px; height:'+obj.LineSize+'px; overflow:hidden; background:'+obj.LineColor+';"></div>'
							+'<div id="IdLineL" style="position:absolute; visibility:visible; display:block; top:'+(obj.LineSize*3)+'px; left:'+obj.LineSize+'px; width:'+obj.LineSize+'px; height:'+wy+'px; overflow:hidden; background:'+obj.LineColor+';"></div>'
							+'<div id="IdLineR" style="position:absolute; visibility:visible; display:block; top:'+obj.LineSize+'px; left:'+(w-(obj.LineSize*2))+'px; width:'+obj.LineSize+'px; height:'+wy+'px; overflow:hidden; background:'+obj.LineColor+';"></div>'
						+'</div>'
						+'<div id="IdBox1" style="position:absolute; visibility:visible; display:block; top:0px; left:0px; width:'+(3*obj.LineSize)+'px; height:'+(3*obj.LineSize)+'px; overflow:hidden; background:'+obj.BoxColor+'; cursor:nw-resize;z-index:2;" onMouseDown="BoxMouseDown(0);"></div>'
						+'<div id="IdBox2" style="position:absolute; visibility:visible; display:block; top:'+(h-(3*obj.LineSize))+'px; left:'+(w-(3*obj.LineSize))+'px; width:'+(3*obj.LineSize)+'px; height:'+(3*obj.LineSize)+'px; overflow: hidden; background:'+obj.BoxColor+'; cursor:nw-resize; z-index:2;" onMouseDown="BoxMouseDown(1);"></div>'
					+'</div>';
		
		
		advMaps.xInnerHtml(advMaps.IdFrameMaps, obj.DivMinMapsBox, 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) 
		{
			obj.TrackXtmp = obj.TrackX + advMaps.MouseX-advMaps.MouseOldX; if(obj.TrackXtmp < 0 ) obj.TrackXtmp = 0; else if(obj.TrackXtmp > (obj.DivMinMapsWidth-obj.PoleW))  obj.TrackXtmp = obj.DivMinMapsWidth-obj.PoleW;
			obj.TrackYtmp = obj.TrackY + advMaps.MouseY-advMaps.MouseOldY; if(obj.TrackYtmp < 0 ) obj.TrackYtmp = 0; else if(obj.TrackYtmp > (obj.DivMinMapsHeight-obj.PoleH)) obj.TrackYtmp = obj.DivMinMapsHeight-obj.PoleH;
			advMaps.xMoveTo(advMaps.IdFrameMaps, 'IdPole', obj.TrackXtmp, obj.TrackYtmp);
		} 
		else if(obj.Moving && obj.Resize)
		{
			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.DivMinMapsWidth) obj.PoleWtmp = obj.DivMinMapsWidth-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.DivMinMapsHeight) obj.PoleHtmp = obj.DivMinMapsHeight-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.DivMinMapsWidth-obj.PoleWtmp))  obj.TrackXtmp = obj.DivMinMapsWidth-obj.PoleWtmp;
					obj.TrackYtmp = obj.TrackY + dy; if(obj.TrackYtmp < 0 ) obj.TrackYtmp = 0; else if(obj.TrackYtmp > (obj.DivMinMapsHeight-obj.PoleHtmp)) obj.TrackYtmp = obj.DivMinMapsHeight-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.DivMinMapsParam[3] - obj.DivMinMapsParam[1])/(obj.DivMinMapsParam[2] - obj.DivMinMapsParam[0]));
			var dwy = Math.abs((obj.DivMinMapsParam[7] - obj.DivMinMapsParam[5])/(obj.DivMinMapsParam[6] - obj.DivMinMapsParam[4]));
			
			var x = Math.round(obj.TrackX + obj.PoleW/2);
			var y = Math.round(obj.TrackY + obj.PoleH/2);

			var txa = (obj.DivMinMapsParam[2] - obj.DivMinMapsParam[0]) / (obj.DivMinMapsParam[3]-obj.DivMinMapsParam[1]);
			var txb = (obj.DivMinMapsParam[0] - txa * obj.DivMinMapsParam[1]);
			var tya = (obj.DivMinMapsParam[6] - obj.DivMinMapsParam[4]) / (obj.DivMinMapsParam[7]-obj.DivMinMapsParam[5]);
			var tyb = (obj.DivMinMapsParam[4] - tya * obj.DivMinMapsParam[5]);
			

			obj.Moving = false;
			obj.Resize  = false;

			//alert(Math.round((x-txb)/txa)+' '+Math.round((y-tyb)/tya)+' '+ dwx+' '+ obj.PoleW+' '+dwy+' '+ obj.PoleH);
			advMaps.MapsGoXcYcWxWy(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.DivMinMapsParam[2] - obj.DivMinMapsParam[0]) / (obj.DivMinMapsParam[3]-obj.DivMinMapsParam[1]);
		var txb = (obj.DivMinMapsParam[0] - txa * obj.DivMinMapsParam[1]);
		var Mx1 = Math.round((advMaps.MapsMx*txa)+txb); if(Mx1 < 0) Mx1 = 0; else if(Mx1+3 > obj.DivMinMapsWidth) Mx1 = obj.DivMinMapsWidth-3;
		var Mx2 = Math.round(((advMaps.MapsMx+advMaps.MapsMw)*txa)+txb); if(Mx2 < 0) Mx2 = 0; else if(Mx2+3 > obj.DivMinMapsWidth) Mx2 = obj.DivMinMapsWidth-3;
		var MxW = (Mx2-Mx1); if(MxW < 3) MxW = 3;

		var tya = (obj.DivMinMapsParam[6] - obj.DivMinMapsParam[4]) / (obj.DivMinMapsParam[7]-obj.DivMinMapsParam[5]);
		var tyb = (obj.DivMinMapsParam[4] - tya * obj.DivMinMapsParam[5]);
		var My1 = Math.round(((advMaps.MapsMy+(advMaps.MapsMw*(advMaps.MapsIh/advMaps.MapsIw)))*tya)+tyb); if(My1 < 0) My1 = 0; else if(My1+3 > obj.DivMinMapsHeight) My1 = obj.DivMinMapsHeight-3;
		var My2 = Math.round((advMaps.MapsMy*tya)+tyb); if(My2 < 0) My2 = 0; else if(My2 > obj.DivMinMapsHeight) My2 = obj.DivMinMapsHeight;
		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;
}