function EOV2WGS(dEovX, dEovY)
{
	var cWGS = null;
	var cEovFL = EovXY2EovFL(dEovX, dEovY);
	if(cEovFL)
	{
		cWGS = HUN_EOV2WGS_III(cEovFL.dLa, dEovFL.dFi);
	}
	return cWGS;
}

function WGS2EOV(dWgsLa, dWgsFi)
{
	var cEOV = null;
	var cEOVFL = HUN_WGS2EOV_III(dWgsLa, dWgsFi);
	if(cEOVFL)
	{
		cEOV = EovFL2EovXY(cEOVFL.dLa, cEOVFL.dFi);
	}
	return cEOV;
}

function EovXY2EovFL (dEovY, dEovX)
{
	var LA0=(19.0+(2.0/60.0)+(54.8584/3600.0))* Math.PI/180;
	var fi0=47.1/180*Math.PI;
	var k=1.0031100083;
	var n=1.0007197049;
	var R=6379743.001;
	var dExcentricity = 0.0818205679;

	var m0=0.99993;
	var x = dEovX-200000;
	var y = dEovY-650000;
	var fi1=(Math.atan(Math.Pow(Math.exp(1.0),(x/R/m0)))-(Math.PI/4))*2;
	var la1=y/R/m0;
	var fi=Math.asin((Math.cos(fi0)*Math.sin(fi1))+(Math.Sin(fi0)*Math.cos(fi1)*Math.cos(la1)));
	var la=Math.asin((Math.sin(la1)*Math.cos(fi1))/Math.cos(fi));
	var FI0=(2*(Math.atan(Math.pow(((Math.tan((Math.PI/4)+(fi/2)))/k),(1/n)))))-Math.PI/2;
	var FI;
	var DELTA = 0.000000000000000000001;

	while (true) {
		FI=(2*(Math.atan(Math.pow((Math.tan((Math.PI/4)+(fi/2))/(k*(Math.pow(((1-dExcentricity*Math.sin(FI0))/(1+dExcentricity*Math.sin(FI0))),(n*dExcentricity/2))))),(1/n)))))-(Math.PI/2);
		if (Math.abs(FI-FI0) < DELTA) {
			break; 
		}
		FI0=FI;
	}
	dFiDegree =(FI*180/Math.PI);
	dLaDegree =(LA0+(la/n))*180/Math.PI;
	return {"dLa": dLaDegree, "dFi": dFiDegree };
}

function EovFL2EovXY (dEovLaDegree, dEovFiDegree)
//function EovFL2EovXY (dEovLaDegree, dEovFiDegree)
{
	var LA0=(19.0+(2.0/60.0)+(54.8584/3600.0))*Math.PI/180.0;
	var FI0=47.1*Math.PI/180;
	var k1=1.0031100083;
	var k2=1.0007197049;
	var R=6379743.001;
	var dExcentricity = 0.0818205679;
	var m0=0.99993;
	var FIRAD = dEovFiDegree / 180.0 * Math.PI;
	var LARAD = dEovLaDegree / 180.0 * Math.PI;
	var firad1=Math.pow(((1-dExcentricity*Math.sin(FIRAD))/(1+dExcentricity*Math.sin(FIRAD))),((k2*dExcentricity)/2));
	var firad2=Math.pow(Math.tan((Math.PI/4)+(FIRAD/2)),k2);
	var firad=(Math.atan(firad1*firad2*k1)-(Math.PI/4))*2;
	var larad=(LARAD-LA0)*k2;
	var firad_1=Math.asin((Math.cos(FI0)*Math.sin(firad))-(Math.sin(FI0)*Math.cos(firad)*Math.cos(larad)));
	var larad_1=Math.asin((Math.sin(larad)*Math.cos(firad))/Math.cos(firad_1));
	var x=(Math.log(Math.tan((Math.PI/4)+(firad_1/2))))/(Math.log(Math.exp(1.0)))*R*m0;
	var y=m0*R*larad_1;
	var dEovX=x+200000;
	var dEovY=y+650000;
	return { "dX" : dEovY, "dY" : dEovX };
}

