;+
; PROCEDURE: IUG_LOAD_EISCAT
;   iug_load_eiscat, site=site, $
;                    ydatatype=ydatatype, $
;                    get_support_data=get_support_data, $
;                    trange=trange, $
;                    verbose=verbose, $
;                    downloadonly=downloadonly, $
;                    no_download=no_download
;
; PURPOSE:
;   loads the EISCAT radar data.
;
; KEYWORDS:
;   site  = Combination of observatory and antenna, example, 
;           iug_load_eiscat, site='esr_42m',
;           the default is 'all', i.e., load all available sites.
;           Available sites: 'tro_uhf', 'tro_vhf', 'esr_32m', 'esr_42m'.
;           This can be an array of strings, e.g., ['esr_32m', 'esr_42m']
;           or a single string delimited by spaces, e.g., 'esr_32m esr_42m'.
;   ydatatype = data type of y-axis. Default is 'alt', i.e., altitude.
;   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.
;
; EXAMPLE:
;   iug_load_eiscat, site='esr_42m', $
;                 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, July 25, 2011 (ytanaka at nipr.ac.jp)
; Modified by: Y.-M. Tanaka, August 24, 2011
;   Separated "print_str_maxlet" to another file. 
; Modified by: Y.-M. Tanaka, December 1, 2011
;   to load data with various int_times separately to different tplot
;   vars.
; Modified by: Y.-M. Tanaka, June 6, 2012
;   Integragted all pulse_code and integration_time data for one day 
;   into a CDF file
; Modified by: Y.-M. Tanaka, August 16, 2013
;   Added range data to CDF files. 
;-

;********************************************
;*** Load procedure for EISCAT radar data ***
;********************************************
pro iug_load_eiscat, site=site, ydatatype=ydatatype, $
        trange=trange, get_support_data=get_support_data, $
	verbose=verbose, downloadonly=downloadonly, no_download=no_download

;===== Keyword check =====
;----- all codes -----;
site_code_all = strsplit('esr_32m esr_42m tro_vhf tro_uhf kir_uhf sod_uhf', $
			/extract)
