
function mk_sxt_synmap, carr0, carr1, week_id=week_id, type=type, $
  in_prefix=in_prefix, infil=infil, indir=indir, version=version, $
  DIOG=DIOG, end_buff=end_buff, lon_off=lon_off, $
  res_map=res_map, interp_0=interp_0, interp_1=interp_1, $
  no_saa=no_saa, filta=filta, filtb=filtb, res_max=res_max, $
  xsiz_out=xsiz_out, ysiz_out=ysiz_out, write_fil=write_fil, $
  out_prefix=out_prefix, outfil=outfil, $
  outdir=outdir, qstop=qstop

twopi = 2d*!pi
sec_per_pix = gt_pix_size()
file_nums = $
  reform(transpose(rebin(indgen(10),10,12,/sample)*100)+9000,120) + $
  reform(rebin(indgen(12),12,10,/sample),120)+1

if n_elements(res_map) eq 0 then res_map = 1
if n_elements(week_id) gt 0 then $
  carr0 = fix(tim2carr(weekid2ex(week_id),/dc))
carr0 = carr0(0)				;MDM added to make scalar
if n_elements(carr1) eq 0 then carr1 = carr0+1
del_carr = carr1 - carr0
if n_elements(type) eq 0 then type = 1
if n_elements(lon_off) eq 0 then lon_off = 45.
carr_off = (lon_off/360.)*[1,0,-1]
pix_fac = cos(carr_off*twopi)
if n_elements(end_buff) eq 0 then end_buff = 1.
if n_elements(interp_0) eq 0 then interp_0 = 0
if n_elements(interp_1) eq 0 then interp_1 = 0
if n_elements(no_saa) eq 0 then no_saa = 1
if n_elements(filta) eq 0 then filta = 'OP' else filta = strupcase(filta)
if n_elements(filtb) eq 0 then filtb = 'A1' else filtb = strupcase(filtb)
if n_elements(res_max) eq 0 then res_max = 1
if n_elements(in_prefix) eq 0 then $
  in_prefix = ['sse','ssc','ssw']
;  in_prefix = ['ssem_sfm','sscm_sfm','sswm_sfm']
if n_elements(version) eq 0 then version = 'a.02'
if n_elements(out_prefix) eq 0 then $
  out_prefix = ['sse_cr','ssc_cr','ssw_cr']     ;MDM removed "m" before "_"
if n_elements(outdir) eq 0 then $
  outdir = getenv('DIR_GEN_SYNOPTIC')
if n_elements(outfil) eq 0 then $
  outfil = outdir + '/' + out_prefix(type) + $
    strtrim(carr0,2) + strtrim(version,2)

au = 1.49597892d8
r_sun_photo = 6.9599e5
d_sun_avg = 1.0000038d * au
r_sun_sec_avg = r_sun_photo/d_sun_avg*!radeg*3600
r_sun_pix_avg = r_sun_sec_avg/sec_per_pix
pix_per_carr_avg = r_sun_pix_avg*twopi*pix_fac(type)

if n_elements(indir) eq 0 then indir = '$DIR_SXT_SSX'

if n_elements(infil) eq 0 then begin
  start_tim = carr2ex(carr0 + carr_off(type))
  end_tim = carr2ex(carr1 + carr_off(type))
  weeks = week_loop(start_tim, end_tim)
  infil = indir + '/' + in_prefix(type) + strmid(strtrim(string(weeks.year),2),2,2) + $
	  '_' + string(weeks.week,format='(i2.2)') + $
	  strtrim(version,2)
endif
good_fils = where(file_exist(infil) eq 1, n_good_fil)
if n_good_fil gt 0 then infil = infil(good_fils) else begin
  print, ' No ' + strtrim(in_prefix(type),2) + ' strip files.  for this'
  print, '   time interval.  Returning.'
  map_arr = -1
  goto, return_point
endelse

rd_xda, infil, -1, index, /nodata
nimg = n_elements(index)

t_off_img = index.sxt.extra/1000.
times = anytim2ints(index,off=t_off_img)

if no_saa eq 1 then $
  tim2orbit, index, saa=saa else $
  saa = intarr(nimg)
carr = tim2carr(times,/dc) + carr_off(type)

good_vals = where((carr ge carr0-end_buff) and $
                  (carr le carr1+end_buff) and $
		  (strupcase(gt_filta(index,/short)) eq filta) and $
		  (strupcase(gt_filtb(index,/short)) eq filtb) and $
		  (not saa) and $
		  (gt_res(index) le res_max), n_good)

