pro pref_super, weekid, dir_reverse=dir_reverse, start_stage=start_stage, $
	nospawn=nospawn, days1=days1, ref2_subset=ref2subset, testing=testing
;+
;   Name: pref_super
;
;   Purpose: build and submit a 'go_ref_super' job with parallel 
;		processing for stages 1 and 2
;
;   History:
;      1-Oct-1994 (SLF) 
;
;   Restrictions:
;      prototype - not all ref_super keywords available
;      		   assume standard disks used for reformatting
;-
; --------------- Verify Input -------------
if not data_chk(weekid,/string) then begin
   tbeep
   message,/info,"Need to supply week id..."
   return
endif
if (strlen(weekid) gt 6) or (strmid(weekid,0,1) ne '9') then begin
   tbeep
   message,/info,"Problem with weekid: <<" + weekid + ">>"
   return
endif
week=strmid(weekid,0,5)				; just YY_WW part
; ------------------------------------------------

; -------- Define Controller Job Info ------------
set_logenv,'DIR_SITE_BATCH','/ys/site/soft/atest/reformat'
jobname='gopref_' + str_replace(ex2fid(anytim2ex(!stime)),'.','_')
jobfile=concat_dir(get_logenv('DIR_SITE_BATCH'),jobname+'.pro')
; ------------------------------------------------
;
; ---- get some user/system status info via pr_status ----
pr_status,text,caller="PREF_SUPER",/idldoc		
file_append,jobfile,text				
; ------------------------------------------------

if n_elements(start_stage) eq 0 then start_stage=0 

dir_reverse=keyword_set(dir_reverse)
testing=keyword_set(testing)
dirreverse=(["",",/dir_reverse"])(dir_reverse) ; string switch?
stesting=(["",",/testing"])(testing) ; string switch?

; define some variables 
if n_elements(days0) eq 0 then days0=indgen(7)
if n_elements(days1) eq 0 then days1=indgen(7)
if n_elements(ref2_subset) eq 0 then ref2_subset=indgen(7)
file_append,jobfile, $
   ['; define some variables...',			$
    'testing='  + strtrim(testing,2),			$
    'week="' + week + '"',				$
    'days0=[' + arr2str(days0,/trim) +  ']',		$
    'days1=[' + arr2str(days1,/trim) +  ']',		$
    'ref2_subset=[' + arr2str(ref2_subset,/trim) + ']', $
    'dir_reverse=' + strtrim(dir_reverse,2),""]

; ------------- STAGE 0 SETUP -------------------- 
if start_stage le 0 then $
   file_append,jobfile,  ['','; STAGE 0','ref_super,"' + week + '"' + dirreverse + stesting + ',stages=[1]','']
; ------------------------------------------------

; ------------- STAGE 1 SETUP -------------------- 
if start_stage le 1 then begin
   file_append,jobfile,$
      ['; ------------- STAGE 1 -------------------------',		      $
       'pref_deldir,1,dir_reverse=dir_reverse',				      $
       'best=is_bestnode(/defnode,goodorder=goodorder)',                      $
       'jobcmds=pref_info(week="' + week + '",logfiles=logfiles, ' +          $
                'jobnames=jobnames, days1=days1, dir_reverse=dir_reverse,testing=testing)',   $
       '','; Spawn the remote tasks via go_batch',			      $
       'for i=0,6 do go_batch,jobcmds(i), nodelist=goodorder(i), jobname=jobnames(i),caller="pref_super"',  		      $
       '','; Wait for stage 1 tasks',					      $
       'task_wait,filewait=logfiles,tohours=5,/toretry,minsamp=5,/mail','']
endif
; ------------------------------------------------

; ------------- STAGE 2 SETUP -------------------- 
if start_stage le 2 then begin
   file_append,jobfile,$
      ['; ------------- STAGE 2 -------------------------',		      $
       'pref_deldir,2,dir_reverse=dir_reverse',			              $
        'best=is_bestnode(/defnode,goodorder=goodorder)', 	              $
       'jobcmds=pref_info(week="' + week + '",logfiles=logfiles, ' +          $
                'jobnames=jobnames, ref2_subset=ref2_subset, dir_reverse=dir_reverse,/s2,testing=testing)',		      $
       '','; Spawn the remote tasks via go_batch',			      $
       'for i=0,6 do go_batch,jobcmds(i), nodelist=goodorder(i), jobname=jobnames(i),caller="pref_super"',  		      $
       '','; Wait for stage 1 tasks',					      $
       'task_wait,filewait=logfiles,tohours=5,/toretry,minsamp=5,/mail','']
endif
; ------------------------------------------------

; now run regular 
start=strtrim(start_stage > 3,2)
file_append,jobfile, $
       ['; --------------- STAGES 3 etc. (serial) ------------',	   $
        'ref_super,start_stage=' + start + dirreverse]

file_append,jobfile,'end'

spawnit=1-keyword_set(nospawn)

; spawn this job on isass0 for now
if spawnit then go_batch,jobfile,nodelist='isass0'

message,/info,"IDL JOBFILE: " + jobfile

return
end
