// Hans van der Meer, juni 2008 / algoritmes uit: Elements of Solar Eclipses 1951-2200, Meeus, 1989
var el = new Array('1 augustus 2008:65.65:T:0.83054:2454679.93:106:126:10:0.101746:0.5285771:-0.0000635:-0.00000814:0.85045:-0.2025225:-0.0001512:0.00000331:17.86754:-0.010121:-0.000004:328.42577:15.002012:0.538225:0.0001111:-0.000012:-0.007859:0.0001105:-0.000012:0.0046065:0.0045836:1',
'4 januari 2011:67.1:P:1.0627:2455565.869:136:151:9:-0.1406310:0.5162760:-0.0000418:-0.0000065:1.0558220:0.1051387:0.0001064:-0.0000015:-22.7412205:0.0040620:0.0000060:313.811188:14.996630:0.5635920:0.0001098:-0.0000108:0.0173670:0.0001092:-0.0000107:0.0047557:0.0047320:0',
'11 mei 1975:45.86:P:1.0647:2442543.80385536:1:118:7:-0.33642675:0.52215036:0.000049533:-0.0000067003:1.02199301:0.09154182:-0.00015039:-0.0000011218:17.73483399:0.0105932:-0.0000039285:285.907586:15.00166393:0.5556303:-0.0001087:-0.000010632:0.00942592:-0.00010816:-0.000010579:0.00462997:0.00460691:0',
'29 april 1976:46.82:A:0.3378:2442897.93353795:1:128:10:-0.27503376:0.49430404:0.000034641:-0.0000055859:0.28391949:0.11243641:-0.000092956:-0.0000012075:14.5636369:0.01261925:-0.0000032417:330.66960699:15.00265299:0.567418:-0.00003436:-0.0000097989:0.02115488:-0.00003419:-0.0000097501:0.00464281:0.00461969:0',
'20 juli 1982:52.6:P:1.2886:2445171.28106283:1:155:19:0.2799068:0.57789014:-0.000036959:-0.0000096812:1.2664694:-0.06000159:-0.00021316:0.00000092557:20.61553515:-0.00772004:-0.0000044948:103.43073983:15.00088006:0.53173223:0.00004363:-0.000012655:-0.01435306:0.00004341:-0.000012592:0.00460088:0.00457797:1',
'15 december 1982:52.92:P:1.1293:2445318.89732528:1:122:10:0.40209046:0.50094629:0.00000047065:-0.000005655:1.08119709:-0.07597227:0.00011156:0.0000009831:-23.26393322:-0.0020191:0.0000064358:331.253904:14.99632495:0.57330141:0.00004606:-0.000010013:0.02700871:0.00004583:-0.0000099636:0.00475184:0.00472817:0',
'30 mei 1984:54.05:A:0.2755:2445851.19839694:1:137:17:0.05601003:0.52088913:0.000051153:-0.0000069057:0.29867074:0.13301232:-0.00015062:-0.0000019179:21.86889975:0.00569501:-0.0000051383:75.62094162:14.99985361:0.55110813:-0.00012498:-0.000010885:0.00492632:-0.00012436:-0.000010831:0.00461163:0.00458866:1',
'10 mei 1994:60.3:A:0.4077:2449483.21697263:1:128:17:-0.17341146:0.49906292:0.000029556:-0.0000056295:0.38365142:0.08693927:-0.00011826:-0.00000091452:17.68613132:0.01064192:-0.0000039944:75.90597555:15.0016207:0.56693692:-0.00003184:-0.0000097624:0.02067623:-0.00003169:-0.0000097138:0.00463085:0.00460779:1',
'12 oktober 1996:62.14:P:1.1227:2450369.08546271:1:153:14:0.29616871:0.50603627:0.000014523:-0.000006435:1.08322016:-0.15152179:-0.000010202:0.0000018427:-7.6395032:-0.01523369:0.000001547:33.40553228:15.00378185:0.55937215:-0.00010672:-0.000010689:0.013149:-0.00010619:-0.000010636:0.00468661:0.00466327:1',
'11 augustus 1999:63.68:T:0.5062:2451401.96121482:1:145:11:0.07005581:0.54430362:-0.000040611:-0.0000080695:0.502838:-0.11849286:-0.00011576:0.0000016896:15.32734072:-0.01203498:-0.0000032567:343.69030346:15.00298255:0.54249306:0.00011683:-0.000011678:-0.00364585:0.00011625:-0.00001162:0.00461301:0.00459004:1',
'31 mei 2003:64.7:A:0.996:2452790.67:1:147:4:-0.3238544:0.4939022:0.0000545:-0.0000056:0.9452118:0.1263288:-0.0001691:-0.0000016:21.8459854:0.0057463:-0.0000051:240.61499:14.999788:0.5644051:-0.000053:-0.0000098:0.018157:-0.0000527:-0.0000098:0.0046126:0.0045896:1',
'3 oktober 2005:65.6:A:0.3306:2453646.9394348:1:134:11:0.36604806:0.45547905:0.0000099288:-0.0000054399:0.1758195:-0.25080653:0.0000074744:0.0000031692:-4.09223846:-0.01549049:0.00000069733:347.75478987:15.00434049:0.56268518:-0.0001022:-0.000010345:0.01644556:-0.00010169:-0.000010294:0.00467412:0.00465084:1',
'29 maart 2006:65.8:T:0.3843:2453823.92526059:1:139:10:-0.28991743:0.506088:0.00001814:-0.0000082819:0.27903895:0.27899188:-0.000038634:-0.000004769:3.39884148:0.01555752:-0.00000083822:328.7937101:15.00436847:0.53702564:0.00006441:-0.000012748:-0.00908622:0.00006409:-0.000012684:0.00468267:0.00465935:1',
'26 januari 2009:67:A:-0.282:2454857.83315205:1:131:8:0.09962367:0.4781969:-0.000035254:-0.0000054417:-0.2638002:0.1763075:0.00012549:-0.0000021592:-18.64789991:0.01014513:0.0000045884:296.85945783:14.99901671:0.57193237:-0.00006966:-0.000010105:0.0256465:-0.00006932:-0.000010055:0.00474988:0.00472623:0',
'22 juli 2009:67.2:T:0.0698:2455034.60861538:1:136:3:0.23998829:0.55639545:-0.000057622:-0.0000094305:-0.00328382:-0.17745794:-0.00013437:0.000003176:20.26424248:-0.00787358:-0.0000045592:223.38413727:15.00100234:0.5304503:0.00000631:-0.000012808:-0.01562861:0.00000628:-0.000012744:0.00460142:0.0045785:1',
'15 januari 2010:67.4:A:0.4002:2455211.79697945:1:141:7:-0.17324368:0.48452041:-0.000037104:-0.000005374:0.3664039:0.14049202:0.00011703:-0.0000017037:-21.12929902:0.00730746:0.0000055662:282.66671694:14.9975904:0.57469972:0.00003723:-0.0000099292:0.02840006:0.00003704:-0.0000098798:0.00475458:0.0047309:0',
'11 juli 2010:67.6:T:-0.6788:2455389.31571339:1:146:20:0.07409976:0.55725144:-0.000027607:-0.0000089672:-0.71703005:-0.13665789:-0.00011211:0.0000023571:22.03570187:-0.0053412:-0.0000051822:118.60980203:15.00006747:0.53444635:-0.0000908:-0.000012358:-0.01165245:-0.00009035:-0.000012297:0.00459887:0.00457597:1',
'1 juni 2011:68:P:1.213:2455714.38701605:1:118:21:-0.20262891:0.52627447:0.000029753:-0.0000066427:1.20555786:0.0221959:-0.00019311:-0.00000021783:22.09196989:0.00551956:-0.0000051045:135.53351019:14.99974374:0.55623817:-0.00010256:-0.000010459:0.01003081:-0.00010205:-0.000010407:0.00461123:0.00458827:1',
'1 juli 2011:68:P:-1.4917:2455743.86076494:1:156:9:-0.05926928:0.53551125:-0.0000039778:-0.0000073702:-1.50203757:-0.08818307:-0.00008331:0.0000013538:23.12097808:-0.00254033:-0.0000056358:314.04869688:14.99935764:0.54779315:-0.00012719:-0.000011078:0.00162788:-0.00012656:-0.000011023:0.00459904:0.00457613:1',
'25 november 2011:68.2:P:-1.0536:2455890.76486423:1:123:6:-0.31001288:0.57290629:0.000020522:-0.0000093908:-1.02766422:-0.05788106:0.00021051:0.00000083169:-20.67681171:-0.00810005:0.0000050324:273.29543356:14.99839656:0.54062741:0.00008218:-0.000012772:-0.00550252:0.00008177:-0.000012708:0.00473611:0.00471252:0',
'20 mei 2012:68.4:A:0.4828:2456068.49575692:1:128:0:-0.00223737:0.50318274:0.000018326:-0.0000056579:0.48552878:0.05605376:-0.00014106:-0.00000056333:20.22055712:0.00827127:-0.0000046618:180.85286256:15.00057727:0.5665111:-0.00003124:-0.0000097295:0.02025256:-0.00003108:-0.000009681:0.00462052:0.00459751:1',
'13 november 2012:68.6:T:-0.3719:2456245.42563565:1:133:22:-0.18370187:0.57434055:0.000035046:-0.0000097309:-0.34676909:-0.09407004:0.00014836:0.0000015072:-18.24755452:-0.010602:0.0000042545:153.89453798:14.99986749:0.53746937:-0.00002289:-0.000013034:-0.00864481:-0.00002277:-0.000012969:0.0047256:0.00470207:0',
'10 mei 2013:68.8:A:-0.2694:2456422.5182873:1:138:0:-0.1751455:0.50528871:0.000014447:-0.0000059078:-0.30429306:0.08888988:-0.000095845:-0.00000096959:17.60548298:0.01070052:-0.0000040267:180.90058437:15.00166099:0.56369556:0.0000788:-0.000010005:0.01745101:0.0000784:-0.0000099554:0.00463136:0.00460829:1',
'3 november 2013:69:H:0.3272:2456600.03305368:1:143:13:0.18323015:0.54694952:0.000028233:-0.0000082576:0.29471111:-0.12007563:0.000079039:0.0000017286:-15.20966412:-0.01263576:0.0000034025:19.10831319:15.00132527:0.54630608:-0.0001121:-0.000012044:0.00014792:-0.00011154:-0.000011984:0.00471376:0.00469029:0',
'29 april 2014:69.2:A:-1:2456776.7531548:1:148:6:0.18519846:0.52826848:-0.0000049913:-0.0000072438:-0.98351727:0.12211305:-0.000047318:-0.000001619:14.44979979:0.01265839:-0.0000033265:270.6542521:15.002756:0.55056146:0.00011865:-0.000011154:0.00438229:0.00011806:-0.000011098:0.00464335:0.00462023:1',
'23 oktober 2014:69.4:P:1.0908:2456954.40670062:1:153:22:0.40257464:0.50848578:0.000016032:-0.0000063928:1.02156376:-0.1355327:0.000017976:0.0000016225:-11.61852423:-0.0141985:0.0000025032:153.92974239:15.00265152:0.561021:-0.00011083:-0.000010641:0.0147896:-0.00011028:-0.000010588:0.00470062:0.00467721:1',
'20 maart 2015:69.6:T:0.9454:2457101.9074831:1:120:10:-0.1682518:0.5537415:0.0000058012:-0.0000093586:0.9390713:0.17864808:-0.000054126:-0.000002927:-0.21265797:0.01603605:-0.000000020869:328.10588164:15.00441493:0.53595511:0.0000265:-0.000012955:-0.01015145:0.00002636:-0.00001289:0.00469512:0.00467173:0',
'13 september 2015:69.8:P:-1.1004:2457278.78841324:1:125:7:-0.29285854:0.48214203:0.0000016656:-0.0000054049:-1.06144144:-0.15181828:0.000022638:0.0000016376:3.89024278:-0.01556351:-0.0000010471:285.97633352:15.0048503:0.56828783:0.00002582:-0.0000097576:0.02202037:0.00002569:-0.000009709:0.00464739:0.00462424:1',
'9 maart 2016:70:T:0.2609:2457456.58216618:1:130:2:-0.06248009:0.5502769:0.0000046491:-0.0000090544:0.25385041:0.17212329:0.000017127:-0.0000027494:-4.37971515:0.01588556:0.00000076047:207.3726098:15.00397123:0.53889131:-0.00007038:-0.000012751:-0.00722991:-0.00007003:-0.000012687:0.00470875:0.0046853:0',
'1 september 2016:70.2:A:-0.333:2457632.88057532:1:135:9:-0.16135593:0.50406351:-0.000021358:-0.0000063028:-0.29966923:-0.14815212:-0.00002585:0.0000017809:8.06329797:-0.0148024:-0.0000018107:315.03265777:15.00454499:0.55795211:0.00011155:-0.000010467:0.01173616:0.00011099:-0.000010415:0.00463402:0.00461095:1',
'26 februari 2017:70.4:A:-0.4578:2457811.12120967:1:140:15:0.17598144:0.52535626:-0.0000061957:-0.0000074107:-0.42554049:0.15325409:0.000079222:-0.0000020748:-8.49164193:0.01526081:0.0000016165:41.80067287:15.00308589:0.55249372:-0.00012569:-0.000011522:0.00630473:-0.00012506:-0.000011464:0.00472198:0.00469847:0',
'21 augustus 2017:70.6:T:0.4367:2457987.2685177:1:145:18:-0.12952891:0.54064257:-0.000029314:-0.0000080871:0.48540424:-0.14163995:-0.000090489:0.0000020515:11.86695557:-0.01362157:-0.0000024939:89.24772986:15.00393779:0.54211678:0.00012407:-0.000011776:-0.00402028:0.00012345:-0.000011717:0.0046223:0.00459928:1',
'15 februari 2018:70.8:P:-1.2116:2458165.36982555:1:150:21:0.3636624:0.4990522:-0.000021208:-0.0000059204:-1.15753386:0.12833364:0.00012676:-0.0000014397:-12.46403776:0.01408048:0.0000025793:131.48354852:15.00182316:0.56828094:-0.00009227:-0.000010276:0.02201329:-0.00009181:-0.000010224:0.0047341:0.00471052:0',
'13 juli 2018:71:P:-1.3542:2458312.62657166:1:117:3:-0.0992343:0.58281464:-0.0000013175:-0.0000099266:-1.35077315:-0.03329333:-0.000077033:0.00000046955:21.84531277:-0.00593743:-0.0000052098:223.57409366:15.00024103:0.53019167:-0.00001183:-0.000012803:-0.01588594:-0.00001177:-0.000012739:0.00459887:0.00457596:1',
'11 augustus 2018:71:P:1.1476:2458341.90795862:1:155:10:0.36755146:0.56849586:-0.00004773:-0.0000096206:1.09391031:-0.12629345:-0.00015985:0.0000020632:15.21672931:-0.0120763:-0.0000031222:328.69937907:15.00307856:0.53172152:0.00003379:-0.000012752:-0.01436375:0.00003362:-0.000012689:0.00461273:0.00458976:1',
'6 januari 2019:71.2:P:1.1417:2458489.57126546:1:122:2:0.12841544:0.50823842:-0.0000162:-0.0000058198:1.14402672:0.00842363:0.00010355:-0.0000000010891:-22.54492271:0.00484782:0.0000061837:208.61903416:14.99673656:0.57272607:0.00005746:-0.000010083:0.02643623:0.00005717:-0.000010033:0.00475629:0.0047326:0',
'2 juli 2019:71.4:T:-0.6466:2458667.30841597:1:127:19:-0.21557992:0.56620867:0.000027397:-0.0000087884:-0.65071217:0.01063996:-0.00012724:-0.00000026839:23.0129496:-0.00318702:-0.0000054959:103.98380973:14.99950489:0.53765464:-0.00008982:-0.000012035:-0.00846013:-0.00008937:-0.000011975:0.00459846:0.00457556:1',
'26 december 2019:71.6:A:0.4135:2458843.72144336:1:132:5:-0.14036172:0.53561033:-0.0000014587:-0.0000071495:0.42407427:-0.03665511:0.00014576:0.00000060433:-23.37347344:0.00140653:0.0000064237:254.94106599:14.99626976:0.55891113:0.00012839:-0.000011178:0.0126901:0.00012775:-0.000011122:0.00475485:0.00473117:0',
'21 juni 2020:71.8:A:0.1209:2459021.7786461:1:137:7:0.1543148:0.5311545:0.000025862:-0.0000069214:0.13640723:0.0513871:-0.00016095:-0.00000079105:23.43567165:-0.00023279:-0.0000055899:284.53991805:14.9991096:0.55234159:-0.0001223:-0.00001071:0.00615367:-0.00012169:-0.000010657:0.00460097:0.00457806:1',
'14 december 2020:72:T:-0.2939:2459198.17684016:1:142:16:-0.18176793:0.56335677:0.000021645:-0.0000089561:-0.2696497:-0.08581217:0.0001884:0.0000015035:-23.25776442:-0.001986:0.0000062383:61.27031123:14.99649666:0.54388567:0.00009702:-0.000012556:-0.00226052:0.00009654:-0.000012494:0.00475029:0.00472663:0');
var s = new Array(30);
// selecteer de default waarde: 1 = 4 januari 2011
s = el[1].split(':')
var datum = s[0];
var deltat = 1.0* s[1];
var type = s[2];
var gamma = 1.0 * s[3];
var jde = s[4];
var lun = s[5];
var saros = s[6];
var t0 = 1.0 * s[7];
var x0 = 1.0 * s[8];
var x1 = 1.0 * s[9];
var x2 = 1.0 * s[10];
var x3 = 1.0 * s[11];
var y0 = 1.0 * s[12];
var y1 = 1.0 * s[13];
var y2 = 1.0 * s[14];
var y3 = 1.0 * s[15];
var d0 = 1.0 * s[16]; 
var d1 = 1.0 * s[17];
var d2 = 1.0 * s[18];
var m0 = 1.0 * s[19]; 
var m1 = 1.0 * s[20];
var l10 = 1.0 * s[21];
var l11 = 1.0 * s[22];
var l12 = 1.0 * s[23];
var l20 = 1.0 * s[24];
var l21 = 1.0 * s[25];
var l22 = 1.0 * s[26];
var tanf1 = 1.0 * s[27];
var tanf2 = 1.0 * s[28];
var tz = 1 + 1.0 * s[29];
var FLAT = 0.99664719;
var RADIUS = 6378140.0;
var g;
var tau1;
var tau2;
var at;   

