;+
; Project     : SOHO - LASCO
;
; Name        : WLOAD
;
; Purpose     : Load image(s) in FITS format.
;
; Category    : SU:IMAGE_TOOL ?
;
; Explanation : This widget loader tool allows searching images
;               in your archiv and at the end load it.
;
; Syntax      : IDL>wload
;
; Examples    : IDL>wload
;
; Inputs      : None
;
; Opt. Inputs : None
;
; Outputs     : None
;
; Opt. Outputs: None
;
; Keywords    : None
;
; Common      : dirs_files, lasco.com, wload.com
;
; Restrictions: Requires specification of enviroment variables
;               defined in file: instrument.def                                 
;
; Side effects: Not known
;
; History     : Version 2.0, 28-Sep-1996, B Podlipnik. Written
;               Version 2.1, 10-Oct-1996, bp               
;		 change: replace CW_BSELECTOR with WIDGET_DROPLIST
;               Version 2.2, 10-Oct-1996, bp
;                add: SET_DROPLIST_SELECT to widget ID w_d_e, w_d_b 
;               Version 2.3, 29-Oct-1996, bp
;                change: bug fixed in loading from catalog
;	                     Jan-07-2000 bp removed MODAL keyword  
;					    Y2K date fixed 
;               Jan 11, 2005 -- Updates (from J.Tappin) to add 2005 to date list 
;                           -- bug fix -- remove /utc keyword from systime() call
;                                   - Karl B, NRL
;
; Contact     : BP, borut@lasco1.mpae.gwdg.de
;-

PRO wload_event,event

@wload.com
@chandle.com

COMMON dirs_files, dirs, files, hdrs, sel_method, s_method, a_files, $
                   dirs_f,files_f,dirs_s,files_s, new_dirs, new_hdrs, new_text, $
                   img_dir,data_path

COMMON date_block, month, day, year, ibm, ibd, iby, iem, ied, iey, iip, iil, idp, icx, ipi
 
COMMON info,text,text1,text2,tmps,tmpp,new_tmpp,sipath,s_flag,inst,path,filter,wave_set,hnh

COMMON ev,ms
                  
WIDGET_CONTROL, event.id, GET_UVALUE=uval          ; get the UVALUE of the event
WIDGET_CONTROL, event.top, GET_UVALUE=uv           ; get structure from UVALUE

;***************************************************************************

   k = where(uval eq ms.mnames, count)  ;Match with selection name?


            if (k(0) GE 0) then begin
               for t = 0, n_elements(ms.mnames)-1 do begin
                    WIDGET_CONTROL, ms.mbases(t), map=0, /NO_COPY
               endfor
               
               WIDGET_CONTROL, ms.mbases(k), map=1, /NO_COPY

            endif
            
;***************************************************************************

CASE uval OF

 "SEL_LOAD": BEGIN

                  sel_method_old = sel_method
                  WIDGET_CONTROL,uv.s_meth, GET_VALUE = sel_method
                  sel_array_method = WHERE(sel_method EQ 1)

                  sel_index = WHERE(sel_method NE sel_method_old)

                  ni = N_ELEMENTS(sel_method)
                  sel_method(0:ni-1) = 0
                  sel_method(sel_index(0)) = 1
                  WIDGET_CONTROL,uv.s_meth, SET_VALUE = sel_method


              ; *** output from select load are strings:  files and dirs 
              CASE event.value OF
               0: BEGIN
                   WIDGET_CONTROL, uv.cwg1, SENSITIVE=1
                   s_method = 0
                  END
               2: BEGIN
                   WIDGET_CONTROL, uv.cwg1, SENSITIVE=0
                   s_method = 2  ; *** load file with list of images ***
                  END
               3: BEGIN
                   WIDGET_CONTROL, uv.cwg1, SENSITIVE=1               
                   s_method = 3  ; *** search on observation date ***
                  END
               1: BEGIN
                   WIDGET_CONTROL, uv.cwg1, SENSITIVE=1
