PRO sum_img, list, DARK=dark, NET=net, WRT=wrt, LIST_OUT=list_out, KEEP=keep

@wload.com
@chandle.com

   IF N_ELEMENTS( list ) LT 1 THEN RETURN

   IF NOT KEYWORD_SET ( keep ) THEN keep = 0     ; don't keep images in memory
   IF NOT KEYWORD_SET ( dark ) THEN dark = 0     ; don't subtract dark
   IF NOT KEYWORD_SET ( net ) THEN net = 0       ; don't normalize exp. time
   IF NOT KEYWORD_SET ( wrt ) THEN wrt = 1        ; always write
   IF NOT KEYWORD_SET ( list_out ) THEN list_out = "working.lst"

   IF N_ELEMENTS(img_resize) EQ 0 THEN img_resize = 1.0
    
   n = N_ELEMENTS( list )

   image = readfitsl( list(0), head )

   IF N_ELEMENTS(image) EQ 1 THEN BEGIN
    text = " Error opening file: "+list(0)
    dummy = WIDGET_MESSAGE(text,/ERROR)
    RETURN
   ENDIF

         resize = img_resize 

        ; check header for SUMROW and SUMCOL
        sumrow = FIX(chk_h4s(head,"SUMROW")) > 1
        sumcol = FIX(chk_h4s(head,"SUMCOL")) > 1
        lebxsum = FXPAR(head,"LEBXSUM") > 1
        lebysum = FXPAR(head,"LEBYSUM") > 1

        IF resize GT 1 THEN sumrow=1 & sumcol=1 & lebxsum=1 & lebysum=1   

        nxsum = sumcol*lebxsum
        nysum = sumrow*lebysum

        naxis1 = FIX(chk_h4s(head,"NAXIS1")) 
        naxis2 = FIX(chk_h4s(head,"NAXIS2")) 

        resize = img_resize 

        IF img_resize EQ -1 THEN nxsum = sumcol ; for full resolution
   
        IF datatype(image) EQ "INT" and min(image) LT 0 THEN BEGIN
   
         image = FLOAT(image)
         ind = WHERE(image LT 0)
         image(ind) = image(ind) + 65536.0

        ENDIF

        IF nxsum GT 0 THEN BEGIN
          resize = nxsum * ABS(img_resize)      
          image = resize_img(image,resize,head)
        ENDIF ELSE BEGIN
          image = resize_img(image,resize,head)
        ENDELSE

        r1col  = FIX(chk_h4s(head,"R1COL")) - 20
        r1row  = FIX(chk_h4s(head,"R1ROW")) - 1
        r2col  = FIX(chk_h4s(head,"R2COL")) - 20
        r2row  = FIX(chk_h4s(head,"R2ROW")) - 1

        IF dark EQ 1 THEN BEGIN
          ;detector = STRCOMPRESS(SXPAR(head,'DETECTOR'),/REMOVE_ALL)
          ;readport = STRCOMPRESS(SXPAR(head,'READPORT'),/REMOVE_ALL)
	  image = image - get_bias(head)*lebxsum*lebysum
        ENDIF

   IF net EQ 1 THEN BEGIN
      exptime = FLOAT(chk_h4s(head,"EXPTIME"))
      IF exptime EQ -1 THEN XVAREDIT,exptime
      image = image / exptime
   ENDIF

   name = cat_name(list(0))

   wdir = GETENV('WORK')+!delimiter+GETENV('USER')+!delimiter+'fits'+!delimiter

   IF chk_dir(wdir) EQ 0 THEN wdir = GETENV('HOME')+!delimiter

   list_o = ''
   nr = n
   FOR i=1,n-1 DO BEGIN

   next_valid_image: print,"Image ",i," : ",list(i)

        imgi = readfitsl( list(i), head )

        IF N_ELEMENTS(imgi) EQ 1 THEN BEGIN
          undefine, imgi
          nr = nr - 1
          text = " Error opening file: "+list(i)
          dummy = WIDGET_MESSAGE(text,/ERROR)
        IF i EQ n-1 THEN GOTO,finish
          i=i+1 & GOTO,next_valid_image
        ENDIF

        resize = img_resize
 
                 ; check header for SUMROW and SUMCOL

        sumrow = FIX(chk_h4s(head,"SUMROW")) 
        sumcol = FIX(chk_h4s(head,"SUMCOL"))
        naxis1 = FIX(chk_h4s(head,"NAXIS1"))
        naxis2 = FIX(chk_h4s(head,"NAXIS2"))

        r1col  = FIX(chk_h4s(head,"R1COL")) - 20
        r1row  = FIX(chk_h4s(head,"R1ROW")) - 1
        r2col  = FIX(chk_h4s(head,"R2COL")) - 20
        r2row  = FIX(chk_h4s(head,"R2ROW")) - 1

       if ( sumrow  eq 0 ) then sumrow = 1
       if ( sumcol  eq 0 ) then sumcol = 1

        IF sumrow GT 0 THEN BEGIN
           resize = sumrow * img_resize
           imgi = resize_img(imgi,resize,head)
        ENDIF

        IF dark EQ 1 THEN BEGIN
          detector = STRCOMPRESS(SXPAR(head,'DETECTOR'),/REMOVE_ALL)
          readport = STRCOMPRESS(SXPAR(head,'READPORT'),/REMOVE_ALL)
	  imgi = imgi - get_bias(head)
        ENDIF

        IF net EQ 1 THEN BEGIN
          exptime = FLOAT(chk_h4s(head,"EXPTIME"))
          IF exptime EQ -1 THEN XVAREDIT,exptime
          imgi = imgi / exptime
        ENDIF

        image = image + imgi 

        namei = cat_name(list(i))
        name =  name + "+" +  namei

   ENDFOR
   finish:

   image = image / FLOAT(nr)

   name = cat_name(list(0))+".sum.fts"

   IF keep EQ 1 THEN chandle  ; save image in memory

   SXADDPAR,head,'HISTORY','=' + "'" + name + "'" + '/'
   fname = list_out + ".fts"
   WRITEFITS,wdir+fname,image,head

   list_o = [list_o, wdir + fname]

   ldir = GETENV('WORK')+!delimiter+GETENV('USER')+!delimiter+'list'+!delimiter
   IF chk_dir(ldir) EQ 0 THEN ldir = GETENV('HOME')+!delimiter

   ind = WHERE(list_o NE '')
   list_o = list_o(ind)

   wrt_asc,ldir + list_out,list_o

RETURN
END