function taumax(t, lat, lon, height) {
var tanu= FLAT * Math.tan(radians(lat));
var u = Math.atan(tanu);

var rsin = FLAT * Math.sin(u) + height / RADIUS * Math.sin(radians(lat));
var rcos = Math.cos(u) + height / RADIUS * Math.cos(radians(lat));
var xx = x0 + t * (x1 + t * (x2 + t * x3));
var yy = y0 + t * (y1 + t * (y2 + t * y3));
var dd = d0 + t * (d1 + t * d2);
var l1 = l10 + t * (l11 + t * l12);
var l2 = l20 + t * (l21 + t * l22);
var mm = m0 + m1 * t;
var hh = mm - lon - 0.00417807 * deltat;
var xdot = x1 + 2 * t * x2 + 3 * t * t * x3;
var ydot = y1 + 2 * t * y2 + 3 * t * t * y3;
var ksi = rcos * Math.sin(radians(hh));
var eta = rsin * Math.cos(radians(dd)) - rcos * Math.cos(radians(hh)) * Math.sin(radians(dd));
var zeta = rsin * Math.sin(radians(dd)) + rcos * Math.cos(radians(hh)) * Math.cos(radians(dd));
var ksidot = radians(m1 * rcos * Math.cos(radians(hh)));
var etadot = radians(m1 * ksi * Math.sin(radians(dd)) - zeta * d1);
var uu = xx - ksi;
var vv = yy - eta;
var aa = xdot - ksidot;
var bb = ydot - etadot;
var n2 = aa * aa + bb * bb;
var n = Math.sqrt(n2);
var l1dot = l1 - zeta * tanf1;
var l2dot = l2 - zeta * tanf2;
var tijd = -1.0 * (uu * aa + vv * bb ) / n2;
var m = Math.sqrt(uu * uu + vv * vv);
g = (l1dot - m)/(l1dot + l2dot);
var s = (aa*vv - uu*bb)/(n * l1dot);
tau1 = Math.sqrt(1 - s*s) * l1dot / n;
s = (aa*vv - uu*bb)/(n * l2dot);
tau2 = Math.sqrt(1 - s*s) * l2dot / n;
if ( m < Math.abs(l2dot)) {
	if (l2dot < 0) at = -1;
	if (l2dot > 0) at = 1;
	}
	else {
	at = 0;
	};
return tijd;
};