ydatatype_all = strsplit('alt lat lon', /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

;----- ydatatype -----;
if(not keyword_set(ydatatype)) then ydatatype='alt'
ytype = ssl_check_valid_name(ydatatype, ydatatype_all, /ignore_case)
if ytype eq '' then return
if ytype eq 'lon' then ytype='long'

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

for i=0,n_elements(site_code)-1 do begin
    site1=site_code[i]
    site1=strsplit(site1, '_', /extract)
    stn=site1[0]
    ant=site1[1]
    
    ;----- 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://pc115.seg20.nipr.ac.jp/www/eiscatdata/cdf/basic/'
    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  = stn+'/'+ant+'/'+$
        relpathnames1 + '/eiscat_kn_'+stn+'_'+ant+'_'+relpathnames2+'_v??.cdf'

;print, source.remote_data_dir
;print, relpathnames

    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+'ne_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
            ;----- get y-axis data -----;
	    get_data, prefix+ytype+'_0', data=d
	    vdat=d.y
;	    vdat=average(d.y,1,/NAN)
            case ytype of
                'alt' : ysubstr='Altitude [km]'
                'lat' : ysubstr='Latitude [deg]'
                'long' : ysubstr='Longitude [deg]'
            endcase
            ;----- 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)

                ;----- Replace data.v with y-axis data -----;
                if ((param eq 'lat') or (param eq 'long') or $
                    (param eq 'alt') or (param eq 'range') or $
                    (param eq 'ne') or (param eq 'ne_err') or $
                    (param eq 'te') or (param eq 'te_err') or $
                    (param eq 'ti') or (param eq 'ti_err') or $
                    (param eq 'vi') or (param eq 'vi_err') or $
                    (param eq 'collision_freq') or (param eq 'composition') or $
                    (param eq 'quality') or (param eq 'quality_flag')) then begin
                    store_data, tplot_name_tmp, data={x:d.x, y:d.y, v:vdat}, $
			dl=dl, lim=lim
                endif

                ;----- Rename tplot variables -----;
                case param of
                    'pulse_code_id' : paramstr='pulse'
                    'int_time_nominal' : paramstr='inttim'
                    'ne_err'       : paramstr='neerr'
                    'te_err'       : paramstr='teerr'
                    'ti_err'       : paramstr='tierr'
                    'vi_err'       : paramstr='vierr'
                    'composition'  : paramstr='comp'
                    'quality'      : paramstr='q'
                    'quality_flag' : paramstr='qflag'
                    'collision_freq'  : paramstr='colf'
                    'int_time_real'  : paramstr='inttimr'
                    'elev_angle'   : paramstr='elev'
                    'number_gate'  : paramstr='ngate'
                    'txpower'     : paramstr='txpow'
                    'mconst'       : paramstr='mcnst'
                    'heating'      : paramstr='heat'
                    else           : paramstr=param
                endcase

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

                ;----- Set options -----;
                titlehead=stn+'_'+ant+'!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', $
		          ytitle=titlehead+'Int. time', 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 = ysubstr, spec=1, $
		          ztitle='Latitude [deg]'
                      end
	            'long' : begin
		        options, tplot_name_new, labels='Lon', $
		          ytitle=titlehead+'Longitude', ysubtitle = ysubstr, spec=1, $
		          ztitle='Longitude [deg]'
                      end
	            'alt' : begin
		        options, tplot_name_new, labels='Alt', $
		          ytitle=titlehead+'Altitude', ysubtitle = ysubstr, spec=1, $
		          ztitle='Altitude [km]'
                      end
                    'range' : begin
                        options, tplot_name_new, labels='Range', $
                          ytitle=titlehead+'Rnage', ysubtitle = ysubstr, spec=1, $
		          ztitle='Range [km]'
                      end
	            'ne' : begin
		        options, tplot_name_new, labels='Ne', $
		          ytitle=titlehead+'Ne', ysubtitle = ysubstr, spec=1, $
		          ztitle='Ne [m!E-3!N]'
                        zlim, tplot_name_new, 1e10, 1e12, 1
		      end
	            'ne_err' : begin
		        options, tplot_name_new, labels='Ne err.', $
		          ytitle=titlehead+'Ne err.', ysubtitle = ysubstr, spec=1, $
		          ztitle='Ne err. [m!E-3!N]'
                        zlim, tplot_name_new, 1e10, 1e12, 1
		      end
	            'te' : begin
		        options, tplot_name_new, labels='Te', $
		          ytitle=titlehead+'Te', ysubtitle = ysubstr, spec=1, $
		          ztitle='Te [K]'
		        zlim, tplot_name_new, 0, 4000, 0
		      end
	            'te_err' : begin
		        options, tplot_name_new, labels='Te err.', $
		          ytitle=titlehead+'Te err.', ysubtitle = ysubstr, spec=1, $
		          ztitle='Te err. [K]'
		        zlim, tplot_name_new, 0, 4000, 0
		      end
	            'ti' : begin
		        options, tplot_name_new, labels='Ti', $
		          ytitle=titlehead+'Ti', ysubtitle = ysubstr, spec=1, $
		          ztitle='Ti [K]'
		        zlim, tplot_name_new, 0, 3000, 0
		      end
	            'ti_err' : begin
		        options, tplot_name_new, labels='Ti err.', $
		          ytitle=titlehead+'Ti err.', ysubtitle = ysubstr, spec=1, $
		          ztitle='Ti err. [K]'
		        zlim, tplot_name_new, 0, 3000, 0
		      end
	            'vi' : begin
		        options, tplot_name_new, labels='Vi', $
		          ytitle=titlehead+'Vi', ysubtitle = ysubstr, spec=1, $
		          ztitle='Vi [m/s]'
		        zlim, tplot_name_new, -200, 200, 0
		      end
	            'vi_err' : begin
		        options, tplot_name_new, labels='Vi err.', $
		          ytitle=titlehead+'Vi err.', ysubtitle = ysubstr, spec=1, $
		          ztitle='Vi err. [m/s]'
		        zlim, tplot_name_new, -200, 200, 0
		      end
	            'composition' : begin
		        options, tplot_name_new, labels='comp', $
		          ytitle=titlehead+'Composition', ysubtitle = ysubstr, spec=1, $
		          ztitle='Composition [%]'
		      end
	            'quality' : begin
		        options, tplot_name_new, labels='quality', $
		          ytitle=titlehead+'Quality', spec=1, $
		          ztitle='Quality'
		      end
	            'quality_flag' : begin
		        options, tplot_name_new, labels='qual.flag', $
		          ytitle=titlehead+'Quality flag', spec=1, $
		          ztitle='Quality flag'
		      end
	            'collision_freq' : begin
		        options, tplot_name_new, labels='col.freq.', $
		          ytitle=titlehead+'Col.freq.', ysubtitle = ysubstr, spec=1, $
		          ztitle='Col.freq. [s!E-1!N]'
		      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
	            'azim' : begin
		        options, tplot_name_new, labels='azim. angle', $
		          ytitle=titlehead+'Azim. angle', ysubtitle = '[deg]'
		      end
	            'elev_angle' : begin
		        options, tplot_name_new, labels='elev. angle', $
		          ytitle=titlehead+'Elev. angle', ysubtitle = '[deg]'
		      end
	            'number_gate' : begin
		        options, tplot_name_new, labels='nrange max', $
		          ytitle=titlehead+'Nrange max'
		      end
	            'txpower' : begin
		        options, tplot_name_new, labels='txpower', $
		          ytitle=titlehead+'Tx power'
		      end
	            'mconst' : begin
		        options, tplot_name_new, labels='magic const.', $
		          ytitle=titlehead+'Magic const.'
		      end
	            'heating' : begin
		        options, tplot_name_new, labels='heating', $
		          ytitle=titlehead+'Heating on/off'
		      end
                    else : dumm=0
                endcase
            endfor
        endelse
    endif
endfor

return
end