
function MapsSystem()
{
	var obj = new Object();

	obj.MsgTxt	= new Object(); 
	obj.MsgTxt.Map				= new Array('Czekaj...', 'en: Czekaj');
	obj.MsgTxt.MapError			= new Array('Nie można odczytać danych...', 'en: Nie można odczytać danych...');
	obj.MsgTxt.MapPing1			= new Array('Próba nawiązania połączenia z serwerem ISDP<br><b>CZEKAJ</b>', 'EN: Próba nawiązania połączenia z serwerem ISDP<br><b>CZEKAJ</b>');
	obj.MsgTxt.MapPing2			= new Array('Połączono z serwerem ISDP<br>Wersja serwera:', 'EN: Połączono z serwerem ISDP<br>Wersja serwera:');
	obj.MsgTxt.MapPing3			= new Array('Nie można połączyć się z serwerem ISDP<br>Komunikat błędu: ', 'Nie można połączyć się z serwerem ISDP:');
	obj.MsgTxt.MapGetLayers1	= new Array('Brak elementu strukturalnego [advMAP.ProgLayers]: ', 'Brak elementu strukturalnego [advMAP.ProgLayers]: ');
	obj.MsgTxt.MapGetLayers2	= new Array('<b>Czekaj...</b><br>Czytam dane z serwera ISDP', '<b>Czekaj...</b><br>Czytam dane z serwera ISDP');
	obj.MsgTxt.MapGetLayers3	= new Array('Nie można odczytać danych z serwera ISDP<br>Komunikat błędu:', 'Nie można odczytać danych z serwera ISDP<br>Komunikat błędu:');


	obj.OnLoad =  false;
	obj.Hist =  new Array();
	obj.HistPointer =  -1;
	obj.HistNone =  false;
	obj.OnMove =  false;
	obj.MapsEkranWidth = 0;
	obj.MapsEkranHeight = 0;
	obj.EkranHeight = 0;
	obj.EkranWidth = 0;
	obj.MapsIw = 0;
	obj.MapsIh = 0;
	obj.MapsMx = 0;
	obj.MapsMy = 0;
	obj.MapsMw = 0;
	obj.MapsScale = 0;
	obj.MapsMoveDelta = 3;
	obj.TooltipOn = 1;
	obj.IdLang = 0;
	obj.Timer = 0;
	obj.TimerWGSInfoClear = true;
	obj.WGSInfoTimeOut = 250;

	obj.ProgTrackFind		= new Array('IdDivTrackFind', 'PrefixTrackFind.php'); //wyszukiwanie trasy


	obj.MapsMxPixel = 0;
	obj.TooltipXY = 15;
	obj.TooltipView = false;

	obj.MouseX = 0;
	obj.MouseY = 0;
	obj.MouseOldX = 0;
	obj.MouseOldY = 0;

	obj.StalaDpi = 0.00026458; //stala dpi->metr
	obj.DocumentForms = new Object();

	obj.wgs84_a = 0;
	obj.wgs84_b = 0;
	obj.wgs84_c = 0;
	obj.wgs84_d = 0;
	obj.wgs84_e = 0;
	obj.wgs84_f = 0;


	//----------------------
	// ZARZADZANIE WARSTWAMI
	//----------------------

	//---------------------------------------------
	obj.xGetElementById = function(fr, e)
	//---------------------------------------------
	{
		if(typeof(e)!='string') return e;
		var FrameName = window.self;
		if(fr) FrameName = window.frames[fr];
		if(FrameName.document.getElementById) e=FrameName.document.getElementById(e);
		else if(FrameName.document.all) e=FrameName.document.all[e];
		else e=null;
		return e;

	}

	//---------------------------------------------
	obj.xMoveTo = function(fr, e, iX, iY)
	//---------------------------------------------
	{
		obj.xLeft(fr, e, iX);
		obj.xTop(fr, e, iY);
	}

	//---------------------------------------------
	obj.xWidthHeight = function(fr, e, iX, iY)
	//---------------------------------------------
	{
		obj.xWidth(fr, e, iX);
		obj.xHeight(fr, e, iY);
	}

	//---------------------------------------------
	obj.xWidth = function(fr, e, iX)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return 0;
		var css=obj.xDef(e.style);
		if(css && obj.xStr(e.style.width))
		{
			if(obj.xNum(iX)) e.style.width=iX+'px';
			else
			{
				iX=parseInt(e.style.width);
				if(isNaN(iX)) iX=0;
			}
		}
		else if(css && obj.xDef(e.style.width))
		{
			if(obj.xNum(iX)) e.style.width=iX;
			else iX=e.style.width;
		}
		return iX;
	}

	//---------------------------------------------
	obj.xHeight = function(fr, e, iX)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return 0;
		var css=obj.xDef(e.style);
		if(css && obj.xStr(e.style.height))
		{
			if(obj.xNum(iX)) e.style.height=iX+'px';
			else
			{
				iX=parseInt(e.style.height);
				if(isNaN(iX)) iX=0;
			}
		}
		else if(css && obj.xDef(e.style.height))
		{
			if(obj.xNum(iX)) e.style.height=iX;
			else iX=e.style.height;
		}
		return iX;
	}

	//---------------------------------------------
	obj.xLeft = function(fr, e, iX)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return 0;
		var css=obj.xDef(e.style);
		if(css && obj.xStr(e.style.left))
		{
			if(obj.xNum(iX)) e.style.left=iX+'px';
			else
			{
				iX=parseInt(e.style.left);
				if(isNaN(iX)) iX=0;
			}
		}
		else if(css && obj.xDef(e.style.pixelLeft))
		{
			if(obj.xNum(iX)) e.style.pixelLeft=iX;
			else iX=e.style.pixelLeft;
		}
		return iX;
	}

	//---------------------------------------------
	obj.xTop = function(fr, e, iY)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return 0;
		var css=obj.xDef(e.style);
		if(css && obj.xStr(e.style.top))
		{
			if(obj.xNum(iY)) e.style.top=iY+'px';
			else
			{
				iY=parseInt(e.style.top);
				if(isNaN(iY)) iY=0;
			}
		}
		else if(css && obj.xDef(e.style.pixelTop))
		{
			if(obj.xNum(iY)) e.style.pixelTop=iY;
			else iY=e.style.pixelTop;
		}
		return iY;
	}

	//---------------------------------------------
	obj.xDef = function()
	//---------------------------------------------
	{
		for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
		return true;
	}

	//---------------------------------------------
	obj.xStr = function()
	//---------------------------------------------
	{
		for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='string') return false;}
		return true;
	}

	//---------------------------------------------
	obj.xNum = function()
	//---------------------------------------------
	{
		for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='number') return false;}
		return true;
	}

	//---------------------------------------------
	obj.xSetCursor = function(fr, e, cur)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return ;
		if(e.style.cursor) e.style.cursor = cur;
	}

	//---------------------------------------------
	obj.xDisplayNone = function(fr, e)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return ;
		if(e.style.display) e.style.display = 'none';
	}

	//---------------------------------------------
	obj.xDisplayBlock = function(fr, e)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return ;
		if(e.style.display) e.style.display = 'block';
	}

	//---------------------------------------------
	obj.xShow = function(fr, e) { return obj.xVisibility(fr, e, 1); }
	//---------------------------------------------
	obj.xHide = function(fr, e) { return obj.xVisibility(fr, e, 0); }
	//---------------------------------------------

	//---------------------------------------------
	obj.xVisibility = function(fr, e, bShow)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return null;
		if(e.style && obj.xDef(e.style.visibility))
		{
			if (obj.xDef(bShow)) e.style.visibility = bShow ? 'visible' : 'hidden';
			return e.style.visibility;
		}
		return null;
	}

	//---------------------------------------------
	obj.xInnerHtml = function(fr, e, sHtml)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return '';
		if(obj.xStr(e.innerHTML))
		{
			if(obj.xStr(sHtml)) e.innerHTML = sHtml;
			else return e.innerHTML;
		}
	}

	//---------------------------------------------
	obj.xZIndex = function(fr, e,uZ)
	//---------------------------------------------
	{
		if(!(e=obj.xGetElementById(fr, e))) return 0;
		if(e.style && obj.xDef(e.style.zIndex))
		{
			if(obj.xNum(uZ)) e.style.zIndex=uZ;
			uZ=parseInt(e.style.zIndex);
		}
		return uZ;
	}

	//---------------------------------------------
	obj.initArray = function()
	//---------------------------------------------
	{
		this.length = initArray.arguments.length;
		for (var i = 0; i < this.length; i++) this[i] = initArray.arguments[i];
	}

	// Rysowanie BOX na mapie

	//---------------------------------------------
	obj.MapsMakeLineH = function(x, y, h) { return '<div style="position: absolute; background-color: #FF0000; overflow: hidden; left: '+x+'px; top: '+y+'px; width: 2px; height:'+h+'px;"></div>'; }
	//---------------------------------------------
	obj.MapsMakeLineW = function(x, y, w) { return '<div style="position: absolute; background-color: #FF0000; overflow: hidden; left: '+x+'px; top: '+y+'px; width: '+w+'px; height: 2px;"></div>'; }
	//---------------------------------------------
	obj.MapsMakeRect = function(x1, y1, x2, y2)
	//---------------------------------------------
	{
		var htm	 = '';
		if(y2-y1-1)	htm += obj.MapsMakeLineH(x1, y1, y2-y1-1)	+obj.MapsMakeLineH(x2-1, y1, y2-y1-1);			// os pion lewa
		if(x2-x1-1) htm += obj.MapsMakeLineW(x1+2, y1, x2-x1-1)	+obj.MapsMakeLineW(x1+2, y2-2, x2-x1-1);	// osie poziome
		return htm;
	}

	//---------------------------------------------
	obj.MapsDrawingBox = function() // przesuwanie kursorem po mapie i rysowanie box
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		var txt = obj.MapsMakeRect(((obj.MouseX <= obj.MouseOldX ) ? obj.MouseX : obj.MouseOldX),((obj.MouseY <= obj.MouseOldY ) ? obj.MouseY : obj.MouseOldY),((obj.MouseX > obj.MouseOldX ) ? obj.MouseX : obj.MouseOldX),((obj.MouseY > obj.MouseOldY ) ? obj.MouseY : obj.MouseOldY));	// wyrysuj ramkę....
		obj.xInnerHtml(obj.IdFrameMaps, obj.IdFrameMapsBox, txt); // zapisz ramkę do BOX
		obj.xDisplayBlock(obj.IdFrameMaps,obj.IdFrameMapsBox); // pokaż div BOX
	}

	//---------------------------------------------
	obj.MapsPrint = function() // drukuj mapę
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;

		var sze = screen.width;
		var wys = screen.height;
		var win_x = Math.round((screen.width-sze)/2);
		var win_y = Math.round((screen.height-wys)/2);
		var okno = new Object;
		okno = window.open("print.php?IdProfil="+obj.IdProfil, "_blank", "toolbar=0,location=0,directories=0,status=1,menubar=1,scrollbars=1,resizable=1, height="+wys+",width="+sze+",top="+win_y+",left="+win_x);

	}
	//---------------------------------------------
		obj.MapsPomoc = function()// Pomoc
	//---------------------------------------------
	{
		var sze = 500;
		var wys = 550;
		var win_x = Math.round((screen.width-sze)/2);
		var win_y = Math.round((screen.height-wys)/2);
		var okno = new Object;
		okno = window.open("pomoc.php4", "", "toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=0,resizable=0, height="+wys+",width="+sze+",top="+win_y+",left="+win_x);
		if(parseInt(navigator.appVersion) >= 4) okno.window.focus();
	}
	//---------------------------------------------
	obj.WGS84abcdef = function(a, b, c, d, e, f) // parametry
	//---------------------------------------------
	{
		obj.wgs84_a = new Number(a);
		obj.wgs84_b = new Number(b);
		obj.wgs84_c = new Number(c);
		obj.wgs84_d = new Number(d);
		obj.wgs84_e = new Number(e);
		obj.wgs84_f = new Number(f);
	}

	// MODULY NAWIGACYJNE.

	//---------------------------------------------
	obj.MapsGoToCenter = function() // wywołaj mapę w centralnym punkcie - punkt domyślny zdefiniowany w ISDP punkcie - start MAPY
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		obj.DocumentForms.elements['Maps[m_x]'].value	= obj.DocumentForms.elements['Maps[Def][m_x]'].value;
		obj.DocumentForms.elements['Maps[m_y]'].value	= obj.DocumentForms.elements['Maps[Def][m_y]'].value;
		obj.DocumentForms.elements['Maps[m_w]'].value	= obj.DocumentForms.elements['Maps[Def][m_w]'].value;
		obj.DocumentForms.elements['Maps[scale]'].value = obj.DocumentForms.elements['Maps[Def][scale]'].value;
		obj.MapsRun();
		return ;
	}

	//---------------------------------------------
	obj.MapsGoBxLySep = function(adr) // przejdz pod wspolrzednie LB
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		var a = adr.split('|');
		obj.MapsGoBxLy(a[0], a[1], a[2]);
	}

	//---------------------------------------------
	obj.MapsGoBxLy = function(B, L, Sid) // przejdz pod wspolrzednie LB
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		if(B && L)
		{
			var UniqId = new Date().getTime().toString().substr(5) + Math.floor(Math.random() * 100).toString();
			var cs = obj.DocumentForms.elements['Maps[cs]'].value;
			obj.AjaxObj.get({
				url: "advMapsCoordTransform.php",
				parameters : {"x": L, "y": B, "to_cs" : cs, "UniqId" : UniqId },
				onSuccess : function(obj2) {
												var p = obj2.responseText.split('|');
												obj.MapsGoXxYy(p[0], p[1], Sid);
											},
				onError : function(obj2) {  alert('Błędna konfiguracja planu. Skontaktuj się z administratorem. komunikat błędu: ' + obj2.status);}
			});
		}
	}

	//---------------------------------------------
	obj.MapsGoXxYySep = function(adr) // przejdz pod wspolrzednie LB
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		var a = adr.split('|');
		obj.MapsGoXxYy(a[0], a[1], a[2]);
	}

	//---------------------------------------------
	obj.MapsGoXxYy = function(X, Y, Sid) // przejdz pod wspolrzednie LB
	//---------------------------------------------
	{
		var Mwx = obj.DocumentForms.elements['Maps[m_w]'].value;
		var Mwy = (Mwx * obj.MapsIh / obj.MapsIw);
		obj.MapsGoXcYcWxWy(X, Y, Mwx, Mwy, Sid);
	}

	//---------------------------------------------
	obj.MapsGoXcYcWxWy = function(Xc, Yc, Wx, Wy, Sid) // przesun mapę pod X,Y - cenrtalny punkt prostokąta WxWy - seperator '|'
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		var Mwx = Wx;
		var Mwy = (Mwx * obj.MapsIh / obj.MapsIw);
		if(Wy > Mwy) { Mwy = Wy; Mwx = (Mwy * obj.MapsIw / obj.MapsIh);	if(Wx > Mwx) Mwx = Wx;	}
		var MapsScale = Math.round(Mwx /( obj.StalaDpi * obj.MapsIw));
		if(MapsScale < obj.MapsScaleMin ) {	MapsScale = obj.MapsScaleMin; Mwx = parseInt(MapsScale * obj.StalaDpi * obj.MapsIw); Mwy = (Mwx * obj.MapsIh / obj.MapsIw);	}
		else if(MapsScale > obj.MapsScaleMax ) { MapsScale = obj.MapsScaleMax;	Mwx = parseInt(MapsScale * obj.StalaDpi * obj.MapsIw);	Mwy = (Mwx * obj.MapsIh / obj.MapsIw);	}

		obj.ObjFormScale.value = MapsScale;
		obj.DocumentForms.elements['Maps[scale]'].value = MapsScale;
		obj.DocumentForms.elements['Maps[m_w]'].value	= Mwx;
		obj.DocumentForms.elements['Maps[m_x]'].value	= Xc-Math.round(Mwx/2)
		obj.DocumentForms.elements['Maps[m_y]'].value	= Yc-Math.round(Mwy/2);

		if(Sid)
		{
			obj.DocumentForms.elements['Maps[Sid]'].value = Sid; // włącz selekcję obiektu
			var a = Sid.split(':');  // włącz warstwę by była widoczna
			if(obj.DocumentForms.elements['Maps[Layers]['+a[0]+']']) obj.DocumentForms.elements['Maps[Layers]['+a[0]+']'].checked = true;
		}

		obj.MapsRun();
		return ;
	}



	//---------------------------------------------
	obj.MapGoBxLyXxYxSep = function(adr) // przesun mapę pod X,Y - cenrtalny punkt prostokąta WxWy - seperator '|'
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		var a = adr.split('|');
		
		a[0] = parseFloat(a[0]);
		a[1] = parseFloat(a[1]);
		a[2] = parseFloat(a[2]);
		a[3] = parseFloat(a[3]);

		if(a[2] > 1.0 && a[3] > 1.0) 
		{
			obj.MapsGoXcYcWxWy(a[2], a[3], 500, 500, '');
		}
		else if(a[0] > 1.0 && a[1] > 1.0) 
		{
			Mwx = 500;
			var MapsScale = Math.round(Mwx /( obj.StalaDpi * obj.MapsIw));

			obj.ObjFormScale.value = MapsScale;
			obj.DocumentForms.elements['Maps[scale]'].value = MapsScale;
			obj.DocumentForms.elements['Maps[m_w]'].value	= Mwx;
			
			obj.MapsGoBxLy(a[0], a[1], '');
		}

	}


	//---------------------------------------------
	obj.MapsGoXcYcWxWySep = function(adr) // przesun mapę pod X,Y - cenrtalny punkt prostokąta WxWy - seperator '|'
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		var a = adr.split('|');
		obj.MapsGoXcYcWxWy(a[0], a[1], a[2], a[3], a[4]);
		return ;
	}

	//---------------------------------------------
	obj.MapsRefreshMaps = function() // pokaż okienko o konieczności przerysowania mapy - po zmianie np. włączonych warstw lub zmianie wielkości okna
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		obj.xDisplayBlock(obj.IdFrameMaps, obj.IdFrameRefreshMaps);
		return ;
	}

	//---------------------------------------------
	obj.DocumentFormsGetParam = function() // przeczytaj i zaktualizuj najczesciiej pobieranie zmienne z formularza
	//---------------------------------------------
	{
		obj.MapsMx		= parseInt(obj.DocumentForms.elements['Maps[m_x]'].value);
		obj.MapsMy		= parseInt(obj.DocumentForms.elements['Maps[m_y]'].value);
		obj.MapsMw		= parseInt(obj.DocumentForms.elements['Maps[m_w]'].value);
		obj.MapsIw		= parseInt(obj.DocumentForms.elements['Maps[i_w]'].value);
		obj.MapsIh		= parseInt(obj.DocumentForms.elements['Maps[i_h]'].value);
		obj.MapsScale	= parseInt(obj.DocumentForms.elements['Maps[scale]'].value);
		obj.MapsMxPixel = (obj.MapsMw/obj.MapsIw);
	}

	//---------------------------------------------
	obj.MapsHist = function(nr) // Nawiguj po historrii klikniętych map.
	//---------------------------------------------
	{
		var h = obj.Hist.length;
		if(h)
		{
			obj.HistPointer += parseInt(nr);

			if(obj.HistPointer < 0) { obj.HistPointer = 0; return; }
			else if(obj.HistPointer >= h) { obj.HistPointer = (h-1); return; }

			if(obj.Hist[obj.HistPointer])
			{
				obj.DocumentForms.elements['Maps[m_x]'].value = obj.Hist[obj.HistPointer][0];
				obj.DocumentForms.elements['Maps[m_y]'].value = obj.Hist[obj.HistPointer][1];
				obj.DocumentForms.elements['Maps[m_w]'].value = obj.Hist[obj.HistPointer][2];
				var tlayer = obj.Hist[obj.HistPointer][3];

				obj.HistNone = true;

				var ilayer = 0;
				for(var i= 0; i < obj.DocumentForms.length; i++)
				{
					 //&& obj.DocumentForms.elements[i].checked == true
					nazwa = obj.DocumentForms.elements[i].name;
					if(nazwa.substr(0,12) == 'Maps[Layers]')
					{
						obj.DocumentForms.elements[i].checked = tlayer[ilayer];
						ilayer++;
					}
				}
				obj.MapsRun();
			}
		}
	}

	//---------------------------------------------
	obj.MapsMove = function(pr) // przesun mape o skok 1/MapsMoveDelta ekranu domyslnie 1/3
	//---------------------------------------------
	{
		var mwdelta = parseInt(obj.MapsMw/obj.MapsMoveDelta);
		if(pr=='T') obj.DocumentForms.elements['Maps[m_y]'].value = (obj.MapsMy+mwdelta);
		else if(pr=='B') obj.DocumentForms.elements['Maps[m_y]'].value = (obj.MapsMy-mwdelta);
		else if(pr=='R') obj.DocumentForms.elements['Maps[m_x]'].value = (obj.MapsMx+mwdelta);
		else if(pr=='L') obj.DocumentForms.elements['Maps[m_x]'].value = (obj.MapsMx-mwdelta);
		else if(pr=='LT') { obj.DocumentForms.elements['Maps[m_x]'].value = (obj.MapsMx-mwdelta); obj.DocumentForms.elements['Maps[m_y]'].value = (obj.MapsMy+mwdelta)}
		else if(pr=='LB') { obj.DocumentForms.elements['Maps[m_x]'].value = (obj.MapsMx-mwdelta); obj.DocumentForms.elements['Maps[m_y]'].value = (obj.MapsMy-mwdelta)}
		else if(pr=='RT') { obj.DocumentForms.elements['Maps[m_x]'].value = (obj.MapsMx+mwdelta); obj.DocumentForms.elements['Maps[m_y]'].value = (obj.MapsMy+mwdelta)}
		else if(pr=='RB') { obj.DocumentForms.elements['Maps[m_x]'].value = (obj.MapsMx+mwdelta); obj.DocumentForms.elements['Maps[m_y]'].value = (obj.MapsMy-mwdelta)}
		obj.MapsRun(); // wywołaj przerysowanie mapy
	}


	//---------------------------------------------
	obj.MapsLayersFit = function() // dopasuj mapę do zakresu widoczności włączonych warstw o ile zostały ustawione.
	//---------------------------------------------
	{
		var nazwa;
		var tmp;
		var layer;
		var mx1 = 0;
		var mx2 = 0;
		var my1 = 0;
		var my2 = 0;
		var t1 = 0;
		var t2 = 0;

		if(obj.DocumentForms)
		{
			for(var i=0; i<obj.DocumentForms.length; i++)
			{
				nazwa = obj.DocumentForms.elements[i].name;
				if(nazwa.substr(0,12) == 'Maps[Layers]' && obj.DocumentForms.elements[i].checked == true)
				{
					tmp = nazwa.split(']['); layer = tmp[1].substr(0, (tmp[1].length-1)); tmp = layer.split(',');
					for(var j=0; j<tmp.length; j++)
					{
						layer = tmp[j];
						if(obj.DocumentForms.elements['Maps[LayersMx]['+layer+']'] && obj.DocumentForms.elements['Maps[LayersWx]['+layer+']'] && obj.DocumentForms.elements['Maps[LayersMy]['+layer+']'] && obj.DocumentForms.elements['Maps[LayersWy]['+layer+']'].value)
						{
							t1 = parseFloat(obj.DocumentForms.elements['Maps[LayersMx]['+layer+']'].value);
							t2 = parseFloat(obj.DocumentForms.elements['Maps[LayersWx]['+layer+']'].value);
							if(t1 && t2) { if((mx1 > t1) || (mx1 == 0)) mx1 = t1; if((mx2 < t1+t2) || (mx2 == 0)) mx2 = t1+t2;	}
							t1 = parseFloat(obj.DocumentForms.elements['Maps[LayersMy]['+layer+']'].value);
							t2 = parseFloat(obj.DocumentForms.elements['Maps[LayersWy]['+layer+']'].value);
							if(t1 && t2) { if((my1 > t1) || (my1 == 0)) my1 = t1; if((my2 < t1+t2) || (my2 == 0)) my2 = t1+t2;	}
						}
					}
				}
			}
		}

		if(mx1 && mx2 && my1 && my2) obj.MapsGoXcYcWxWy(Math.round(mx1+(mx2-mx1)/2), Math.round(my1+(my2-my1)/2) , (mx2-mx1), (my2-my1));
		else obj.MapsGoToCenter(); // jeśli nie ma co dopasowywac bo np. nie pobrano danych z isdp, centruje mapę do wartości domyślnych.....
	}

	//---------------------------------------------
	obj.MapsMode = function(m) // zmiana trybu pracy z jednoczesną zmianą kursora BODY MAPS
	//---------------------------------------------
	{
		m = parseInt(m);
		obj.Mode = m;
		if(!obj.ArrayImgMapsMode || !document.images) return ;
		for(var i=0; i<obj.ArrayImgMapsMode.length;i++) if(obj.ArrayImgMapsMode[i][0]) if(document.images[obj.ArrayImgMapsMode[i][0]]) document.images[obj.ArrayImgMapsMode[i][0]].src =  obj.ArrayImgMapsMode[i][((i==m)?2:1)]; // podmien grafike na wlasciwy kursor...
		if(obj.ArrayImgMapsMode[m][4]) 	obj.xSetCursor(obj.IdFrameMaps, obj.IdFrameMapsCursor, obj.ArrayImgMapsMode[m][4]); // osadz wlasciwy kursor w body strony....
		obj.xInnerHtml(obj.IdFrameMaps, obj.IdFrameMapsBox, ''); // wyczyść zawartość BOX na mapie
		obj.xDisplayNone(obj.IdFrameMaps,obj.IdFrameMapsBox); // ukryj niepotrzebną box
		
		
		if(obj.Mode == obj.WayPointMode) obj.xDisplayBlock(obj.IdFrameMaps, obj.WayPointIdDiv);
		else obj.xDisplayNone(obj.IdFrameMaps, obj.WayPointIdDiv);
		
		
		return ;
	}


	//---------------------------------------------
	obj.MapsSidClear = function() // usuń zaznaczoną sekcje
	//---------------------------------------------
	{
		var sid = obj.DocumentForms.elements['Maps[Sid]'].value;
		if(sid)
		{
			obj.DocumentForms.elements['Maps[Sid]'].value = ''; // wyzeruj selekcję obiektu
			obj.MapsRun(); // wywołaj przerysowanie mapy
		}
	}

	//---------------------------------------------
	obj.MapsProfileChange = function(p) // Zmień profil na właściwy...
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		obj.MapsOnLoad(false);
		obj.Hist =  new Array();
		obj.HistPointer = 0;
		obj.MapsGetLayers(p); // uruchom ładowania mapy
		return ;
	}

	//---------------------------------------------
	obj.MapsOnLoad = function(tf) // Zmien ststus planu, włącz/wyłącz funkcje
	//---------------------------------------------
	{
		obj.OnLoad = (tf ? true : false);
		if(obj.OnLoad)
		{
			obj.xDisplayNone('', 'MessageMapsOnLoad');
			obj.xDisplayNone(obj.IdFrameMaps, obj.IdFrameMapsLoading); // ukryj na mapie warstwe Loading
			obj.xDisplayBlock(obj.IdFrameMaps, obj.IdFrameMapsScena); // pokaz zaladowana mape
			obj.xSetCursor(obj.IdFrameMaps, obj.IdFrameMapsCursor, obj.ArrayImgMapsMode[obj.Mode][4]); // osadz wlasciwy kursor w body mapy strony....
		}
		else
		{
			obj.xDisplayBlock('', 'MessageMapsOnLoad');
			obj.xDisplayNone(obj.IdFrameMaps, obj.IdFrameMapsScena); // ukryj warstwe scenaMapy
			obj.xDisplayNone(obj.IdFrameMaps, obj.IdFrameRefreshMaps); // ukryj warstwe refresh
			obj.xDisplayBlock(obj.IdFrameMaps, obj.IdFrameMapsLoading); // pokaz warstwe Loading
			obj.xSetCursor(obj.IdFrameMaps, obj.IdFrameMapsCursor, 'wait'); // osadz wlasciwy kursor w body mapy strony....
		}
		return ;
	}


	//---------------------------------------------
	obj.LoaderInit = function() // załaduj do pamieci pliki graficzne dodatkowe klawisze do podmiany.....
	//---------------------------------------------
	{
		var TmpImg = new Image();

		for(var i=0; i<obj.ArrayImgMapsMode.length;i++)
		{
			if(obj.ArrayImgMapsMode[i][1]) TmpImg.src = obj.ArrayImgMapsMode[i][1];
			if(obj.ArrayImgMapsMode[i][2]) TmpImg.src = obj.ArrayImgMapsMode[i][2];
			if(obj.ArrayImgMapsMode[i][3]) TmpImg.src = obj.ArrayImgMapsMode[i][3];
		}
	}

	//---------------------------------------------
	obj.MapsBttnMode = function(iname) // zmienia klawisze z podswietlonych na aktywne
	//---------------------------------------------
	{
		for(var i=0; i<obj.ArrayImgMapsMode.length;i++) if(obj.ArrayImgMapsMode[i][0] == iname)	if(document.images[iname]) document.images[iname].src =  obj.ArrayImgMapsMode[i][3]; // podmien grafike na wlasciwy kursor...
	}

	//---------------------------------------------
	obj.MapsMouseOver = function() // obsługa - gdy kursor mapy na mapie
	//---------------------------------------------
	{

		if(obj.Mode == obj.WayPointMode) obj.xDisplayBlock(obj.IdFrameMaps, obj.WayPointIdDiv);


	}

	//---------------------------------------------
	obj.MapsMouseOut = function() // obsługa - gdy kursor mapy z mapy
	//---------------------------------------------
	{
		obj.MapsClearTimeout(); // wyczyść obliczenia WGS
		
		if(obj.Mode == obj.WayPointMode) obj.xDisplayNone(obj.IdFrameMaps, obj.WayPointIdDiv);

	}

	//---------------------------------------------
	obj.MapsClearTimeout = function() // co gdy klawisz myszy UP
	//---------------------------------------------
	{
		if(obj.Timer)
		{
			clearTimeout(obj.Timer);
			if(obj.TimerWGSInfoClear)
			{
				obj.xInnerHtml('', obj.WGSInfoIdDiv, ((obj.WGSInfoHelpInfo)?obj.WGSInfoHelpInfo:'&nbsp;'));
				obj.TimerWGSInfoClear = false;
			}
		}
	}

	//---------------------------------------------
	obj.MapsSetTimeout = function() // co gdy klawisz myszy UP
	//---------------------------------------------
	{
		if(obj.WGSInfoIdDiv && !obj.OnMove)
		{
			obj.TimerWGSInfoClear = true;
			var L = obj.wgs84_a * obj.MouseX + obj.wgs84_b * obj.MouseX + obj.wgs84_c;
			var B = obj.wgs84_d * obj.MouseY + obj.wgs84_e * obj.MouseY + obj.wgs84_f;
			
			var Lc = Math.floor(L);
			var Lm = 60*(L-Lc);
			var Ls = Math.floor((Lm - Math.floor(Lm))*60);
			    Lm = Math.floor(Lm);
			
			var Bc = Math.floor(B);
			var Bm = 60*(B-Bc);
			var Bs = Math.floor((Bm - Math.floor(Bm))*60);
			    Bm = Math.floor(Bm);

			var txt = obj.WGSInfoCompute.replace(/<<E>>/g, Lc+'° '+((Lm<10)?'0':'')+Lm+'\' '+((Ls<10)?'0':'')+Ls+'&quot;');
			var txt = txt.replace(/<<N>>/g, Bc+'° '+((Bm<10)?'0':'')+Bm+'\' '+((Bs<10)?'0':'')+Bs+'&quot;');

			obj.xInnerHtml('', obj.WGSInfoIdDiv, txt);
		}
	}

	//---------------------------------------------
	obj.MouseMove = function(x, y) // przesuwanie kursorem po obszarze niekoniecznie mapy - wykorzystane w rozszerzeniach
	//---------------------------------------------
	{
		obj.MouseX = x;
		obj.MouseY = y;
	}

	//---------------------------------------------
	obj.MapsMouseMove = function(x, y) // przesuwanie kursorem po mapie
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;

		obj.MouseX = x;
		obj.MouseY = y;


		if(obj.OnMove)
		{
			if(obj.ObjFormScale) obj.ObjFormScale.focus();
			if(obj.Mode == 0)
			{
				obj.PointerVisible(false); // ukryj strzalke.......
				obj.xMoveTo(obj.IdFrameMaps, obj.IdFrameMapsScena, (obj.MouseX-obj.MouseOldX), (obj.MouseY-obj.MouseOldY));
			}
			else if((obj.Mode == 1 || obj.Mode == 2)) obj.MapsDrawingBox();

			if(obj.TooltipView)
			{
				obj.MapsTooltipHidden(); // ukryj tooltip jesli przesuwam mapą
				obj.TooltipView = false;
			}

		}

		if(obj.Mode == obj.WayPointMode)
		{
			var x = obj.MouseX+obj.TooltipXY;
			var y = obj.MouseY+obj.TooltipXY;
			if((e = obj.xGetElementById(obj.IdFrameMaps, obj.WayPointIdDiv)))
			{
				var w = parseInt(e.clientWidth);
				var h = parseInt(e.clientHeight);
				if(x+w > obj.MapsIw) x = obj.MouseX - w - obj.TooltipXY;
				if(y+h > obj.MapsIh) y = obj.MouseY - h - obj.TooltipXY;
			}

			if(x <0 ) x = 0; if(y <0 ) y = 0;
			obj.xMoveTo(obj.IdFrameMaps, obj.WayPointIdDiv, x, y);

		} 


		if(obj.TooltipView)
		{
			var x = obj.MouseX+obj.TooltipXY;
			var y = obj.MouseY+obj.TooltipXY;
			if((e = obj.xGetElementById(obj.IdFrameMaps, obj.IdFrameMapsTooltip)))
			{
				var w = parseInt(e.clientWidth);
				var h = parseInt(e.clientHeight);
				if(x+w > obj.MapsIw) x = obj.MouseX - w - obj.TooltipXY;
				if(y+h > obj.MapsIh) y = obj.MouseY - h - obj.TooltipXY;
			}

			if(x <0 ) x = 0; if(y <0 ) y = 0;
			obj.xMoveTo(obj.IdFrameMaps, obj.IdFrameMapsTooltip, x, y);
		}



		obj.MapsClearTimeout();
		obj.Timer = setTimeout("advMaps.MapsSetTimeout()", obj.WGSInfoTimeOut);
	}

	//---------------------------------------------
	obj.MapsRun = function() // Uruchom proces rysowania mapy
	//---------------------------------------------
	{
		if(obj.IdFormLayers && obj.IdFrameMaps)
		{
			if(obj.DocumentForms)
			{
				var s = parseInt(obj.DocumentForms.elements['Maps[scale]'].value);
				obj.ObjFormScale.value = obj.MapsScaleRound*Math.round(s/obj.MapsScaleRound);
				obj.MapsOnLoad(false);
				obj.DocumentForms.elements['Maps[i_w]'].value = obj.MapsEkranWidth;
				obj.DocumentForms.elements['Maps[i_h]'].value = obj.MapsEkranHeight;
				obj.DocumentFormsGetParam();


				if(obj.MapsXYMinMax[0] || obj.MapsXYMinMax[1] || obj.MapsXYMinMax[2] || obj.MapsXYMinMax[3])
				{
					if(obj.MapsXYMinMax[0] > obj.MapsMx ) obj.DocumentForms.elements['Maps[m_x]'].value = obj.MapsXYMinMax[0]; else if(obj.MapsXYMinMax[1] < obj.MapsMx )	obj.DocumentForms.elements['Maps[m_x]'].value = obj.MapsXYMinMax[1];
					if(obj.MapsXYMinMax[2] > obj.MapsMy ) obj.DocumentForms.elements['Maps[m_y]'].value = obj.MapsXYMinMax[2]; else if(obj.MapsXYMinMax[3] < obj.MapsMy )	obj.DocumentForms.elements['Maps[m_y]'].value = obj.MapsXYMinMax[3];
				}

				if(!obj.HistNone)
				{
					var tA = new Array();
					tA[0] = obj.MapsMx;  //x ekranu
					tA[1] = obj.MapsMy;  //y ekranu
					tA[2] = obj.MapsMw;  //y ekranu

					//zapamietaj stan warstw....
					var tlayer = new Array();
					var ilayer = 0;
					if(obj.DocumentForms)
					{
						for(var i=0; i<obj.DocumentForms.length; i++)
						{
							nazwa = obj.DocumentForms.elements[i].name;
							if(nazwa.substr(0,12) == 'Maps[Layers]') tlayer[ilayer++] = obj.DocumentForms.elements[i].checked;
							//lub uzyc nazwy warstwy: tmp = nazwa.split(']['); name_layer = tmp[1].substr(0, (tmp[1].length-1));
						}
					}

					tA[3] = tlayer;
					while(obj.Hist.length > (obj.HistPointer+1)) obj.Hist.pop();
					obj.HistPointer++;
					obj.Hist.push(tA);

				}

				obj.HistNone = false;
				// wywołaj funcje indywidualnie przygotowane dla uzytkownika
				obj.UserMapsRun(obj);
				// wywołaj formularz
				obj.DocumentForms.submit();
			}
		}
	}


	//---------------------------------------------
	obj.MapGoTo = function() // uruchom mapę - procedura pobierania legends oraz ustawienie MODE + wyrysowanie mapy
	//---------------------------------------------
	{
		if(obj.ProgGoTo[0] && obj.ProgGoTo[1])
		{
			obj.AjaxObj.get({
				url: obj.ProgGoTo[1],
				parameters : {'IdProfil' : obj.IdProfil, 'IdLang' : obj.IdLang },
				onLoading : function(obj2) { obj.xInnerHtml('', obj.ProgGoTo[0], obj.MsgAjax[0]);  },
				onSuccess : function(obj2) { obj.xInnerHtml('', obj.ProgGoTo[0], obj2.responseText); },
				onError : function(obj2) {  obj.MapBodyError('MapGoTo: '+obj.MsgAjax[1] + obj2.status); }
			});
		}

	}


	//---------------------------------------------
	obj.MapsGetLayers = function(IdProfil, LoadMapParam, LayerVisibleOnly) // uruchom mapę - procedura pobierania legends oraz ustawienie MODE + wyrysowanie mapy
	//---------------------------------------------
	{
		if(obj.MapsLayersDivProg)
		{
			obj.IdProfil = IdProfil;
			obj.MapGoTo();
			InitTrackFind(IdProfil);
			obj.AjaxObj.get({
				url: obj.MapsLayersDivProg+'.php',
				parameters : {
								"IdProfil" : IdProfil,
								"MapsMode" : obj.Mode,
								"ScenaHeight" : obj.ScenaHeight,
								"MapsEkranWidth" : obj.MapsEkranWidth,
								"MapsEkranHeight" : obj.MapsEkranHeight,
								"DivLayerWidth" : obj.DivLayerWidth,
								"DivLayerHeight" : obj.DivLayerHeight,
								"LayerViewMode" : obj.LayerViewMode,
								"LayerViewLegendsOn" : obj.LayerViewLegendsOn,
								"LoadMapParam" : LoadMapParam,
								"LayerVisibleOnly" : LayerVisibleOnly,
								"UniqId" : new Date().getTime().toString().substr(5) + Math.floor(Math.random() * 100).toString()

								},
				onLoading : function(obj2) { document.getElementById(obj.MapsLayersDiv).innerHTML = 'Loading...'; },
				onSuccess : function(obj2)
				{
					document.getElementById(obj.MapsLayersDiv).innerHTML = obj2.responseText;
					obj.DocumentForms = document.forms[obj.IdFormLayers];
					obj.DocumentFormsGetParam();
					obj.MapsMode(obj.Mode);
					
					obj.MapsRun();
				},
				onError : function(obj2) {  document.getElementById(obj.MapsLayersDiv).innerHTML = 'Błędna konfiguracja planu.<BR>Skontaktuj się z administratorem.<BR>komunikat błędu: ' + obj2.status;}
			});
		}

	}

	//---------------------------------------------
	obj.MapsScaleIncrement =  function(plus) // zmien skale o wartosc parametru inc w %
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		plus = parseInt(plus) ? true : false;
		var inc = 1; if(plus) inc += obj.MapsZoomIncrement; else inc -= obj.MapsZoomIncrement;
		obj.MapsScaleChange(obj.MapsScale*inc);
	}

	//---------------------------------------------
	obj.MapsScaleChange =  function(s) // zmień skalę mapy na wartość s
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		obj.MapsScale = obj.MapsScaleRound*Math.round(obj.MapsScale/obj.MapsScaleRound);
		s = parseInt(s);
		if(isNaN(s)) {	obj.ObjFormScale.value = obj.MapsScale; return; }
		if(s < obj.MapsScaleMin) s = obj.MapsScaleMin;
		else if(s > obj.MapsScaleMax) s = obj.MapsScaleMax;
		s = obj.MapsScaleRound*Math.round(s/obj.MapsScaleRound);
		if(s != obj.MapsScale)
		{
			obj.ObjFormScale.value = s;
			obj.MapsScale = s;
			var MouseMx = obj.MapsMx + Math.round(obj.MapsMxPixel*obj.MapsEkranWidth/2);
			var MouseMy = obj.MapsMy + Math.round(obj.MapsMxPixel*obj.MapsEkranHeight/2);
			var Mwx = parseInt(s * obj.StalaDpi * obj.MapsIw);
			var Mwy = parseInt(Mwx * obj.MapsIh / obj.MapsIw);
			obj.MapsGoXcYcWxWy(MouseMx, MouseMy, Mwx, Mwy);
		}
		return ;
	}

	//---------------------------------------------
	obj.MapsTooltipHidden = function() // ukryj tooltips na mapie
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		obj.TooltipView = false;
		obj.xInnerHtml(obj.IdFrameMaps, obj.IdFrameMapsTooltip, ''); // wyczyść zawartość Tooltip na mapie
		obj.xDisplayNone(obj.IdFrameMaps, obj.IdFrameMapsTooltip); // ukryj niepotrzebną warstwe
		return ;
	}

	//---------------------------------------------
	obj.EventMouseUp = function() // co gdy klawisz myszy UP
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		var dX = obj.MouseX-obj.MouseOldX;
		var dY = obj.MouseY-obj.MouseOldY;

		if(obj.OnMove && !obj.TooltipView)
		{
			if((obj.Mode == 0) && ((dX!=0)||(dY!=0)))
			{
				obj.DocumentForms.elements['Maps[m_x]'].value = obj.MapsMx - Math.round(obj.MapsMxPixel*dX);
				obj.DocumentForms.elements['Maps[m_y]'].value = obj.MapsMy + Math.round(obj.MapsMxPixel*dY);
				obj.MapsRun();
			}
			else if(obj.Mode == 1) // tryb pracy powiekszanie
			{
				dX = Math.abs(dX);
				dY = Math.abs(dY);

				if((dX!=0)||(dY!=0))
				{
					var dmx = 0; if(obj.MouseX < obj.MouseOldX) dmx = (obj.MouseX+dX/2); else dmx = (obj.MouseOldX+dX/2);
					var dmy = 0; if(obj.MouseY < obj.MouseOldY) dmy = (obj.MapsIh-obj.MouseY-dY/2); else dmy = (obj.MapsIh-obj.MouseOldY-dY/2);
					var mx = (obj.MapsMx + Math.round(obj.MapsMxPixel*dmx));
					var my = (obj.MapsMy + Math.round(obj.MapsMxPixel*dmy));
					// przelicz pomniejszanie, powiekszanie
					//
					//------------------------------------
					obj.MapsGoXcYcWxWy(mx, my, Math.round(obj.MapsMxPixel*dX), Math.round(obj.MapsMxPixel*dY));
				}
				else
				{
					// w przypadku gdy niezaznaczono obszaru tylko kliknięto - pomniejsz/powieksz o wspol .MapsZoomInOut oraz centruj.
					var MouseMx = obj.MapsMx + Math.round(obj.MapsMxPixel*obj.MouseX);
					var MouseMy = obj.MapsMy + Math.round(obj.MapsMxPixel*(obj.MapsIh-obj.MouseY));

					obj.MapsScale /= obj.MapsZoomInOut; //przelicz nową skale dla powiekszenia

					obj.MapsScale = Math.round(obj.MapsScale);

					if(obj.MapsScale < obj.MapsScaleMin ) obj.MapsScale = obj.MapsScaleMin;
					else if(obj.MapsScale > obj.MapsScaleMax ) obj.MapsScale = obj.MapsScaleMax;

					obj.MapsMw = parseInt(obj.MapsScale * obj.StalaDpi * obj.MapsIw);

					obj.ObjFormScale.value = obj.MapsScale;
					obj.DocumentForms.elements['Maps[scale]'].value = obj.MapsScale;
					obj.DocumentForms.elements['Maps[m_w]'].value = obj.MapsMw;
					obj.DocumentForms.elements['Maps[m_x]'].value = (MouseMx-parseInt(obj.MapsMw/2));
					obj.DocumentForms.elements['Maps[m_y]'].value = (MouseMy-parseInt((obj.MapsIh/obj.MapsIw)*obj.MapsMw/2));

					obj.MapsRun();
				}
			}
			else if(obj.Mode == 2) // tryb pracy pomniejszanie
			{
				dX = Math.abs(dX);
				dY = Math.abs(dY);
				/*  opcja autodopasowywania wyłączona
				if((dX!=0)||(dY!=0))
				{
					var dmx = 0; if(obj.MouseX < obj.MouseOldX) dmx = (obj.MouseX+dX/2); else dmx = (obj.MouseOldX+dX/2);
					var dmy = 0; if(obj.MouseY < obj.MouseOldY) dmy = (obj.MapsIh-obj.MouseY-dY/2); else dmy = (obj.MapsIh-obj.MouseOldY-dY/2);
					var mx = (obj.MapsMx + Math.round(obj.MapsMxPixel*dmx));
					var my = (obj.MapsMy + Math.round(obj.MapsMxPixel*dmy));
					// przelicz pomniejszanie, powiekszanie
					//
					//------------------------------------
					obj.MapsGoXcYcWxWy(mx, my, Math.round(obj.MapsMxPixel*dX), Math.round(obj.MapsMxPixel*dY));
				}
				else
				{
				*/
					// w przypadku gdy niezaznaczono obszaru tylko kliknięto - pomniejsz/powieksz o wspol .MapsZoomInOut oraz centruj.
					var MouseMx = obj.MapsMx + Math.round(obj.MapsMxPixel*obj.MouseX);
					var MouseMy = obj.MapsMy + Math.round(obj.MapsMxPixel*(obj.MapsIh-obj.MouseY));

					obj.MapsScale *= obj.MapsZoomInOut; // przelicz nową skalę dla pomniejszenia

					obj.MapsScale = Math.round(obj.MapsScale);

					if(obj.MapsScale < obj.MapsScaleMin ) obj.MapsScale = obj.MapsScaleMin;
					else if(obj.MapsScale > obj.MapsScaleMax ) obj.MapsScale = obj.MapsScaleMax;

					obj.MapsMw = parseInt(obj.MapsScale * obj.StalaDpi * obj.MapsIw);
					obj.ObjFormScale.value = obj.MapsScale;
					obj.DocumentForms.elements['Maps[scale]'].value = obj.MapsScale;
					obj.DocumentForms.elements['Maps[m_w]'].value = obj.MapsMw;
					obj.DocumentForms.elements['Maps[m_x]'].value = (MouseMx-parseInt(obj.MapsMw/2));
					obj.DocumentForms.elements['Maps[m_y]'].value = (MouseMy-parseInt((obj.MapsIh/obj.MapsIw)*obj.MapsMw/2));

					obj.MapsRun();
				//}
			}
		}

		obj.OnMove = false;
		obj.MouseOldX = 0;
		obj.MouseOldY = 0;

	}

	//---------------------------------------------
	obj.EventMouseDown = function() // co gdy klawisz myszy UP
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		obj.OnMove =  true;
		obj.MouseOldX = obj.MouseX;
		obj.MouseOldY = obj.MouseY;
	}

	//---------------------------------------------
	obj.MapsProgHide = function(Fr, ProgDiv, Prog) // ukryj - wyłącz program
	//---------------------------------------------
	{
		obj.xHide(Fr, ProgDiv);

	}


	//---------------------------------------------
	obj.PointerVisible = function(visible) // ukryj strzalke wskazujaca
	//---------------------------------------------
	{
		if(visible)	obj.DocumentForms.elements['Maps[Pointer]'].value = 1;
		else
		{
			obj.xDisplayNone(obj.IdFrameMaps, obj.PointerIdDiv);
			obj.DocumentForms.elements['Maps[Pointer]'].value = 0;
		}
	}


	//---------------------------------------------
	obj.MapsProgRun = function(Prog, CenterBrowser, IdLang, Param) // uruchom program dodatkowy, CenterBrowser = 1 - centrowanie okna następuje na środku przeglądarki....
	//---------------------------------------------
	{
		CenterBrowser = CenterBrowser ? 1 : 0;
		IdLang = IdLang ? IdLang : 0;
		Param = Param ? Param : '';

		if(Prog)
		{
			obj.xHide('', obj.ProgDiv);
			obj.AjaxObj.get({
				url: Prog+'.php',
				parameters : { 'ProgDiv' : obj.ProgDiv, "Prog" : Prog, "IdLang" : IdLang, "Param" : Param  },
				onLoading : function(obj2)
					{
						if(obj.ProgLoadingHtml)
						{
							document.getElementById(obj.ProgDiv).innerHTML = obj.ProgLoadingHtml ;



							var x = obj.MapsEkranLeft;
							var y = obj.MapsEkranTop;

							if((e = obj.xGetElementById('', obj.ProgDiv)))
							{
								var w = parseInt(e.clientWidth);
								var h = parseInt(e.clientHeight);
								x += Math.round((obj.MapsEkranWidth - w)/2);
								y += Math.round((obj.MapsEkranHeight - h)/2);
							}

							if(x<0) x = 0;
							if(y<0) y = 0;

							obj.xMoveTo('', obj.ProgDiv, x, y);
							obj.xShow('', obj.ProgDiv);
						}
					},
				onSuccess : function(obj2)
					{
						document.getElementById(obj.ProgDiv).innerHTML = obj2.responseText;

						if(CenterBrowser)
						{
							var x = 0;
							var y = 0;

							if((e = obj.xGetElementById('', obj.ProgDiv)))
							{
								var w = parseInt(e.clientWidth);
								var h = parseInt(e.clientHeight);
								x += Math.round((obj.EkranWidth - w)/2);
								y += Math.round((obj.EkranHeight - h)/2);
							}

						}
						else
						{
							var x = obj.MapsEkranLeft;
							var y = obj.MapsEkranTop;

							if((e = obj.xGetElementById('', obj.ProgDiv)))
							{
								var w = parseInt(e.clientWidth);
								var h = parseInt(e.clientHeight);
								x += Math.round((obj.MapsEkranWidth - w)/2);
								y += Math.round((obj.MapsEkranHeight - h)/2);
							}
						}

						if(x<0) x = 0;
						if(y<0) y = 0;

						obj.xMoveTo('', obj.ProgDiv, x, y);
						obj.xShow('', obj.ProgDiv);


					},

				onError : function(obj2) { alert("Error: " + obj2.status); }
			});
		}
	}

	//---------------------------------------------
	obj.MapsProgSubmit = function(IdForm, CenterBrowser) // uruchom program dodatkowy
	//---------------------------------------------
	{
		if(IdForm)
		{
			obj.xHide('', obj.ProgDiv);
			obj.AjaxObj.submit(document.getElementById(IdForm), {
				onLoading : function(obj2)
					{
						if(obj.ProgLoadingHtml)
						{
							document.getElementById(obj.ProgDiv).innerHTML = obj.ProgLoadingHtml ;
							var x = obj.MapsEkranLeft;
							var y = obj.MapsEkranTop;

							if((e = obj.xGetElementById('', obj.ProgDiv)))
							{
								var w = parseInt(e.clientWidth);
								var h = parseInt(e.clientHeight);
								x += Math.round((obj.MapsEkranWidth - w)/2);
								y += Math.round((obj.MapsEkranHeight - h)/2);
							}

							if(x<0) x = 0;
							if(y<0) y = 0;

							obj.xMoveTo('', obj.ProgDiv, x, y);
							obj.xShow('', obj.ProgDiv);
						}
					},
				onSuccess : function(obj2)
					{
						document.getElementById(obj.ProgDiv).innerHTML = obj2.responseText;

						if(CenterBrowser)
						{
							var x = 0;
							var y = 0;

							if((e = obj.xGetElementById('', obj.ProgDiv)))
							{
								var w = parseInt(e.clientWidth);
								var h = parseInt(e.clientHeight);
								x += Math.round((obj.EkranWidth - w)/2);
								y += Math.round((obj.EkranHeight - h)/2);
							}

						}
						else
						{
							var x = obj.MapsEkranLeft;
							var y = obj.MapsEkranTop;

							if((e = obj.xGetElementById('', obj.ProgDiv)))
							{
								var w = parseInt(e.clientWidth);
								var h = parseInt(e.clientHeight);
								x += Math.round((obj.MapsEkranWidth - w)/2);
								y += Math.round((obj.MapsEkranHeight - h)/2);
							}
						}



						if(x<0) x = 0;
						if(y<0) y = 0;

						obj.xMoveTo('', obj.ProgDiv, x, y);
						obj.xShow('', obj.ProgDiv);
					},
				onError : function(obj) { alert("Error: " + obj2.status); }
			});
		}
	}


	//---------------------------------------------
	obj.TooltipMapsOnOff = function() // ukryj tooltips na mapie
	//---------------------------------------------
	{
		if(!obj.OnLoad) return ;
		if(obj.TooltipOn) 
		{
			obj.TooltipOn = 0;
			obj.xDisplayNone(obj.IdFrameMaps, obj.IdFrameMapsDivTooltip); // ukryj niepotrzebną warstwe
		}
		else 
		{
			obj.TooltipOn = 1;
			obj.xDisplayBlock(obj.IdFrameMaps, obj.IdFrameMapsDivTooltip); // ukryj niepotrzebną warstwe
		}
		
		obj.DocumentForms.elements['Maps[TooltipOn]'].value = obj.TooltipOn;
	}


