function match_saa_state, roadmap, saa_state=saa_state
;
; boolean - does input match requested saa state?
;  
;    
nout=n_elements(roadmap)

case 1 of
   data_chk(saa_state,/undef): retval=lonarr(nout) + 1     ; dont care (all yes)
   saa_state(0): retval=saa_in(roadmap,/fem_only)
   else: retval=1-(saa_in(roadmap,/fem_only))
endcase   
return,retval
end
  
pro mk_sff_pair, infil, ssl, ssm, sss, delta=delta, triplet=triplet, $
		 saa_state=saa_state, count=count, debug=debug, $
                 al_only=al_only, almg_only=almg_only
;+
;   Name: mk_sff_pair
;
;   Purpose: make pairings for SXT full disk composite movies
;
;   Input Parameters:
;      infil - list of SFR files OR roadmaps
;
;   Output Paramters:
;      ssl - subscripts of LONG exposures matching criteria  
;      ssm - subscripts of Medium (if /triplet set)
;      sss - subscripts of associated SHORT exposures 
;      delta - deltaT (long:short)
;  
;   History:
;      14-apr-1998 - S.L.Freeland - break/rework mk_sfd
;      31-Jan-2000 - S.L.Freeland - enable /TRIPLET
;-
triplet=keyword_set(triplet)
debug=keyword_set(debug)

; ------- input (sfr file list or ROADMAP ) ------
if data_chk(infil,/struct) then roadmap=infil else $   ; file or roadmap ok
    rd_roadmap, infil, roadmap, filidx=filidx
; -----------------------------------------------

tim2orbit, roadmap, tim2night=tim2night                 ; get all time2nights

; -------- Define uniq pairing combinations ------
res=  [1,2]            ; half / quarter
case 1 of 
   keyword_set(al_only): fb=2
   keyword_set(almg_only): fb=3
   else: fb=[2,3]
endcase
; -----------------------------------------------

; --------- initialize output variables ------------
ssl=[-1]                                        ; long subscripts
ssm=[-1]
sss=[-1]                                        ; paired subscripts

delta=[-1]                                      ; dT (long:short)
; -----------------------------------------------

llow=([17,26])
lhi= ([25,30])

for resx=0,n_elements(res)-1 do begin           ; for each resolution
   for filtb=0,n_elements(fb)-1 do begin        ; for each filter 

;    ------ Flag promising LONG exposures ---------
     ssli=where(roadmap.percentd eq 255 and gt_filtb(roadmap) eq fb(filtb) and $
	gt_filta(roadmap) eq 1 and $					;mdm added 29-Nov-93
	gt_res(roadmap) eq res(resx) and gt_expmode(roadmap) eq 0 and $
        match_saa_state(roadmap, saa_state=saa_state) and $
        gt_dpe(roadmap) ge llow(triplet) and gt_dpe(roadmap) le lhi(triplet) and $
        (gt_shape_cmd(roadmap,/x) eq gt_shape_cmd(roadmap,/y)) and $	; slf 9-oct
	tim2night gt 2.0,sslcnt)	;	roadmap.img_max gt 150)

if debug then stop,'ssli'
;    ------------- medium (triplet only) --------
     if triplet then begin
     ssmi=where(roadmap.percentd eq 255 and gt_filtb(roadmap) eq fb(filtb) and $
	gt_filta(roadmap) eq 1 and $					;mdm added 29-Nov-93
	gt_res(roadmap) eq res(resx) and gt_expmode(roadmap) eq 0 and $
        match_saa_state(roadmap, saa_state=saa_state) and $
        gt_dpe(roadmap) ge llow(1-triplet) and gt_dpe(roadmap) le lhi(1-triplet) and $
        (gt_shape_cmd(roadmap,/x) eq gt_shape_cmd(roadmap,/y)) and $	; slf 9-oct
	tim2night gt 2.0,ssmcnt)	 ;	roadmap.img_max gt 150)
     endif
if debug then stop,'sslm'

;    ------- SHORT exposures w/matching resolution and filter ----------
     sssi=where(roadmap.percentd eq 255 and gt_filtb(roadmap) eq fb(filtb) and $				;MDM start adding 22-Apr-92
	gt_filta(roadmap) eq 1 and $					;mdm added 29-Nov-93
	gt_res(roadmap) eq res(resx) and gt_expmode(roadmap) eq 0 and $
	gt_dpe(roadmap) ge 9 and gt_dpe(roadmap) le 15 and $
        (gt_shape_cmd(roadmap,/x) eq gt_shape_cmd(roadmap,/y)) and $	; slf 9-oct
	tim2night gt 2.0, ssscnt)

if debug then stop,'sssi'

;     ----- For every LONG, identify closest SHORT which passes filter ----
      if ssscnt gt 0 and sslcnt gt 0 then begin
         dts2l=tim2dset(roadmap(sssi),roadmap(ssli),delta=dts) 
         if triplet then begin 
            dtm2l=tim2dset(roadmap(ssmi),roadmap(ssli),delta=dtm)
            ssm=[ssm,ssmi(dtm2l)]
         endif
;        update SS and delta output variables
         ssl=[ssl,ssli]
         sss=[sss,sssi(dts2l)]
         delta=[delta,dts]
       endif
       mess=['#images w/filter:'+gt_filtb(fb(filtb),/string) + $
	     ', resolution: '+  gt_res(res(resx),/string)+' : ' + strtrim(sslcnt,2)]
       box_message,mess
   endfor
endfor
; -----------------------------------------------

; ------------- eliminate inital value -----------
count=0
if n_elements(ssl) gt 1 then begin
ssl=ssl(1:*)
if n_elements(ssm) gt 1 then ssm=ssm(1:*)
sss=sss(1:*)
delta=delta(1:*)
; -----------------------------------------------

; ------------- time sort all output  ------------
order=0
if n_elements(ssl) gt 1 then order=sort_index(roadmap(ssl),/ss)
ssl=ssl(order)
if triplet then ssm=ssm(order)
sss=sss(order)
if not keyword_set(triplet) then ssm=sss
delta=delta(order)
count=n_elements(ssl)
endif
; -----------------------------------------------

return
end

