;+
; Project     : SOHO - LASCO
;
; Name        : WOBSDATE*
;
; Purpose     : 
;
; Category    : SU:IMAGE_TOOL ?
;
; Explanation : This widget FITS search tool allows searching images
;               on specific observation date. Image header will be 
;               scaned for keyword observation date.
;
; Syntax      : IDL>wobsdate, instruments, path, filter
;
; Examples    : IDL>wloada, " LASCO C1 ", "/data/lasco/c1", "*.fits"
;
; Inputs      : string array of instruments,
;               string array of directories,
;               string array of searcing filter.
;
; Opt. Inputs : None
;
; Outputs     : string array of files,
;               string array of directories.
;
; Opt. Outputs: None
;
; Keywords    : None
;
; Common      : dirs_files, date_block
;
; Restrictions: None                                 
;
; Side effects: Not known
;
; History     : Version 1, 02-Sep-1995, B Podlipnik. Written
;
; Contact     : BP, borut@lasco1.mpae.gwdg.de
;-

PRO WObsDate_event,event

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

COMMON date_block, month, day, year


WIDGET_CONTROL,event.id,GET_UVALUE=uval
WIDGET_CONTROL,event.top,GET_UVALUE=uv

CASE uval OF

   "QUIT":	BEGIN   
             WIDGET_CONTROL,event.top,/DESTROY

		   	END

  "CANCEL":    BEGIN
	          WIDGET_CONTROL,event.top,/DESTROY
	         
	       END

  "SEARCH": BEGIN
        
             WIDGET_CONTROL, uv.b_month, GET_VALUE = smb
             WIDGET_CONTROL, uv.b_day,   GET_VALUE = sdb
             WIDGET_CONTROL, uv.b_year,  GET_VALUE = syb
             WIDGET_CONTROL, uv.e_month, GET_VALUE = sme
             WIDGET_CONTROL, uv.e_day,   GET_VALUE = sde
             WIDGET_CONTROL, uv.e_year,  GET_VALUE = sye

             b_month= STRCOMPRESS(month(smb),/REMOVE_ALL)
             b_day  = STRCOMPRESS(day(sdb),/REMOVE_ALL)
             b_year = STRCOMPRESS(year(syb),/REMOVE_ALL)
             begin_date= b_year + '-' + b_month + '-' + b_day
 
             e_month= STRCOMPRESS(month(sme),/REMOVE_ALL)
             e_day  = STRCOMPRESS(day(sde),/REMOVE_ALL)
             e_year = STRCOMPRESS(year(sye),/REMOVE_ALL)
          
             finish_date=  e_year + '-' + e_month + '-' + e_day
             n_ist = N_ELEMENTS(uv.n_path)
             files_f = ['']
             dirs_f  = ['']
             CD, uv.n_path(0), CURRENT = old_dir ; *** to save current dir ***

             FOR i=0,n_ist-1 DO BEGIN 
              ;chk = chk_dir(uv.n_path(i))
              CD, uv.n_path(i)
              filter = uv.sel_fil(i)
              
              
              tempf = FINDFILE(filter,COUNT=c)
  
              ; first idea about selecting on date
              IF c GT 0 THEN BEGIN 
                tempf =  selectd(tempf,begin_date,finish_date)
                files_f = [files_f, tempf]
                FOR j=0,N_ELEMENTS(tempf)-1 DO dirs_f  = [dirs_f, uv.n_path(i)]
                ;dirs  = [dirs, uv.n_path(i)]
              ENDIF
             ENDFOR
            
             f_index = WHERE(files_f GT '')
             IF f_index(0) GT -1 THEN BEGIN
               files_f = files_f(f_index)
               dirs_f  = dirs_f(f_index)
             ENDIF ELSE BEGIN
               files_f = ['No files found']
             ENDELSE

             WIDGET_CONTROL,uv.wtxt2,SET_VALUE=files_f
             CD, old_dir
         END


ELSE: donothing = 0
ENDCASE


END

PRO WObsDate,sel_inst,n_path,sel_fil,GROUP=GROUP

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
                   
COMMON date_block, month, day, year

IF XRegistered("WObsDate") NE 0 THEN RETURN

IF N_ELEMENTS(sel_inst) EQ 0 OR $
   N_ELEMENTS(n_path)   EQ 0 OR $
   N_ELEMENTS(sel_fil)  EQ 0 THEN BEGIN
      PRINT, '*** Input error ***'
      PRINT, '   Usage: WOBSDATE, ''instrument'', ''path'', ''filter'' '
      PRINT, ' '
      RETURN
