#ifndef _WMR_ASTRO_H
#define _WMR_ASTRO_H

#define always_up		(-1.0)
#define always_down             (-2.0)
#define no_set_today		(-3.0)
#define no_rise_today		(-4.0)
#define no_transit_today	(-5.0)


typedef enum sun_calculation_type {
  sun_transit                 ,
  mathematical_sunrise        ,
  mathematical_sunset         ,
  atmospheric_sunrise         ,
  atmospheric_sunset          ,
  civil_twilight_start        ,
  civil_twilight_end          ,
  nautical_twilight_start     ,
  nautical_twilight_end       ,
  astronomical_twilight_start ,
  astronomical_twilight_end   ,
  sun_elevation_angle         ,
  sun_azimuth_angle           ,
  sun_declination_angle       ,
  sun_ecliptic_longitude      ,
  sun_right_ascension_angle   ,
  sun_earth_distance          ,
  delta_t                     ,
  sidereal_time               ,
  eq_of_time                  ,
  sun_calculation_type_sentinel
}  sun_calculation_type;
  
typedef enum moon_calculation_type {
  moon_transit                ,
  mathematical_moonrise       ,
  mathematical_moonset        ,
  atmospheric_moonrise        ,
  atmospheric_moonset         ,
  moon_elevation_angle        ,
  moon_azimuth_angle          ,
  moon_declination_angle      ,
  moon_ecliptic_longitude     ,
  moon_ecliptic_latitude      ,
  moon_right_ascension_angle  ,
  moon_earth_distance         ,
  
  moon_calculation_type_sentinel
}  moon_calculation_type;
  

void set_time_offset     (double my_time_offset)     ;  					 
void set_atm_pressure    (double my_atm_pressure)    ;
void set_atm_temperature (double my_atm_temperature) ;
void set_adjust_value    (double my_adjust_value)    ;
void set_latitude        (double my_latitude)        ;
void set_longitude       (double my_longitude)       ;
void set_the_day         (int my_day)                ;
void set_the_month       (int my_month )             ;
void set_the_year        (int my_year)               ;
void set_the_height      (int my_height )            ;
void set_the_time_zone   (int my_time_zone)          ;

double
get_sun_data (sun_calculation_type the_calculation);

double
get_moon_data (moon_calculation_type the_calculation);

void
get_start_seasons (int my_year, double *ve, double *ss, double *ae, double *ws);

#endif