;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Lance Simms, Stanford University 2009
;Fits_Star_Movie
;
;PURPOSE:
;   This script will take a window mode exposure from an HxRG detector and make 
;   an mpeg from it.  It will do a bias subtraction (i.e. read2 - read1 for each 
;   consecutive set of reads).
;
;INPUTS:
;   FitsFileName: string
;      The full path to the window mode exposure file
;   FitsDir:
;
;   MPEGDIR: string
;      An optional path to the directory where the MPEG should be saved
;
pro make_hxrg_window_movie, FitsFileName, FitsDir = FitsDir, Offset=Offset, $
    BiasSub = BiasSub, Scale=Scale

Common FitsCube, FCB, unit
Common KeyParams, KeyStr
;Include all of the keywords from the KeywordStruct file

@KeywordStruct_xRG.pro
@PlotSettings_xRG.pro

If N_Elements(OFfset)  eq 0 then Offset  = 0
If N_Elements(BiasSub) eq 0 then BiasSub = 0
If N_Elements(Scale)   eq 0 then Scale   = 0 

Position = fits_open_datacube(FitsFileName, FCB, Header, 'Read')
naxis2 = fcb.axis(1)
naxis3 = fcb.axis(2)
naxis4 = fcb.axis(3)
bitpix = fcb.bitpix(0)
bzero = fcb.bzero(0)
bytes_per_word = (abs(bitpix)/8)

NumPixPerFrame = NAXIS1*NAXIS2
If NAxis4 eq 0 then begin
   NAxis4 = 1
   window, xsize=512,ysize=512
   If BiasSub eq 1 then NAxis3 = NAxis3/2
endif else begin
  !p.noerase = 1
  window, xsize = 512, ysize =1024
endelse

;MOVIE PARAMETERS
;*****************                 
FitsFileBase = KeyStr.RawObjectKey
MPEGDIR = KeyStr.RedObjectDir
Mpegname=MPEGDIR+FitsFileBase+'.mpeg'
Movie=mpeg_open([512,512], quality = 100)
FrameNo=0
FrameGap=10

;CONSTANTS
;*************************************************************
WindowNum = 0    ;Only one window here
set_plot,'X'

for FrameNum = 0, NAXIS3-1 do begin

  ;A little output
  print, 'Procesing File Number ' + strtrim(FrameNum, 2)

    If BiasSub eq 0 then begin
      Fits_Read_Datacube,FitsFileName, Data, Header, $
             ZStart = Naxis4*FrameNum+WindowNum, $
             ZStop  = Naxis4*FrameNum+WindowNum, Offset=Offset
    EndIf Else Begin
      Fits_Read_Datacube,FitsFileName, Data1, Header, $
             ZStart = 2*Naxis4*FrameNum+WindowNum, $
             ZStop  = 2*Naxis4*FrameNum+WindowNum, Offset=Offset
      Fits_Read_Datacube,FitsFileName, Data2, Header, $
             ZStart = 2*Naxis4*FrameNum+1+WindowNum, $
             ZStop  = 2*Naxis4*FrameNum+1+WindowNum, Offset=Offset
      Data = long(Data2)-long(Data1)
    EndElse
    ThisWindow = Data
    MeanWin = Mean(thisWindow)
    StdDevWin = StdDev(thisWindow)

    If Scale eq 0 then begin
      MinWin = MeanWin-2*StdDevWin
      MaxWin = MeanWin+2*StdDevWin
    EndIf else begin
      MinWin = Min(ThisWindow)+StdDevWin
      MaxWin = Max(thisWindow)-StdDevWin
    Endelse

    MovieIm = bytscl(congrid(ThisWindow,512,512), $
                  min = MinWin, $
                  max = MaxWin)


    ;Fill in the Gaps
    for i = 0 , FrameGap do begin
      Mpeg_Put, Movie, IMAGE = MovieIm, Frame = FrameNum + i
    endfor
		
endfor

mpeg_save, Movie, FILENAME= MpegName
mpeg_close, Movie

end

