PRO  STEPPER2_S1, DATA, INFO_ARRAY=INFO_ARRAY,$
	NOSCALE=NOSCALE, SUBSCRIPT=SUBSCRIPT, $
	COLOR=COLOR, out=out
;+
;  NAME:
;	STEPPER2_s1
;  PURPOSE:
;	Step through individual images a single frame at a time
;	and permit flagging the output vector with a 0 or 1.
;	It is possible to switch back and forth on a given image
;	as much as you want.  No movie mode here but otherwise
;	stepping or jumping through the data cube is the same
;	as in stepper.
;  INPUTS:
;	DATA = Three-dimensional array
;  OUTPUT
;	A vector of 0's and 1's permitting easy selection or
;	de-selection of images for further processing.
;  OPTIONAL INPUT KEYWORDS:
;	INFO_ARRAY  = String array containing descriptive text
;	NOSCALE	    = If set, will turn off tvscale
;	SUBSCRIPT   = Subset of array is displayed.
;	COLOR	    = The color to use for displaying the info text string.
;  HISTORY:
;	11-Nov-2002 LWA, Gutted stepper_s1 for purposes of stepper2.pro.
;-

;on_error,2		; Return to caller
ans= ''

if n_elements(color) eq 0 then color=255	; Default color
nimg=data_chk(DATA,/nimages)

if (n_elements(subscript) eq 0) then subscript = indgen(nimg)
n_sel = n_elements(subscript)

;  See if we should turn off the tvscl option:
if keyword_set(noscale) then nosc = 0 else nosc = 2

DISP = nosc

;  Set up info_array if it does not exist already:

if n_elements(info_array) eq 0 then begin
    if n_elements(info_p) eq 0 then 		$
		info_array = strtrim(string(indgen(nimg))+' :',2) $
		else info_array = info_p
endif

stt=0 ; Starting image
stt = min(abs(stt-subscript)) & stt=!c & !c=0		; Get closest index
i = stt

qdisp = 1
qmovie = 0
qprint = 1	;always print the menu message the first time
qdone = 0
qfirst = 1
while not qdone do begin
    if (qfirst or qprint) then begin
	print, '-------- STEPPER2 Options --------'
	print,'There are ',strtrim(string(nimg),2),' images in the array'
	print,'There are ',strtrim(string(n_sel),2),' images selected'
               ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	print, 'Enter "b" to step backwards
        print, '      "m" for movie mode
	print, '      "s" to select new start index
	print, '      "k" to toggle value of index in out array
	print, '      "q" to quit
	print, '      "anything else" to step forward
    end
    qprint = 0

    if (not qfirst) then ans = get_kbrd(1-qmovie)
    ans = strlowcase(ans)				; Convert to lower case

    if (qmovie) and (ans ne '') then begin
        qmovie = 0
        qdisp = 0
        ;;ans = '-'             ;zero out the answer which stopped movie (might be "q")
    end

    qdisp = qfirst
    case ans of
	'-': ;do nothing
        'm': begin              ;movie mode selected
                print,'Type anything to abort movie mode ("q" will exit movie and STEPPER)'
                qmovie = 1
                qdisp = 1
             end
	'b': begin
		i = i-1
		if i lt 0 then i=n_sel-1
		qdisp = 1
	     end
	'q': qdone = 1
	's': begin
		print,'* Enter the requested start image number',format='($,a)'
		read,i
		i=min(abs(i-subscript)) 
		i=!c
		!c=0
		qdisp = 1
	     end
	'k': begin
		if out(i) eq 0 then out(i)=1 else out(i)=0
		xyouts,charsize=1.6,/norm,0.25,0.45,'Switched out('+strtrim(i,2)+') value to'+string(out(i))
	     end
	'*': stop

	else: if (not qfirst) then begin
		i = i + 1
		if i ge n_sel then i = 0
		qdisp = 1
	      end
     endcase

    if (qdisp) then begin
	j = subscript(i)				; Get selected images
        x0=0 & y0=0
        case DISP of 							; rebinn,noscale
	  0: tv,data(*,*,j), x0, y0					;    0  ,   0
	  2: tvscl,data(*,*,j), x0, y0					;    0  ,   2
	endcase
    xyouts,charsize=1.6,/norm,0.25,0.5,'Currently out('+strtrim(i,2)+') is set to'+string(out(i))

	break_point = 38	; Break point
	if (get_logenv('STEPPER_BREAK') ne '') then break_point = fix(getenv('STEPPER_BREAK'))
	if strlen(info_array(j)) le break_point then begin
	    xyouts,x0,y0+10,info_array(j),charsize = 1.26,/device,color=color
	endif else begin
	    str0 = strmid(info_array(j),0,break_point)
	    str1 = strmid(info_array(j),break_point,strlen(info_array(j)))
	    xyouts,x0+10,y0+10,str1,charsize = 1.26,/device,color=color
	    xyouts,   x0,y0+23,str0,charsize = 1.26,/device,color=color
	endelse
    end

    qfirst = 0
end

return
end
