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

;
; For example, a block looks like;
;
;RA_REPEATS              1
;RA_COMPRESSION          0
;AEC_LINE_FLAG           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
;AEC_PARAMETERS          0,0,0,0,0,0
;EIS_FLARE_LINE_FLAG     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
;EIS_FLARE_PROPERTIES    0,0,0,0,0,0
;EIS_EVENT_LINE_FLAG     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
;EIS_EVENT_PROPERTIES    0,0,0,0
;XRT_FLARE_LINE_FLAG     0

; create a line list structure
sr   = {eis_study_raster}

; RA_REPEATS
;
split = STRSPLIT(block[0] , /EXTRACT , count = count)
IF (split[0] EQ 'RA_REPEATS')  THEN BEGIN
    sr.ra_repeats = split[1]
ENDIF ELSE RETURN , 0
;
; RA_COMPRESSION
;
split = STRSPLIT(block[1] , /EXTRACT , count = count)
IF (split[0] EQ 'RA_COMPRESSION')  THEN BEGIN
    sr.ra_compression = STRJOIN(split[1:*],' ',/SINGLE)
ENDIF ELSE RETURN , 0
;
; AEC_LINE_FLAG
;
split = STRSPLIT(block[2] , /EXTRACT , count = count)
IF (split[0] EQ 'AEC_LINE_FLAG')  THEN BEGIN

    flags = REFORM(FIX(STRSPLIT(split[1] , ',' , /EXTRACT,count=count)))
    IF (count NE 25) THEN RETURN , 0
    ; OK, save array
    sr.aec_props.aec_flag = flags

ENDIF ELSE RETURN , 0
;
; AEC_PARAMETERS
;
split = STRSPLIT(block[3] , /EXTRACT , count = count)
IF (split[0] EQ 'AEC_PARAMETERS')  THEN BEGIN

    flags = FIX(STRSPLIT(split[1] , ',' , /EXTRACT,count=count))
    IF (count NE 6) THEN RETURN , 0
    ; OK, save array
    sr.aec_props.upper_threshold   = flags[0]
    sr.aec_props.lower_threshold   = flags[1]
    sr.aec_props.upper_count_limit = flags[2]
    sr.aec_props.lower_count_limit = flags[3]
    sr.aec_props.exposure_id       = flags[4]
    sr.aec_props.max_run_time      = flags[5]

ENDIF ELSE RETURN , 0
;
; EIS_FLARE_LINE_FLAG
;
split = STRSPLIT(block[4] , /EXTRACT , count = count)
IF (split[0] EQ 'EIS_FLARE_LINE_FLAG')  THEN BEGIN

    flags = REFORM(FIX(STRSPLIT(split[1] , ',' , /EXTRACT,count=count)))
    IF (count NE 25) THEN RETURN , 0
    ; OK, save array
    sr.eis_flare_props.flare_flag = flags

ENDIF ELSE RETURN , 0
;
; EIS_FLARE_PROPERTIES
;
split = STRSPLIT(block[5] , /EXTRACT , count = count)
IF (split[0] EQ 'EIS_FLARE_PROPERTIES')  THEN BEGIN

    flags = FIX(STRSPLIT(split[1] , ',' , /EXTRACT,count=count))
    IF (count NE 6) THEN RETURN , 0
    ; OK, save array
    sr.eis_flare_props.x_centre          = flags[0]
    sr.eis_flare_props.y_centre          += flags[1]
    sr.eis_flare_props.x_pixel_threshold = flags[2]
    sr.eis_flare_props.y_pixel_threshold = flags[3]
    sr.eis_flare_props.x_min_limit       = flags[4]
    sr.eis_flare_props.y_min_limit       = flags[5]


ENDIF ELSE RETURN , 0
;
; EIS_EVENT_LINE_FLAG
;
split = STRSPLIT(block[6] , /EXTRACT , count = count)
IF (split[0] EQ 'EIS_EVENT_LINE_FLAG')  THEN BEGIN

    flags = REFORM(FIX(STRSPLIT(split[1] , ',' , /EXTRACT,count=count)))
    IF (count NE 25) THEN RETURN , 0
    ; OK, save array
    sr.eis_event_props.event_flag = flags

ENDIF ELSE RETURN , 0
;
; EIS_EVENT_PROPERTIES
;
split = STRSPLIT(block[7] , /EXTRACT , count = count)
IF (split[0] EQ 'EIS_EVENT_PROPERTIES')  THEN BEGIN

    flags = FIX(STRSPLIT(split[1] , ',' , /EXTRACT,count=count))
    IF (count NE 4) THEN RETURN , 0
    ; OK, save array
    sr.eis_event_props.x_pixel_threshold = flags[0]
    sr.eis_event_props.y_pixel_threshold = flags[1]
    sr.eis_event_props.x_min_limit       = flags[2]
    sr.eis_event_props.y_min_limit       = flags[3]

ENDIF ELSE RETURN , 0
;
; XRT_FLARE_LINE_FLAG
;
split = STRSPLIT(block[8] , /EXTRACT , count = count)
IF (split[0] EQ 'XRT_FLARE_LINE_FLAG')  THEN BEGIN

    flags = REFORM(FIX(STRSPLIT(split[1] , ',' , /EXTRACT,count=count)))
    IF (count NE 1) THEN RETURN , 0
    ; OK, save array
    sr.xrt_flare_props.xrt_flag = flags

ENDIF ELSE RETURN , 0


RETURN , sr



END