;                   WIDGET_CONTROL, uv.nname, SENSITIVE=0
                   s_method = 1  ; *** find all images on selected instruments
                  END
               4: BEGIN
                   WIDGET_CONTROL, uv.cwg1, SENSITIVE=0
                   s_method = 4  ; *** path *** 
                   
                  END 
               ELSE: donothing = 0
              ENDCASE

             END

 "SEL_FILES": BEGIN
               WIDGET_CONTROL,uv.wtxt1,GET_VALUE=files_s
              END

  "RESET":  BEGIN
             WIDGET_CONTROL,uv.s_inst,GET_VALUE=sel_inst
             sel_inst(0:N_ELEMENTS(sel_inst)-1) = 0
             WIDGET_CONTROL,uv.s_inst,SET_VALUE=sel_inst
   ;          WIDGET_CONTROL,uv.s_meth,SET_VALUE=4
             WIDGET_CONTROL,uv.wtxt1,SET_VALUE="no files selected"
             files_s = ['']
             dirs_s = ['']
                WIDGET_CONTROL,uv.npath, SET_VALUE=''
               new_path = STRCOMPRESS(new_path(0),/REMOVE_ALL)
            

            END

  "PDMENU": BEGIN
 	      CASE event.value OF
 
	        "Save":  BEGIN
         	          ;wsave
                 	 END
 
	     "Save As":  BEGIN
                          ;wsave
                          ;file_name = name
                          ;XVAREDIT,file_name
                          ;WRITEFITS,file_name,image,head
                         END
 
               "Setup":  BEGIN
                  	  ;setup
                  	  ;WIDGET_CONTROL, uv.npath, SET_VALUE = new_path
                 	 END

         	"Status":  BEGIN

                         wimg_info3
                   
                         ;WIDGET_CONTROL,uv.wtxt2,SET_VALUE=string_name                          
                  	 ; IF N_ELEMENTS(image) EQ 0 THEN BEGIN
                         ;msg = WIDGET_MESSAGE("No image loaded.") 
                       ;RETURN
                       ;ENDIF
                      ; n = N_ELEMENTS(h_array)
                      ; sel_array = INDGEN(n)
                      ; sel_img = INTARR(n)
                      ; sel_img(0:n-1) = 1 

                  	;  wimg_info4
                 	 END
 
          "Options.Image Size":  BEGIN
                   ;       wsize
                   ;       print,"img_resize",img_resize
                 	 END
    "Options.View Catalog": BEGIN
                             IF n_elements(tmps) GT 0 THEN whdrinfo1,txt=tmps ELSE whdrinfo1
		           END                 	 
          "Options.Settings": BEGIN
                                wdefault                                      
                              END
          "Options.Location": BEGIN
          
                                wdefloc
                                ipi = 0	; env IMAGES was set
         
                                ; update needed
                                img_dirs = GETENV('IMAGES') + !delimiter + level

                                IF chk_dir(img_dirs) EQ 0 THEN RETURN
                                files=[""]

				ff = findfile(img_dirs)

				IF ff(0) EQ '' THEN ff = ['920101']

 				  ff = yymmdd(ff)
 				  nn = n_elements(ff)

 				  tyear = STRCOMPRESS(STRMID(ff(0),0,2),/REMOVE_ALL)
 				  IF ( FIX(tyear) GE 92 ) THEN BEGIN 
  				  fy = " 19"+tyear
 				ENDIF ELSE BEGIN
  				  fy = " 20"+tyear
  				ENDELSE
                                temp = WHERE(year EQ fy)
                                if temp(0) eq -1 then temp(0) = 0
                                fy   = temp(0)

 				fm = FIX(STRMID(ff(0),2,2))-1
 				fd  = " "+STRMID(ff(0),4,2)
 				temp = WHERE( day EQ fd )
 				fd = fd(0)-1

 				tyear = STRCOMPRESS(STRMID(ff(nn-1),0,2),/REMOVE_ALL)
 				IF FIX(tyear) GE 92 THEN BEGIN 
  				  ly = " 19"+tyear
 				ENDIF ELSE BEGIN
  				  ly = " 20"+tyear
 				ENDELSE

 				temp = WHERE(year EQ ly)
 				ly   = temp(0) 
 				lm = FIX(STRMID(ff(nn-1),2,2))-1
 				ll  = " "+STRMID(ff(nn-1),4,2)
 				temp = WHERE( day EQ ll )
 				ll = ll(0)-1

 				ti1 = where(year eq year(fy))
 				ti2 = where(year eq year(ly))

 				byear = year
 				eyear = byear
 
 				iby = ti1(0)
 				iey = ti2(0)
 
 				ti1 = where(month eq month(fm))
 				ti2 = where(month eq month(lm))

 				bmonth = month
 				emonth = month

 				ibm = ti1(0)
 				iem = ti2(0)

 				bday = day
 				eday = day

 				ibd = 0
 				ied = 0

 				ti1 = where(day eq day(fd))
 				ti2 = where(day eq day(ll))
 
 				ibd = ti1(0)
 				ied = ti2(0)
				; IF ti1(0) NE ti2(0) THEN ibd = ied-1
 
				WIDGET_CONTROL,uv.b_day,SET_DROPLIST_SELECT=ibd
				WIDGET_CONTROL,uv.e_day,SET_DROPLIST_SELECT=ied

				WIDGET_CONTROL,uv.dpath,SET_DROPLIST_SELECT=ied

				;IF ibm NE iem THEN ibm = iem -1

				WIDGET_CONTROL,uv.b_month,SET_DROPLIST_SELECT=ibm
				WIDGET_CONTROL,uv.e_month,SET_DROPLIST_SELECT=iem

				WIDGET_CONTROL,uv.dpath,SET_DROPLIST_SELECT=iem

				;IF iby NE iey THEN iby = iey -1

				WIDGET_CONTROL,uv.b_year,SET_DROPLIST_SELECT=iby
				WIDGET_CONTROL,uv.e_year,SET_DROPLIST_SELECT=iey
		                           
                                img_dir = GETENV('IMAGES') + !delimiter + level + !delimiter
                                data_path = GETENV('IMAGES')
                                WIDGET_CONTROL,uv.ipath2,SET_DROPLIST_SELECT=0
                              END                    
              "Header":  BEGIN
                          whdrinfo1
                         END

         	"Help":  BEGIN
                  	  path_msg = GETENV('LASCO_MSG')
                  	  tmp_msg  = path_msg + !delimiter + 'wload.msg'
                  	  xdisplayfile,tmp_msg,height=20,width=65,title='Help'
                 	 END
                 	 
	         "Done": BEGIN
	         	; save settings
	         	    	
       	 	        WIDGET_CONTROL, event.top, /DESTROY
                                                            
               	        IF N_ELEMENTS(h_array) EQ 0 THEN RETURN
               	                                
                        ; new loaded images must be activ as default.
                        
                        nl = N_ELEMENTS(h_array)    ; how many images are loaded.
                        ns = N_ELEMENTS(sel_array)  ; how many images were activ. 
                        
                        nn = nl - uv.n_old ; number of new loaded images
                                                                                                  
                        IF (nn GT 0) AND (uv.n_old EQ 0) THEN BEGIN           
                         ; nl tell me how many images are loaded               
                         sel_array = INDGEN(nl)
                         sel_img = INTARR(nl)
                         sel_img(0:nl-1) = 1 
                        ENDIF
                        
                        IF (nn GT 0) AND (uv.n_old GT 0) THEN BEGIN
                          FOR i=1,nn DO BEGIN
                            sel_array = [sel_array,n_elements(sel_img)]
                            sel_img = [sel_img,1]                                                      
                          ENDFOR                                                
                        ENDIF
                        
;                        hinfo = hdrsinfo(string_name(sel_array), MEM=1)
                   	  RETURN
                 	 END
 
 		ELSE: donothing=0
 		ENDCASE
 
	      END	

   "BM": ibm = event.index
   "BD": ibd = event.index
   "BY": iby = event.index  
   "EM": iem = event.index
   "ED": ied = event.index
   "EY": iey = event.index

   "SB": BEGIN
          widget_control,uv.b_year, SET_DROPLIST_SELECT=iey
	  widget_control,uv.b_month,SET_DROPLIST_SELECT=iem
	  widget_control,uv.b_day,  SET_DROPLIST_SELECT=ied
           ibd = ied
           ibm = iem
           iby = iey
         END

   "SE": BEGIN
          widget_control,uv.e_year, SET_DROPLIST_SELECT=iby
	  widget_control,uv.e_month,SET_DROPLIST_SELECT=ibm
	  widget_control,uv.e_day,  SET_DROPLIST_SELECT=ibd
          ied = ibd
          iem = ibm
          iey = iby
         END
          
  "NEW_PN": BEGIN
               WIDGET_CONTROL,uv.npath, GET_VALUE = new_path
               WIDGET_CONTROL, uv.nname, GET_VALUE = new_filter

               new_path = STRCOMPRESS(new_path(0),/REMOVE_ALL)

