#!/usr/bin/perl -w

use Getopt::Long;
use Astro::Vex;
use Astro::Time;

my $askap = 0;
my $debug=0;
GetOptions('askap'=>\$askap, 'debug'=>\$debug);

$Astro::Time::StrSep = ' ';
$Astro::Time::StrZero = 2;

use strict;

if (@ARGV!=1) {
  die "Usage vex2psn.pl <vexfile>\n";
}

my $vex = new Astro::Vex(shift);

my $antid;
if ($askap) {
  $antid = 'Ak';
} else {
  $antid = 'Pa';
}
my @scans = $vex->ant_sched($antid);

my ($source, $start, $stop, $dayno, $year, $ut);

my $first = 1;
my $last_stop;

@scans = sort {$a->start <=> $b->start} @scans;

foreach (@scans) {

  $source = $vex->source($_->source);
  $start = $_->start;
  $stop = $start + $_->stations($antid)->datastop->unit('day')->value;

  if ($debug) {
    ($dayno, $year, $ut) = mjd2dayno($stop);
    my $stopstr = turn2str($ut,'H',0);
    ($dayno, $year, $ut) = mjd2dayno($start);
    my $startstr = turn2str($ut,'H',0);
    printf "*** %s: $year/$dayno  %s  -  %s\n", $_->source, $startstr, $stopstr;
  }

  if ($first) {
    $first=0;
    printf("%s %12s  %s\n", rad2str($source->ra, 'h', 2),
	   rad2str($source->dec, 'd', 2),
	   $source->ref_coord_frame);
    $last_stop = $start;
  } 

  ($dayno, $year, $ut) = mjd2dayno($last_stop);

  printf("%s %12s  %s", rad2str($source->ra, 'h', 2),
	 rad2str($source->dec, 'd', 2),
	 $source->ref_coord_frame);
  printf "  %4d %03d %s\n", $year, $dayno, turn2str($ut,'H',0);

  $last_stop = $stop;
}

($dayno, $year, $ut) = mjd2dayno($last_stop);
printf("%s %12s  %s", rad2str($source->ra, 'h', 2),
       rad2str($source->dec, 'd', 2),
       $source->ref_coord_frame);
printf "  %4d %03d %s\n", $year, $dayno, turn2str($ut,'H',0);