function contact(t, lat, lon, height, i) {
var tanu= FLAT * Math.tan(radians(lat));
var u = Math.atan(tanu);

var rsin = FLAT * Math.sin(u) + height / RADIUS * Math.sin(radians(lat));
var rcos = Math.cos(u) + height / RADIUS * Math.cos(radians(lat));
var xx = x0 + t * (x1 + t * (x2 + t * x3));
var yy = y0 + t * (y1 + t * (y2 + t * y3));
var dd = d0 + t * (d1 + t * d2);
var l1 = l10 + t * (l11 + t * l12);
var l2 = l20 + t * (l21 + t * l22);
var mm = m0 + m1 * t;
var hh = mm - lon - 0.00417807 * deltat;
var xdot = x1 + 2 * t * x2 + 3 * t * t * x3;
var ydot = y1 + 2 * t * y2 + 3 * t * t * y3;
var ksi = rcos * Math.sin(radians(hh));
var eta = rsin * Math.cos(radians(dd)) - rcos * Math.cos(radians(hh)) * Math.sin(radians(dd));
var zeta = rsin * Math.sin(radians(dd)) + rcos * Math.cos(radians(hh)) * Math.cos(radians(dd));
var ksidot = radians(m1 * rcos * Math.cos(radians(hh)));
var etadot = radians(m1 * ksi * Math.sin(radians(dd)) - zeta * d1);
var uu = xx - ksi;
var vv = yy - eta;
var aa = xdot - ksidot;
var bb = ydot - etadot;
var n2 = aa * aa + bb * bb;
var n = Math.sqrt(n2);
var l1dot = l1 - zeta * tanf1;
var l2dot = l2 - zeta * tanf2;
var tijd = -1.0 * (uu * aa + vv * bb ) / n2;
var ldot = l1dot;
if (i == 2 || i == 3) ldot = at * l2dot;
var sign = 1.0;
if (i == 1 || i == 2) sign = -1.0;
var s = (aa*vv - uu*bb)/(n * ldot);
var tau = - 1.0 * (uu*aa + vv*bb) / n2 + sign * Math.sqrt(1 - s*s) * ldot / n;
return tau;
};

