;+
; PROCEDURE:
;         mms_load_eph_tplot
;
; PURPOSE:
;         Loads ASCII ephemeris files into tplot variables
;
;
;
;$LastChangedBy: egrimes $
;$LastChangedDate: 2018-03-16 16:11:23 -0700 (Fri, 16 Mar 2018) $
;$LastChangedRevision: 24897 $
;$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_4_1/projects/mms/mec_ascii/mms_load_eph_tplot.pro $
;-
pro mms_load_eph_tplot, filenames, tplotnames = tplotnames, prefix = prefix, level = level, $
    probe=probe, datatypes = datatypes, trange = trange, suffix = suffix

    ; print a warning about how long this takes so user's do not
    ; assume the process is frozen after a few seconds
    ;dprint, dlevel = 1, 'Loading ephemeris files can take some time; please be patient...'
    if undefined(prefix) then prefix = 'mms'
    if undefined(datatype) then datatype = 'def'
    if undefined(suffix) then suffix = ''

    for file_idx = 0, n_elements(filenames)-1 do begin
        ; load the data from the ASCII file
        new_eph_data = mms_read_eph_file(filenames[file_idx])
        ;    this_start = new_eph_data.time[0]
        ;    this_end = new_eph_data.time[n_elements(new_eph_data.time)-1]
        if is_struct(new_eph_data) then begin
            ; note on time format in this file:
            ; date/time values are stored in the format: YYYY-DOYThh:mm:ss.fff
            ; so to convert the first time value to a time_double,
            ;    time_values = time_double(new__att_data.time, tformat='YYYY-DOYThh:mm:ss.fff')
            append_array, time_values, time_double(new_eph_data.time[0:n_elements(new_eph_data.time)-2], tformat='YYYY-DOY/hh:mm:ss.fff')
            if where(datatypes EQ 'pos') NE -1 then append_array, eph_data_pos, new_eph_data.pos[0:n_elements(new_eph_data.time)-2,*]
            if where(datatypes EQ 'vel') NE -1 then append_array, eph_data_vel, new_eph_data.vel[0:n_elements(new_eph_data.time)-2,*]
        endif
    endfor

    ; sort and find unique time_values since predicted files overlap each other
    idx=[uniq(time_values, sort(time_values))]
    time_values = time_values[idx]
    if ~undefined(eph_data_pos) then eph_data_pos = eph_data_pos[idx,*]
    if ~undefined(eph_data_vel) then eph_data_vel = eph_data_vel[idx,*]

    ; check that some data was actually loaded in
    if undefined(time_values) then begin
        dprint, dlevel = 0, 'Error loading ephemeris data - no data was loaded.'
        return
    endif else begin
        ; warn user if only partial data was loaded
        if time_values[0] GT time_double(trange[0]) OR time_values[n_elements(time_values)-1] LT time_double(trange[1]) then $
            dprint, dlevel = 1, 'Warning, not all data in the requested time frame was loaded.'
    endelse

    default_colors = [2, 4, 6]
    data_att = {coord_sys:'', st_type:'', units:''}
    dl = {filenames:filenames, colors:default_colors, data_att:data_att}
    ; Populate dlimits.colors to match tplot defaults
    ; for pos and vel variables.
    ;add labels indicating whether data is pos, vel, or neither
    if where(datatypes EQ 'pos') NE -1 then begin
        pos_name =  prefix + '_' + level + 'eph_pos' + suffix
        str_element,dl,'data_att.st_type','pos',/add_replace
        str_element,dl,'data_att.coord_sys','j2000', /add_replace
        ;str_element,dl,'data_att.coord_sys','unknown', /add_replace
        str_element,dl,'data_att.units','km', /add_replace
        str_element,dl,'labels',['x','y','z'], /add
        str_element,dl,'vname',pos_name, /add
        str_element,dl,'ysubtitle','[km]', /add
        store_data, pos_name, data={x: time_values, y: eph_data_pos}, dlimits=dl, l=0
        append_array, tplotnames, [pos_name]
        dprint, dlevel = 1, 'Tplot variable created: ' + pos_name
    endif
    dl = {filenames:filenames, colors:default_colors, data_att:data_att}
    if where(datatypes EQ 'vel') NE -1 then begin
        vel_name =  prefix + '_' + level + 'eph_vel' + suffix
        str_element,dl,'data_att.st_type','vel',/add_replace
        str_element,dl,'data_att.coord_sys','j2000', /add_replace
        str_element,dl,'data_att.units','km/s', /add_replace
        str_element,dl,'labels',['vx','vy','vz'], /add
        str_element,dl,'vname',vel_name, /add
        str_element,dl,'ysubtitle','[km/s]', /add
        store_data, vel_name, data={x: time_values, y: eph_data_vel}, dlimits=dl, l=0
        append_array, tplotnames, [vel_name]
        dprint, dlevel = 1, 'Tplot variable created: '+ vel_name
    endif
end