ENDIF

IF N_ELEMENTS(sel_inst) EQ 0 THEN sel_inst = ''

files_f = [''] & dirs_f = ['']

; *** find path and filter for selected instruments ***
n_inst = N_ELEMENTS(sel_inst)
; *** found path and filter for selected instruments ***

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"]

year=[" 1992"," 1993"," 1994"," 1995"," 1996"," 1997"," 1998"," 1999"," 2000"," 2001"," 2002"]

filters = [" All  ","Clear","Fe IV"]

date = systime()
tyear= STRPOS(date," 199")
tyear= STRMID(date,tyear,5)
temp = WHERE(year EQ tyear)
fy   = temp(0)
temp = STRMID(date,4,3)
temp = WHERE(month EQ temp)
fm   = temp(0)
temp = STRMID(date,8,2)
temp = STRCOMPRESS(temp,/REMOVE_ALL)

IF STRLEN(temp) EQ 1 THEN temp = " 0" + temp
IF STRLEN(temp) EQ 2 THEN temp = " " + temp
temp = WHERE(day EQ temp)
ld   = temp(0)


WDateBase = WIDGET_BASE(TITLE="Observation Date Selector",/ROW)
lcol= WIDGET_BASE(WDateBase, /COLUMN)


r2  = WIDGET_BASE(lcol,/COLUMN)
;r3  = WIDGET_BASE(lcol, /FRAME,/COLUMN)

b2  = WIDGET_LABEL(r2,VALUE="Selected instruments:")
r4  = WIDGET_BASE(lcol, /ROW)
r4  = WIDGET_BASE(r4, /COLUMN,/FRAME)
w_text  = WIDGET_TEXT(r4,XSIZE=30,YSIZE=6,VALUE=sel_inst,/SCROLL)

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

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

w_m_b = CW_BSELECTOR2(r5, month, SET_VALUE=fm, UVALUE="CWS")
w_d_b = CW_BSELECTOR2(r5, day,   SET_VALUE=0,  UVALUE="CWS")
w_y_b = CW_BSELECTOR2(r5, year,  SET_VALUE=fy,  UVALUE="CWS")

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

w_m_e = CW_BSELECTOR2(r6, month, SET_VALUE=fm, UVALUE="CWS")
w_d_e = CW_BSELECTOR2(r6, day,   SET_VALUE=ld, UVALUE="CWS") 
w_y_e = CW_BSELECTOR2(r6, year,  SET_VALUE=fy,  UVALUE="CWS")

;ff = WIDGET_BASE(lcol,/COLUMN,/FRAME)
;r6  = WIDGET_BASE(ff, /ROW)
;b6  = WIDGET_LABEL(r6,VALUE="Select Filter:")

;w_f_b = CW_BSELECTOR2(r6, filters,  SET_VALUE=filters(0),  UVALUE="FILTERS")

;
; Create text widget to display search results
;

r7 = WIDGET_BASE(lcol,/COLUMN)
r6  = WIDGET_BASE(r7, /ROW)
b6  = WIDGET_LABEL(r6,VALUE="Files found:")

;files = strarr(20)
w_text  = WIDGET_TEXT(r7,XSIZE=30,YSIZE=6,VALUE=files_f,/SCROLL)

r4  = WIDGET_BASE(lcol, /ROW)
rs  = WIDGET_BUTTON(r4,VALUE=' Search ',UVALUE='SEARCH')
rc  = WIDGET_BUTTON(r4,VALUE=' Cancel ',UVALUE='CANCEL')
ro  = WIDGET_BUTTON(r4,VALUE='  O.K.  ',UVALUE='QUIT')

wd_uv = {  WDateBase:WDateBase,  $  ; Base widget ID 
	            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,     $
               wtxt2:w_text,     $
               n_path:n_path,    $
               sel_fil:sel_fil  } 

WIDGET_CONTROL,WDateBase,/REALIZE

; Load the structure into the main base's UVALUE for one way trip to handler
;
WIDGET_CONTROL, WDateBase, SET_UVALUE = wd_uv

XMANAGER,"WObsDate",WDateBase, $
      EVENT_HANDLER="WObsDate_event", $ 
		GROUP_LEADER=GROUP,/MODAL
END










