;+
; NAME:
;	map_bsc
; PURPOSE:
;	plot 2d maps of BSC data (time vs wavelength)
; CALLING SEQUENCE:
;	map_bsc,bsc_index,bsc_data
; INPUTS:
;       BSC_INDEX    - BSC index structures
;       BSC_DATA     - BSC data structure
; KEYWORDS:
;       CHAN         - channel to plot
;       FILE         - file from which to read BSC index and data
;       TSTART, TEND - string start and end times (e.g. '09:00')
;       XSPACE,YSPACE- shift amounts in x and y directions
; PROCEDURE:
;       based on JTM's MPLOT
; HISTORY:
;       Written Mar'93 by D. Zarro (ARC)
;-

pro map_bsc,bsc_index,bsc_data,chan=chan,$
 xspace=xspace,yspace=yspace,tstart=tstart,tend=tend,norm=norm,diff=diff

common map_bsc,sindex

on_error,1

;-- check inputs

ok=bsc_check(bsc_index,bsc_data)
if (not ok) then begin
 message,'usage --> MAP_BSC,BSC_INDEX,BSC_DATA,CHAN=CHAN,[XSPACE=XSPACE,YSPACE=YSPACE,',/contin
 print,'              TSTART=TSTART,TEND=TEND]'
 return                    
endif

;-- get data arrays

ss=bsc_chan(bsc_index,chan)
time=gt_bsc_time(bsc_index,chan,dtstart,dtend)
if n_elements(tstart) eq 0 then tstart=dtstart
if n_elements(tend) eq 0 then tend=dtend

sel_bsc,bsc_index,bsc_data,nindex,ndata,wave,counts=counts,$
             tstart=tstart,tend=tend,chan=chan

crate=gt_bsc_crate(nindex,chan,sdgi=sdgi)

x=wave(*,0)
valid=where(x gt 0)
x=x(valid)
nspec=n_elements(sdgi)
nbins=n_elements(wave)
y=counts(valid,*)/rebin(transpose(sdgi),nspec,nbins)

;-- plot labels

dstart=strtrim(tstart,2)
dend=strtrim(tend,2)
blank=strpos(dstart,' ')
utbase=strmid(dstart,0,blank)
dend=strmid(dend,blank,100)
ions=['Fe XXVI', 'Fe XXV', 'Ca XIX', 'S XV']
ion=ions(chan-1)
xtitle='ANGSTROM'
ytitle='COUNTS S-1 BIN-1'
title=ion+' START TIME: '+tstart+' END TIME: '+dend

;-- stack spectra

if keyword_set(diff) then y=y(*,1:*)-y

if n_elements(sindex) eq 0 then wdef,sindex,retain=2 else begin
 wshow,sindex & wset,sindex
endelse

msplot,x,y,xspace,yspace,xtitle=xtitle,ytitle=ytitle,title=title,norm=norm
return & end
    
