;+
; NAME:
; UVIS_PDS_READ_LABEL
; 
; PURPOSE:
; This procedure will read in a subset of the fields available in a Cassini UVIS PDS label file.
;
; CALLING SEQUENCE:
; UVIS_PDS_READ_LABEL, Filename, Label
;
; INPUTS:
; Filename: UVIS PDS label file name.
;
; OUTPUTS:
; Label: A structure. 
;
; RESTRICTIONS:
; Only a subset of the available fields are read.  There are issues with the geometry fields that will require more 
;   sophisticated parsing.
;
; EXAMPLE:
;
;       Read the contents of a UVIS PDS label file:
;
;       Filename = 'FUV2009_090_07_06.LBL'
;       UVIS_PDS_READ_LABEL, Filename, Label
;
; MODIFICATION HISTORY:
;   Written by: Greg Holsclaw, University of Colorado/LASP, Aug 2013.
;-

pro UVIS_PDS_READ_LABEL, Filename, Label

;
; define output structure
;
Label = { $
;PDS_VERSION_ID:'', $ ;                  = PDS3
;RECORD_TYPE:'', $ ;                     = FIXED_LENGTH
RECORD_BYTES:0L, $ ;                    = 131072
FILE_RECORDS:0L, $ ;                    = 1
PRODUCT_ID:'', $ ;                      = "EUV2007_070_19_55"
SPACECRAFT_CLOCK_START_COUNT:'', $ ;    = "1/1552336149.192"
SPACECRAFT_CLOCK_STOP_COUNT:'', $ ;     = "UNK"
START_TIME:'', $ ;                      = 2007-070T19:55:48.157
STOP_TIME:'', $ ;                       = 2007-070T20:05:48.157
DATA_SET_ID:'', $ ;                     = "CO-S-UVIS-2-CUBE-V1.1"
TARGET_NAME:'', $ ;                     = "SATURN"
INSTRUMENT_HOST_NAME:'', $ ;            = "CASSINI_ORBITER"
INSTRUMENT_NAME:'', $ ;                 = "ULTRAVIOLET IMAGING SPECTROMETER"
INSTRUMENT_ID:'', $ ;                   = "UVIS"
OBSERVATION_ID:0L, $ ;                  = 83995
MISSION_PHASE_NAME:'', $ ;              = TOUR
PRODUCT_CREATION_TIME:'', $ ;           = 2009-155
INTEGRATION_DURATION:'', $ ;            = 600.000 <SECOND>
COMPRESSION_TYPE:'', $ ;                = "SQRT_9"
HI_VOLTAGE_POWER_SUPPLY_STATE:'', $ ;   = ON
OCCULTATION_PORT_STATE:'', $ ;          = CLOSED
SLIT_STATE:'', $ ;                     = HIGH_RESOLUTION
TEST_PULSE_STATE:'', $ ;                = OFF
ODC_ID:0L, $ ;                          = 1153
;DESCRIPTION:'', $ ;                     = "
;RIGHT_ASCENSION:'', $
;DECLINATION:'', $
;SUB_SOLAR_LATITUDE:'', $
;SUB_SOLAR_LONGITUDE:'', $
;SUB_SPACECRAFT_LATITUDE:'', $
;SUB_SPACECRAFT_LONGITUDE:'', $
;PHASE_ANGLE:'', $
;EMISSION_ANGLE:'', $
;INCIDENCE_ANGLE:'', $
;CENTRAL_BODY_DISTANCE:'', $
;SC_PLANET_POSITION_VECTOR:'', $   
;SC_PLANET_VELOCITY_VECTOR:'', $
;SC_SUN_POSITION_VECTOR:'', $   
;SC_SUN_VELOCITY_VECTOR:'', $   
;SC_TARGET_POSITION_VECTOR:'', $   
;SC_TARGET_VELOCITY_VECTOR:'', $   
;PLANET_CENTER_POSITION_VECTOR:'', $   
;PLANET_CENTER_VELOCITY_VECTOR:'' $
  CORE_ITEMS:'', $ ;                    = (1024, 64, 255)
  CORE_ITEM_BYTES:0, $ ;              = 2
  CORE_ITEM_TYPE:'', $ ;                = MSB_UNSIGNED_INTEGER
  CORE_BASE:0., $ ;                     = 0.0
  CORE_MULTIPLIER:0., $ ;               = 1.0
  ;CORE_VALID_MINIMUM:'', $ ;            = "N/A"
  CORE_NULL:0, $                     = -1
  CORE_NAME:'', $
  CORE_UNIT:'', $
  UL_CORNER_LINE:0, $ ;                = 0
  UL_CORNER_BAND:0, $ ;                = 0
  LR_CORNER_LINE:0, $ ;                = 63
  LR_CORNER_BAND:0, $ ;                = 1023
  BAND_BIN:0, $ ;                      = 16
  LINE_BIN:0 $ ;                      = 64
}

nfields = n_tags(Label)
field_names = tag_names(Label)

;
; for each line in the ASCII file, parse the string and check if the field name matches one in the list
;
openr,fid,Filename,/get_lun
str = ''
k = 0L
WHILE (k lt nfields) and (~ EOF(fid)) DO BEGIN
   READF, fid, str
   strk = strsplit(str,'=',/extract)
   if n_elements(strk) gt 1 then begin
     str1 = strtrim(strk[0],2)
     str2 = strtrim(strk[1],2)
     if (str1 eq field_names[k]) and (str2 ne '') then begin
       Label.(k) = str2
       k = k + 1  
     endif
   endif
ENDWHILE
close,fid
free_lun,fid
;
; strip out any double quotes
;
for i = 0, 21 do Label.(i) = strsplit( Label.(i), '"', /extract )

if n_params() eq 0 then stop

return

end