function hsun(t, lat, lon) {
	var dd = d0 + t * (d1 + t * d2);
	var mm = m0 + m1 * t;
	var hh = mm - lon - 0.00417807 * deltat;
	var htmp = Math.asin(Math.sin(radians(dd)) * Math.sin(radians(lat)) + Math.cos(radians(dd)) * Math.cos(radians(lat)) * Math.cos(radians(hh)));
	return Math.round(degrees(htmp));
	};

function calc() {
	var t = 0;
	var dt = 0;
	var lt = 0;
	var teller = 1;
	while (teller < 25) {
	dt = taumax( t, loc.LatDec.value, loc.LonDec.value, loc.Height.value);
	if (Math.abs(dt) > 0.000001) {
		t= t + dt;
		teller++;
		}
	else {
		teller = 25;
		}
	}


	var dts = deltat / 3600.0;
	lt = 1.0*t0 + t + tz - dts;
	var perc = parseInt(100.0 * g);

// bereken contacten
// 1e contact
	var lt1;
	var t1 = t - tau1;
	teller = 1;
	while (teller < 25 ) {
	dt = contact( t1, loc.LatDec.value, loc.LonDec.value, loc.Height.value, 1);
	if (Math.abs(dt) > 0.000001) {
		t1 = t1 + dt;
		teller++;
		}
	else {
		teller = 25;
		}
	}

	lt1 = 1.0 * t0 + t1 + tz - dts;
// 4e contact
	var lt4;
	var t4 = t + tau1;
	teller = 1;
	while (teller < 25 ) {
	dt = contact( t4, loc.LatDec.value, loc.LonDec.value, loc.Height.value, 4);
	if (Math.abs(dt) > 0.000001) {
		t4 = t4 + dt;
		teller++;
		}
	else {
		teller = 25;
		}
	}
	lt4 = 1.0 * t0 + t4 + tz - dts;

// 2e en 3e contact
if (tau2) {
// 2e contact
	var lt2;
	var t2 = t - at * tau2;
	teller = 1;
	while (teller < 25 ) {
	dt = contact( t2, loc.LatDec.value, loc.LonDec.value, loc.Height.value, 2);
	if (Math.abs(dt) > 0.000001) {
		t2 = t2 + dt;
		teller++;
		}
	else {
		teller = 25;
		}
	}
	lt2 = 1.0 * t0 + t2 + tz - dts;

// 3e contact
	var lt3;
	var t3 = t + at * tau2;
	teller = 1;
	while (teller < 25 ) {
	dt = contact( t3, loc.LatDec.value, loc.LonDec.value, loc.Height.value, 3);
	if (Math.abs(dt) > 0.000001) {
		t3 = t3 + dt;
		teller++;
		}
	else {
		teller = 25;
		}
	}
	lt3 = 1.0 * t0 + t3 + tz - dts;
}
// einde contacten
// hoogte zon
	var hc = hsun(t, loc.LatDec.value, loc.LonDec.value);
	var h1 = hsun(t1, loc.LatDec.value, loc.LonDec.value);
	var h4 = hsun(t4, loc.LatDec.value, loc.LonDec.value);
	if (tau2) {
		var h2 = hsun(t2, loc.LatDec.value, loc.LonDec.value);
		var h3 = hsun(t3, loc.LatDec.value, loc.LonDec.value);
		};
// build table with results;
var retstring = '<table border=1 cellpadding=0 cellspacing=0><tr><td width=150><b>Gebeurtenis</b></td>';
retstring = retstring + '<td width=100><b>Lokale tijd (NL)</b></td>';
retstring = retstring + '<td width=100><b>Tijd (UT)</b></td>';
retstring = retstring + '<td width=100><b>Hoogte Zon</b></td>';
retstring = retstring + '<td width=250><b>Opmerkingen</b></td></tr>';

retstring = retstring + '<tr><td>Begin (1<sup>e</sup> contact)</td>';
retstring = retstring + '<td>' + timehhmmss(lt1) + '</td>';
retstring = retstring + '<td>' + timehhmmss(lt1 - tz) + '</td>';
retstring = retstring + '<td>' + h1 + '°</td>';
var tmptxt = ' ';
if (h1 < 0) tmptxt = 'Zon is nog niet op';
retstring = retstring + '<td>' + tmptxt + '&nbsp;</td></tr>';

if (tau2) {
if (at < 0) retstring = retstring + '<tr><td>Begin totaliteit (2<sup>e</sup> contact)</td>';
if (at > 0)retstring = retstring + '<tr><td>Begin ringvormige fase (2<sup>e</sup> contact)</td>';
retstring = retstring + '<td>' + timehhmmss(lt2) + '</td>';
retstring = retstring + '<td>' + timehhmmss(lt2 - tz) + '</td>';
retstring = retstring + '<td>' + h2 + '°</td>';
retstring = retstring + '<td>&nbsp;</td></tr>';

if (at < 0) retstring = retstring + '<tr><td>Midden van totaliteit</td>';
if (at > 0) retstring = retstring + '<tr><td>Midden van ringvormige fase</td>';
retstring = retstring + '<td>' + timehhmmss(lt) + '</td>';
retstring = retstring + '<td>' + timehhmmss(lt - tz) + '</td>';
retstring = retstring + '<td>' + hc + '°</td>';
if (at < 0) retstring = retstring + '<td>Duur totaliteit: ' + timemmss(lt3 - lt2) + '</td></tr>';
if (at > 0) retstring = retstring + '<td>Duur ringvormige fase: ' + timemmss(lt3 - lt2) + '</td></tr>';

if (at < 0) retstring = retstring + '<tr><td>Einde totaliteit (3<sup>e</sup> contact)</td>';
if (at > 0) retstring = retstring + '<tr><td>Einde ringvormige fase (3<sup>e</sup> contact)</td>';
retstring = retstring + '<td>' + timehhmmss(lt3) + '</td>';
retstring = retstring + '<td>' + timehhmmss(lt3 - tz) + '</td>';
retstring = retstring + '<td>' + h3 + '°</td>';
retstring = retstring + '<td>&nbsp;</td></tr>';
}
else {
retstring = retstring + '<tr><td>Maximale verduistering</td>';
retstring = retstring + '<td>' + timehhmmss(lt) + '</td>';
retstring = retstring + '<td>' + timehhmmss(lt - tz) + '</td>';
retstring = retstring + '<td>' + hc + '°</td>';
retstring = retstring + '<td>Percentage zonsdiameter bedekt: ' + perc + '%</td></tr>';
}
retstring = retstring + '<tr><td>Einde (4<sup>e</sup> contact)</td>';
retstring = retstring + '<td>' + timehhmmss(lt4) + '</td>';
retstring = retstring + '<td>' + timehhmmss(lt4 - tz) + '</td>';
retstring = retstring + '<td>' + h4 + '°</td>';
tmptxt = ' ';
if (h4 < 0) tmptxt = 'Zon is al onder';
retstring = retstring + '<td>' + tmptxt + '&nbsp;</td></tr>';

retstring = retstring + '<tr><td colspan=5>Datum: ' + datum + '<br>';
retstring = retstring + 'Lokatie: ' + loctext(loc.LatDec.value, loc.LonDec.value) + '<br>';
retstring = retstring + 'Deze verduistering behoort tot Saros ' + saros ;
if (type == 'P') retstring = retstring + ' en is nergens ter wereld totaal of ringvormig';
if (type == 'A') retstring = retstring + ' en is ringvormig op een smalle strook van het aardoppervlak';
if (type == 'T') retstring = retstring + ' en is totaal op een smalle strook van het aardoppervlak';

retstring = retstring + '</td></tr></table><hr color=blue>'
retstring = retstring + '<small>Data: Fred Espenak, NASA-GSFC. Algoritmes: Jean Meeus, <i>Elements of Solar Eclipses 1951-2200</i>,  Willmann-Bell 1989.<small>';


if ( g < 0 || ( h1 < 0 && hc < 0 && h4 < 0 )) retstring = '<br><b>Verduistering niet zichtbaar vanaf deze lokatie</b>';
// if ( h1 < 0 && hc < 0 && h4 < 0 ) retstring = '<br><b>Verduistering niet zichtbaar vanaf deze lokatie</b>';
document.getElementById("result").innerHTML = retstring;

	};

