;+
; Project     : ovsa
;
; Name        : ovsa_interact.pro
;
; Purpose     : All user to click on the dynamic spectrum and 
;               view either a light curve or spectrum
;
; Category    : OVSA analysis
;
; Explanation :
;
; Syntax      : ovsa_interact,fold,iold,inew,tnew,fnew,ant,t_start,$
;               spectrum=spectrum,lightcurve=lightcurve
;
; Examples    :
;
; Inputs      : 
;
; Outputs     : 
;
; Keywords    : 
;
; History     : Written 09 December 1999, P. T. Gallagher, NJIT
;
; Contact     : ptg@penumbra.njit.edu
;-

PRO ovsa_interact,fold,iold,inew,tnew,fnew,ant,t_start,$
    spectrum=spectrum,lightcurve=lightcurve

  LOADCT,5
  !P.MULTI=0
    
  IF KEYWORD_SET(lightcurve) THEN BEGIN 
    WINDOW,/free,xsize=700,ysize=850 
    !P.MULTI = [0,1,2]
    pos1 = [0.08,0.57,0.96,0.96]
    pos2 = [0.08,0.05,0.96,0.49]
  ENDIF
  
  IF KEYWORD_SET(spectrum) THEN BEGIN
    WINDOW,/free,xsize=900,ysize=500 
    !P.MULTI = [0,2,1]
    pos1 = [0.05,0.08,0.6,0.95]
    pos2 = [0.68,0.08,0.98,0.95]
  ENDIF
    
  CLEAR_UTPLOT	
  
  PLOT_IMAGE,REVERSE(inew,2),/nosquare,/noscale, xticks=1,yticks=1,$
             xtickname=[" "," "],ytickname=[" "," "],$
	     title='Dynamic Spectrum For Antenna ' + ARR2STR(ant,/trim),$
	     ytitle='Frequency/GHz',position=pos1
  
  UTPLOT,tnew-MIN(tnew),REVERSE(fnew),t_start,/noerase,/nodata,/xs,$
	     yr=[MAX(fnew),MIN(fnew)],/ys,position=pos1
  
  CURSOR,t,f,/data,/down  
  
  print,t,f
  
  IF KEYWORD_SET(spectrum) THEN PLOTS,[t,t],[min(!y.crange),max(!y.crange)],Linestyle=2
  IF KEYWORD_SET(lightcurve) THEN PLOTS,[min(!x.crange),max(!x.crange)],[f,f],Linestyle=2
   
  count = 0 
  
  WHILE (!MOUSE.button NE 4) DO BEGIN
  
  
  IF (count GE 1) THEN BEGIN 
    
    t_index_old = t_index
    f_index_old = f_index
    f_obs_old = f_obs
    time_old = time
    
    UTPLOT,tnew-MIN(tnew),REVERSE(fnew),t_start,/noerase,/nodata,/xs,$
	     yr=[MAX(fnew),MIN(fnew)],/ys,position=pos1

    t_old = t
    f_old = f

    CURSOR,t,f,/data,/down  
    
    IF (!MOUSE.button EQ 4) THEN GOTO, step
    
    PLOT_IMAGE,REVERSE(inew,2),/nosquare,/noscale, xticks=1,yticks=1,$
             xtickname=[" "," "],ytickname=[" "," "],$
	     title='Dynamic Spectrum For Antenna ' + ARR2STR(ant,/trim),$
	     ytitle='Frequency/GHz',/noerase,position=pos1
    
    UTPLOT,tnew-MIN(tnew),REVERSE(fnew),t_start,/noerase,/nodata,/xs,$
	     yr=[MAX(fnew),MIN(fnew)],/ys,position=pos1
     
    IF KEYWORD_SET(spectrum) THEN $
       PLOTS,[t_old,t_old],[min(!y.crange),max(!y.crange)],Linestyle=2,color=0
    IF KEYWORD_SET(lightcurve) THEN $
       PLOTS,[min(!x.crange),max(!x.crange)],[f_old,f_old],Linestyle=2,color=0
    IF KEYWORD_SET(spectrum) THEN $
       PLOTS,[t,t],[min(!y.crange),max(!y.crange)],Linestyle=2
    IF KEYWORD_SET(lightcurve) THEN $
       PLOTS,[min(!x.crange),max(!x.crange)],[f,f],Linestyle=2
    
  ENDIF 
    
  time = ARR2STR(SEC2HMS(HMS2SEC(STRMID(t_start,11,2)+STRMID(t_start,14,2)+STRMID(t_start,17,2))+t),/trim)
  time = STRMID(time,0,2)+':'+STRMID(time,2,2)+':'+STRMID(time,4,2)
  
  tt = tnew - tnew(0)
  t_index = WHERE((tt-t)^2 EQ MIN((tt-t)^2))
  t_obs = tnew(t_index)
  t_index = t_index(0)
  t_obs = STRMID(ARR2STR(t_obs(0),/trim),0,4) 
  
  f_index = WHERE((fnew-f)^2 EQ MIN((fnew-f)^2))
  f_obs = fnew(f_index)
  f_index = f_index(0)
  f_obs = STRMID(ARR2STR(f_obs(0),/trim),0,4) 
  
  IF (KEYWORD_SET(spectrum)) THEN BEGIN
     
    IF (count GE 1) THEN BEGIN 
  
      !P.MULTI=[1,2,1]
      	      
      CIRCLE_SYM,/fill

      PLOT_OO,fold,iold(t_index_old,*),/xs,/ys,$
             xtitle='Frequency/GHz',$
	     ytitle='Total Power/Arb. Units',$
	     title='Spectrum at '+time_old+ ' UT',$
	     psym=8,color=0,position=pos2
      
      OPLOT,fold,iold(t_index_old,*),psym=-1,symsize=2,color=0
        	 
    ENDIF 	 
 
    !P.MULTI=[1,2,1]
    
    CIRCLE_SYM,/fill

    PLOT_OO,fold,iold(t_index,*),/xs,/ys,$
 	    xtitle='Frequency/GHz',$
       	    ytitle='Total Power/Arb. Units',$
       	    title='Spectrum at '+time+' UT',$
            psym=8,position=pos2
    
    OPLOT,fold,iold(t_index,*),psym=-1,symsize=2  
	    	    
  ENDIF
  
  IF (KEYWORD_SET(lightcurve)) THEN BEGIN

    IF (count GE 1) THEN BEGIN 
      
      !P.MULTI=[1,1,2]
  
      UTPLOT,tnew-MIN(tnew),inew(*,f_index_old),t_start,$
             title='Total Power For Antenna ' + ARR2STR(ant,/trim)+' at '$
	     +f_obs_old+' GHz',/xs,/ys,ytitle='Total Power/Arb. Units',$
             psym=10,color=0,position=pos2
    ENDIF		 
  
    !P.MULTI=[1,1,2]

    UTPLOT,tnew-MIN(tnew),inew(*,f_index),t_start,$
           title='Total Power For Antenna ' + ARR2STR(ant,/trim)+' at '$
	   +f_obs+' GHz',/xs,/ys,ytitle='Total Power/Arb. Units',$
           psym=10,position=pos2
		 
  ENDIF
  
  count = count+1
  PRINT,'OVRO> Reselect With LEFT Mouse Button/Exit With RIGHT'
  
  ENDWHILE

  step:

END
