#!/bin/csh -f

# This is a copy of moon-calendar hacked to do equinoxes, solstices, etc.

# daw; 1/5/12

switch (`uname -s``uname -r`)
case SunOS5*:
	breaksw
default:
	exec echo ${0}: does not run on `uname -s` `uname -r`
endsw

while($#argv)
	switch ("$1")
	case -d:
		set DEBUG
#		shift
#		breaksw
# fall through to verbose
	case -v:
		set VERBOSE
		shift
		breaksw
	case -q:
		set QUICK
		shift
		breaksw
	case -z:
		set ZONE = $2
		shift ; shift
		breaksw
	default:
	    if (! $?YEAR) then
		set YEAR = $1
		shift
		breaksw
	    endif
		set DQ = '"'
		exec echo ${0}: "What do I do with $DQ$1$DQ?"
	endsw
end

set BASE = `basename $0`
set TMP = /tmp/$BASE

set URL = http://aa.usno.navy.mil/data/docs/EarthSeasons.php

if (! $?ZONE) set ZONE = -5
if (! $?YEAR) set YEAR = `date +%Y`
set Y = `echo $YEAR | sed 's;.*\(..\)$;\1;'`

if (! $?QUICK) then
    if ($?VERBOSE) echo `date +%T` Fetching $URL
    /usr/local/bin/lynx -dump $URL > $TMP
endif

if ($?VERBOSE) echo `date +%T` Extracting data for $YEAR
cat > $TMP.awk <<EOF
{
    if (\$1 == $YEAR) {inyear = 1; next}
    if (inyear && NF == 0) {inyear = 0}
    if (inyear) {
	print;
    }
}
EOF

if ($?DEBUG) then
    cat $TMP.awk
    echo ""
    awk -f $TMP.awk $TMP
endif
set DATA = `awk -f $TMP.awk $TMP`
# data expected:
# Perihelion  Jan   5 01    Equinoxes  Mar   20 05 14    Sept  22 14 49
# Aphelion    July  5 04    Solstices  June  20 23 09    Dec   21 11 12
#if ($#DATA != 26) exec echo Unexpected results from extracting data
# now changed; 10/3/15
# Perihelion  Jan   4 06 36   Equinoxes  Mar   20 22 45    Sept  23 08 21
# Aphelion    July  6 19 40   Solstices  June  21 16 38    Dec   22 04 48
if ($#DATA != 28) exec echo Unexpected results from extracting data

if ($DATA[1] == "Perihelion") then
    set PMON = $DATA[2]
    set PDAY = $DATA[3]
    set PHOUR = $DATA[4]
    set PMIN = $DATA[5]
else
    exec echo Unexpected results for perihelion
endif

if ($?DEBUG) echo "   " $DATA[1] $PMON $PDAY $PHOUR $PMIN

#echo Perihelion: `/usr/local/gnu/bin/date --date="$PMON $PDAY ${PHOUR}00 $YEAR UT"`
echo Perihelion: `/usr/local/gnu/bin/date --date="$PMON $PDAY $PHOUR$PMIN $YEAR UT"`

shift DATA			# easier than editing all offsets below; 10/3/15

if ($DATA[5] == "Equinoxes") then
    set SMON = $DATA[6]
    set SDAY = $DATA[7]
    set SHOUR = $DATA[8]
    set SMIN = $DATA[9]
    set FMON = $DATA[10]
    set FDAY = $DATA[11]
    set FHOUR = $DATA[12]
    set FMIN = $DATA[13]
else
    exec echo Unexpected results for equinoxes
endif

if ($?DEBUG) echo "   " $DATA[5] $SMON $SDAY $SHOUR$SMIN\, $FMON $FDAY $FHOUR$FMIN

echo Equinoxes: "" `/usr/local/gnu/bin/date --date="$SMON $SDAY $SHOUR$SMIN $YEAR UT"`
echo "           " `/usr/local/gnu/bin/date --date="$FMON $FDAY $FHOUR$FMIN $YEAR UT"`

if ($DATA[14] == "Aphelion") then
    set AMON = $DATA[15]
    set ADAY = $DATA[16]
    set AHOUR = $DATA[17]
    set AMIN = $DATA[18]
else
    exec echo Unexpected results for aphelion
endif

if ($?DEBUG) echo "   " $DATA[14] $AMON $ADAY $AHOUR $AMIN

#echo Aphelion: " " `/usr/local/gnu/bin/date --date="$AMON $ADAY ${AHOUR}00 $YEAR UT"`
echo Aphelion: " " `/usr/local/gnu/bin/date --date="$AMON $ADAY $AHOUR$AMIN $YEAR UT"`

shift DATA			# easier than editing all offsets below; 10/3/15

if ($DATA[18] == "Solstices") then
    set SMON = $DATA[19]
    set SDAY = $DATA[20]
    set SHOUR = $DATA[21]
    set SMIN = $DATA[22]
    set WMON = $DATA[23]
    set WDAY = $DATA[24]
    set WHOUR = $DATA[25]
    set WMIN = $DATA[26]
else
    exec echo Unexpected results for solstices
endif

if ($?DEBUG) echo "   " $DATA[18] $SMON $SDAY $SHOUR$SMIN\, $WMON $WDAY $WHOUR$WMIN

echo Solstices: "" `/usr/local/gnu/bin/date --date="$SMON $SDAY $SHOUR$SMIN $YEAR UT"`
echo "           " `/usr/local/gnu/bin/date --date="$WMON $WDAY $WHOUR$WMIN $YEAR UT"`

