;---------------------------------------------------------------------------
; Document name: html_splan.pro
; Created by:    Liyun Wang, GSFC/ARC, March 25, 1996
;
; Last Modified: Thu Aug 21 11:28:17 1997 (lwang@achilles.nascom.nasa.gov)
;---------------------------------------------------------------------------
;
;+
; PROJECT:
;       SOHO
;
; NAME:
;       HTML_SPLAN
;
; PURPOSE:
;       Make SOHO plans for a give date range
;
; CATEGORY:
;       Planning, Utility
;
; SYNTAX:
;       html_splan, plan=plan
;
; INPUTS:
;       None.
;
; OPTIONAL INPUTS:
;       None.
;
; OUTPUTS:
;       None.
;
; OPTIONAL OUTPUTS:
;       None.
;
; KEYWORDS:
;       PLAN_ITEMS - plan items to be plotted
;       DTYPE      - set for SOHO-DETAILED plan
;       FILE       - Name of output html file
;
; COMMON:
;       MK_PLAN_SHARED
;
; RESTRICTIONS:
;       None.
;
; SIDE EFFECTS:
;       None.
;
; HISTORY:
;       Version 1, March 25, 1996, Liyun Wang, GSFC/ARC. Written
;       Version 2, April 25, 1996, Liyun Wang, GSFC/ARC
;          Modified so that entries for CELIAS, SWAN, and ERNE appear
;             as JOP, SOC, and CAMPAIGN, respectively
;       Version 3, August 21, 1997, Liyun Wang, NASA/GSFC
;          Modified from ASCII_SPLAN, just for show plans in HTML format
;
; CONTACT:
;       Liyun Wang, GSFC/ARC (Liyun.Wang.1@gsfc.nasa.gov)
;-
;
PRO html_splan, plan_items=plan_items, dtype=dtype, file=file
@mk_plan_shared
   ON_ERROR, 2
;---------------------------------------------------------------------------
;  Time input
;---------------------------------------------------------------------------
   IF N_ELEMENTS(startdis)*N_ELEMENTS(stopdis) EQ 0 THEN BEGIN
      MESSAGE, 'invalid time input', /cont
      RETURN
   ENDIF

   IF N_ELEMENTS(file) EQ 0 THEN file = 'plan_form.txt'
   IF N_ELEMENTS(dtype) EQ 0 THEN dtype = 0
   ptype = dtype
   
   date_str = anytim2utc(startdis, /ecs, /date)
   tstart = utc2tai(anytim2utc(startdis))
   tstop = utc2tai(anytim2utc(stopdis))
   dur = round((tstop-tstart)/86400.d0)
   new = 1
   get_utc, curr_time, /ecs, /trunc
;---------------------------------------------------------------------------
;  Set up output file, etc.
;---------------------------------------------------------------------------
   OPENW, unit, file, /GET_LUN
   PRINTF, unit, '<!--' 
   PRINTF, unit, '--------------------------------------------------------'
   PRINTF, unit, 'Document name: '+file
   PRINTF, unit, 'Created by:    html_splan.pro
   PRINTF, unit, '--------------------------------------------------------'
   PRINTF, unit, '-->'
   PRINTF, unit, '<html>'
   PRINTF, unit, '<head>'
   PRINTF, unit, '<title>SOHO Operations Schedule</title>'
   PRINTF, unit, '</head>'
   PRINTF, unit, '<body link=#23238E vlink=#23238E bgcolor=#a0eed0>'
   PRINTF, unit, '<center><b>SOHO '+STRTRIM(STRING(dur), 2)+$
      '-day Planned Schedule Starting on '+date_str+'</b><br></center>'
   
;---------------------------------------------------------------------------
;  Default row items
;---------------------------------------------------------------------------
   IF N_ELEMENTS(plan_items) EQ 0 THEN $
      plan_items = ['Telemetry', 'Command', 'Support', get_soho_inst()]

;---------------------------------------------------------------------------
;  Instrumental entries
;---------------------------------------------------------------------------
   IF dtype NE 0 THEN BEGIN
      IF exist(soho_dplan) THEN plan = soho_dplan
   ENDIF ELSE BEGIN
      IF exist(soho_splan) THEN plan = soho_splan
   ENDELSE

   IF datatype(plan) NE 'STC' THEN RETURN
   itime = get_plan_itime(plan, err=err)
   IF itime LT 0 THEN RETURN

   IF NOT exist(inst_name) THEN BEGIN
      inst = get_soho_inst(/short)
   ENDIF ELSE BEGIN
      IF inst_name EQ 'C' THEN $
         inst = get_soho_inst(/short, exclude='C') $
      ELSE $
         inst = get_soho_inst(/short, exclude='S')
   ENDELSE
   ninst = N_ELEMENTS(inst)

   FOR j=0, ninst-1 DO BEGIN
      name_inst = get_soho_inst(inst(j))
      IF grep(name_inst, plan_items) NE '' THEN BEGIN
         ii = WHERE(plan.instrume EQ inst(j), nplans)
         IF nplans GT 0 THEN BEGIN
            plans = plan(ii)
            CASE (name_inst) OF
               'CELIAS': inst_str = 'JOP'
               'SWAN': inst_str = 'SOC'
               'ERNE': inst_str = 'CAMPAIGN'
               ELSE: inst_str = name_inst
            ENDCASE
            iname = inst_str
            soho_items_html, unit, iname, plans, new=new
         ENDIF
      ENDIF
   ENDFOR