;               setenv,'IMAGES='+new_path

               IF strmid(new_path,strlen(new_path)-1,1) NE !delimiter THEN $
               new_path = new_path + !delimiter
               new_filter = new_filter(0)

               IF new_path EQ !delimiter THEN BEGIN
                 tmp = PICKFILE(GET_PATH=new_path,PATH=GETENV('IMAGES')+!delimiter+level)
                 WIDGET_CONTROL,uv.npath, SET_VALUE=new_path
               ENDIF ELSE BEGIN
                 chk = chk_dir(new_path)
                 IF chk EQ 0 THEN BEGIN
                    msg = WIDGET_MESSAGE("Directory not found!")
                    RETURN
                 ENDIF
               ENDELSE
               s_method = 4

               IF strlen(new_filter) EQ 0 THEN new_filter = '*.*'
               ff = new_path + new_filter
                
               f = findfile(ff)
               ;files = findfile(ff)
               pf = path_file(f)

               files_f = pf.files_f
               dirs_f = pf.dirs_f
               new_tmpp = dirs_f+files_f

               f_index = WHERE(files_f GT '')
               IF f_index(0) GT -1 THEN BEGIN
                  ;files   = files(f_index)
                  files_f = files_f(f_index)
                  dirs_f  = dirs_f(f_index)

                ;  IF datatype(files_f) EQ 'UND' THEN BEGIN
                ;    dirs_f = dirs_f
                ;    files_f = files_f
                ;  ENDIF ELSE BEGIN
                ;    dirs_f =  [dirs_f,tmp_dirs_f]
                ;    files_f = [files_f,tmp_files_f]                    
                ;  ENDELSE

               ENDIF ELSE BEGIN
                    files_f = ['No files found!']	 
                    msg = WIDGET_MESSAGE(files_f)
                    undefine,files_f 
                  RETURN
               ENDELSE

             IF hnh EQ 1 THEN BEGIN

               n_files = N_ELEMENTS(files_f) 
               tmp = STRARR(n_files)

               WIDGET_CONTROL,uv.WLoadBase, HOURGLASS = 1
  
               FOR j=0,n_files-1 DO BEGIN

                temp = dirs_f(j) + files_f(j)
                fff = FINDFILE(temp)
                IF STRLEN(fff(0)) GT 0 THEN BEGIN 

                   head = HEADFITS(f(j))
                   ;head = HEADFITS(files(j))

                   IF datatype(head) NE "INT"  THEN BEGIN
                      tmp(j) =  files_f(j) + head_info( head )
                   ENDIF
            
                ENDIF 
               ENDFOR

               WIDGET_CONTROL,uv.WLoadBase, HOURGLASS = 0
               IF datatype(tmpp) EQ 'UND' THEN tmpp = f ELSE $
                                               tmpp = [tmpp,f]
              files = tmpp
            IF (XRegistered("whdrinfo1") EQ 1) THEN BEGIN
              IF datatype(tmps) EQ 'UND' THEN text2 = tmp ELSE $
                                              text2 = [tmps,tmp]
              tmps  = text2
              files = tmpp

              WIDGET_CONTROL,h_sel1,SET_VALUE=text2        
            ENDIF ELSE whdrinfo1,txt=tmp,from=2

              ; IF files_f(0) NE 'No files found' THEN whdrinfo1,txt=tmp, from=2  
       
             ENDIF ELSE BEGIN

             IF files(0) EQ "No files found" OR files(0) EQ "" THEN BEGIN 
               msg = WIDGET_MESSAGE(" No files found ")
               WIDGET_CONTROL,uv.WLoadBase ,HOURGLASS=0
               RETURN
             ENDIF

             load_lasco, list=tmpp,wbp=uv.WLoadBase, cid = uv.cid
            ENDELSE

              END

        "c1": s_flag = 0 
        "c2": s_flag = 1  
        "c3": s_flag = 2  
        "c4": s_flag = 3 
        "cn": s_flag = 4 
        "rh": hnh = 1
        "dr": hnh = 0  

  "FIND": BEGIN
          b_month= STRCOMPRESS(uv.bmonth(ibm),/REMOVE_ALL)
          b_day  = STRCOMPRESS(uv.bday(ibd),/REMOVE_ALL)
          b_year = STRCOMPRESS(uv.byear(iby),/REMOVE_ALL)
          
          begin_date= b_year + '-' + b_month + '-' + b_day

          e_month= STRCOMPRESS(uv.emonth(iem),/REMOVE_ALL)
          e_day  = STRCOMPRESS(uv.eday(ied),/REMOVE_ALL)
          e_year = STRCOMPRESS(uv.eyear(iey),/REMOVE_ALL)
          
          finish_date=  e_year + '-' + e_month + '-' + e_day

          iii = where( month eq uv.bmonth(ibm) )
          b_month = STRCOMPRESS((iii+1),/REMOVE_ALL)
          b_month = b_month(0)
          IF STRLEN(b_month) EQ 1 THEN b_month = '0'+ b_month

          date1 = STRMID(b_year,0,4) + b_month + b_day

          iii = where( month eq uv.emonth(iem) )
          e_month = STRCOMPRESS((iii+1),/REMOVE_ALL)
          e_month = e_month(0) 
          IF STRLEN(e_month) EQ 1 THEN e_month = '0'+ e_month

	  date2 = STRMID(e_year,0,4) + e_month + e_day

          d1 = STRCOMPRESS(STRING( LONG(date1) < LONG(date2) ),/REMOVE_ALL)
          d2 = STRCOMPRESS(STRING( LONG(date1) > LONG(date2) ),/REMOVE_ALL)

          d=findfile(GETENV('IMAGES')+!delimiter+level+!delimiter) 
	  dlen = n_elements(d)
	  for i = 0, dlen - 1 do begin
	   if (strmid(d(i),0,2) ge '92') then d(i) = '19'+d(i) else d(i) = '20' + d(i)
	  endfor
	  dsort = sort(d)
	  d = d(dsort)
          i=WHERE(d GE d1 AND d LE d2)
          IF i(0) EQ -1 THEN BEGIN
            dummy=WIDGET_MESSAGE('Not valid date!!!')
           RETURN
          END

          WIDGET_CONTROL,uv.lab,SET_VALUE=" Working ..."
	  	  
          date_s = strmid(d(i),2,6)
          txt=''

          n = N_ELEMENTS(date_s)
          ;img_dir = GETENV('IMAGES') + !delimiter + level + !delimiter
          
          process = 0
          i = 0
          REPEAT BEGIN
          
          ;FOR i=0,n-1 DO BEGIN
          
           CASE s_flag OF
            0: BEGIN

                   path = img_dir + date_s(i) + !delimiter+'c1'+!delimiter + 'img_hdr.txt'
                   ff = findfile(path)
                   IF ff(0) NE '' THEN txt = [txt,rd_asc(ff(0))]
                  END
            1: BEGIN

                   path = img_dir + date_s(i) + !delimiter+'c2'+!delimiter + 'img_hdr.txt'
                   ff = findfile(path)
                   IF ff(0) NE '' THEN txt = [txt,rd_asc(ff(0))]
                  END

            2: BEGIN

                   path = img_dir + date_s(i) + !delimiter+'c3'+!delimiter + 'img_hdr.txt'
                   ff = findfile(path)
                   IF ff(0) NE '' THEN txt = [txt,rd_asc(ff(0))]
                  END
            3: BEGIN

                    path = img_dir + date_s(i) + !delimiter+'c4'+!delimiter + 'img_hdr.txt'
                    ff = findfile(path)
                    IF ff(0) NE '' THEN txt = [txt,rd_asc(ff(0))]
                   END
            4: BEGIN
                    path = img_dir + date_s(i) + !delimiter+'c1'+!delimiter + 'img_hdr.txt'
                    ff = findfile(path)
                    IF ff(0) NE '' THEN txt = [txt,rd_asc(ff(0))]
                    path = img_dir + date_s(i) + !delimiter+'c2'+!delimiter + 'img_hdr.txt'
                    ff = findfile(path)
                    IF ff(0) NE '' THEN txt = [txt,rd_asc(ff(0))]
                    path = img_dir + date_s(i) + !delimiter+'c3'+!delimiter + 'img_hdr.txt'
                    ff = findfile(path)
                    IF ff(0) NE '' THEN txt = [txt,rd_asc(ff(0))]
                    path = img_dir + date_s(i) + !delimiter+'c4'+!delimiter + 'img_hdr.txt'
                    ff = findfile(path)
                    IF ff(0) NE '' THEN txt = [txt,rd_asc(ff(0))]

                   END
                   ELSE: donothing = 0
             ENDCASE
          ;ENDFOR

          dummy = widget_event( uv.idc, /nowait, /save)
   
          if dummy.id eq uv.idc then begin
           process = 1  

           ;WIDGET_CONTROL,uv.WLoadBase ,HOURGLASS=0
           dummy = widget_event( uv.idc, /nowait)
          endif          
          i = i + 1
          ENDREP UNTIL (i GT n-1) OR (process eq 1)          
          
          i = where(txt GT '')
          IF i(0) EQ -1 THEN BEGIN

            ;WIDGET_CONTROL,uv.WLoadBase, HOURGLASS=0    
            WIDGET_CONTROL,uv.lab,SET_VALUE="            "
            dummy = WIDGET_MESSAGE("Nothing found!")
 
            RETURN
          ENDIF ELSE BEGIN
            
            ; txt(i) need wavelength check!
            
            tmp = txt(i)

            ind = WHERE(tmp GT '')
   
            IF ind(0) EQ -1 THEN RETURN
               tmp = tmp(ind)

               pf = pf_sep(tmp,0,data_path,level=level)
               dirs_f = pf.dirs_s
               files_f = pf.files_s
               new_tmpp = dirs_f + files_f

            IF datatype(tmpp) EQ 'UND' THEN tmpp = new_tmpp ELSE $
                                            tmpp = [tmpp,new_tmpp]
          
            files = tmpp
            IF (XRegistered("whdrinfo1") EQ 1) THEN BEGIN
              IF datatype(tmps) EQ 'UND' THEN text2 = tmp ELSE $
                                              text2 = [tmps,tmp]
              tmps  = text2
              files = tmpp

              WIDGET_CONTROL,h_sel1,SET_VALUE=text2        
            ENDIF ELSE whdrinfo1,txt=tmp,from=1


            WIDGET_CONTROL,uv.lab,SET_VALUE="            "
          ENDELSE

         END


  "User Catalog":  BEGIN
                    fp = getenv('WORK')+!delimiter+getenv('USER')+!delimiter+'list'
                    IF chk_dir(fp) EQ 0 THEN fp = getenv('HOME')

                    filter = '*.txt'

                    tmp = rd_asc(pickfile(PATH=fp,FILTER=filter))

                    ind = WHERE(tmp GT '')
   
                    IF ind(0) EQ -1 THEN RETURN
                      tmp = tmp(ind)
                     pf = pf_sep(tmp,0,data_path,level=level)

                    IF datatype(files_f) EQ 'UND' THEN BEGIN
                      dirs_f = pf.dirs_s
                      files_f = pf.files_s
                      tmpp = dirs_f + files_f
                    ENDIF ELSE BEGIN
                      dirs_f =  [dirs_f,pf.dirs_s]
                      files_f = [files_f,pf.files_s]
                      tmpp  = [tmpp,dirs_f+files_f]                 
                    ENDELSE
          
                    files = tmpp
                    IF (XRegistered("whdrinfo1") EQ 1) THEN BEGIN
                      IF datatype(tmps) EQ 'UND' THEN text2 = tmp ELSE $
                                                      text2 = [tmps,tmp]
                    tmps  = text2
                    files = tmpp
 
                    WIDGET_CONTROL,h_sel1,SET_VALUE=text2        
                    ENDIF ELSE whdrinfo1,txt=tmp,from=1

                    ib = WHERE( ms.mnames EQ 'User Catalog')
                    WIDGET_CONTROL, uv.bf(ib), SET_BUTTON=0
                   END

  "NRL Catalog":  BEGIN

                    path = '/las5/data/catalogs'
                    IF chk_dir(path) EQ 0 THEN path = getenv('HOME')

                    filter = '*.txt'

                    cat = pickfile(PATH=path,FILTER=filter,GET_PATH=newpath)
                    nam = STRMID(cat,STRLEN(newpath),STRLEN(cat)-STRLEN(newpath))
                    tmp = rd_asc(cat)

                    newpath = STRMID(newpath,0,STRLEN(newpath)-1)
                    dp = STRMID(newpath,RSTRPOS(newpath,'/')+1,STRLEN(newpath)-RSTRPOS(newpath,'/')-1)
           
                    CASE dp OF 
                    'lz_05':  data_path = '/juke/'+dp+ '/'+STRMID(nam,3,4)+'/lasco_lz'
                    'ql_05':  data_path = '/juke/'+dp+ '/'+STRMID(nam,3,4)+'/lasco_ql'
                    'lz_eit': data_path = data_path
                    'lz_img': data_path = '/net/corona/cplex2/lz_data'		;GETENV('LZ_IMG') 
                    'ql_img': data_path = '/net/corona/cplex1/flight_data'	;GETENV('QL_IMG') 
                    ELSE: donothing = 0
                    ENDCASE

                    ind = WHERE(tmp GT '')
   
                    IF ind(0) EQ -1 THEN RETURN
                      tmp = tmp(ind)

                     pf = pf_sep(tmp,0,data_path,level=level)

                    IF datatype(files_f) EQ 'UND' THEN BEGIN
                      dirs_f = pf.dirs_s
                      files_f = pf.files_s
                      tmpp = dirs_f + files_f
                    ENDIF ELSE BEGIN
                      dirs_f =  [dirs_f,pf.dirs_s]
                      files_f = [files_f,pf.files_s]
                      tmpp  = [tmpp,dirs_f+files_f]                 
                    ENDELSE
                    
                    files = tmpp
                    IF (XRegistered("whdrinfo") EQ 1) THEN BEGIN
                      IF datatype(tmps) EQ 'UND' THEN text2 = tmp ELSE $
                                                      text2 = [tmps,tmp]
                    tmps  = text2
                    files = tmpp
 
                    WIDGET_CONTROL,h_sel1,SET_VALUE=text2        
                    ENDIF ELSE whdrinfo,txt=tmp,from=1


                    ib = WHERE( ms.mnames EQ 'CD Catalog')
                    ;WIDGET_CONTROL, uv.bf(ib), SET_BUTTON=0

                   END
                                      
  "EOF Catalog":   BEGIN

  		    IF chk_dir('/las5/data/catalogs') EQ 1 THEN $
  		         tmp = rd_asc('/las5/data/catalogs/img_hdr.txt') $ 
                    ELSE tmp = rd_asc(pickfile(FILTER='*.txt'))

                    ind = WHERE(tmp GT '')
   
                    IF ind(0) EQ -1 THEN RETURN
                      tmp = tmp(ind)

                     pf = pf_sep(tmp,0,data_path,level=level)

                    IF datatype(files_f) EQ 'UND' THEN BEGIN
                      dirs_f = pf.dirs_s
                      files_f = pf.files_s
                      tmpp = dirs_f + files_f
                    ENDIF ELSE BEGIN
                      dirs_f =  [dirs_f,pf.dirs_s]
                      files_f = [files_f,pf.files_s]
                      tmpp  = [tmpp,dirs_f+files_f]                 
                    ENDELSE
          
                    IF (XRegistered("whdrinfo") EQ 1) THEN BEGIN
                      IF datatype(tmps) EQ 'UND' THEN text2 = tmp ELSE $
                                                      text2 = [tmps,tmp]
                    tmps  = text2
                    files = tmpp
 
                    WIDGET_CONTROL,h_sel1,SET_VALUE=text2        
                    ENDIF ELSE whdrinfo,txt=tmp,from=1,cat="EOF"

                    ib = WHERE( ms.mnames EQ 'EOF Catalog')

                   END

               