function loctext(lat, lon){
	var q = parseInt(lat);
	var r = 60.0 * (lat - q) + 0.000001;
	var s = String(r).substring(0,5);
	var ltext = Math.abs(q) + ' graden ' + Math.abs(s) + ' minuten ';
	if (lat > 0 ) ltext = ltext + 'Noorderbreedte, ';
	if (lat < 0 ) ltext = ltext + 'Zuiderbreedte, ';
	if (lat == 0) ltext = 'op de evenaar, ';
	q = parseInt(lon);
	r = 60.0 * (lon - q)+ 0.000001;
	s = String(r).substring(0,5);
	ltext = ltext + Math.abs(q) + ' graden ' + Math.abs(s) + ' minuten ';
	if (lon < 0 ) ltext = ltext + 'Oosterlengte.';
	if (lon > 0 ) ltext = ltext + 'Westerlengte.';
	return ltext;
	};
function changeeclipse(){
	var j = loc.eclips.value;
	clearresult();
	s = el[j].split(':')
	datum = s[0];
	deltat = 1.0* s[1];
	type = s[2];
	gamma = 1.0 * s[3];
	jde = s[4];
	lun = s[5];
	saros = s[6];
	t0 = 1.0 * s[7];
	x0 = 1.0 * s[8];
	x1 = 1.0 * s[9];
	x2 = 1.0 * s[10];
	x3 = 1.0 * s[11];
	y0 = 1.0 * s[12];
	y1 = 1.0 * s[13];
	y2 = 1.0 * s[14];
	y3 = 1.0 * s[15];
	d0 = 1.0 * s[16]; 
	d1 = 1.0 * s[17];
	d2 = 1.0 * s[18];
	m0 = 1.0 * s[19]; 
	m1 = 1.0 * s[20];
	l10 = 1.0 * s[21];
	l11 = 1.0 * s[22];
	l12 = 1.0 * s[23];
	l20 = 1.0 * s[24];
	l21 = 1.0 * s[25];
	l22 = 1.0 * s[26];
	tanf1 = 1.0 * s[27];
	tanf2 = 1.0 * s[28];
	tz = 1 + 1.0 * s[29];
	};
