;+
;PROJECT:
;           SolarB EIS
;
;NAME:
;           eis_read_raster_block
;
;PURPOSE:
;           Procedure
;
;CATEGORY:
;           EIS Technical Planning
;
;INPUTS:
;           ra  - eis_raster structure
;
;MODIFICATION HISTORY:
;           Written by: John Rainnie, RAL (March 2005)
;
;-
;************************************************************************
FUNCTION eis_read_raster_block , block

;
; For example, a block looks like;
;
;RA_ID                   -1
;ACRONYM                 Quiet_Sun_Evol_40as
;TITLE                   [RA:000002][Scan:40(2")step...
;AUTHOR                  John Rainnie
;DATE                    26-May-2006
;LL_ID                   -1
;RASTERTYPE              0
;SCAN_FM_NSTEPS          40
;SCAN_FM_STEPSIZE        2
;SNS_NEXPS               1
;SNS_DURATION            0
;NWINDOWS                4
;DATAWINDOWS             32,32,32,32
;WINDHEIGHT              512
;WINDWIDTH               32
;SLITINDEX               3
;NEXP                    1
;EXPOSURES               50000
;DELAYS                  0
;DURATION                2118012
;VOLUME                  42991616

; create a raster structure
ra   = {eis_raster}

;
; RA_ID
;
split = STRSPLIT(block[0] , /EXTRACT)
IF (split[0] EQ 'RA_ID')  THEN BEGIN
    ra.acronym = split[1]
ENDIF ELSE RETURN , 0
;
; ACRONYM
;
split = STRSPLIT(block[1] , /EXTRACT)
IF (split[0] EQ 'ACRONYM')  THEN BEGIN
    ra.acronym = split[1]
ENDIF ELSE RETURN , 0
;
; TITLE
;
split = STRSPLIT(block[2] , /EXTRACT)
IF (split[0] EQ 'TITLE')  THEN BEGIN
    ra.title = split[1]
ENDIF ELSE RETURN , 0
;
; AUTHOR
;
split = STRSPLIT(block[3] , /EXTRACT)
IF (split[0] EQ 'AUTHOR')  THEN BEGIN
    ra.author = STRJOIN(split[1:*],' ',/SINGLE)
ENDIF ELSE RETURN , 0
;
; DATE
;
split = STRSPLIT(block[4] , /EXTRACT)
IF (split[0] EQ 'DATE')  THEN BEGIN
    ra.date = anytim2utc(SYSTIM(),/STIME,/DATE)
ENDIF ELSE RETURN , 0
;
; LL_ID
;
split = STRSPLIT(block[5] , /EXTRACT)
IF (split[0] EQ 'LL_ID')  THEN BEGIN
    ra.ll_id = 0
ENDIF ELSE RETURN , 0
;
; RASTERTYPE
;
split = STRSPLIT(block[6] , /EXTRACT)
IF (split[0] EQ 'RASTERTYPE')  THEN BEGIN
    ra.rasterType = split[1]
ENDIF ELSE RETURN , 0
;
; SCAN_FM_NSTEPS
;
split = STRSPLIT(block[7] , /EXTRACT)
IF (split[0] EQ 'SCAN_FM_NSTEPS')  THEN BEGIN
    ra.scan_fm_nSteps = split[1]
ENDIF ELSE RETURN , 0
;
; SCAN_FM_STEPSIZE
;
split = STRSPLIT(block[8] , /EXTRACT)
IF (split[0] EQ 'SCAN_FM_STEPSIZE')  THEN BEGIN
    ra.scan_fm_stepSize = split[1]
ENDIF ELSE RETURN , 0
;
; SNS_NEXPS
;
split = STRSPLIT(block[9] , /EXTRACT)
IF (split[0] EQ 'SNS_NEXPS')  THEN BEGIN
    ra.sns_nExps = split[1]
ENDIF ELSE RETURN , 0
;
; SNS_DURATION
;
split = STRSPLIT(block[10] , /EXTRACT)
IF (split[0] EQ 'SNS_DURATION')  THEN BEGIN
    ra.sns_duration = split[1]
ENDIF ELSE RETURN , 0
;
; NWINDOWS
;
split = STRSPLIT(block[11] , /EXTRACT)
IF (split[0] EQ 'NWINDOWS')  THEN BEGIN
    ra.nWindows = split[1]
ENDIF ELSE RETURN , 0
;
; DATAWINDOWS
;
split = STRSPLIT(block[12] , /EXTRACT , count = count)
IF (split[0] EQ 'DATAWINDOWS')  THEN BEGIN
    ; Get widths(INT)
    dw = FIX(STRSPLIT(split[1] , ',' , /EXTRACT))
    IF (N_ELEMENTS(dw) NE ra.nWindows) THEN RETURN , 0
    ra.dataWindows[0:ra.nWindows-1] = dw
ENDIF ELSE RETURN , 0
;
; WINDHEIGHT
;
split = STRSPLIT(block[13] , /EXTRACT)
IF (split[0] EQ 'WINDHEIGHT')  THEN BEGIN
    ra.windHeight = split[1]
ENDIF ELSE RETURN , 0
;
; WINDWIDTH
;
split = STRSPLIT(block[14] , /EXTRACT)
IF (split[0] EQ 'WINDWIDTH')  THEN BEGIN
    ra.windWidth = split[1]
ENDIF ELSE RETURN , 0
;
; SLITINDEX
;
split = STRSPLIT(block[15] , /EXTRACT)
IF (split[0] EQ 'SLITINDEX')  THEN BEGIN
    ra.slitIndex = split[1]
ENDIF ELSE RETURN , 0
;
; NEXP
;
split = STRSPLIT(block[16] , /EXTRACT)
IF (split[0] EQ 'NEXP')  THEN BEGIN
    ra.nExp = split[1]
ENDIF ELSE RETURN , 0
;
; EXPOSURES
;
split = STRSPLIT(block[17] , /EXTRACT)
IF (split[0] EQ 'EXPOSURES')  THEN BEGIN
    ; Get widths(INT)
    exposures = LONG(STRSPLIT(split[1] , ',' , /EXTRACT))
    ra.exposures[0:ra.nExp-1] = exposures
ENDIF ELSE RETURN , 0
;
; DELAYS
;
split = STRSPLIT(block[18] , /EXTRACT)
IF (split[0] EQ 'DELAYS')  THEN BEGIN
    ; Get widths(INT)
    delays = LONG(STRSPLIT(split[1] , ',' , /EXTRACT))
    ra.delays[0:ra.nExp-1] = delays
ENDIF ELSE RETURN , 0
;
; SPLIT
;
split = STRSPLIT(block[19] , /EXTRACT)
IF (split[0] EQ 'SPLIT')  THEN BEGIN
    ra.split = split[1]
ENDIF ELSE RETURN , 0
;
; DURATION
;
split = STRSPLIT(block[20] , /EXTRACT)
IF (split[0] EQ 'DURATION')  THEN BEGIN
    ra.duration = split[1]
ENDIF ELSE RETURN , 0
;
; VOLUME
;
split = STRSPLIT(block[21] , /EXTRACT)
IF (split[0] EQ 'VOLUME')  THEN BEGIN
    ra.volume = split[1]
ENDIF ELSE RETURN , 0

; Recalculate raster duration, volume and title
ra.duration   = eis_raster_duration(ra , {eis_line_list})
ra.volume     = eis_raster_volume(ra)

RETURN , ra

END



END