"Load List": BEGIN
                   ib = WHERE( ms.mnames EQ 'Load List')
                   WIDGET_CONTROL, uv.bf(ib), SET_BUTTON=0
                   
                   work = GETENV('WORK')
                   
                   IF STRLEN(work) EQ 0 THEN BEGIN
                     wu = GETENV('HOME') 
                   ENDIF ELSE BEGIN
                     wu = work + !delimiter + GETENV('USER')
                   ENDELSE
                                             
                   wd = wu+!delimiter+'list'
                 
                   chk = chk_dir(wd)
                   IF chk EQ 0 THEN wd = wu
                                    
                   temps = PICKFILE( PATH = wd, FILTER = '*.lst')
                   IF STRLEN(temps) EQ 0 THEN RETURN

                   tempd = STRCOMPRESS(STRMID(temps,0,RSTRPOS(temps,!delimiter)+1))

                   temps = rd_asc(temps)

                   ; *** separate dirs and files ***
                   dirs_f = ['']
                   files_f= ['']
                   n_files = N_ELEMENTS(temps)

                   pf = path_file(temps)

                   dirs_f = pf.dirs_f
                   files_f = pf.files_f

                   i_tmp = WHERE(files_f GT '')
                   files_f = files_f(i_tmp)
                   dirs_f  = dirs_f(i_tmp)


               f_index = WHERE(files_f GT '')
               IF f_index(0) GT -1 THEN BEGIN
                  files   = files(f_index)
                  files_f = files_f(f_index)
                  dirs_f  = dirs_f(f_index)
               ENDIF ELSE BEGIN
                  files_f = ['No files found']	  

               ENDELSE


             IF hnh EQ 1 THEN BEGIN

               n_files = N_ELEMENTS(files_f) 
               tmp = STRARR(n_files)

               ;WIDGET_CONTROL,uv.WLoadBase, HOURGLASS = 1
  
               FOR j=0,n_files-1 DO BEGIN

                   temp = temps(j)
                   ;f = FINDFILE(temp)
                   ;IF STRLEN(f(0)) GT 0 THEN BEGIN 

                   ;head = HEADFITS(f(0))
                   head = HEADFITS(temps(j))
                   IF datatype(head) NE "INT"  THEN BEGIN
                      tmp(j) =  files_f(j) + head_info( head )
                   ENDIF
                ;ENDIF 
               ENDFOR

               WIDGET_CONTROL,uv.WLoadBase, HOURGLASS = 0
 
               IF files_f(0) NE 'No files found' THEN BEGIN 
                 IF datatype(tmpp) EQ 'UND' THEN tmpp = dirs_f+files_f ELSE $
                                                 tmpp = [tmpp,dirs_f+files_f]
                 IF (XRegistered("whdrinfo1") EQ 1) THEN BEGIN
                  IF datatype(tmps) EQ 'UND' THEN text2 = tmp ELSE $
                                                  text2 = [tmps,tmp]
                  tmps  = text2
                  files = tmpp
                  
                  ind = WHERE(text2 GT '')
                  text2 = text2(ind)
                  tmps = text2
 
                  WIDGET_CONTROL,h_sel1,SET_VALUE=text2       
                 ENDIF ELSE BEGIN 
                  whdrinfo1,txt=tmp,from=2
                 ENDELSE
                 ; whdrinfo1,txt=tmps,from=2 
               ENDIF        
               ENDIF ELSE BEGIN

                   files = STRARR(N_ELEMENTS(files_f))
                   dirs  = STRARR(N_ELEMENTS(dirs_f))  
                                   
                   files = files_f
                   dirs =  dirs_f

                   files_s = files_f
                   dirs_s = dirs_f

             IF files(0) EQ "No files found" OR files(0) EQ "" THEN BEGIN 
               msg = WIDGET_MESSAGE(" No files found ")
               WIDGET_CONTROL,uv.WLoadBase ,HOURGLASS=0

             ENDIF

             load_lasco,list=sipath,wbp=uv.WLoadBase
            ENDELSE


            END


  "IP": BEGIN
        tmp_path = GETENV(uv.ImgPath(iip))
        CASE event.id OF
        
         uv.ipath: BEGIN

                    iip = event.index
                    tmp_path = GETENV(uv.ImgPath(iip))

                     CASE uv.ImgPath(iip) OF

                    'WORK': BEGIN
                             IF tmp_path GT '' THEN $
                                tmp_path = tmp_path + !delimiter + GETENV('USER') + $
                                                      !delimiter + 'fits' ELSE $
                                tmp_path = GETENV('HOME')
                            END
                        
                   'MONTHLY_IMAGES': tmp_path = GETENV('MONTHLY_IMAGES')
                   'FLATS':          tmp_path = GETENV('FLATS')
                   'HOME': BEGIN
                 	     tmp_path = GETENV('HOME')
                             ;WIDGET_CONTROL,uv.lpath,MAP=0
                             ;WIDGET_CONTROL,uv.dpath,MAP=0
                             ;WIDGET_CONTROL,uv.instp,MAP=0
                           END
                    ELSE: tmp_path = tmp_path + !delimiter + uv.ilevel(iil) + $
                                                !delimiter + uv.DatePath(idp)  + $
                                                !delimiter + uv.Cx(icx)
                    ENDCASE                           
                    
                  END
                   
                   
         uv.lpath: BEGIN
                      tmp_path = GETENV(uv.ImgPath(iip)) + $
                                     !delimiter + uv.ilevel(event.index) + $
                                     !delimiter + uv.DatePath(idp)  + $
                                     !delimiter + uv.Cx(icx)           
                   END
                   
         uv.dpath: BEGIN  
                      tmp_path = GETENV(uv.ImgPath(iip)) + $
                                     !delimiter + uv.ilevel(iil) + $
                                     !delimiter + uv.DatePath(event.index)  + $
                                     !delimiter + uv.Cx(icx)           
       
                   END
                   
         uv.instp: BEGIN
                      tmp_path = GETENV(uv.ImgPath(iip)) + $
                                     !delimiter + uv.ilevel(iil) + $
                                     !delimiter + uv.DatePath(idp)  + $
                                     !delimiter + uv.Cx(event.index)               
                   END
         
        ELSE: donothing = 0
        ENDCASE

                    new_path = tmp_path
                    WIDGET_CONTROL,uv.npath, SET_VALUE=tmp_path
             END

  "IP2": BEGIN
        tmp_path = GETENV(uv.ImgPath(iip))
        CASE event.id OF
        
         uv.ipath2:  BEGIN
		      data_path = GETENV(uv.ImgPath(event.index)) 
                      IF uv.ImgPath(event.index) EQ uv.ImgPath(1) THEN BEGIN
                        level = uv.ilevel(0)
                        WIDGET_CONTROL,uv.lpath2,SET_DROPLIST_SELECT=0
                      ENDIF
		     END                  
         uv.lpath2:  BEGIN
                      level = uv.ilevel(event.index)
                      IF level EQ uv.ilevel(1) THEN BEGIN
                        data_path = GETENV(uv.ImgPath(2))
                        WIDGET_CONTROL,uv.ipath2,SET_DROPLIST_SELECT=2
                      ENDIF
                     END
        ELSE: donothing = 0
        ENDCASE
              ipi = event.index
              setenv,'IMAGES='+data_path             
              img_dir   = data_path + !delimiter + level + !delimiter
              ; update needed
              ;img_dirs = GETENV('IMAGES') + !delimiter + level

              IF chk_dir(img_dir) EQ 0 THEN RETURN
              files=[""]

	      ff = findfile(img_dir)

	      IF ff(0) EQ '' THEN ff = ['920101']

 	      ff = yymmdd(ff)
 	      nn = n_elements(ff)

 	      tyear = STRCOMPRESS(STRMID(ff(0),0,2),/REMOVE_ALL)
 	      IF FIX(tyear) GE 92 THEN BEGIN 
  		fy = " 19"+tyear
 	      ENDIF ELSE BEGIN
  		fy = " 20"+tyear
  	      ENDELSE
              temp = WHERE(year EQ fy)
              if temp(0) eq -1 then temp(0) = 0
              fy   = temp(0)

              fm = FIX(STRMID(ff(0),2,2))-1
 	      fd  = " "+STRMID(ff(0),4,2)
 	      temp = WHERE( day EQ fd )
 	      fd = fd(0)-1

 	      tyear = STRCOMPRESS(STRMID(ff(nn-1),0,2),/REMOVE_ALL)
 	      IF FIX(tyear) GE 92 THEN BEGIN 
  		ly = " 19"+tyear
 	      ENDIF ELSE BEGIN
  		ly = " 20"+tyear
 	      ENDELSE

 		temp = WHERE(year EQ ly)
 		ly   = temp(0) 
 		lm = FIX(STRMID(ff(nn-1),2,2))-1
 		ll  = " "+STRMID(ff(nn-1),4,2)
 		temp = WHERE( day EQ ll )
 		ll = ll(0)-1

 		ti1 = where(year eq year(fy))
 		ti2 = where(year eq year(ly))

 		byear = year
 		eyear = byear
 
 		iby = ti1(0)
 		iey = ti2(0)
 
 		ti1 = where(month eq month(fm))
 		ti2 = where(month eq month(lm))

 		bmonth = month
 		emonth = month

 		ibm = ti1(0)
 		iem = ti2(0)

 		bday = day
 		eday = day

 		ibd = 0
 		ied = 0

 		ti1 = where(day eq day(fd))
 		ti2 = where(day eq day(ll))
 
 		ibd = ti1(0)
 		ied = ti2(0)
		; IF ti1(0) NE ti2(0) THEN ibd = ied-1
 
		WIDGET_CONTROL,uv.b_day,SET_DROPLIST_SELECT=ibd
		WIDGET_CONTROL,uv.e_day,SET_DROPLIST_SELECT=ied

		WIDGET_CONTROL,uv.dpath,SET_DROPLIST_SELECT=ied

		;IF ibm NE iem THEN ibm = iem -1

		WIDGET_CONTROL,uv.b_month,SET_DROPLIST_SELECT=ibm
		WIDGET_CONTROL,uv.e_month,SET_DROPLIST_SELECT=iem

		WIDGET_CONTROL,uv.dpath,SET_DROPLIST_SELECT=iem

		;IF iby NE iey THEN iby = iey -1

		WIDGET_CONTROL,uv.b_year,SET_DROPLIST_SELECT=iby
		WIDGET_CONTROL,uv.e_year,SET_DROPLIST_SELECT=iey

		WIDGET_CONTROL,uv.dpath,SET_DROPLIST_SELECT=iey


             END
               

     "OK":  BEGIN
              WIDGET_CONTROL,uv.wtxt1,GET_VALUE=a_files
              a_files = WHERE(a_files GT "")
              hinfo = hdrsinfo(files_s, MEM=1)

            END

  "Pick Files": BEGIN
                  ib = WHERE( ms.mnames EQ 'Pick Files')
                  WIDGET_CONTROL, uv.bf(ib), SET_BUTTON=0
                   
                  files = pickfiles(PATH = new_path)
              
                  load_lasco,list=files,wbp=uv.WLoadBase

