var GmCoord;

x=0;y=0;l=0;f=0;a=" ";b="  ";xx="";yy=" ";mc=0
f1="0";f2="0";f3="0";l1="0";l2="0";l3="0";graden=0;gra=0;min=0;sec=0
nb=0; ol=0

function rdtolb(x,y) {
x=parseFloat(x)
y=parseFloat(y)

if (x<1000) x*=1000
if (y<1000) y*=1000
if (x<0 || x>290000)
  alert("0 < x < 290(000)")    
else
{
  if (y<290000 || y>630000)
    alert("290(000) < y <630(000)")    
  else{
    RDLatLong(x,y)
    MerConv(x,y)
}}
}

function RDLatLong(x,y)
{
x0  = 155000.000
y0  = 463000.000

f0 = 52.156160556
l0 =  5.387638889

 a01=3236.0331637 ; b10=5261.3028966
 a20= -32.5915821 ; b11= 105.9780241
 a02=  -0.2472814 ; b12=   2.4576469
 a21=  -0.8501341 ; b30=  -0.8192156
 a03=  -0.0655238 ; b31=  -0.0560092
 a22=  -0.0171137 ; b13=   0.0560089
 a40=   0.0052771 ; b32=  -0.0025614
 a23=  -0.0003859 ; b14=   0.0012770
 a41=   0.0003314 ; b50=   0.0002574
 a04=   0.0000371 ; b33=  -0.0000973
 a42=   0.0000143 ; b51=   0.0000293
 a24=  -0.0000090 ; b15=   0.0000291 


with(Math){ 
dx=(x-x0)*pow(10,-5);
dy=(y-y0)*pow(10,-5);

df =a01*dy + a20*pow(dx,2) + a02*pow(dy,2) + a21*pow(dx,2)*dy + a03*pow(dy,3)
df+=a40*pow(dx,4) + a22*pow(dx,2)*pow(dy,2) + a04*pow(dy,4) + a41*pow(dx,4)*dy
df+=a23*pow(dx,2)*pow(dy,3) + a42*pow(dx,4)*pow(dy,2) + a24*pow(dx,2)*pow(dy,4);
 f = f0 + df/3600;

dl =b10*dx +b11*dx*dy +b30*pow(dx,3) + b12*dx*pow(dy,2) + b31*pow(dx,3)*dy;
dl+=b13*dx*pow(dy,3)+b50*pow(dx,5) + b32*pow(dx,3)*pow(dy,2) + b14*dx*pow(dy,4);
dl+=b51*pow(dx,5)*dy +b33*pow(dx,3)*pow(dy,3) + b15*dx*pow(dy,5);
 l = l0 + dl/3600}

 MerConv(x,y)
RdEd50(f,l)
RdWgs84(f,l)

//RdUtm()

Grad(f)
//obj.ff1.value=gra
//obj.ff2.value=min
//obj.ff3.value=sec

Grad(l)
//obj.ll1.value=" " + gra
//obj.ll2.value=min
//obj.ll3.value=sec
}

function MerConv(x,y)
{
x0  = 155000.00
y0  = 463000.00

with(Math)
{
xc=(x-x0)/100000;
yc=(y-y0)/100000;
mc=12823.383*xc + 336.454*xc*yc+7.564*xc*pow(yc,2);
mc+=-2.521*pow(xc,3)+0.173*xc*pow(yc,3)-0.173*pow(xc,3)*yc;
mc0=0.9*mc/10000

mc1=0;mc2=0;mc3=0
if (mc< 0) mc0=-mc0 
Grad(mc0)
}
if (mc<0){
   if (gra==0) min=-min
   else gra=-gra}
// obj.mc1.value=gra
// obj.mc2.value=min
// obj.mc3.value=sec
}

function RdEd50(f,l)
{
fEd50 = f + (-18.00 - 14.723 * (f - 52) - 1.029 * (l - 5)) / 100000
lEd50 = l + (+89.120 + 3.708 * (f - 52) - 17.176* (l - 5)) / 100000
//obj.fEd501.value=fEd50
//obj.lEd501.value=" " + lEd50

Grad(fEd50)
//obj.fminEd501.value=min
//obj.fsecEd501.value=sec
Grad(lEd50)
//obj.lminEd501.value=min
//obj.lsecEd501.value=sec
} 

function RdWgs84(f,l)
{
fWgs= f + (-96.862 - 11.714 * (f-52)- 0.125 * (l-5)) / 100000
lWgs= l + (-37.902 +  0.329 * (f-52)-14.667 * (l-5)) / 100000
//obj.fWgs1.value=fWgs
//obj.lWgs1.value=" " + lWgs

Grad(fWgs)

//obj.fminWgs1.value=min
//obj.fsecWgs1.value=sec
Grad(lWgs)


GmCoord = fWgs+','+lWgs;
//obj.lminWgs1.value=min
//obj.lsecWgs1.value=sec
}

function Grad(graden)
{
g0 = graden
gra = Math.floor(g0) 
g0 =(g0 - gra) * 60
min = Math.floor(g0)
sec =Math.round((g0 - min) * 60*1000)/1000 
if (sec==60) {min=min+1; sec=0}
if (min==60) {gra=gra+1; min=0}
}
