//-----------------------------------------------------------------------------
// SunTest.java
//
// (c) 2004 Jonathan Stott
//
// Created on 30-Mar-2004
//
// 0.2 - 13 Apr 2004
//  - Updated handling of time zones to use the TimeZone class
//  - Changed dates to Calendar objects and used 
//    uk.me.jstott.util.JulianDateConverter to convert them to Julian dates
// 0.1 - 30 Mar 2004
//  - First version
//-----------------------------------------------------------------------------

package uk.me.jstott.sun;

import java.util.Calendar;
import java.util.TimeZone;

import uk.me.jstott.coordconv.LatitudeLongitude;

import uk.me.jstott.util.JulianDateConverter;


/**
 * Example usage of the Sun class.
 * 
 * For more information on using this class, look at
 * http://www.jstott.me.uk/jsuntimes/
 * 
 * @author Jonathan Stott
 * @version 0.1
 */
public class SunTest {
  
  /**
   * Main method 
   * 
   * @param args
   */
  public static void main(String[] args) {
    
    //-------------------------------------------------------------------------
    // Calculate sunrise and sunet times for Canterbury, England for today
    //-------------------------------------------------------------------------
    
    LatitudeLongitude ll = new LatitudeLongitude(
            LatitudeLongitude.NORTH, 51, 17, 38.0,
            LatitudeLongitude.EAST, 1, 5, 27.0);
    TimeZone gmt = TimeZone.getTimeZone("Europe/London");
    Calendar cal = Calendar.getInstance();
    double julian = JulianDateConverter.dateToJulian(cal);
    boolean dst = false;
    
    System.out.println("\n\nCanterbury, England - " + 
                       cal.get(Calendar.DAY_OF_MONTH) + "/" + 
                       (cal.get(Calendar.MONTH)+1) + "/" + 
                       cal.get(Calendar.YEAR) + "(" + ll.toString() + ")");

    System.out.println("Astronomical twilight = " + 
                       Sun.morningAstronomicalTwilightTime(julian, ll, 
                                                           gmt, dst));
    System.out.println("Nautical twilight     = " + 
                       Sun.morningNauticalTwilightTime(julian, ll, gmt, dst));
    System.out.println("Civil twilight        = " + 
                       Sun.morningCivilTwilightTime(julian, ll, gmt, dst));
    System.out.println("Sunrise               = " + 
                       Sun.sunriseTime(julian, ll, gmt, dst));
    System.out.println("Sunset                = " + 
                       Sun.sunsetTime(julian, ll, gmt, dst));
    System.out.println("Civil twilight        = " + 
                       Sun.eveningCivilTwilightTime(julian, ll, gmt, dst));
    System.out.println("Nautical twilight     = " + 
                       Sun.eveningNauticalTwilightTime(julian, ll, gmt, dst));
    System.out.println("Astronomical twilight = " + 
                       Sun.eveningAstronomicalTwilightTime(julian, ll, 
                                                           gmt, dst));
    
    
    //-------------------------------------------------------------------------
    // Calculate sunrise and sunset time for Philadelphia, USA for today
    //-------------------------------------------------------------------------
    
    LatitudeLongitude ll2 = new LatitudeLongitude(39.9561, -75.1645);
    TimeZone est = TimeZone.getTimeZone("US/Eastern");
    
    System.out.println("\n\nPhiladelphia, USA - " + 
                       cal.get(Calendar.DAY_OF_MONTH) + "/" + 
                       (cal.get(Calendar.MONTH)+1) + "/" + 
                       cal.get(Calendar.YEAR));
    
    System.out.println("Astronomical twilight = " + 
                       Sun.morningAstronomicalTwilightTime(julian, ll2, 
                                                           est, dst));
    System.out.println("Nautical twilight     = " + 
                       Sun.morningNauticalTwilightTime(julian, ll2, 
                                                       est, dst));
    System.out.println("Civil twilight        = " + 
                       Sun.morningCivilTwilightTime(julian, ll2, est, dst));
    System.out.println("Sunrise               = " + 
                       Sun.sunriseTime(julian, ll2, est, dst));
    System.out.println("Sunset                = " + 
                       Sun.sunsetTime(julian, ll2, est, dst));
    System.out.println("Civil twilight        = " + 
                       Sun.eveningCivilTwilightTime(julian, ll2, est, dst));
    System.out.println("Nautical twilight     = " + 
                       Sun.eveningNauticalTwilightTime(julian, ll2, 
                                                       est, dst));
    System.out.println("Astronomical twilight = " + 
                       Sun.eveningAstronomicalTwilightTime(julian, ll2, 
                                                           est, dst));
  }
}