;                 WIDGET_CONTROL,uv.wtxt1,SET_VALUE=files_s
                END

    "LOAD": BEGIN

             ;WIDGET_CONTROL,uv.wtxt1,SET_VALUE=new_files                 

                   files = STRARR(N_ELEMENTS(files_s))
                   dirs  = STRARR(N_ELEMENTS(dirs_s))  
                                   
                   files = files_s
                   dirs =  dirs_s

             IF files(0) EQ "No files found" OR files(0) EQ "" THEN BEGIN 
               msg = WIDGET_MESSAGE(" Please, select loading method! ")
               RETURN
             ENDIF

             load_lasco,wbp=uv.WLoadBase
           END

 "CANCEL": BEGIN
            cancel = 1
            ;msg = WIDGET_MESSAGE("Not applied yet!")

           END

  "HELPF":  BEGIN
              path_msg = GETENV('LASCO_MSG')
              tmp_msg  = path_msg + !delimiter + 'wload.msg'
              xdisplayfile,tmp_msg,height=20,width=65,title='Help'
            END                	 
                 	 
 ELSE: donothing=0 
 ENDCASE

END


function wload,GROUP=GROUP

@wload.com
@chandle.com

COMMON dirs_files, dirs, files, hdrs, sel_method, s_method, a_files, $
                   dirs_f,files_f,dirs_s,files_s, new_dirs, new_hdrs, new_text, $
                   img_dir,data_path

