Frink Server Pages Highlighter - moon.fsp

[Try moon.fsp]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
<HTML LANG="en">
 <HEAD>
  <TITLE>Moon Locator</TITLE>
  <META HTTP-EQUIV="Default-Style" CONTENT="Spaceship"> 
  <LINK REL="StyleSheet" HREF="/frinkdocs/spaceship.css"
        TYPE="text/css" TITLE="Spaceship">
  <LINK REL="Alternate StyleSheet" HREF="/frinkdocs/apeairy.css"
        TYPE="text/css" TITLE="APE Airy"> 
  <LINK REL="Alternate StyleSheet" HREF="/frinkdocs/style.css" TYPE="text/css"
        TITLE="APE Classic">
  <LINK REL="Alternate StyleSheet" HREF="/frinkdocs/style2.css" TYPE="text/css"
        TITLE="Compact"> 
  <LINK REL="icon" HREF="/images/futureboyicon.png" TYPE="image/png">
 </HEAD>

 <BODY <%= (! "$latitude") ? "onLoad=\"requestLoc();\"" : "" %>
  <H1>Moon Locator</H1>
  <%
  use ../sun.frink
  use ../HTMLUtils.frink
  
  North = +1
  South = -1
  West = +1
  East = -1
  
  if (! "$latitude")
  {
     println["""
  <SCRIPT type="text/javascript">
   function requestLoc()
   {
      navigator.geolocation.getCurrentPosition(populateLoc, errorLoc, {maximumAge:600000});
   }

   function populateLoc(position)
   {
       latField = document.getElementById("latitude");
       latField.value = Math.abs(position.coords.latitude);
       longField = document.getElementById("long");
       longField.value = Math.abs(position.coords.longitude);
       latHemiField = document.getElementById("latHemi");
       if (position.coords.latitude < 0)  // South?
          latHemiField.selectedIndex = 1;
       else
          latHemiField.selectedIndex = 0;
       longHemiField = document.getElementById("longHemi");
       if (position.coords.longitude < 0)  // West?
          longHemiField.selectedIndex = 0;
       else
          longHemiField.selectedIndex = 1;
       form1 = document.getElementById("form1");
       form1.submit();
   }

   function errorLoc(error)
   {
//alert(error);
   }
  </SCRIPT>
    """]
  }

  latitude = "$latitude" ? latitude : "39.58560"
  long = "$long" ? long : "104.89598"
  latHemi = "$latHemi" ? latHemi : "North"
  longHemi = "$longHemi" ? longHemi : "West"
  longHemis = ["West", "East"]
  latHemis = ["North", "South"]
  
  %>

  <FORM ACTION="moon.fsp" METHOD="POST" ID="form1" NAME="form1">
   <TABLE>
     <TR>
      <TD>Latitude:
      <TD><INPUT TYPE="text" NAME="latitude" ID="latitude" VALUE="$latitude">
      <TD>degrees
      <TD>
       <SELECT NAME="latHemi" ID="latHemi">
        <% makeSelect[latHemis, latHemi] %>
       </SELECT>
     <TR>
      <TD>Longitude:
      <TD><INPUT TYPE="text" NAME="long" ID="long" VALUE="$long">
      <TD>degrees
      <TD>
       <SELECT NAME="longHemi" ID="longHemi">
        <% makeSelect[longHemis, longHemi] %>
       </SELECT>

   </TABLE>
   <INPUT TYPE="SUBMIT">
  </FORM>
  <%
    t = "$date" ? parseDate[date] : now[] 
    latNum = eval["$latitude * $latHemi"] degree
    longNum = eval["$long * $longHemi"] degree
    [azimuth, altitude] = refractedMoonAzimuthAltitude[t, latNum, longNum]
    phaseAngle = moonPhaseAngle[t]
    illum = moonIlluminatedFraction[t]
    [az1, alt1] = refractedMoonAzimuthAltitude[t+5 s, latNum, longNum]
    illum1 = moonIlluminatedFraction[t + 5 s]
    inc = 5 s
    distance = moonDistance[t]
    distance1 = moonDistance[t+inc]
    velocity = (distance1-distance) / inc
    direction = velocity > 0 mph ? "receding" : "approaching"
    velocity = abs[velocity]
    limb = moonPositionAngleRelativeToZenith[t, latNum, longNum] mod circle
    clockwiseLimb = 360 degrees - limb
    moonset = moonset[t, latNum, longNum]
    moonrise = moonrise[t, latNum, longNum]
  %>

  <P>
   From latitude <%= (abs[latNum] -> "degrees") + " " + latitudeName[latNum] %>
   longitude <%= (abs[longNum] -> "degrees") + " " + longitudeName[longNum] %>:

  <P>
   The moon is located <%= format[altitude, degree, 4] %>
   degrees above the horizon (<%= alt1 > altitude ? "rising" : "setting" %>).

   <BR>
   
   True compass bearing:
   <%= format[(azimuth + 180 degrees) mod circle, degree,4 ] %> degrees.
  </P>

  <P>
   Illuminated fraction: 
   <%= format[illum, percent, 2 ] %>
   (<%= illum1 > illum ? "waxing" : "waning" %>).</P>

  <P>
   Angle of center of moon's bright limb: <BR><%= format[clockwiseLimb, "degrees", 1] %> clockwise (<%= format[limb, "degrees", 1] %> counterclockwise) from zenith.
  </P>
   <%
   format = ### yyyy-MM-dd HH:mm:ss ###
   println["<IMG SRC=\"drawmoon.fsp?date=" + URLEncode[t->[format,"UTC"]] + "&amp;lat=" + (latNum -> degrees) + "&amp;long=" + (longNum->degrees) +"\" WIDTH=100 HEIGHT=100>"]
   %>

   <P>
   Distance: <%= format[distance, "miles", 2] %><%= direction %> at <%= format[velocity, "mph", 3] %>.
  </P>

  <TABLE BORDER=0>
  <%
     if moonrise < moonset
     {
       println["<TR><TD>" + (moonrise < t ? "Previous" : "Next") + " moonrise:<TD>$moonrise"]
       println["<TR><TD>" + (moonset < t ? "Previous" : "Next") + " moonset:<TD>$moonset"]
        if (moonset < t)
        {
           nextMoonrise = moonrise[t+12 hours, latNum, longNum]
   println["<TR><TD>" + (nextMoonrise < t ? "Previous" : "Next") + " moonrise:<TD>$nextMoonrise"]
        }

     } else
     {
       println["<TR><TD>" + (moonset < t ? "Previous" : "Next") + " moonset:<TD>$moonset"]
       println["<TR><TD>" + (moonrise < t ? "Previous" : "Next") + " moonrise:<TD>$moonrise"]
        if (moonrise < t)
        {
           nextMoonset = moonset[t+12 hours, latNum, longNum]
   println["<TR><TD>" + (nextMoonset < t ? "Previous" : "Next") + " moonset:<TD>$nextMoonset"]
        }
     }
  %>
  </TABLE>

  <P>
   Time: <%= t %> </P>

  <HR>
  <P>
   View source of <A HREF="/fsp/highlight.fsp?fileName=moon.fsp">This FSP
    page</A> or the <A HREF="/fsp/highlight.fsp?fileName=drawmoon.fsp">page that draws the moon</A> or the <A HREF="/fsp/colorize.fsp?fileName=sun.frink">astronomical library</A> used by this code.
  </P>
  
  <P>
   <I><A HREF="mailto:eliasen@mindspring.com">Alan Eliasen</A></I> was born
   <%= round[now[] - #1969-08-19 04:54 PM Mountain#, minute] -> ["days", "hours", "minutes"] %> ago.
  </P>

  <P>
   Powered by <A HREF="/frinkdocs/">Frink</A> and <A HREF="/frinkdocs/fspdocs.html">Frink Server Pages</A>.
  </P>  
 </BODY>
</HTML>

[Try moon.fsp]


Alan Eliasen was born 14705 days, 3 hours, 4 minutes ago.

Back to Frink Server Pages documentation.