//---------------------------------------------
obj.MapGoXcYcWxWySep = function(adr) // przesun mapę pod X,Y - cenrtalny punkt prostokąta WxWy - seperator '|'
//---------------------------------------------
{
	if(!obj.OnLoad) return ;
	var a = adr.split('|');
	obj.MapGoXcYcWxWy((a[0]?a[0]:0), (a[1]?a[1]:0), (a[2]?a[2]:0), (a[3]?a[3]:0), (a[4]?a[4]:''), (a[5]?a[5]:0), (a[6]?a[6]:0));
	return ;
}


//---------------------------------------------
obj.MapGoXcYcWxWy = function(Xc, Yc, Wx, Wy, Sid, DefScale) // przesun mapę pod X,Y - cenrtalny punkt prostokąta WxWy - seperator '|'
//---------------------------------------------
{
	if(!obj.OnLoad) return ;
	var Mwx = Wx;
	var Mwy = (Mwx * obj.MapsIh / obj.MapsIw);
	if(Wy > Mwy) { Mwy = Wy; Mwx = (Mwy * obj.MapsIw / obj.MapsIh);	if(Wx > Mwx) Mwx = Wx;	}
	var MapScale = Math.round(Mwx /( obj.StalaDpi * obj.MapsIw));
	if(MapScale < obj.MapsScaleMinMax[0] ) {	MapScale = obj.MapsScaleMinMax[0]; Mwx = parseInt(MapScale * obj.StalaDpi * obj.MapsIw); Mwy = (Mwx * obj.MapsIh / obj.MapsIw);	}
	else if(MapScale > obj.MapsScaleMinMax[1] ) { MapScale = obj.MapsScaleMinMax[1];	Mwx = parseInt(MapScale * obj.StalaDpi * obj.MapsIw);	Mwy = (Mwx * obj.MapsIh / obj.MapsIw);	}

	if(DefScale && (DefScale > obj.MapsScaleMinMax[0]) && (DefScale < obj.MapsScaleMinMax[1]))
	{
		if(MapScale < DefScale)
		{
			MapScale = DefScale;
			Mwx = Math.round(MapScale * ( obj.StalaDpi * obj.MapsIw));
			Mwy = (Mwx * obj.MapsIh / obj.MapsIw);
		}
	}

//	obj.MapsSetFormsScale(MapScale);

	obj.DocumentForms.elements['Maps[scale]'].value = MapScale;
	obj.DocumentForms.elements['Maps[m_w]'].value	= Mwx;
	obj.DocumentForms.elements['Maps[m_x]'].value	= Xc-Math.round(Mwx/2)
	obj.DocumentForms.elements['Maps[m_y]'].value	= Yc-Math.round(Mwy/2);

	if(Sid)
	{
		obj.DocumentForms.elements['Maps[Sid]'].value = Sid; // włącz selekcję obiektu
		var a = Sid.split(':');  // włącz warstwę by była widoczna
		if(obj.DocumentForms.length)
		{
			for(var i=0; i< obj.DocumentForms.length; i++)
			{
				nazwa = obj.DocumentForms.elements[i].name;
				if(nazwa.substr(0,12) == 'Maps[Layers]' && (nazwa.indexOf(a[0]) > 0)) obj.DocumentForms.elements[i].checked = true;
			}
		}
	}

	obj.MapsRun();
	return ;
}