function HUN_EOV2WGS_III(eovla, eovfi)
{
	var t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
	var a0 = 3.36774881960432000E-02;
	var a1 = 9.97463875012411000E-01;
	var a2 = 8.52827308056208000E-04;
	var a3 = 5.90295212429287000E-05;
	var a4 = -2.38679133329784000E-05;
	var a5 = -1.40049307215116000E-05;
	var a6 = -4.33388202986128000E-07;
	var a7 = 1.04963741053809000E-07;
	var a8 = 3.45886735180622000E-07;
	var a9 = -3.73977090550612000E-08;

	var B0 = 5.18818066618360000E-02;
	var B1 = -2.69725862439803000E-03;
	var B2 = 9.98493412319509000E-01;
	var B3 = 4.12945921080430000E-05;
	var B4 = 7.25446580309484000E-05;
	var B5 = -9.10495267830053000E-06;
	var B6 = -1.71483556695040000E-07;
	var B7 = -8.34670699822598000E-07;
	var B8 = 1.30511955171748000E-07;
	var B9 = 4.45051719682998000E-08;
	t0 = a0;
	t1 = a1 * eovfi;
	t2 = a2 * eovla;
	t3 = a3 * Math.pow(eovfi, 2);
	t4 = a4 * eovfi * eovla;
	t5 = a5 * Math.pow(eovla, 2);
	t6 = a6 * Math.pow(eovfi, 3);
	t7 = a7 * Math.pow(eovfi, 2) * eovla;
	t8 = a8 * Math.pow(eovla, 2) * eovfi;
	t9 = a9 * Math.pow(eovla, 3);
	
	wgsfi = t0 + t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9;

	t0 = B0;
	t1 = B1 * eovfi;
	t2 = B2 * eovla;
	t3 = B3 * Math.pow(eovfi, 2);
	t4 = B4 * eovfi * eovla;
	t5 = B5 * Math.pow(eovla, 2);
	t6 = B6 * Math.pow(eovfi, 3);
	t7 = B7 * Math.pow(eovfi, 2) * eovla;
	t8 = B8 * Math.pow(eovla, 2) * eovfi;
	t9 = B9 * Math.pow(eovla, 3);

	wgsla = t0 + t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9;
	return {"dLa": wgsla, "dFi": wgsfi};
}

function HUN_WGS2EOV_III(wgsla, wgsfi)
{
	var t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
	var a0 = -3.36759647647773E-02;
	var a1 = 1.00253603097112E+00;
	var a2 = -8.52849839423219E-04;
	var a3 = -5.90279800158375E-05;
	var a4 = 2.38698427614853E-05;
	var a5 = 1.40047384568781E-05;
	var a6 = 4.33383081872915E-07;
	var a7 = -1.04993351429616E-07;
	var a8 = -3.45886263799222E-07;
	var a9 = 3.74010671149998E-08;

	var B0 = -5.18819805917605E-02;
	var B1 = 2.69734264629606E-03;
	var B2 = 1.00150653686698E+00;
	var B3 = -4.12977978119144E-05;
	var B4 = -7.25431644920029E-05;
	var B5 = 9.10575665558871E-06;
	var B6 = 1.71514601382786E-07;
	var B7 = 8.34666016784911E-07;
	var B8 = -1.30533955706728E-07;
	var B9 = -4.45044130040653E-08;
	t0 = a0;
	t1 = a1 * wgsfi;
	t2 = a2 * wgsla;
	t3 = a3 * Math.pow(wgsfi, 2);
	t4 = a4 * wgsfi * wgsla;
	t5 = a5 * Math.pow(wgsla, 2);
	t6 = a6 * Math.pow(wgsfi, 3);
	t7 = a7 * Math.pow(wgsfi, 2) * wgsla;
	t8 = a8 * Math.pow(wgsla, 2) * wgsfi;
	t9 = a9 * Math.pow(wgsla, 3);

	eovfi = t0 + t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9;
	
	t0 = B0;
	t1 = B1 * wgsfi;
	t2 = B2 * wgsla;
	t3 = B3 * Math.pow(wgsfi, 2);
	t4 = B4 * wgsfi * wgsla;
	t5 = B5 * Math.pow(wgsla, 2);
	t6 = B6 * Math.pow(wgsfi, 3);
	t7 = B7 * Math.pow(wgsfi, 2) * wgsla;
	t8 = B8 * Math.pow(wgsla, 2) * wgsfi;
	t9 = B9 * Math.pow(wgsla, 3);
	
	eovla = t0 + t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9;

	return {"dLa": eovla, "dFi": eovfi};
}
