;----------------------------------------------------------------------------
;+
; NAME:
;        GET_POINTS
; PURPOSE:
;        To retrieve pointing information from a specified database.
; CATEGORY:
;        Database reading.
; CALLING SEQUENCE:
;        sxtf = get_points(st_date, en_date, /sxtf)
;        sft  = get_points(st_date, en_date, /sft0)
;	 sft  = get_points(st_date, en_date, /sft0, sft_dir='/mo0.flare13/yohkoh/sft_new')
; INPUTS:
;        st_date = Starting date; must be in string format.
;        en_date = Ending date; must be in string format.
; KEYWORD PARAMETERS:
;        Keywords:
;	 /SFT0  -> Get terminator pointings from SFT or DIR database.
;	 /SXTF -> Get FFI pointings from SXTF or DIR database.
;	 /flares -> Get spr flare-mode pointings > 10 minutes apart.
;	 sft_dir - use if a directory other than $DIR_SXT_SFT
; OUTPUTS:
;        Returns an anonymous structure with the following bits:
;	 	COORDS: FR coordinates of sun center.
;	 	DAY: Same field as for INDEX or ROADMAP.
;	 	TIME: Same field as for INDEX or ROADMAP.
;	 	FILTA: Filter-A ID number.
;	 	FILTB: Filter-B ID number.
; COMMON BLOCKS:
;	 None here.
; NOTES:
;	 Both ST_DATE and EN_DATE are >>required<< inputs.
;	
; MODIFICATION HISTORY:
;        M. Weber, February 13, 1995 --- Written.
;	 DATE - (MAW) - Cool modification to your perfect program.
;	 DATE - (MAW) - Another cool idea for an addition.
;	 DATE - (UCP) - UnCool Person destroys the elegant integrity of 
;			your creation with their own code.
;	 21-May-95 LWA, added keyword sft_dir and changed hardwired
;			SFC selection parameters in SFT section.
;	 25-May-95 LWA, added capability to retrieve flare-mode pointings.
;        24-Jun-95  DA, fixed error in use of sft0 keyword
;	 17-Nov-95 LWA, Changed DPE filter to Hi=27, Lo=21
;	                Need to modify this to use mk_sfc.param!
;
;-
;----------------------------------------------------------------------------

function get_points, st_date, en_date, sft0=sft0, sxtf=sxtf, sft_dir=sft_dir, $
			flares=flares


; --------------------------------------------
; Check keywords and set some local variables.
; --------------------------------------------
	done = 0

	if (keyword_set(sft0) and keyword_set(sxtf)) or $
	   (keyword_set(sft0) and keyword_set(flares)) or $
	   (keyword_set(sxtf) and keyword_set(flares)) then begin
	   print, 'Please select only one database.'
	   done=1
	endif

	if not (keyword_set(sft0) or keyword_set(sxtf) or $
	   keyword_set(flares)) then begin
	   print, 'Please select a database.'
	   done=1
	endif

	if done then goto, finish_up

; --------------------------------------------
; Handle SFT case.
; --------------------------------------------
	if keyword_set(sft0) then begin

	   dpe_hi = 27		;Hard-code some Acton-parameters.
	   dpe_lo = 21
	   tim2night_lo = 10
	   nite_al = 15
	   tim2night_hi = 25
	   if keyword_set(sft_dir) then sft_dir=sft_dir else sft_dir='$DIR_SXT_SFT'

	   pr_sxt_term, st_date, en_date, dpe_lo=dpe_lo, dpe_hi=dpe_hi, $
		       tim2night_lo=tim2night_lo, nite_al=nite_al, $
		       tim2night_hi=tim2night_hi, rmap=rmap, sft_dir=sft_dir, $
                       /only_point

	   map = rmap
	   coords = sxt_cen(rmap)
	endif

; --------------------------------------------
; Handle SXTF case.
; --------------------------------------------
	if keyword_set(sxtf) then begin

	   num_bites = ((gt_day(en_date)-gt_day(st_date))/100)+1
	   st_date_arr = strarr(num_bites)
	   en_date_arr = strarr(num_bites)
	   for i = 0,num_bites-1 do begin
	     st_date_arr(i) = gt_day(gt_day(st_date)+i*100, /string)
	     en_date_arr(i) = gt_day(gt_day(st_date_arr(i))+99,/string)
	   endfor
	   en_date_arr(num_bites-1) = en_date

	   rd_obs, st_date_arr(0),en_date_arr(0),bcs,sxtf,/nobcs
	   map = sxtf
	   coords = sxt_cen(sxtf)
	   for i = 1,num_bites-1 do begin
	   	rd_obs, st_date_arr(i),en_date_arr(i),bcs,sxtf,/nobcs
		map = [map, sxtf]
		coords = [[coords], [sxt_cen(sxtf)]]
	   endfor

	endif

; --------------------------------------------
; Handle FLARES case.
; --------------------------------------------
        if keyword_set(flares) then begin

           num_bites = ((gt_day(en_date)-gt_day(st_date))/100)+1
           st_date_arr = strarr(num_bites)
           en_date_arr = strarr(num_bites)
           for i = 0,num_bites-1 do begin
             st_date_arr(i) = gt_day(gt_day(st_date)+i*100, /string)
             en_date_arr(i) = gt_day(gt_day(st_date_arr(i))+99,/string)
           endfor
           en_date_arr(num_bites-1) = en_date

           rd_obs, st_date_arr(0),en_date_arr(0),bcs,sxtf,sxtp,/nobcs,/nosxtf

		ii = where(gt_dp_mode(sxtp) eq 9,nfl)
		if nfl gt 0 then begin
		   tt = int2secarr(sxtp(ii))
		   dt = tt - shift(tt,1)
		   dt = dt(1:n_elements(dt)-1)
		   jk = where(dt gt 600.)
		   pfi = sxtp(ii(jk))
for jj=0,n_elements(jk)-1 do print,jj,jk(jj),dt(jk(jj))/60.,gt_dp_mode(pfi(jj))
		   map = pfi
		   coords = sxt_cen(pfi)
		endif else begin
		   map = sxtp(0)
		   coords = sxt_cen(sxtp(0))
		endelse
    
           for i = 1,num_bites-1 do begin
                rd_obs, st_date_arr(i),en_date_arr(i),bcs,sxtf,sxtp,/nobcs,/nosxtf

		ii = where(gt_dp_mode(sxtp) eq 9,nfl)
		if nfl gt 0 then begin
		   tt = int2secarr(sxtp(ii))
                   dt = tt - shift(tt,1)
                   dt = dt(1:n_elements(dt)-1)
		   jk = where(dt gt 600.)
		   pfi = sxtp(ii(jk))
for jj=0,n_elements(jk)-1 do print,jj,jk(jj),dt(jk(jj))/60.,gt_dp_mode(pfi(jj))
		   map = [map, pfi]
		   coords = [[coords], [sxt_cen(pfi)]]
		endif

           endfor

        endif

; --------------------------------------------
; Make structure variable.
; --------------------------------------------
	mapsize = size(map)
	num_points = mapsize(1)

	points = {coords:[1.,1.],time:1L,day:1,filta:1L,filtb:1L}

	points = replicate(points, num_points)

	points.coords = coords
	points.time   = gt_time(map)
	points.day    = gt_day(map)
	points.filta  = gt_filta(map)
	points.filtb  = gt_filtb(map)

	return, points

; --------------------------------------------
; Finish program.
; --------------------------------------------
	finish_up:
stop
end