COMMON date_block, month, day, year, ibm, ibd, iby, iem, ied, iey, iip, iil, idp, icx, ipi

COMMON info,text,text1,text2,tmps,tmpp,new_tmpp,sipath,s_flag,inst,path,filter,wave_set,hnh
 
COMMON ev,ms
 
IF (XRegistered("wload") NE 0) THEN RETURN,-1

set_delimiter

;device,font=adobe-courier-medium-r-normal--0-0-75-75-m-0-iso8859-1'
;device,font='-b&h-lucida bright-demibold-r-normal--0-120-75-75-p-0-iso8859-1'
;device,get_current_font=font
 
IF NOT KEYWORD_SET(s_flag) THEN s_flag = 4
IF N_ELEMENTS(inst) EQ 0 THEN inst = 'All'
IF N_ELEMENTS(hnh) EQ 0 THEN hnh = 1

IF N_ELEMENTS(level) EQ 0 THEN level = 'level_05'

IF N_ELEMENTS(string_name)  EQ 0 THEN string_name = "no image select"
IF N_ELEMENTS(files) EQ 0 THEN files = "no files selected"

n_old = n_elements(h_array)  ; number of previous loaded images

message = load_message() ; this must change

IF N_ELEMENTS(new_name) EQ 0 THEN new_name = ''
IF N_ELEMENTS(new_path) EQ 0 THEN new_path = GETENV('IMAGES')+!delimiter+level+!delimiter
;
; if file setup.las exist then load it !
;

s_method = 4 ; *** default ***

setup_path = GETENV('HOME')
setup_las  = setup_path + !delimiter + 'setup.las'

xs = 50 ; XSIZE in widget WIDGET_TEXT
img_resize = 1 ; default rebin size

; ***  always reset dirs and files first ***

IF N_ELEMENTS(ld) EQ 0 THEN $
 ld = { load_defaults, net:0, dark:0, size:1, scl:0, byt:0 }
  
dirs = ''

files_s = ['']
dirs_s = ['']

;------------
;Init
;------------
tmps =['']
undefine,tmpp	;tmpp = ['']

text2 = ['']
undefine,files 	;files = ['']

undefine,new_hdrs
undefine,sipath

undefine,files_f	;files_f = ['']
undefine,dirs_f	;dirs_f  = ['']


files_s = ['']
dirs_s  = ['']

new_text = ['']
new_dirs = ['']

new_dirs_f = ['']
new_files_f= ['']

new_tmpp = ['']

;------------
; Reset 

undefine,tmps
undefine,tmpp

;------------
new_filter = "*.*"
new_name = "*.fts"

mnames = [ 'Load from Catalog(s)','Load from Path','Load List', $
           'Pick Files','User Catalog','EOF Catalog','NRL Catalog']
nmodes = n_elements(mnames)

ms = { wload, WLoadBase:0L, $
       mnames:mnames, $
       mbases:lonarr(nmodes) $
     }  

ImgPath = ["IMAGES", "QL_IMG","LZ_IMG","MONTHLY_IMAGES","FLATS","WORK","HOME"]
;ImgPath = ["QL_IMG","LZ_IMG","MONTHLY_IMAGES","FLATS","WORK","HOME"]

month=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]

day=[" 01"," 02"," 03"," 04"," 05"," 06"," 07"," 08"," 09"," 10"," 11"," 12"," 13"," 14"," 15", $
     " 16"," 17"," 18"," 19"," 20"," 21"," 22"," 23"," 24"," 25"," 26"," 27"," 28"," 29"," 30"," 31"]

ymin = 1995
ymax = fix(strmid(systime(), 20))
yrr = indgen(ymax-ymin+1)+ymin
year = string(yrr, format = "(I5)")

filters = [" All  ","Clear","Fe IV"]
IF datatype(ipi) EQ 'UND' THEN ipi = 0	; ImgPath index

