/*Sky Chart graphics, JavaScript and DHTMLcopyright (c) Adrian R. Ashford,  1 January 2005.JavaScript(s) used with permission by Astronomy Now.*/myImage = new Array("javascript/skycharts/0i.gif","javascript/skycharts/1i.gif","javascript/skycharts/2i.gif","javascript/skycharts/3i.gif","javascript/skycharts/4i.gif","javascript/skycharts/5i.gif","javascript/skycharts/6i.gif","javascript/skycharts/7i.gif","javascript/skycharts/8i.gif","javascript/skycharts/9i.gif","javascript/skycharts/10i.gif","javascript/skycharts/11i.gif","javascript/skycharts/12i.gif","javascript/skycharts/13i.gif","javascript/skycharts/14i.gif","javascript/skycharts/15i.gif","javascript/skycharts/16i.gif","javascript/skycharts/17i.gif","javascript/skycharts/18i.gif","javascript/skycharts/19i.gif","javascript/skycharts/20i.gif","javascript/skycharts/21i.gif","javascript/skycharts/22i.gif","javascript/skycharts/23i.gif");thisImage = 0;images = myImage.length - 1;function clear_charts(){sun_layer = 1;moon_layer = 1;mercury_layer = 1;venus_layer = 1;mars_layer = 1;jupiter_layer = 1;saturn_layer = 1;uranus_layer = 1;neptune_layer = 1;pluto_layer = 1;}function proper_ang(big){with (Math){var tmp = 0;if (big > 0){tmp = big / 360.0;tmp = (tmp - floor(tmp)) * 360.0;}else{tmp = ceil(abs(big / 360.0));tmp = big + tmp * 360.0;}}return tmp;}function proper_ang_rad(big){with (Math){var tmp = 0;if (big > 0){tmp = big / 2 / PI;tmp = (tmp - floor(tmp)) * 2 * PI;}else{tmp = ceil(abs(big / 2 / PI));tmp = big + tmp * 2 * PI;}}return tmp;}function round_10(num){return Math.floor((num + 0.05) * 10) / 10;}function round_100(num){return Math.floor((num + 0.005) * 100) / 100;}function julian_date(day,month){var yy = 2010;var yyy, mmm, a, b;with (Math) {var yyy = yy;var mmm = month;if (month < 3){yyy = yy - 1;mmm = month + 12;}a = floor(yyy/100);b = 2 - a + floor(a/4);return floor(365.25*yyy) + floor(30.6001*(mmm+1)) + day + 1720994.5 + b;}}function kepler(e5,m5){with (Math){var e,de,v;e = m5;for (count = 1; count <= 50; count++){de = e - e5 * sin(e) - m5;if (abs(de) <= 5e-8) break;e = e - de / (1 - e5 * cos(e));}v = 2 * atan(sqrt((1 + e5) / (1 - e5)) * tan(e / 2));return v;}}function choose_chart(){with (Math) {var RAD = 180 / PI;var Tp = new Array(0.2409,0.6152,1.0001,1.8810,11.8585,29.6147,83.6973,164.1466,249.0398);var long_at_e = new Array(350.8136,18.3905,331.5662,163.9450,175.2197,106.9319,333.0810,314.8998,245.4198);var l_of_p = new Array(77.4608,131.7130,102.7909,336.0821,14.7603,94.2547,170.4720,66.074,223.7720);var e_of_orbit = new Array(0.205629,0.006777,0.016705,0.09344,0.048988,0.05655,0.050037,0.008173,0.251514);var sma_of_orbit = new Array(0.387098,0.723328,1.000016,1.523756,5.201707,9.572694,19.13386,29.97900,39.58229);var i_of_orbit = new Array(7.0047,3.3947,0.0006,1.8494,1.3038,2.4860,0.7718,1.7717,17.1561);var l_of_a_node = new Array(48.3247,76.6664,176.1,49.5390,100.5105,113.6244,73.8714,131.7862,110.2639);var ang_at_1au = new Array(6.74,16.92,0.0,9.36,196.74,165.6,65.8,62.2,8.2);var planet_alt = new Array(9);var planet_x = new Array(9);var planet_y = new Array(9);var jd, D, Ne, Me, lambda_sun, l, delta, v, R, L, V, E, delta, count;var i, indx, Np, Mp, r, x, y, x1, y1, phi, lambda, beta, obl, dec, ra;var lat, lng, height, rho_sin_lat, rho_cos_lat, hour_ang, alt, az, dist, phase, size;var moon_days, Days, N, M_sun, Ec, lambdasun, l0, P0, N0, i_m, e_m;var l_m, M_m, N_m, Ev, Ae, A3, A4, lambda_moon, beta_moon, age;var ut_hrs, part_day;var planet_radius = 0;var chart_radius = 283.5;var x_centre = 5 + chart_radius;var y_centre = 176 + chart_radius;clear_charts();var week = eval(document.skychart.week.value);var month = eval(document.skychart.month.value);var hours = eval(document.skychart.time.value);var summer_time = 0;if (document.skychart.bst.checked == true) summer_time = 1;var GST = floor(week + month * 2 + 4.5 + hours + 0.5 - summer_time);if (GST >= 24) GST -= 24;if (GST >= 24) GST -= 24;ut_hrs = hours - summer_time;if (ut_hrs < 0) ut_hrs += 24.0;part_day = ut_hrs / 24.0;jd = julian_date(week * 14,month) + part_day;D = jd - 2453240.5;Ne = proper_ang(360 * D / (365.2442 * Tp[2]));Me = proper_ang(Ne + long_at_e[2] - l_of_p[2]);v = kepler(e_of_orbit[2],Me / RAD);L = proper_ang_rad(v + l_of_p[2] / RAD);R = sma_of_orbit[2] * (1 - pow(e_of_orbit[2],2)) / (1 + e_of_orbit[2] * cos(v));lat = 54.0 / RAD;lng = 2.5 / RAD;height = 10.0;obl = 23.4387 / RAD;lambda_sun = proper_ang_rad(L + PI);dec = asin(sin(obl) * sin(lambda_sun));y = sin(lambda_sun) * cos(obl);x = cos(lambda_sun);ra = proper_ang_rad(atan2(y,x));dist = R;size = 31.9877 / dist;hour_ang = proper_ang_rad(GST * PI / 12 - lng - ra);alt = asin(sin(dec) * sin(lat) + cos(dec) * cos(lat) * cos(hour_ang));az = acos((sin(dec) - sin(lat) * sin(alt)) / (cos(lat) * cos(alt)));if (sin(hour_ang) >= 0) az = 2 * PI - az;alt = alt * RAD;planet_radius = (90 - alt) / 90 * chart_radius;if (alt >= 0){alt += 1.2 / (alt + 2);}else{alt += 1.2 / (abs(alt) + 2);}planet_alt[8] = alt;planet_x[8] = x_centre - planet_radius * sin(az) - 4;planet_y[8] = y_centre - planet_radius * cos(az) - 4;moon_days = 29.5306;Days = jd - 2444238.5;N = proper_ang(Days / 1.01456167);M_sun = proper_ang(N - 3.762863);Ec = 1.91574168 * sin(M_sun / RAD)lambdasun = proper_ang(N + Ec + 278.83354);l0 = 64.975464;P0 = 349.383063;N0 = 151.950429;i_m = 5.145396;e_m = 0.0549;l_m = proper_ang(13.1763966 * Days + l0);M_m = proper_ang(l_m - 0.111404 * Days - P0);N_m = proper_ang(N0 - 0.0529539 * Days);Ev = 1.2739 * sin((2 * (l_m - lambdasun) - M_m) / RAD);Ae = 0.1858 * sin(M_sun / RAD);A3 = 0.37 * sin(M_sun / RAD);M_m += Ev - Ae - A3;Ec = 6.2886 * sin(M_m / RAD);dist = round_100((1 - pow(e_m,2)) / (1 + e_m * cos((M_m + Ec) / RAD)) * 238855.7);A4 = 0.214 * sin(2 * M_m / RAD);l_m += Ev + Ec - Ae + A4;l_m += 0.6583 * sin(2 * (l_m - lambdasun) / RAD);N_m -= 0.16 * sin(M_sun / RAD);y = sin((l_m - N_m) / RAD) * cos(i_m / RAD);x = cos((l_m - N_m) / RAD);lambda_moon = proper_ang_rad(atan2(y,x) + N_m / RAD);beta_moon = asin(sin((l_m - N_m) / RAD) * sin(i_m / RAD));dec = asin(sin(beta_moon) * cos(obl) + cos(beta_moon) * sin(obl) * sin(lambda_moon));y = sin(lambda_moon) * cos(obl) - tan(beta_moon) * sin(obl);x = cos(lambda_moon);ra = proper_ang_rad(atan2(y,x));x = ra;y = dec;dec += (9.7156e-5 * cos(x)) * Days / 365.25;ra += (2.2355e-4 + 9.7156e-5 * sin(x) * tan(y)) * Days / 365.25;size = 2160 / dist * RAD * 60;x = proper_ang(l_m - lambdasun);phase = 50.0 * (1.0 - cos(x / RAD));age = round_10(x / 360.0 * moon_days);x = atan(0.996647 * tan(lat));rho_sin_lat = 0.996647 * sin(x) + height * sin(lat) / 6378140;rho_cos_lat = cos(x) + height * cos(lat) / 6378140;r = dist / 3963.2;hour_ang = proper_ang_rad(GST * PI / 12 - lng - ra);x = atan(rho_cos_lat * sin(hour_ang) / (r * cos(dec) - rho_cos_lat * cos(hour_ang)));ra -= x;y = hour_ang;hour_ang += x;dec = atan(cos(hour_ang) * (r * sin(dec) - rho_sin_lat) / (r * cos(dec) * cos(y) - rho_cos_lat));hour_ang = proper_ang_rad(GST * PI / 12 - lng - ra);alt = asin(sin(dec) * sin(lat) + cos(dec) * cos(lat) * cos(hour_ang));az = acos((sin(dec) - sin(lat) * sin(alt)) / (cos(lat) * cos(alt)));if (sin(hour_ang) >= 0) az = 2 * PI - az;alt = alt * RAD;planet_radius = (90 - alt) / 90 * chart_radius;if (alt >= 0){alt += 1.2 / (alt + 2);}else{alt += 1.2 / (abs(alt) + 2);}planet_alt[9] = alt;planet_x[9] = 20;planet_y[9] = 190;/*planet_x[9] = x_centre - planet_radius * sin(az) - 4;planet_y[9] = y_centre - planet_radius * cos(az) - 4;*/for (i=0; i<8; i++){indx = i;if (i > 1) indx += 1;Np = proper_ang(360 * D / (365.2422 * Tp[indx]));Mp = proper_ang(Np + long_at_e[indx] - l_of_p[indx]);V = kepler(e_of_orbit[indx],Mp / RAD);l = proper_ang_rad(V + l_of_p[indx] / RAD);r = sma_of_orbit[indx] * (1 - pow(e_of_orbit[indx],2)) / (1 + e_of_orbit[indx] * cos(V));y = sin(l - l_of_a_node[indx] / RAD);x = cos(l - l_of_a_node[indx] / RAD);phi = asin(y * sin(i_of_orbit[indx] / RAD));y1 = y * cos(i_of_orbit[indx] / RAD);l = proper_ang_rad(atan2(y1,x) + l_of_a_node[indx] / RAD);r = r * cos(phi);if (i < 2){y = r * sin(L - l);x = R - r * cos(L - l);lambda = proper_ang_rad(PI + L + atan2(y,x));}else{y = R * sin(l - L);x = r - R * cos(l - L);lambda = proper_ang_rad(atan2(y,x) + l);}y = r * tan(phi) * sin(lambda - l);x = R * sin(l - L);beta = atan(y / x);dec = asin(sin(beta) * cos(obl) + cos(beta) * sin(obl) * sin(lambda));y = sin(lambda) * cos(obl) - tan(beta) * sin(obl);x = cos(lambda);ra = proper_ang_rad(atan2(y,x));dist = abs(sqrt(pow(R,2) + pow(r,2) - 2 * R * r * cos(l - L)) / cos(beta));size = ang_at_1au[indx] / dist;phase = 50 * (1 + cos(lambda - l));hour_ang = proper_ang_rad(GST * PI / 12 - lng - ra);alt = asin(sin(dec) * sin(lat) + cos(dec) * cos(lat) * cos(hour_ang));az = acos((sin(dec) - sin(lat) * sin(alt)) / (cos(lat) * cos(alt)));if (sin(hour_ang) >= 0) az = 2 * PI - az;alt = alt * RAD;planet_radius = (90 - alt) / 90 * chart_radius;if (alt >= 0){alt += 1.2 / (alt + 2);}else{alt += 1.2 / (abs(alt) + 2);}planet_alt[i] = alt;planet_x[i] = x_centre - planet_radius * sin(az) - 4;planet_y[i] = y_centre - planet_radius * cos(az) - 4;}thisImage = GST;document.myPicture.src = myImage[thisImage];if (planet_alt[8] > 0){sun_layer = 5;}else{planet_x[8] = 20;planet_y[8] = 190;}/*if (planet_alt[9] > 0){moon_layer = 5;}else{planet_x[9] = 20;planet_y[9] = 190;}*/if (planet_alt[0] > 0){mercury_layer = 5;}else{planet_x[0] = 20;planet_y[0] = 190;}if (planet_alt[1] > 0){venus_layer = 5;}else{planet_x[1] = 20;planet_y[1] = 190;}if (planet_alt[2] > 0){mars_layer = 5;}else{planet_x[2] = 20;planet_y[2] = 190;}if (planet_alt[3] > 0){jupiter_layer = 5;}else{planet_x[3] = 20;planet_y[3] = 190;}if (planet_alt[4] > 0){saturn_layer = 5;}else{planet_x[4] = 20;planet_y[4] = 190;}if (planet_alt[5] > 0){uranus_layer = 5;}else{planet_x[5] = 20;planet_y[5] = 190;}if (planet_alt[6] > 0){neptune_layer = 5;}else{planet_x[6] = 20;planet_y[6] = 190;}if (planet_alt[7] > 0){pluto_layer = 5;}else{planet_x[7] = 20;planet_y[7] = 190;}if (document.all){document.all.sun.style.pixelTop = planet_y[8];document.all.sun.style.pixelLeft = planet_x[8];document.all.sun.style.zIndex = sun_layer;document.all.moon.style.pixelTop = planet_y[9];document.all.moon.style.pixelLeft = planet_x[9];document.all.moon.style.zIndex = moon_layer;document.all.mercury.style.pixelTop = planet_y[0];document.all.mercury.style.pixelLeft = planet_x[0];document.all.mercury.style.zIndex = mercury_layer;document.all.venus.style.pixelTop = planet_y[1];document.all.venus.style.pixelLeft = planet_x[1];document.all.venus.style.zIndex = venus_layer;document.all.mars.style.pixelTop = planet_y[2];document.all.mars.style.pixelLeft = planet_x[2];document.all.mars.style.zIndex = mars_layer;document.all.jupiter.style.pixelTop = planet_y[3];document.all.jupiter.style.pixelLeft = planet_x[3];document.all.jupiter.style.zIndex = jupiter_layer;document.all.saturn.style.pixelTop = planet_y[4];document.all.saturn.style.pixelLeft = planet_x[4];document.all.saturn.style.zIndex = saturn_layer;document.all.uranus.style.pixelTop = planet_y[5];document.all.uranus.style.pixelLeft = planet_x[5];document.all.uranus.style.zIndex = uranus_layer;document.all.neptune.style.pixelTop = planet_y[6];document.all.neptune.style.pixelLeft = planet_x[6];document.all.neptune.style.zIndex = neptune_layer;document.all.pluto.style.pixelTop = planet_y[7];document.all.pluto.style.pixelLeft = planet_x[7];document.all.pluto.style.zIndex = pluto_layer;}else{if (document.layers){document.layers["sun"].left = planet_x[8];document.layers["sun"].top = planet_y[8];document.layers["sun"].zIndex = sun_layer;document.layers["moon"].left = planet_x[9];document.layers["moon"].top = planet_y[9];document.layers["moon"].zIndex = moon_layer;document.layers["mercury"].left = planet_x[0];document.layers["mercury"].top = planet_y[0];document.layers["mercury"].zIndex = mercury_layer;document.layers["venus"].left = planet_x[1];document.layers["venus"].top = planet_y[1];document.layers["venus"].zIndex = venus_layer;document.layers["mars"].left = planet_x[2];document.layers["mars"].top = planet_y[2];document.layers["mars"].zIndex = mars_layer;document.layers["jupiter"].left = planet_x[3];document.layers["jupiter"].top = planet_y[3];document.layers["jupiter"].zIndex = jupiter_layer;document.layers["saturn"].left = planet_x[4];document.layers["saturn"].top = planet_y[4];document.layers["saturn"].zIndex = saturn_layer;document.layers["uranus"].left = planet_x[5];document.layers["uranus"].top = planet_y[5];document.layers["uranus"].zIndex = uranus_layer;document.layers["neptune"].left = planet_x[6];document.layers["neptune"].top = planet_y[6];document.layers["neptune"].zIndex = neptune_layer;document.layers["pluto"].left = planet_x[7];document.layers["pluto"].top = planet_y[7];document.layers["pluto"].zIndex = pluto_layer;}else{if (document.getElementById){document.getElementById("sun").style.left = planet_x[8];document.getElementById("sun").style.top = planet_y[8];document.getElementById("sun").style.zIndex = sun_layer;document.getElementById("moon").style.left = planet_x[9];document.getElementById("moon").style.top = planet_y[9];document.getElementById("moon").style.zIndex = moon_layer;document.getElementById("mercury").style.left = planet_x[0];document.getElementById("mercury").style.top = planet_y[0];document.getElementById("mercury").style.zIndex = mercury_layer;document.getElementById("venus").style.left = planet_x[1];document.getElementById("venus").style.top = planet_y[1];document.getElementById("venus").style.zIndex = venus_layer;document.getElementById("mars").style.left = planet_x[2];document.getElementById("mars").style.top = planet_y[2];document.getElementById("mars").style.zIndex = mars_layer;document.getElementById("jupiter").style.left = planet_x[3];document.getElementById("jupiter").style.top = planet_y[3];document.getElementById("jupiter").style.zIndex = jupiter_layer;document.getElementById("saturn").style.left = planet_x[4];document.getElementById("saturn").style.top = planet_y[4];document.getElementById("saturn").style.zIndex = saturn_layer;document.getElementById("uranus").style.left = planet_x[5];document.getElementById("uranus").style.top = planet_y[5];document.getElementById("uranus").style.zIndex = uranus_layer;document.getElementById("neptune").style.left = planet_x[6];document.getElementById("neptune").style.top = planet_y[6];document.getElementById("neptune").style.zIndex = neptune_layer;document.getElementById("pluto").style.left = planet_x[7];document.getElementById("pluto").style.top = planet_y[7];document.getElementById("pluto").style.zIndex = pluto_layer;}}}}}