;---------------------------------------------------------------------------
;  Telemetry (TLM submodes, TLM_TAPE_DUMP, TLM_MDI_M, TLM_MDI_H)
;---------------------------------------------------------------------------
   IF grep('Telemetry', plan_items) NE '' THEN BEGIN
      IF exist(dsn) THEN BEGIN
         ii = WHERE(dsn.end_time GE tstart AND dsn.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN 
            soho_items_html, unit, 'DSN Contact', dsn(ii), new=new
         ENDIF 
      ENDIF
      IF exist(tape_dump) THEN BEGIN
         ii = WHERE(tape_dump.end_time GE tstart AND tape_dump.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN 
            soho_items_html, unit, 'Telemetry Tape Dump', tape_dump(ii), $
               new=new
         ENDIF
      ENDIF
      IF exist(mdi_h) THEN BEGIN
         ii = WHERE(mdi_h.end_time GE tstart AND mdi_h.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN 
            soho_items_html, unit, 'Telemetry MDI_M', mdi_h(ii), new=new
         ENDIF
      ENDIF
      IF exist(mdi_m) THEN BEGIN
         ii = WHERE(mdi_m.end_time GE tstart AND mdi_m.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN
            soho_items_html, unit, 'Telemetry MDI_H', mdi_m(ii), new=new
         ENDIF
      ENDIF
   ENDIF
   
;---------------------------------------------------------------------------
;  Commanding (NRT_RESERVED, SVM_RESERVED, PAYLOAD_RESERVED,
;  THROUGHPUT_RCR, and THROUGHPUT_NORCR)
;---------------------------------------------------------------------------
   IF grep('Command', plan_items) NE '' THEN BEGIN
      IF exist(trcr) THEN BEGIN
         ii = WHERE(trcr.end_time GE tstart AND trcr.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN
            soho_items_html, unit, 'Throughput RCR', trcr(ii), new=new
         ENDIF
      ENDIF
      IF exist(tnorcr) THEN BEGIN
         ii = WHERE(tnorcr.end_time GE tstart AND tnorcr.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN
            soho_items_html, unit, 'Throughput NORCR', tnorcr(ii), new=new
         ENDIF
      ENDIF
      IF exist(dlydtimes) THEN BEGIN
         ii = WHERE(dlydtimes.end_time GE tstart AND dlydtimes.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN 
            soho_items_html, unit, 'Payload Reserved', dlydtimes(ii), new=new
         ENDIF
      ENDIF
      IF exist(nrt) THEN BEGIN
         ii = WHERE(nrt.end_time GE tstart AND nrt.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN
            soho_items_html, unit, 'NRT Reserved', nrt(ii), new=new
         ENDIF
      ENDIF
      IF exist(svm) THEN BEGIN
         ii = WHERE(svm.end_time GE tstart AND svm.start_time LE tstop)
         IF ii(0) GE 0 THEN BEGIN
            soho_items_html, unit, 'SVM Reserved', svm(ii), new=new
         ENDIF
      ENDIF
   ENDIF
   html_table_header, unit, /finish
   
   PRINTF, unit, '<hr><address>
   PRINTF, unit, '<B>Author:</B> <br> 
   PRINTF, unit, '<a href="http://orpheus.nascom.nasa.gov/~lwang">Liyun Wang</a>, NASA/GSFC, Code 682.3 ' 
   PRINTF, unit, '(<a href="mailto:Liyun.Wang.1@gsfc.nasa.gov">'+$
      'Liyun.Wang.1@gsfc.nasa.gov</a>)<p>'
   PRINTF, unit, ''
   PRINTF, unit, '<B>Responsible NASA Official:</B><br>'
   PRINTF, unit, 'Arthur I. Poland, NASA/GSFC, Code 682.1'
   PRINTF, unit, '(<a href="mailto:Arthur.I.Poland.1@gsfc.nasa.gov">'+$
      'Arthur.I.Poland.1@gsfc.nasa.gov</a>)<p>'
   PRINTF, unit, ''
   PRINTF, unit, '<B>Document Created:</B> '+$
      anytim2utc(curr_time, /ecs, /trun)+' UT<p>'
   PRINTF, unit, '</address>'
   PRINTF, unit, ''
   PRINTF, unit, '</body>'
   PRINTF, unit, '</html>'
   
   CLOSE, unit
   FREE_LUN, unit
   RETURN
END

;---------------------------------------------------------------------------
; End of 'html_splan.pro'.
;---------------------------------------------------------------------------
