;+
; PROCEDURE: IUG_LOAD_EISCAT_VIEF
;   iug_load_eiscat_vief, site=site, $
;                         get_support_data=get_support_data, $
;                         trange=trange, $
;                         verbose=verbose, $
;                         downloadonly=downloadonly, $
;                         no_download=no_download
;
; PURPOSE:
;   loads the EISCAT vector Vi and E field data.
;
; KEYWORDS:
;   site  = site code, example, 
;           iug_load_eiscat_vief, site='kst',
;           the default is 'all', i.e., load all available sites.
;           Available sites: 'kst' (kst means Kiruna, Sodankyla, Tromso.)
;   trange = (Optional) Time range of interest  (2 element array).
;   /get_support_data : turn this on to load the supporting data.
;   /verbose: set to output some useful info
;   /downloadonly: if set, then only download the data, do not load it 
;           into variables.
;   /no_download: use only files which are online locally.
;
; OUTPUT
;   Vi and E vectors have 3 components, i.e.,
;   Vi = [Ve, Vn, Vu] and E = [Ee, En, Eu], where
;   [e, n, u] corresponds to [eastward, n:northward, u:upward].
;
; EXAMPLE:
;   iug_load_eiscat_vief, site='kst', $
;                 trange=['2011-2-1/00:00:00','2011-2-3/00:00:00']
;
;   For more information, see http://www.iugonet.org/en/ 
;                         and http://polaris.nipr.ac.jp/~eiscat/eiscatdata/
;
; Written by: Y.-M. Tanaka, August 16, 2013 (ytanaka at nipr.ac.jp)
;-

;************************************************************
;*** Load procedure for EISCAT Vi and E field vector data ***
;************************************************************
pro iug_load_eiscat_vief, site=site,  $
        trange=trange, get_support_data=get_support_data, $
	verbose=verbose, downloadonly=downloadonly, no_download=no_download

;===== Keyword check =====
;----- all codes -----;
site_code_all = strsplit('kst', $
			/extract)

;----- verbose -----;
if ~keyword_set(verbose) then verbose=0

;----- site -----;
if(not keyword_set(site)) then site='all'
site_code = ssl_check_valid_name(site, site_code_all, /ignore_case, /include_all)
if site_code[0] eq '' then return
print, 'site_code = ',site_code

;===== Download files, read data, and create tplot vars at each site =====
ack_flg=0

for i=0,n_elements(site_code)-1 do begin
    site=site_code[i]
    
    ;----- Set parameters for file_retrieve and download data files -----;
    source = file_retrieve(/struct)
    source.verbose = verbose
    source.local_data_dir  = root_data_dir() + 'iugonet/nipr/eiscat/'
    source.remote_data_dir = 'http://polaris.nipr.ac.jp/~eiscat/eiscatdata/cdf/'
