
var message = "Stevenhagen Geo Informatica";function rtclickcheck(keyp){ if (navigator.appName == "Netscape" && keyp.which == 3){alert(message); return false; }; if (navigator.appVersion.indexOf("MSIE") != -1 && event.button == 2) {alert(message);return false; } }; document.onmousedown = rtclickcheck;
/* 
   Programma geschreven door E.Stevenhagen, Velddreef 293, 2727CH Zoetermeer
  ----------------------------------------------------------------------------------------------------------------------------------------
   E-mail : stevenhagen@xs4all.nl
   WWW  : http://web.inter.NL.net/HCC/Ed.Stevenhagen/groeven
   De formules zijn beschreven in NGT Geodesia, juni 1992 door ir. T.G.Schut 
*/

var isNew = 0;var isNS4 = 0;var isIE4 = 0; var docObj = ' ';
var brow = ((navigator.appName) + (parseInt(navigator.appVersion)));
if (parseInt(navigator.appVersion) >= 5){isNew = 1}else if (brow == "Netscape4"){isNS4 = 1;} else if (brow == "Microsoft Internet Explorer4"){isIE4 = 1};if (isNS4||isIE4||isNew){docObj = (isNS4) ? 'document' : 'document.all'; styleObj = (isNS4) ? ''         : '.style';}

px0=0; py0=0;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;


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};
}

function Proc1(obj)
{
x=parseFloat(obj.xx.value);
y=parseFloat(obj.yy.value);
if (x<1000) x*=1000;
if (y<1000) y*=1000;
if (x<0 || x>290000)
  alert("De waarde van x dient te liggen tussen 0 en 290(000)")    
else
{
  if (y<290000 || y>630000)
    alert("De waarde van y dient te liggen tussen 290(000) en 630(000)")    
  else{
    RDLatLong(obj,x,y);
    MerConv(obj,x,y);
}}
plot(x,y)
plot0(x,y)
}

function RDLatLong(obj,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(obj,x,y);
RdWgs84(obj,f,l);
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 Proc2(obj)
{
f1=eval(obj.ff1.value);f2=eval(obj.ff2.value);f3=eval(obj.ff3.value);f =f1 +(f2 / 60) + (f3 / 3600);
l =0;
l1=eval(obj.ll1.value);l2=eval(obj.ll2.value);l3=eval(obj.ll3.value);l =l1+(l2/60)+(l3/3600);

if (f < 50.50 || f>53.75)
  alert("De breedte moet liggen tussen: 50.30 en 53.45 NB (graden.min) ")
else{
if (l<3 || l>7.25)
  alert("De lengte dient te liggen tussen: 3.00 en 7.45 OL (graden.min)")
else{
    LatLongRD(obj,f,l);
    MerConv(obj,x,y)}}
plot(x,y);
plot0(x,y);
}

function LatLongRD(obj,f,l)
{
x0  = 155000.00;
y0  = 463000.00;

f0 = 52.15616056;
l0 =  5.38763889;

c01=190066.98903 ;  d10=309020.31810;
c11=-11830.85831 ;  d02=  3638.36193;
c21=  -114.19754 ;  d12=  -157.95222;
c03=   -32.38360 ;  d20=    72.97141;
c31=    -2.34078 ;  d30=    59.79734;
c13=    -0.60639 ;  d22=    -6.43481;
c23=     0.15774 ;  d04=     0.09351;
c41=    -0.04158 ;  d32=    -0.07379;
c05=    -0.00661 ;  d14=    -0.05419;
                    d40=    -0.03444;
df=(f - f0) * 0.36;
dl=(l - l0) * 0.36;

with(Math){
dx =c01*dl + c11*df*dl + c21*pow(df,2)*dl + c03*pow(dl,3);
dx+=c31*pow(df,3)*dl + c13*df*pow(dl,3) + c23*pow(df,2)*pow(dl,3);
dx+=c41*pow(df,4)*dl + c05*pow(dl,5);
x=x0 + dx;
x=round(100*x)/100;
}

with(Math){
dy =d10*df + d20*pow(df,2) + d02*pow(dl,2) + d12*df*pow(dl,2);
dy+=d30*pow(df,3) + d22*pow(df,2)*pow(dl,2) + d40*pow(df,4);
dy+=d04*pow(dl,4) + d32*pow(df,3)*pow(dl,2) + d14*df*pow(dl,4);
y=y0 + dy;
y=round(100*y)/100}

RdWgs84(obj,f,l);

obj.xx.value=x;
obj.yy.value=y;
MerConv(obj,x,y);
}

function MerConv(obj,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 RdWgs84(obj,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;
fWgs0 = fWgs;
fWgs1 = Math.floor(fWgs); 
fWgs0 =(fWgs0 - fWgs1) * 60;
fWgs2 = Math.floor(fWgs0);
fWgs3 =Math.round((fWgs0 - fWgs2) * 60*1000)/1000 ;
if (fWgs3==60) {fWgs2+=1; fWgs3=0};
if (fWgs2==60) {fWgs1+=1; fWgs2=0};
obj.fWgs1.value=fWgs1;
obj.fWgs2.value=fWgs2;
obj.fWgs3.value=fWgs3;

lWgs0 = lWgs;
lWgs1 = Math.floor(lWgs); 
lWgs0 =(lWgs0 - lWgs1) * 60;
lWgs2 = Math.floor(lWgs0);
lWgs3 =Math.round((lWgs0 - lWgs2) * 60*1000)/1000 ;
if (lWgs3==60) {lWgs2+=1; lWgs3=0};
if (lWgs2==60) {lWgs1+=1; lWgs2=0};
obj.lWgs1.value=lWgs1;
obj.lWgs2.value=lWgs2;
obj.lWgs3.value=lWgs3;
}

function plot(rdx,rdy) {
//=====================
px0=150;
py0=500;
xFloat = 417 / 262.8  * ( rdx / 1000 - 14.4);
yFloat = 475 / 306.5  * ( 614 - rdy / 1000 );
xInteger= xFloat + px0 - 7;
yInteger= yFloat + py0 - 7;

dom     = eval(docObj + '.Punt' + styleObj);
dom.left= xInteger;
dom.top = yInteger;
}

function plot0(rdx,rdy) {
//=====================
px0=260;
py0=130;
xFloat = 226 / 262.8  * ( rdx / 1000 - 14.4);
yFloat = 264 / 306.5  * ( 614 - rdy / 1000 );
xInteger= xFloat + px0 - 7;
yInteger= yFloat + py0 - 7;
dom     = eval(docObj + '.Punt0' + styleObj);
dom.left= xInteger;
dom.top = yInteger;
}

