x=0; y=0; a="  "; b=" ";  xu=0;yu=0;
var obj=new Object();

function Compute(xin, yin )
{
  x=xin
  y=yin

  if(x<1000) {x=1000 * x ; xin.value=x }
  if(y<1000) {y=1000 * y ; yin.value=y }

  if(x<0||x>320000)
    alert("De waarde van x dient te liggen tussen 0 en 320(000)")
  else{
    if(y<0||y>250000)
      alert("De waarde van y dient te liggen tussen 0 en 250(000)")
    else
        {
      LamLatLong(x,y)
        }  
      }   
 }

function LamLatLong(x,y)
{
/*  x=251763.204
    y=153034.174
*/
  a        =6378388
  f        =297
  lambda0  =4.35693972
  p        =.7716421928
  k        =11565915.812935
  alfa     =.00813847
  delta_x  =.01256
  delta_y  =88.4378

  lambda=0
  rho1  =0
  xx    =0
  yy    =0

  f = 1 / f
  e = 2* f - f * f 

  with (Math) {
  e           = sqrt(e)
  grad_rad =PI/180
  rad_grad =180/PI
  alfa     = alfa * grad_rad
  lambda0  = lambda0 * grad_rad

  x1 = x - delta_x  - 150000
  y1 = - y + delta_y +5400000
  xx =  x1 / y1

  xx = atan(xx)
  phi = xx + alfa
  lambda = lambda0 + phi / p
  lambda = lambda * rad_grad

  r = x1 * x1 + y1 * y1
  r = sqrt(r)

  xx= r/k
  xx=log(xx) / p
  xx = exp(xx)
  psi = 2 * atan(xx)
  rho = PI / 2 - psi

  while (rho!= rho1)
  {
   rho=rho1
   yy= (1 - e * sin(rho)) / (1+e*sin(rho)) 
   yy = e / 2 * log(yy)
   yy = xx * exp(yy)
   yy = atan(yy)
   rho1 = (PI/2) - (2*yy)
  }

  rho= rho* rad_grad
  ll = rho
  bb = lambda

  f=ll
  l=bb

  //alert( (( floor(f * 100000)) / 100000 ) -0.001);                     
  //alert( (( floor(l * 100000)) / 100000 ) +0.001);
  

  obj.x=(( floor(f * 100000)) / 100000 ) -0.001;
  obj.y=(( floor(l * 100000)) / 100000 ) +0.001;  
 
  // geen correctie
  /*
  obj.x=(( floor(f * 100000)) / 100000 ) ;
  obj.y=(( floor(l * 100000)) / 100000 ) ;  
  */
 
  return obj;                  
 }
}