;    source.remote_data_dir = 'http://polaris.nipr.ac.jp/~ytanaka/data/'
    if keyword_set(no_download) then source.no_download = 1

    relpathnames1 = file_dailynames(file_format='YYYY', trange=trange)
    relpathnames2 = file_dailynames(file_format='YYYYMMDD', trange=trange)
    relpathnames  = 'vief/'+site+'/'+relpathnames1+$
                    '/eiscat_kn_'+site+'_vief_'+relpathnames2+'_v??.cdf'

    files = spd_download(remote_file=relpathnames, remote_path=source.remote_data_dir, local_path=source.local_data_dir, _extra=source, /last_version)

    ;----- Print PI info and rules of the road -----;
    if(file_test(files[0]) and (ack_flg eq 0)) then begin
        ack_flg=1
        gatt = cdf_var_atts(files[0])
        print, '**************************************************************************************'
        print, 'Information about EISCAT radar data'
        print, 'PI: ', gatt.PI_name
        print, ''
        print, 'Rules of the Road for EISCAT Radar Data:'
        print, ''
	print_str_maxlet, gatt.Rules_of_use
        print, gatt.LINK_TEXT, ' ', gatt.HTTP_LINK
        print, '**************************************************************************************'
    endif

    ;----- Load data into tplot variables -----;
    if(not keyword_set(downloadonly)) then downloadonly=0
    if(downloadonly eq 0) then begin
        prefix='eiscat_'
        cdf2tplot, file=files, verbose=source.verbose, prefix=prefix, $
            get_support_data=get_support_data

        len=strlen(tnames(prefix+'vi_0'))
        if len eq 0 then begin
            ;--- Quit if no data have been loaded
            print, 'No tplot var loaded for '+site_code[i]+'.'
        endif else begin
            ;----- Loop for params -----;
            tplot_name_all=tnames(prefix+'*_0')
	    for itname=0, n_elements(tplot_name_all)-1 do begin
	        tplot_name_tmp=tplot_name_all[itname]

                ;----- Get_data of tplot_name_tmp -----;
                get_data, tplot_name_tmp, data=d, dl=dl, lim=lim 

                ;----- Find param -----;
                len=strlen(tplot_name_tmp)
                pos=strpos(tplot_name_tmp,'_')
                param=strmid(tplot_name_tmp,pos+1,len-pos-3)

                ;----- Rename tplot variables -----;
                case param of
                    'pulse_code_id' : paramstr='pulse'
                    'int_time_nominal' : paramstr='inttim'
                    'vi_err'        : paramstr='vierr'
                    'E_err'         : paramstr='Eerr'
                    'quality'       : paramstr='q'
                    'int_time_real' : paramstr='inttimr'
                    else            : paramstr=param
                endcase

                tplot_name_new='eiscat_'+site+'_'+paramstr
                copy_data, tplot_name_tmp, tplot_name_new
                store_data, tplot_name_tmp, /delete

                ;----- Set options -----;
                titlehead=site+'!C'
                case param of
	            'pulse_code_id' : begin
		        options, tplot_name_new, labels='Pulse code ID', $
		          ytitle=titlehead+'Pulse code ID'
		      end
	            'int_time_nominal' : begin
		        options, tplot_name_new, labels='int.time!C(nominal)', $
		          ytitle=titlehead+'Int. time (nominal)', ysubtitle = '[s]'
		        tclip, tplot_name_new, 0, 1e+4, /overwrite
                        ylim, tplot_name_new, -50, 350
		      end
	            'lat' : begin
		        options, tplot_name_new, labels='Lat', $
		          ytitle=titlehead+'Latitude', ysubtitle = '[deg]'
                      end
	            'long' : begin
		        options, tplot_name_new, labels='Lon', $
		          ytitle=titlehead+'Longitude', ysubtitle = '[deg]'
                      end
	            'alt' : begin
		        options, tplot_name_new, labels='Alt', $
		          ytitle=titlehead+'Altitude', ysubtitle = '[km]'
                      end
	            'vi' : begin
		        options, tplot_name_new, labels=['Ve', 'Vn', 'Vu'], $
		          ytitle=titlehead+'Vi', ysubtitle = '[m/s]', colors=[2,4,6]
			ylim, tplot_name_new, -1000., 1000.
		      end
	            'vi_err' : begin
		        options, tplot_name_new, labels=['Ve_err', 'Vn_err', 'Vu_err'], $
		          ytitle=titlehead+'Vi err.', ysubtitle = '[m/s]', colors=[2,4,6]
                        ylim, tplot_name_new, 0., 1000.
		      end
	            'E' : begin
		        options, tplot_name_new, labels=['Ee', 'En', 'Eu'], $
		          ytitle=titlehead+'E', ysubtitle = '[mV/m]', colors=[2,4,6]
                        ylim, tplot_name_new, -50., 50.
		      end
	            'E_err' : begin
		        options, tplot_name_new, labels=['Ee_err', 'En_err', 'Eu_err'], $
		          ytitle=titlehead+'E err.', ysubtitle = '[mV/m]', colors=[2,4,6]
                        ylim, tplot_name_new, 0., 50.
		      end
	            'quality' : begin
		        options, tplot_name_new, labels=['q1','q2','q3'], $
		          ytitle=titlehead+'Quality'
		      end
	            'int_time_real' : begin
		        options, tplot_name_new, labels='int.time!C   (real)', $
		          ytitle=titlehead+'Int. time (real)', ysubtitle = '[s]'
		        tclip, tplot_name_new, 0, 1e+4, /overwrite
                        ylim, tplot_name_new, -50, 350
		      end
                    else : dumm=0
                endcase
            endfor
        endelse
    endif
endfor

return
end