IF KEYWORD_SET(DIOG) THEN PRINT, ' N_GOOD = ',N_GOOD
if n_good eq 0 then begin
  print, ' No data for this interval.  Returning.'
  map_arr = -1
  goto, return_point
end

ycen = index.gen.pntg_angle(1,*)/10.
res = gt_res(index(good_vals))
pix_ratio = 2.^(float(res)-res_map)
img_siz = gt_shape(index(good_vals))
r_sun_sec = get_rb0p(index(good_vals),/r)
b0 = get_rb0p(index(good_vals),/b)
scale_fac = (r_sun_sec_avg/r_sun_sec)
SCALE_FAC = SCALE_FAC*1.05		; A damn kluge.  Pisses me off.
img_siz_scaled = $
  transpose([[reform(img_siz(0,*)*pix_ratio*scale_fac)], $
  	     [reform(img_siz(1,*)*pix_ratio*scale_fac)]])
carr = carr(good_vals)

x_siz_map = pix_per_carr_avg*del_carr/(2.^float(res_map))
y_siz_map = 1024./(2.^float(res_map))
map_arr = bytarr(x_siz_map,y_siz_map)

xpos = x_siz_map - $
  pix_per_carr_avg/(2.^float(res_map))*(carr-carr0) - img_siz_scaled(0,*)/2
xpos_cen = x_siz_map - $
  pix_per_carr_avg/(2.^float(res_map))*(carr-carr0)
xpos_cen_diff = xpos_cen(0:n_good-1) - xpos_cen(1:*)
xpos_cen_diff = [2*(x_siz_map-xpos_cen(0)),xpos_cen_diff, $
		 2*(xpos_cen(n_good-1))]
xwid_lo = xpos_cen_diff(1:*)/2 > 0
xwid_hi = xpos_cen_diff(0:n_good-1)/2 > 0
x0 = (img_siz_scaled(0,*)/2 - xwid_lo) > 0
x1 = (img_siz_scaled(0,*)/2 + xwid_hi) < $
     (img_siz_scaled(0,*) - 1)
;xpos = xpos + x0
;ypos = r_sun_pix_avg/(2.^float(res_map))*sin(b0)

ypos = y_siz_map/2 - img_siz_scaled(1,*)/2 + $
       ((512. - ycen)/(2.^res_map))*scale_fac + $
       r_sun_pix_avg/(2.^res_map)*sin(b0)*cos(lon_off/!radeg)

ss_sz_ordered = reverse(sort(img_siz_scaled(0,*)))
;SS_SZ_ORDERED = INDGEN(N_GOOD)

if keyword_set(qstop) then stop

for i=0,n_good-1 do begin
  rd_xda,infil,good_vals(ss_sz_ordered(i)),index0,data0

  if i eq 0 then begin
    map_arr = map_arr*data0(0)
    index_first = index0
  endif

  size_data0 = size(data0) & type_data0 = size_data0(size_data0(0)+1)
  if (type_data0 eq 4) or (type_data0 eq 5) then $
    data0 = data0/(gt_expdur(index0)/1000.)

  data0_scaled = congrid(data0,img_siz_scaled(0,ss_sz_ordered(i)), $
		         img_siz_scaled(1,ss_sz_ordered(i)),interp=interp_0)
;DATA0_SCALED = $
;  REBIN(DATA0,IMG_SIZ(0,I)*PIX_RATIO(I),IMG_SIZ(1,I)*PIX_RATIO(I),/SAMPLE)
;  data0_cropped = $
;    data0_scaled(x0(ss_sz_ordered(i)):x1(ss_sz_ordered(i)),*)
  DATA0_CROPPED = DATA0_SCALED
  embed_arr,data0_cropped,map_arr, $
    xpos(ss_sz_ordered(i)),ypos(ss_sz_ordered(i))
PRINT,' FINISHED WITH STRIP ' + STRTRIM(I,2) + ' OF ' + STRTRIM(N_GOOD,2)
endfor

if n_elements(xsiz_out) eq 0 then $
  xsiz_out = del_carr*(r_sun_pix_avg*twopi)/2.^res_map
if n_elements(ysiz_out) eq 0 then ysiz_out = $
  xsiz_out*(1024./(del_carr*r_sun_pix_avg*twopi))
map_arr = congrid(map_arr,xsiz_out,ysiz_out,interp=interp_1)

if keyword_set(write_fil) eq 1 then begin
; TODO - Figure out why index.sxt.extra is not available for early files:
;  index_first.sxt.imgparam = res_map
;  index_first.sxt.extra = carr0
  sav_sda, outfil, index_first, map_arr
  print,' File ' + outfil + ' written.'
endif

return_point:
if keyword_set(qstop) then stop

return, map_arr

end