//---------------------------------------------
obj.TrackView = function(a, b, c, d, Track) // przesuwanie kursorem po obszarze niekoniecznie mapy - wykorzystane w rozszerzeniach
//---------------------------------------------
{
		obj.DocumentForms.elements['Maps[Track][Id]'].value = Track; // 
		obj.MapGoXcYcWxWy(a+Math.round(c/2), b+Math.round(d/2), c, d);

		
//			obj.MapRun(); // wywołaj przerysowanie mapy

}

//---------------------------------------------
obj.TrackSet = function(Track) // przesuwanie kursorem po obszarze niekoniecznie mapy - wykorzystane w rozszerzeniach
//---------------------------------------------
{
	obj.DocumentForms.elements['Maps[Track][Id]'].value = Track; 
}


//---------------------------------------------
obj.TrackClear = function() // przesuwanie kursorem po obszarze niekoniecznie mapy - wykorzystane w rozszerzeniach
//---------------------------------------------
{
	var TrackId = obj.DocumentForms.elements['Maps[Track][Id]'].value;
	if(TrackId)
	{
		obj.DocumentForms.elements['Maps[Track][Id]'].value = ''; // wyzeruj selekcję obiektu
		obj.MapRun(); // wywołaj przerysowanie mapy
	}
}





	return obj;
}


