;+
;FUNCTION:  root_data_dir
;PURPOSE:  Returns the root data directory used by numerous file retrieval procedures.
;     By default it returns either:
;          for unix:    '/disks/data/' if it exists,  '~/data/' otherwise
;          for Windows: 'e:/data/' if it exists,   'c:/data/' otherwise
;
;     These data sets can grow to very large size. These defaults are intended to allow multiple
;     users to share a common data directory system.
;
;     It is recommended that PC users create a separate partition (e:/data/) to store files so that
;     file backups do not have to include these large (easily replaced) files.
;
;     On multiple user unix systems it is recommended to setup permissions so that all (or group) users
;     can write into sub-directories and update (overwrite) data files.
;
;CHANGING THE DEFAULT:
;     The default directory can be changed by creating an environment variable: 'ROOT_DATA_DIR'
;     Example 1:
;          setenv,'ROOT_DATA_DIR=/mydata/'
;     Example 2:  A temporary directory:
;          setenv,'ROOT_DATA_DIR=' + getenv('IDL_TMPDIR') + 'data/'     ; trailing '/' IS required.
;     If the value of the environment variable ROOT_DATA_DIR is a list of directories, then the first
;     existing directory is returned.
;
;     Notes:
;     1)  The environment variable should be set prior to running initialization routines (put it in your IDL_STARTUP file)
;     2)  The trailing '/' is required!    PC users should also use '/'   (not backslash: '\')
;     3)  The total size of all files can grow immense and there is no need to back them up.
;            We suggest placing them on a partition that is not backed up
;     4)  File storage space can be shared with other users if a commonly accessible data directory is chosen.
;     5)  Use a temporary directory if you do not want to permanently store these cached files.
;
;This routine is called by:
;    wind_init
;    istp_init
;    stereo_init
;    lanl_spa_load
;    thm_config (through thm_init)
;
;
;$LastChangedBy: davin-win $
;$LastChangedDate: 2009-05-20 11:51:45 -0700 (Wed, 20 May 2009) $
;$LastChangedRevision: 5914 $
;$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/ssl_general/trunk/missions/root_data_dir.pro $
;-


function root_data_dir

  def_root = getenv('ROOT_DATA_DIR')
  if not keyword_set(def_root) then begin
     case !version.os_family of
      'Windows': def_root = 'e:/data/;c:/data/'
      'unix' : def_root = '/disks/data/:~/data/'
       else :  def_root = getenv('IDL_TMPDIR')+'data/'
     endcase
  endif

  rootdirs = strsplit(def_root,path_sep(/search_path),/extract ,count=n )
  for i=0,n-1 do begin
      rootdir = rootdirs[i]
      if file_test(/direc,rootdir) then break
  endfor
  ;if not keyword_set(rootdir) then rootdir = getenv('IDL_TMPDIR')+'data/'
  return,rootdir
end


