function MapInterKerg(advMAP) 
{

	var obj = new Object();

	obj.Div				= new Array('ComputeLine', 'ComputeMsg', 'IdFrameMap', 'FormInterKerg', 'FieldInterKergXY'); /* div na mapie do rysowania lini, div dla komunikatu, advMAP.IdFrameMap - komunikat na mapie, '' - komunikat poza mapa*/
	obj.PolygonAreaMsg1	= '<div style="border:1px solid #888; background:#eee; font-family:verdana; font-size:8pt; padding:3px 5px 3px 5px;">Zbyt mało punktów by wyznaczyć powierzchnię! <b>Wskaż minimum trzy punkty.</b></div>';
	obj.PolygonAreaMsg2	= '<div style="border:1px solid #888; background:#eee; font-family:verdana; font-size:8pt; padding:3px 5px 3px 5px;">Wskazuj kolejne punkty&nbsp;-&nbsp;pkt: <b><<ComputeCount>></b> powierzchnia: <b><<ComputeArea>></b>&nbsp;<span style="font-weight:bold; color:red;">&nbsp;-&nbsp;pomiar przybliżony!&nbsp;</span>&nbsp;<img src="img/punkt_mapa_close.gif" width="11" height="11" border="0" alt="" style="cursor:pointer" onclick="parent.advMapInterKerg.Clear();"></div>';
	obj.PolygonAreaMsg3	= 'Wskazany poligon jest nieprawidłowy.\nNie może zawierać enklaw jak i krzyżujących się linii.\nWyliczony pomiar obarczony jest błędem.';
	obj.PolygonAreaMsg4	= 'Błędnie skonfigurowany moduł: InterKerg';
	obj.PolygonAreaMsg5	= 'Błędna składnia w lini:';
	obj.PolygonAreaMsg6	= 'Zawartość:';
	obj.PolygonAreaMsg7	= 'Nie można wyrysować obszaru pracy. Czy dopasować mapę do podanych parametrów?';
	obj.PolygonAreaMsg8	= 'Obszar mapy dopasowano do zakresu współrzednych.';
	obj.PolygonAreaMsg9	= 'Dane w Formularzu zawierają błędy.';
	obj.PolygonAreaMsg10	= 'Zapis danych spowoduje zakończenie pracy z mapą. Okno mapy zostanie zamknięte, dane zostaną zapisane do systemu interKERG. Czy chcesz kontynuować?';
	obj.PolygonAreaMsg11	= 'Obraz mapy został zapisany do systemu interKERG.';
	obj.PolygonAreaMsg12	= 'Brak obrazka do podmiany';
	obj.PolyWidthHeight	= 10; // szerokość i wysokość punktu osadzanego na mapie po kliknięciu szerokosc = wysokość
	obj.MarginBufor		= 5; // bufor dopasowania 
	obj.PolyPointStart	= '<img src="img/punkt_mapa_start.gif" width="10" height="10" border="0" alt="">'; // obiekt punktu poczatkowego
	obj.PolyPointNext	= '<img src="img/punkt_mapa.gif" width="10" height="10" border="0" alt="">'; // obiekt punktu kolejnego
	obj.WindowOpener	= '';
	obj.InterosrodekUrl	= 'http://sitplan.um.bytom.pl/interosrodek/index.php?module=task&action=getMapImage';
	obj.MapUrl			= ''; //zahasowany adres parametrów do mapy
	obj.InterKergImageRefresh	= 'InterKergImage';
	obj.ArrayXYFile = new Array();
	obj.SaveFormNameField = new Array('', '', '');
	obj.FormNameField = new Array('', '');
	obj.AreaOut = 0;	
	obj.Mode = 6; // jakie mode obsługuje komponent

	//---------------------------------------------
	obj.EventMouseUp = function() // co gdy klawisz myszy UP
	//---------------------------------------------
	{
		if(!advMAP.OnLoad) return ;

		if(advMAP.Mode == obj.Mode)
		{
			var tA = new Array();
			tA[0] = advMAP.MouseX;  //x ekranu
			tA[1] = advMAP.MouseY;  //y ekranu
			tA[2] = Math.round(100*(advMAP.MapMx + (advMAP.MapMw*advMAP.MouseX/advMAP.MapIw)))/100;
			tA[3] = Math.round(100*(advMAP.MapMy + ((advMAP.MapIh/advMAP.MapIw)*advMAP.MapMw*(advMAP.MapIh-advMAP.MouseY)/advMAP.MapIh)))/100;
			tA[4] = obj.ArrayXYFile.length+1;

			obj.ArrayXYFile.push(tA);
			obj.ComputePolygonArea(obj.ArrayXYFile);			

			if(obj.Div[3] && obj.Div[4]) 
				if(document.forms[obj.Div[3]]) 
					if(document.forms[obj.Div[3]].elements[obj.Div[4]])
					{
						var txt = '';
						for(var i=0;i<obj.ArrayXYFile.length;i++) 
						{
							y = Math.floor(obj.ArrayXYFile[i][2]);
							r = obj.ArrayXYFile[i][2]-y; r = Math.round(r*100); if(r<10) r = '0'+r;
							x1 = y+'.'+r;

							y = Math.floor(obj.ArrayXYFile[i][3]);
							r = obj.ArrayXYFile[i][3]-y; r = Math.round(r*100); if(r<10) r = '0'+r;
							x2 = y+'.'+r;
							
							txt += obj.ArrayXYFile[i][4]+' '+x2+' '+x1+"\r\n";
						}
						document.forms[obj.Div[3]].elements[obj.Div[4]].value = txt;
					}
		}
	}



	//---------------------------------------------
	// Poniższa funkcja wyznacza pole powierzchni
	// dowolnego prawidłowego wielokąta tzn. takiego,
	// który nie posiada punktów przecięć z samym sobą
	// Zakładamy także, że polygon nie posiada enklaw.
	//---------------------------------------------

	//---------------------------------------------
	obj.ComputePolygonArea = function(tablica)
	//---------------------------------------------
	{
		// Wyznaczenie powierzchni dowolnego prawidłowego polygonu!
		var tmp1, tmp2;
		var area = 0.0;
		var tableLen = tablica.length;

		// jeśli liczba punktów jest mniejsza od 3 powierzchnia nie jest wyznaczana
		if(tableLen < 3)
		{
			advMAP.xInnerHtml(obj.Div[2], obj.Div[1], obj.PolygonAreaMsg1);
			advMAP.xDisplayBlock(obj.Div[2], obj.Div[1]);

			var newDiv;
			if(tableLen > 0)
			{
				var myDiv = advMAP.xGetElementById(advMAP.IdFrameMap, obj.Div[0]);
				if(myDiv)
				{
					if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
					else newDiv = document.createElement("div");
					newDiv.innerHTML = '<div id="point_'+tableLen+'" style="position:absolute; top:'+(tablica[(tableLen-1)][1]-Math.round(obj.PolyWidthHeight/2))+'px; left:'+(tablica[(tableLen-1)][0]-Math.round(obj.PolyWidthHeight/2))+'px; z-index:1; color:#333; font-family:verdana; font-size:8pt; font-weight:bold;">'+((tableLen < 2)?obj.PolyPointStart:obj.PolyPointNext)+tableLen+'</div>';
					myDiv.appendChild(newDiv);

					if(tableLen > 1)
					{
						if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
						else newDiv = document.createElement("div");
						newDiv.innerHTML = obj.mkLine(tablica[(tableLen-2)][0], tablica[(tableLen-2)][1], tablica[(tableLen-1)][0], tablica[(tableLen-1)][1]);
						myDiv.appendChild(newDiv);
					}
				}

				advMAP.xDisplayBlock(advMAP.IdFrameMap, obj.Div[0]);

			}

		}
		else
		{

			if(tableLen > 3)
			{
				var PolygonRight = obj.ComputePolygonRight(tablica);
				if(!PolygonRight) alert(obj.PolygonAreaMsg3);
			}
			
			for (var j=0;j < tableLen-1; j++)
			{
				if( j == 0 )
				{
				   tmp1 = tablica[j][2]   * tablica[j+1][3];
				   tmp2 = tablica[j+1][2] * tablica[j][3];
				}
				else
				{
				   tmp1 += tablica[j][2]   * tablica[j+1][3];
				   tmp2 += tablica[j+1][2] * tablica[j][3];
				}
			}

			area = (Math.abs(((tmp1 + (tablica[tableLen-1][2] * tablica[0][3])) - (tmp2 + (tablica[0][2] * tablica[tableLen-1][3]))) / 2));
			area = parseInt(area*100)/100;

			obj.AreaOut = area;

			if(area < 100000) area = area + ' [m2]';
			else
			{
				area = parseInt(area)/1000000;
				area = parseInt(area*1000)/1000 + ' [km2]';
			}

			var txt = obj.PolygonAreaMsg2.replace(/<<ComputeCount>>/g, tableLen);
			txt = txt.replace(/<<ComputeArea>>/g, area);

			advMAP.xInnerHtml(obj.Div[2], obj.Div[1], txt);
			advMAP.xDisplayBlock(obj.Div[2], obj.Div[1]);


			var myDiv = advMAP.xGetElementById(advMAP.IdFrameMap, obj.Div[0]);
			if(myDiv)
			{
				if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
				else newDiv = document.createElement("div");
				newDiv.innerHTML = '<div id="point_'+tableLen+'" style="position:absolute; top:'+(tablica[(tableLen-1)][1]-Math.round(obj.PolyWidthHeight/2))+'px; left:'+(tablica[(tableLen-1)][0]-Math.round(obj.PolyWidthHeight/2))+'px; z-index:1; color:#333; font-family:verdana; font-size:8pt; font-weight:bold;">'+obj.PolyPointNext+tableLen+'</div>';
				myDiv.appendChild(newDiv);

				if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
				else newDiv = document.createElement("div");
				newDiv.innerHTML = obj.mkLine(tablica[(tableLen-2)][0], tablica[(tableLen-2)][1], tablica[(tableLen-1)][0], tablica[(tableLen-1)][1]);
				myDiv.appendChild(newDiv);

				// usun niepotrzebna kreske poligona - ostatnio wygenerowana....
				var elemDel;
				if(advMAP.IdFrameMap) elemDel = window.frames[advMAP.IdFrameMap].document.getElementById('DivLine_'+(tableLen-1));
				else elemDel = document.getElementById('DivLine_'+(tableLen-1));
				if(elemDel) myDiv.removeChild(elemDel);

				// kreska zamykajaca poligon - utworzona na nowo
				if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
				else newDiv = document.createElement("div");
				newDiv.id = 'DivLine_'+tableLen;
				newDiv.innerHTML = obj.mkLine(tablica[0][0], tablica[0][1], tablica[(tableLen-1)][0], tablica[(tableLen-1)][1]);
				myDiv.appendChild(newDiv);

			}

			advMAP.xDisplayBlock(advMAP.IdFrameMap, obj.Div[0]);
		}
	}

	//---------------------------------------------
	obj.ComputeMatrix = function(xx, xy, yx, yy, zx, zy)
	//---------------------------------------------
	{
		return (xx*yy)+(yx*zy)+(zx*xy)-(zx*yy)-(xx*zy)-(yx*xy);
	}

	//---------------------------------------------
	obj.ComputeLineInLine = function(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y)
	//---------------------------------------------
	{
		if((obj.ComputeMatrix(p0x, p0y, p1x, p1y, p2x, p2y) * obj.ComputeMatrix(p0x, p0y, p1x, p1y, p3x, p3y)) >= 0 ) { return 1; }
		else if((obj.ComputeMatrix(p2x, p2y, p3x, p3y, p0x, p0y) * obj.ComputeMatrix(p2x, p2y, p3x, p3y, p1x, p1y)) >= 0 ) { return 1; }
		else return 0;
	}

	//---------------------------------------------
	obj.ComputePolygonRight = function(tablica)
	//---------------------------------------------
	{
		var tableLen = tablica.length;
		var OK = 1;
		for(var j=tableLen-1; j>2; j--)	if(OK) for(var k=j; k>0; k--) if(OK) OK *= obj.ComputeLineInLine(tablica[j][0], tablica[j][1], tablica[j-1][0], tablica[j-1][1], tablica[k][0], tablica[k][1], tablica[k-1][0], tablica[k-1][1]);
		if(OK) for(var j=tableLen-1; j>0; j--) if(OK) OK *= obj.ComputeLineInLine(tablica[j][0], tablica[j][1], tablica[j-1][0], tablica[j-1][1], tablica[0][0], tablica[0][1], tablica[tableLen-1][0], tablica[tableLen-1][1]);
		return (OK ? true : false);
	}


	//---------------------------------------------
	obj.Clear = function() // co gdy klawisz myszy UP
	//---------------------------------------------
	{
		obj.ArrayXYFile = new Array();
		if(!advMAP.OnLoad) return ;
		var html = '';
		advMAP.xInnerHtml(obj.Div[2], obj.Div[1], html);
		advMAP.xInnerHtml(obj.Div[2], obj.Div[0], html);
		advMAP.xDisplayNone(obj.Div[2], obj.Div[1]);
		advMAP.xDisplayNone(obj.Div[2], obj.Div[0]);

		if(obj.Div[3] && obj.Div[4]) 
			if(document.forms[obj.Div[3]]) 
				if(document.forms[obj.Div[3]].elements[obj.Div[4]]) document.forms[obj.Div[3]].elements[obj.Div[4]].value = html;

	}

	//---------------------------------------------
	obj.MathRoundValue = function(n) // wyświetl komunikat błędu, wycentruj go na srodku
	//---------------------------------------------
	{
		return Math.round(parseFloat(n)*100)/100; 
	}


	//---------------------------------------------
	obj.mkDiv = function(x, y, w, h)
	//---------------------------------------------
	{
		w = w <2 ? 2 : w;
		h = h <2 ? 2 : h;
		
		html = '<div style="position:absolute;'+
			'left:' + x + 'px;'+
			'top:' + y + 'px;'+
			'width:' + w + 'px;'+
			'height:' + h + 'px;'+
			'clip:rect(0,'+w+'px,'+h+'px,0);'+
			'background-color: #00ff00;' +
			'overflow:hidden'+
			';"></div>';

			return html;
	}

	//---------------------------------------------
	obj.mkLine = function(x1, y1, x2, y2)
	//---------------------------------------------
	{
		var punkt = '';

		if(x1 > x2)
		{
			var _x2 = x2;
			var _y2 = y2;
			x2 = x1;
			y2 = y1;
			x1 = _x2;
			y1 = _y2;
		}
		var dx = x2-x1, dy = Math.abs(y2-y1),
		x = x1, y = y1,
		yIncr = (y1 > y2)? -1 : 1;

		if(dx >= dy)
		{
			var pr = dy<<1,
			pru = pr - (dx<<1),
			p = pr-dx,
			ox = x;
			while(dx > 0)
			{--dx;
				++x;
				if(p > 0)
				{
					punkt += obj.mkDiv(ox, y, x-ox, 3);
					y += yIncr;
					p += pru;
					ox = x;
				}
				else p += pr;
			}
			punkt += obj.mkDiv(ox, y, x2-ox+1, 3);
		}

		else
		{
			var pr = dx<<1,
			pru = pr - (dy<<1),
			p = pr-dy,
			oy = y;
			if(y2 <= y1)
			{
				while(dy > 0)
				{--dy;
					if(p > 0)
					{
						punkt += obj.mkDiv(x++, y, 3, oy-y+1);
						y += yIncr;
						p += pru;
						oy = y;
					}
					else
					{
						y += yIncr;
						p += pr;
					}
				}
				punkt += obj.mkDiv(x2, y2, 3, oy-y2+1);
			}
			else
			{
				while(dy > 0)
				{--dy;
					y += yIncr;
					if(p > 0)
					{
						punkt += obj.mkDiv(x++, oy, 3, y-oy);
						p += pru;
						oy = y;
					}
					else p += pr;
				}
				punkt += obj.mkDiv(x2, oy, 3, y2-oy+1);
			}
		}

		return punkt;
	}

	//---------------------------------------------
	obj.FormCheck = function() // Sprawdz dane
	//---------------------------------------------
	{
		obj.ArrayXYFile = new Array();

		if(obj.Div[3] && obj.Div[4]) 
		{
			if(document.forms[obj.Div[3]]) 
			{
				if(document.forms[obj.Div[3]].elements[obj.Div[4]]) 
				{
					var OK = true;
					var txt = document.forms[obj.Div[3]].elements[obj.Div[4]].value;
					if(txt)
					{
						txt = txt.replace("\r","");
						txt = txt.replace(",",".");
						txt = txt.replace(/[ ]{2,}/g," ");
						var t = txt.split("\n");  
						for(var i=0;i<t.length;i++) if(t[i])
						{
							var tt = t[i].split(" ");  
							if(tt.length == 3) 
							{
								var tA = new Array();
								tA[0] = 0; //x ekranu 
								tA[1] = 0; //y ekranu 
								tA[2] = obj.MathRoundValue(tt[2]);  
								tA[3] = obj.MathRoundValue(tt[1]);  
								tA[4] = tt[0];  
								
								if((tA[2] > 0.0) && (tA[3] > 0.0)) obj.ArrayXYFile.push(tA);
								else OK = false;
								

							}
							else
							{
								alert(obj.PolygonAreaMsg5+' '+(i+1)+'\n'+obj.PolygonAreaMsg6+' '+t[i]);
								OK = false;
							}
						}

						if(OK) return true;
					}
				}
				else alert(obj.PolygonAreaMsg4);
			}
			else alert(obj.PolygonAreaMsg4);
		} 
		else alert(obj.PolygonAreaMsg4);
	
		return false;
	}

	//---------------------------------------------
	obj.Dopasowanie = function() // sprawdz czy zakres wsporzednych miesci się na planie - bieżącym widoku mapy
	//---------------------------------------------
	{
		var MxMin = obj.MathRoundValue(advMAP.MapMx);
		var MxMax = obj.MathRoundValue(advMAP.MapMx + advMAP.MapMw);
		var MyMin = obj.MathRoundValue(advMAP.MapMy);
		var MyMax = obj.MathRoundValue(advMAP.MapMy + (advMAP.MapIh/advMAP.MapIw)*advMAP.MapMw);

		for(var i=0;i<obj.ArrayXYFile.length;i++) 
		{
			if(MxMin > obj.ArrayXYFile[i][2] ) return false; 
			else if(obj.ArrayXYFile[i][2] > MxMax) return false;

			if(MyMin > obj.ArrayXYFile[i][3] ) return false; 
			else if(obj.ArrayXYFile[i][3] > MyMax) return false;
		}

		return true;
	}


	//---------------------------------------------
	obj.Refresh = function() // przerysuj wszystkie wspolrzedne, zablokuj możliwosc swobodnego rysowania a tylko dokładanie danych
	//---------------------------------------------
	{
		if(obj.FormCheck())
		{
			var html = '';
			advMAP.xInnerHtml(obj.Div[2], obj.Div[1], html);
			advMAP.xInnerHtml(obj.Div[2], obj.Div[0], html);

			if(obj.Dopasowanie())
			{
				obj.Przerysuj();
			}
			else if(confirm(obj.PolygonAreaMsg7))
			{

				var MxMin = obj.MathRoundValue(obj.ArrayXYFile[0][2]);
				var MxMax = obj.MathRoundValue(obj.ArrayXYFile[0][2]);
				var MyMin = obj.MathRoundValue(obj.ArrayXYFile[0][3]);
				var MyMax = obj.MathRoundValue(obj.ArrayXYFile[0][3]);
				
				for(var i=0;i<obj.ArrayXYFile.length;i++) 
				{
					if(MxMin > obj.ArrayXYFile[i][2] ) MxMin = obj.MathRoundValue(obj.ArrayXYFile[i][2]); 
					else if(obj.ArrayXYFile[i][2] > MxMax) MxMax = obj.MathRoundValue(obj.ArrayXYFile[i][2]);

					if(MyMin > obj.ArrayXYFile[i][3] ) MyMin = obj.MathRoundValue(obj.ArrayXYFile[i][3]); 
					else if(obj.ArrayXYFile[i][3] > MyMax) MyMax = obj.MathRoundValue(obj.ArrayXYFile[i][3]);
				}

				MxMin = obj.MathRoundValue(MxMin - obj.MarginBufor);
				MxMax = obj.MathRoundValue(MxMax + obj.MarginBufor);
				MyMin = obj.MathRoundValue(MyMin - obj.MarginBufor);
				MyMax = obj.MathRoundValue(MyMax + obj.MarginBufor);

				advMAP.MapGoXcYcWxWy(obj.MathRoundValue(MxMin+(MxMax-MxMin)/2), obj.MathRoundValue(MyMin+(MyMax-MyMin)/2), obj.MathRoundValue(MxMax-MxMin), obj.MathRoundValue(MyMax-MyMin), '');
				alert(obj.PolygonAreaMsg8);
				obj.Przerysuj();
			}
		}
		else alert(obj.PolygonAreaMsg9)
	}


	//---------------------------------------------
	obj.Przerysuj = function() // przerysuj pukty po zmianie w pliku
	//---------------------------------------------
	{

		var tmp1, tmp2;
		var area = 0.0;

		var tableLen = obj.ArrayXYFile.length

		if(tableLen > 3)
		{
			for (var j=0;j < tableLen-1; j++)
			{
				if( j == 0 )
				{
				   tmp1 = obj.ArrayXYFile[j][2]   * obj.ArrayXYFile[j+1][3];
				   tmp2 = obj.ArrayXYFile[j+1][2] * obj.ArrayXYFile[j][3];
				}
				else
				{
				   tmp1 += obj.ArrayXYFile[j][2]   * obj.ArrayXYFile[j+1][3];
				   tmp2 += obj.ArrayXYFile[j+1][2] * obj.ArrayXYFile[j][3];
				}
			}

			area = (Math.abs(((tmp1 + (obj.ArrayXYFile[tableLen-1][2] * obj.ArrayXYFile[0][3])) - (tmp2 + (obj.ArrayXYFile[0][2] * obj.ArrayXYFile[tableLen-1][3]))) / 2));
			area = parseInt(area*100)/100;

			obj.AreaOut = area;

			if(area < 100000) area = area + ' [m2]';
			else
			{
				area = parseInt(area)/1000000;
				area = parseInt(area*1000)/1000 + ' [km2]';
			}

			var txt = obj.PolygonAreaMsg2.replace(/<<ComputeCount>>/g, tableLen);
			txt = txt.replace(/<<ComputeArea>>/g, area);

			advMAP.xInnerHtml(obj.Div[2], obj.Div[1], txt);
			advMAP.xDisplayBlock(obj.Div[2], obj.Div[1]);
		}

		advMAP.xDisplayBlock(advMAP.IdFrameMap, obj.Div[0]);

		var myDiv = advMAP.xGetElementById(advMAP.IdFrameMap, obj.Div[0]);
		if(myDiv)
		{
			myDiv.innerHTML = '';
			
			advMAP.xDisplayBlock(advMAP.IdFrameMap, obj.Div[1]);

			if(tableLen)
			{
				var MxMin = advMAP.MapMx;
				var MxMax = advMAP.MapMx + advMAP.MapMw;
				var MyMin = advMAP.MapMy;
				var MyMax = Math.round((advMAP.MapMy + (advMAP.MapIh/advMAP.MapIw)*advMAP.MapMw)*100)/100;
				
				var a = advMAP.MapIw/(MxMax-MxMin);
				var b = advMAP.MapIh/(MyMax-MyMin);

				for(var i=0;i<tableLen;i++) 
				{
					obj.ArrayXYFile[i][0] = Math.round(a*(obj.ArrayXYFile[i][2]-MxMin));
					obj.ArrayXYFile[i][1] = advMAP.MapIh - Math.round(b*(obj.ArrayXYFile[i][3]-MyMin));
				}
					
				if(obj.ArrayXYFile[0])
				{
					
					if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
					else newDiv = document.createElement("div");

					newDiv.innerHTML = '<div id="point" style="position: absolute; top:'+(obj.ArrayXYFile[0][1]-Math.round(obj.PolyWidthHeight/2))+'px; left:'+(obj.ArrayXYFile[0][0]-Math.round(obj.PolyWidthHeight/2))+'px; z-index:1; color:#333; font-family:verdana; font-size:8pt; font-weight:bold;">'+obj.PolyPointStart+obj.ArrayXYFile[0][4]+'</div>';
					myDiv.appendChild(newDiv);

				}
				
				for(var i=1;i<tableLen;i++) 
				{
					
					if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
					else newDiv = document.createElement("div");
					newDiv.id = 'DivLine_'+(i-1);
					newDiv.innerHTML = obj.mkLine(obj.ArrayXYFile[i-1][0], obj.ArrayXYFile[i-1][1], obj.ArrayXYFile[i][0], obj.ArrayXYFile[i][1]);
					myDiv.appendChild(newDiv);

					if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
					else newDiv = document.createElement("div");

					newDiv.innerHTML = '<div id="point_'+i+'" style="position: absolute; top:'+(obj.ArrayXYFile[i][1]-Math.round(obj.PolyWidthHeight/2))+'px; left:'+(obj.ArrayXYFile[i][0]-Math.round(obj.PolyWidthHeight/2))+'px; z-index:1; color:#333; font-family:verdana; font-size:8pt; font-weight:bold;">'+obj.PolyPointNext+obj.ArrayXYFile[i][4]+'</div>';
					myDiv.appendChild(newDiv);
				}

				
				if(advMAP.IdFrameMap) newDiv = window.frames[advMAP.IdFrameMap].document.createElement("div");
				else newDiv = document.createElement("div");

				newDiv.id = 'DivLine_'+tableLen;
				newDiv.innerHTML = obj.mkLine(obj.ArrayXYFile[obj.ArrayXYFile.length-1][0], obj.ArrayXYFile[obj.ArrayXYFile.length-1][1], obj.ArrayXYFile[0][0], obj.ArrayXYFile[0][1]);
				myDiv.appendChild(newDiv);
			}
		}
	}




	//---------------------------------------------
	obj.SaveImage = function(sessionId) 
	//---------------------------------------------
	{
		if(confirm(obj.PolygonAreaMsg10))
		{
			var XYList = '';
			if(obj.ArrayXYFile.length) for(var i=0;i<obj.ArrayXYFile.length;i++) XYList += obj.ArrayXYFile[i][0]+','+obj.ArrayXYFile[i][1]+',';

			advMAP.AjaxObj.post({
				url: obj.InterosrodekUrl,
				parameters : {
								"sessionId" : sessionId,
								"progName" : 'GetMap',
								"Map2File" : 1,
								"ajax" : 1,
								"mapUrl" : obj.MapUrl,
								"XYList" : XYList,
								"step1" : 0,
								"UniqId" : new Date().getTime().toString().substr(5) + Math.floor(Math.random() * 100).toString()

								},
				onSuccess : function(obj2)
				{
					if(obj.SaveFormNameField[0] && (obj.SaveFormNameField[1] || obj.SaveFormNameField[2]))
					{
						if(obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[1]]) 
						{
							if(document.forms[obj.FormNameField[0]] && document.forms[obj.FormNameField[0]].elements[obj.FormNameField[1]])
							{
								obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[1]].value = document.forms[obj.FormNameField[0]].elements[obj.FormNameField[1]].value;
							}
						}

						if(obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[2]]) 
						{
							//obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[2]].value = obj.AreaOut/10000;
							//GK poprawka na potrzeby interorodka

							var prec = 10000;
							//var vartosc = Math.round(obj.AreaOut*prec)/prec;
							var vartosc = Math.round(Math.round(obj.AreaOut*prec)/prec);
							obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[2]].value = vartosc ;

						}

					}
					
					if(obj.WindowOpener.document.images[obj.InterKergImageRefresh])
					{
                        eval(obj2.responseText);
					}
                    else alert(obj.PolygonAreaMsg12)
					
					self.close();
				},
				onError : function(obj2) {alert('onError: '+obj2.status);}
			});
		}
	}

	//---------------------------------------------
	obj.Save = function(sessionId) 
	//---------------------------------------------
	{
		if(!obj.InterosrodekUrl)
		{
			alert(obj.PolygonAreaMsg4);
			return;
		}

		obj.Refresh();

		if(confirm(obj.PolygonAreaMsg10))
		{
			var XYList = '';
			if(obj.ArrayXYFile.length) for(var i=0;i<obj.ArrayXYFile.length;i++) XYList += obj.ArrayXYFile[i][0]+','+obj.ArrayXYFile[i][1]+',';

			advMAP.AjaxObj.post({
				url: obj.InterosrodekUrl,
				parameters : {
								"sessionId" : sessionId,
								"progName" : 'GetMap',
								"Map2File" : 1,
								"ajax" : 1,
								"mapUrl" : obj.MapUrl,
								"XYList" : XYList,
								"step1" : 1,
								"UniqId" : new Date().getTime().toString().substr(5) + Math.floor(Math.random() * 100).toString()

								},
				onSuccess : function(obj2)
				{
					
					if(obj.SaveFormNameField[0] && (obj.SaveFormNameField[1] || obj.SaveFormNameField[2]))
					{
					
						if(obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[1]]) 
						{
							if(document.forms[obj.FormNameField[0]] && document.forms[obj.FormNameField[0]].elements[obj.FormNameField[1]])
							{
								obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[1]].value = document.forms[obj.FormNameField[0]].elements[obj.FormNameField[1]].value;
							}
						}

						if(obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[2]]) 
						{
							//obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[2]].value = obj.AreaOut/10000;
							//GK poprawka na potrzeby interorodka
							var prec = 10000;
							//var vartosc = Math.round(obj.AreaOut*prec)/prec;
							var vartosc = Math.round(Math.round(obj.AreaOut*prec)/prec);
							obj.WindowOpener.document.forms[obj.SaveFormNameField[0]].elements[obj.SaveFormNameField[2]].value = vartosc ;
						}

					}					
					if(obj.WindowOpener.document.images[obj.InterKergImageRefresh])
					{
                        
						//alert(obj2.responseText);
						eval(obj2.responseText);
					}
                    else alert(obj.PolygonAreaMsg12)
					
					self.close();
				},
				onError : function(obj2) {alert('onError: '+obj2.status);}
			});
		}
			
		
	}

	return obj;
}