data_path = GETENV(ImgPath(ipi))

img_dir   = data_path + !delimiter + level + !delimiter

load_method = [" List of images", $
               " Input file name and path"] 
             
ms.WLoadBase = WIDGET_BASE(TITLE = "LASCO wload v.2.3",/ROW)

lcol      = WIDGET_BASE(ms.WLoadBase, /COLUMN)

junk = { CW_PDMENU_S, flags:0, name:'' }

pdm_desc = [ $
	     { CW_PDMENU_S, 0, 'Status' }, 	$
	     { CW_PDMENU_S, 1, 'Options' }, 	$
	     { CW_PDMENU_S, 0, 'Location' },	$
	     { CW_PDMENU_S, 0, 'Settings' }, 	$
	     { CW_PDMENU_S, 2, 'View Catalog'},	$
	     ;{ CW_PDMENU_S, 0, 'Header' }, 	$
	     { CW_PDMENU_S, 0, 'Help' }, 	$
	     { CW_PDMENU_S, 2, 'Done' } ]

menu = CW_PDMENU(lcol, pdm_desc, UVALUE = 'PDMENU', /RETURN_FULL_NAME)

files=[""]

ff = findfile(img_dir)

 IF ff(0) EQ '' THEN ff = ['920101']

 ff = yymmdd(ff)
 nn = n_elements(ff)

 tyear = STRCOMPRESS(STRMID(ff(0),0,2),/REMOVE_ALL)

 IF FIX(tyear) GE 92 THEN BEGIN 
  fy = " 19"+tyear
 ENDIF ELSE BEGIN
  fy = " 20"+tyear
 ENDELSE

 temp = WHERE(year EQ fy)
 if temp(0) eq -1 then temp(0) = 0 
 fy   = temp(0)

 fm = FIX(STRMID(ff(0),2,2))-1
 fd  = " "+STRMID(ff(0),4,2)
 temp = WHERE( day EQ fd )
 fd = fd(0)-1
 
 tyear = STRCOMPRESS(STRMID(ff(nn-1),0,2),/REMOVE_ALL)
 IF FIX(tyear) GE 92 THEN BEGIN 
  ly = " 19"+tyear
 ENDIF ELSE BEGIN
  ly = " 20"+tyear
 ENDELSE

 temp = WHERE(year EQ ly)
 ly   = temp(0) 
 lm = FIX(STRMID(ff(nn-1),2,2))-1
 ll  = " "+STRMID(ff(nn-1),4,2)
 temp = WHERE( day EQ ll )
 ll = ll(0)-1

 ti1 = where(year eq year(fy))
 ti2 = where(year eq year(ly))

 byear = year
 eyear = byear
 
 IF n_elements(iby) EQ 0 THEN iby = ti1(0)
 IF n_elements(iey) EQ 0 THEN iey = ti2(0)
 
 ti1 = where(month eq month(fm))
 ti2 = where(month eq month(lm))

 bmonth = month
 emonth = month

 IF n_elements(ibm) EQ 0 THEN ibm = ti1(0)
 IF n_elements(iem) EQ 0 THEN iem = ti2(0)

 ti1 = where(day eq day(fd))
 ti2 = where(day eq day(ll))

 bday = day
 eday = day

 IF n_elements(ibd) EQ 0 THEN ibd = ti1(0)
 IF n_elements(ied) EQ 0 THEN ied = ti2(0)

 
; bday = day(ti1(0):ti2(0))
; eday = REVERSE(bday)
  
  Cx = ["c1","c2","c3","c4"]
 ilevel = ["level_05","level_1"]
 DatePath = ff
 iip = 0
 iil = 0
 idp = 0
 icx = 0
 
llcol= WIDGET_BASE(lcol,/COLUMN,/FRAME)
lbl01= WIDGET_LABEL(llcol,VALUE='Loading Methods:')
junk = WIDGET_BASE(llcol,COLUMN=4,/EXCLUSIVE)
bf = lonarr(nmodes)
for i=0,nmodes-1 do $
  bf(i) = WIDGET_BUTTON(junk, VALUE=ms.mnames(i), UVALUE=ms.mnames(i), $
                            /NO_RELEASE)
                            
junk = WIDGET_BASE(lcol,/FRAME,/COLUMN)
mode_base = WIDGET_BASE(junk)

for i=0,nmodes-1 do $
    ms.mbases(i) = WIDGET_BASE(mode_base, UVALUE=0L,/COLUMN)
    
 ; *** Instrument selection ***

parent = ms.mbases(0)

 xjunk = WIDGET_BASE(parent,column=1)
 bl1 = WIDGET_BASE(xjunk,/COLUMN)

 bl2 = WIDGET_BASE(bl1,/ROW)
 li2 = WIDGET_LABEL(bl2,VALUE = "Select Instrument(s):")
 seli  = WIDGET_BASE(bl2,/ROW,/EXCLUSIVE)

 p_sel0 = WIDGET_BUTTON(seli,VALUE='  C1  ',UVALUE='c1',/NO_RELEASE)
 p_sel1 = WIDGET_BUTTON(seli,VALUE='  C2  ',UVALUE='c2',/NO_RELEASE)
 p_sel2 = WIDGET_BUTTON(seli,VALUE='  C3  ',UVALUE='c3',/NO_RELEASE)
 p_sel3 = WIDGET_BUTTON(seli,VALUE=' EIT  ',UVALUE='c4',/NO_RELEASE)
 p_sel4 = WIDGET_BUTTON(seli,VALUE=' All  ',UVALUE='cn',/NO_RELEASE)

 ;*** Data level selection ***

 r6  = WIDGET_BASE(bl1, /ROW)
 b6  = WIDGET_LABEL(r6,VALUE="Select Filetype and Source:")

 rf  = WIDGET_BASE(r6,/ROW );,/EXCLUSIVE)

b64 = WIDGET_DROPLIST(rf, VALUE=ilevel, UVALUE="IP2")
b63 = WIDGET_DROPLIST(rf, VALUE=ImgPath(0:2), UVALUE="IP2")

 ;*** Observation date selection ***

 r6  = WIDGET_BASE(bl1, /ROW)
 b6  = WIDGET_LABEL(r6,VALUE="Select Observation Date:")

 rf  = WIDGET_BASE(bl1, /FRAME,/COLUMN)
 r5  = WIDGET_BASE(rf, /ROW)
 b5  = WIDGET_LABEL(r5,VALUE="From   : ")

 w_m_b = WIDGET_DROPLIST(r5, VALUE=bmonth, UVALUE="BM")
 w_d_b = WIDGET_DROPLIST(r5, VALUE=bday,   UVALUE="BD")
 w_y_b = WIDGET_DROPLIST(r5, VALUE=byear,  UVALUE="BY")
 w_s_e = WIDGET_BUTTON(r5, VALUE='Same  end  date', UVALUE="SE")

 r6  = WIDGET_BASE(rf, /ROW)
 b6  = WIDGET_LABEL(r6,VALUE="To     : ")

 w_m_e = WIDGET_DROPLIST(r6, VALUE=emonth, UVALUE="EM")
 w_d_e = WIDGET_DROPLIST(r6, VALUE=eday,   UVALUE="ED") 
 w_y_e = WIDGET_DROPLIST(r6, VALUE=eyear,  UVALUE="EY")
 w_s_b = WIDGET_BUTTON(r6, VALUE='Same begin date', UVALUE="SB")

 bl3 = WIDGET_BASE(bl1,/ROW)
 b3  = WIDGET_BUTTON(bl3,VALUE='  Go  ',UVALUE='FIND')
 b3  = WIDGET_BUTTON(bl3,VALUE=' Cancel ',UVALUE='CANCEL')