function resetcalc() {
	clearresult();
	loc.eclips.value = 0;
	changeeclipse();
	};
function clearresult() {
	document.getElementById("result").innerHTML = '';
	};
function timehhmmss(t) {
	var hh;
	var mm;	
	var ss;
	var hhmmss;
	hh = parseInt(t);
	mm = parseInt((t - hh) * 60.0);
	ss = Math.round((t - (hh + mm /60.0))*3600.0);
	hhmmss = ftime(hh) + ':' + ftime(mm) + ':' + ftime(ss);
	return hhmmss;
};
function timemmss(t) {
	var hh;
	var mm;	
	var ss;
	var mmss;
	hh = parseInt(t);
	mm = parseInt((t - hh) * 60.0);
	ss = Math.round((t - (hh + mm /60.0))*3600.0);
	mmss = ftime(mm) + 'm' + ftime(ss) + 's';
	return mmss;
};
function ftime(x) {
	if (String(x).length == 2) return x;
	x = '0' + x;
	return x;
	}
function updatelat() {
	var p = 1.0 * loc.LatD.value;
	var q = 1.0 * loc.LatM.value;
	var r = 1.0 * loc.NS.value;
	var s = r * (p+q/60.0);
	loc.LatDec.value = s;
	loc.stad.value = 0;
	};
function updatelon() {
	var p = 1.0 * loc.LonD.value;
	var q = 1.0 * loc.LonM.value;
	var r = 1.0 * loc.EW.value;
	var s = r*(p+q/60.0);
	loc.LonDec.value = s;
	loc.stad.value = 0;
	};
function updatestad() {
	if (loc.stad.value == 0 ) return;
	var p = new Array(3);
	p = loc.stad.value.split(':');
	loc.LatDec.value = p[0];
	loc.LonDec.value = p[1];
	loc.Height.value = p[2];
	loc.NS.value=1;
	loc.EW.value=-1;
	var q = parseInt(p[0]);
	var r = 60.0 * (p[0] - q) + 0.000001;
	loc.LatD.value = q;
	loc.LatM.value = String(r).substring(0,5);
	q = -1.0 * p[1];
	r = parseInt(q);
	var s = 60.0 * (q - r)+ 0.000001;
	loc.LonD.value = r;
	loc.LonM.value = String(s).substring(0,5);
	};
function radians(p) {
	var q = Math.PI * p / 180.0;
	return q;
	};
function degrees(p) {
	var q = 180.0 * p / Math.PI;
	return q;
	};