; b3  = WIDGET_BUTTON(bl3,VALUE=' Help ',UVALUE='HELPF')

 lab = WIDGET_LABEL(bl3, VALUE="            ")
 
widget_control, parent, set_uvalue = xjunk

; *** Advanced load ***

parent = ms.mbases(1)

xjunk = WIDGET_BASE(parent,/COLUMN)
bl1 = WIDGET_BASE(xjunk,/COLUMN,/FRAME)

bl2 = WIDGET_BASE(bl1,/COLUMN)
li2 = WIDGET_LABEL(bl2,VALUE = "Input File and Path:")
r3  = WIDGET_BASE(bl1,/COLUMN)
r7  = WIDGET_BASE(r3, /ROW)
r1  = WIDGET_BASE(r7, /ROW)
l1  = WIDGET_LABEL(r1,VALUE = 'File  : ') 
w5  = WIDGET_BASE (r1, /ROW) 
nn  = WIDGET_TEXT (w5,XSIZE=xs,/EDITABLE, VALUE=new_name,UVALUE='NEW_PN') 

r2  = WIDGET_BASE(r3, /ROW)
l2  = WIDGET_LABEL(r2,VALUE = 'Path  : ')
w5  = WIDGET_BASE (r2, /ROW)
np  = WIDGET_TEXT (w5,XSIZE=xs,/EDITABLE, VALUE=new_path,UVALUE='NEW_PN')

r5  = WIDGET_BASE(r3, /ROW)
l5  = WIDGET_LABEL(r5,VALUE="Quick Path: ")
w5  = WIDGET_BASE (r5, /ROW)

b34 = WIDGET_DROPLIST(w5, VALUE=ilevel, UVALUE="IP")
b33 = WIDGET_DROPLIST(w5, VALUE=ImgPath, UVALUE="IP")

b35 = WIDGET_DROPLIST(w5, VALUE=DatePath, UVALUE="IP")

;b36 = CW_BSELECTOR(w5, Cx, SET_VALUE=0, UVALUE ="IMGPATH")
b36 = WIDGET_DROPLIST(w5, VALUE=Cx, UVALUE="IP")

bl9 = WIDGET_BASE(bl1,/ROW)
wl3 = WIDGET_LABEL(bl9,VALUE='Display reduced header before loading: ')

bl3 = WIDGET_BASE(bl9,/ROW,/EXCLUSIVE)
bn0 = WIDGET_BUTTON(bl3,VALUE=' Yes  ',UVALUE='rh',/NO_RELEASE)
bn1 = WIDGET_BUTTON(bl3,VALUE=' No   ',UVALUE='dr',/NO_RELEASE)
wb3 = WIDGET_BASE(xjunk,/ROW)
b30 = WIDGET_BUTTON(wb3,VALUE='  Go  ',UVALUE='NEW_PN') 

cid = WIDGET_BUTTON(wb3,VALUE=' Cancel ',UVALUE='CANCEL')

;widget_control, parent, set_uvalue = xjunk, get_uvalue = uvxx
widget_control, parent, set_uvalue = xjunk


sws = ''
ml = strlen(message(0))
ws = (xs - ml) / 2
while strlen(sws) LT ws do sws = sws + ' ' ;Make ws chars long
message(0) = sws + message(0)

r6  = WIDGET_BASE(lcol, /COLUMN)
r7  = WIDGET_BASE(r6, /ROW)

;
; Create a structure that will be carried around as the UVALUE of the main base (WLOADBASE)
;


CASE s_flag OF
 0: WIDGET_CONTROL,p_sel0, /SET_BUTTON
 1: WIDGET_CONTROL,p_sel1, /SET_BUTTON
 2: WIDGET_CONTROL,p_sel2, /SET_BUTTON
 3: WIDGET_CONTROL,p_sel3, /SET_BUTTON
 4: WIDGET_CONTROL,p_sel4, /SET_BUTTON
 ;5: WIDGET_CONTROL,p_sel5, /SET_BUTTON
 ELSE: donothing=0
ENDCASE

WIDGET_CONTROL,bn0,/SET_BUTTON

widget_control, parent, set_uvalue = xjunk

dirs = ''
wl_uv = {  WLoadBase:ms.WLoadBase,   $  ; Base widget ID
           bf:bf,		  $  ; Widget buttons ID
           r7:r7,                 $
           files:files,           $
           dirs:dirs,             $                        
           nname:nn,	          $  ; Widget ID for the File text
           npath:np,              $          
           b_day:w_d_b,           $  ; Widget ID for From : day button
           b_month:w_m_b, 	  $  ; Widget ID for From : month button
           b_year:w_y_b,          $  ; Widget ID for From : year button
           e_day:w_d_e, 	  $
           e_month:w_m_e, 	  $
           e_year:w_y_e,          $
           w_s_e:w_s_e,		  $
	   w_s_b:w_s_b,		  $  
           bmonth:bmonth,	  $
           bday:bday,		  $
           byear:byear,		  $
           emonth:emonth,	  $
           eday:eday,		  $
           eyear:eyear,		  $
           ipath:b33,             $
           ipath2:b63,            $
           cid:cid,		  $
           idc:b3,		  $
           iLevel:iLevel,         $
           lpath:b34,		  $
           lpath2:b64,		  $
           ImgPath:ImgPath,       $
           dpath:b35,		  $
           DatePath:DatePath,     $
           instp:b36,             $
           Cx:Cx, $
           n_old:n_old,		  $
           lab:lab }

for i=0, nmodes-1 do widget_control, ms.mbases(i), MAP=0
WIDGET_CONTROL, ms.WLoadBase, /REALIZE

;
; Load the structure into the main base's UVALUE for one way trip to handler
;

WIDGET_CONTROL, ms.WLoadBase, SET_UVALUE = wl_uv, /NO_COPY
sel_method = 0
               
WIDGET_CONTROL, ms.mbases(0), map=1, /NO_COPY
WIDGET_CONTROL, bf(0), /SET_BUTTON
 

 IF n_elements(ibd) EQ 0 THEN ibd = ti1(0)
 IF n_elements(ied) EQ 0 THEN ied = ti2(0)

 ;IF ti1(0) NE ti2(0) THEN ibd = ied-1

WIDGET_CONTROL,b63,SET_DROPLIST_SELECT=ipi
 
WIDGET_CONTROL,w_d_b,SET_DROPLIST_SELECT=ibd
WIDGET_CONTROL,w_d_e,SET_DROPLIST_SELECT=ied

WIDGET_CONTROL,b35,SET_DROPLIST_SELECT=ied

;IF ibm NE iem THEN ibm = iem -1

WIDGET_CONTROL,w_m_b,SET_DROPLIST_SELECT=ibm
WIDGET_CONTROL,w_m_e,SET_DROPLIST_SELECT=iem

WIDGET_CONTROL,b35,SET_DROPLIST_SELECT=iem

;IF iby NE iey THEN iby = iey -1

WIDGET_CONTROL,w_y_b,SET_DROPLIST_SELECT=iby
WIDGET_CONTROL,w_y_e,SET_DROPLIST_SELECT=iey

WIDGET_CONTROL,b35,SET_DROPLIST_SELECT=iey

              
XMANAGER,"wload",ms.WLoadBase, $               
                EVENT_HANDLER = "wload_event", $
                GROUP_LEADER = GROUP 

IF datatype(sipath) EQ 'UND' THEN sipath = ''
print,sipath
return,sipath
END











