<!--

// Useful Javascripts for handling TRACE planning form
// Written: D. Zarro (SM&A/GSFC) zarro@smmdac.nascom.nasa.gov
// Copied to MSU for XRT Joppelganger by D.McKenzie (03-oct-2006)
//

/////////////////////////////////////////////////////////////////////////////
// restore saved entries into hidden field (in case it gets lost)

function restoreSavedEntry() {
 var cookie=getCookie('saved_entries')
 setText(cookie,'saved_entries')
}

/////////////////////////////////////////////////////////////////////////////
// restore last and saved entries into hidden fields

function restoreEntry() {
 restoreSavedEntry()
 cookie=getCookie('last_entry')
 setText(cookie,'last_entry')
 cookie=getCookie('doy')
 setText(cookie,'doy')
}

///////////////////////////////////////////////////////////////////////////////
// clear out all entry fields

function clearEntry() {
 clearText()
 clearCheck()
 deleteCookie('last_entry')
 deleteCookie('saved_entries')
 deleteCookie('doy') 
 return true
}

//////////////////////////////////////////////////////////////////////////////
// start new entry, saving current entries in cookie

function nextEntry() {

 if (addEntry()) {
  deleteCookie('last_entry')
  deleteCookie('saved_entries')
  deleteCookie('doy')
  var expdate = new Date();
  expdate.setTime(expdate.getTime() + (86400 * 1000 * 1));
  setCookie('saved_entries',getText('saved_entries'),expdate)
  setCookie('last_entry',getMain(),expdate)
  setCookie('doy',getText('doy'),expdate)
  self.location='./trace_add.html'
 }
}
              
//////////////////////////////////////////////////////////////////////////////
// check for required entries

function checkEntry() {
 var missing='' 
 var current=getText('saved_entries')
 if (isBlank(current)) {
  var description=getText('description')
  if (isBlank(description)) {
   missing+='Description \n'
   setFocus('Description')
  }
  var relevance=getText('relevance')
  var jop=getText('JOP')
  var campaign=getText('campaign')
  var dates=getDates(1)
  if (isBlank(dates)) {
   missing+='DOY/Date values \n'
  }
 }
 var times=getTimes(1)
 if (isBlank(times)) {
  missing+='Start/End Time values \n'
 }
 if (!isBlank(missing)) {missing='\n'+missing}
 return missing
}

/////////////////////////////////////////////////////////////////////////////
// get DOY/Date

function getDates(check) {
 var startday=getSelect('startday')
 var startmonth=getSelect('startmonth')
 var startyear=getSelect('startyear')
 var endday=getSelect('endday')
 var endmonth=getSelect('endmonth')
 var endyear=getSelect('endyear')
 if (defined(check)) {
  if (isBlank(startday) || isBlank(startmonth) || isBlank(startyear)) {
   return ''
  }
 }
 return 'Dates: '+startday+'-'+startmonth+'-'+startyear+' to '+endday+'-'+endmonth+'-'+endyear
}

/////////////////////////////////////////////////////////////////////////////
// get Start/End times

function getTimes(check) {  
 var starttime=getText('starttime')
 var endtime=getText('endtime')
 var time_preference=getSelect('time_preference')
 if (defined(check)) {
  if (isBlank(starttime) || isBlank(endtime)) {return ''}
 }
 return 'Times: '+starttime+' - '+endtime+',  '+time_preference
}

//////////////////////////////////////////////////////////////////////////////
// get form Header

function getHeader() {
 var header='** Preview only--not submitted yet! ** \n \n'
 var comments='Description: '+getText('description')+' \n \n'
 var relevance='Relevance: '+getText('relevance')+'\n\n'
 return header+comments+relevance
}

////////////////////////////////////////////////////////////////////////////
// get pointing

function getPoint() {
 var result='(x,y)=('
 var xcen=getText('xcen')
 var ycen=getText('ycen')
 if (isBlank(xcen)) {xcen='0'}
 if (isBlank(ycen)) {ycen='0'}
 result+=xcen+', '+ycen+')'
 if (isChecked('tracking')) {result+=' with tracking'}
 return result
}

////////////////////////////////////////////////////////////////////////////
// get main form entry

function getMain() { 
 var main=''
 main+=' JOP '+getText('JOP')+'  ' 
 main+='C '+getText('campaign')+'\n'
 main+='Contact: '+getText('contact_person')+'\n'
 main+=getText('contact_email')+'\n\n'
 main+=getDates()+'\n'
 main+=getTimes()+'\n\n'
 main+='Duration: '+getText('duration')+'\n\n'
 main+='Target type: '+getChecked('target')+'\n'   
 main+='Location: '+getText('location')+'\n\n'
 main+='PRIMARY OBSERVATIONS\n'
 main+='--------------------\n'
 main+='Filters: '+getChecked('wave')+'\n' 
 main+='Cadence: '+getText('cadence')+' seconds \n'  
 main+='Continuity:  No gaps longer than '+getText('maxgap')+' minutes\n\n'
 main+='Exposure depth: '+getSelect('exposure')+'\n'
 main+='AEC: '+getSelect('AEC')+'\n'
 main+='Resolution: '+getSelect('res')+'\n'     
 main+='Field of View: '+getText('fov')+'\n\n'
 main+='CONTEXT IMAGES\n'
 main+='--------------\n'
 if (isChecked('no_context')) {main+='  No Context\n\n'}
 if (!isChecked('no_context')) {
  main+='Filters: '+getChecked('cwave')+'\n'
  main+='Context frequency: '+getText('context_freq')+' cycles \n'
  main+='Exposure depth: '+getSelect('cexposure')+'\n'
  main+='AEC: '+getSelect('cAEC')+'\n'
  main+='Resolution: '+getSelect('cres')+'\n'
  main+='Field of View: '+getText('cfov')+'\n\n'
  }
 main+='Other Hinode Instruments: '+getChecked('other_hinode')
 return main+' \n \n'
}

//////////////////////////////////////////////////////////////////////////////
// get combined form entry

function getEntry() {
 var header=''
 var current=getText('saved_entries')
 if (!defined(current)) {current=''}
 if (isBlank(current)) {header=getHeader()}
 return header+=getMain()
}

//////////////////////////////////////////////////////////////////////////////
// add form entry to SAVED_ENTRIES field in form

function addEntry(bypass) {

 var missing=checkEntry()
 var entry=getEntry()
 var last_entry=getText('last_entry')
 
// do not add if a duplicate


//alert(last_entry)
//alert(entry)

 if (!isBlank(last_entry)) {

  if (trim(last_entry) == trim(entry)) {
   if (defined(bypass)) {return true}
   alert('Identical entry saved previously.')
   return false
  }
 }

// check for missing fields

 if (!isBlank(missing)) {
  if (defined(bypass)) {
   var ans=confirm('\n Current entry is incomplete. \n' +
                   ' Pressing "OK" will Submit all saved entries. \n'+
                   ' Pressing "Cancel" will allow you to complete current entry.')
   if (ans) {return true}
  }
  alert('Following fields are missing from current entry: \n'+missing)
  return false
 }

 if (isBlank(entry)) {
  alert('All fields are currently empty.')
  return false
 }

 setText(entry,'last_entry')
 var current=getText('saved_entries')
 entry=current+' \n \n'+entry
 setText(entry,'saved_entries') 
 return true

}

///////////////////////////////////////////////////////////////////////////////
// preview TRACE form elements

function viewEntry(all) {


// if ALL is passed then view what is currently saved in SAVED_ENTRIES
// else view current entry only
 
 var entry=''
 if (!defined(all)) {
  entry=getEntry()
  if (isBlank(entry)) {
   alert('All fields are currently empty.')
   return false
  }
 } else {
  entry=getText('saved_entries')
  if (isBlank(entry)) {
   alert('No entries currently added.')
   return false
  }
 }

 var header='<html><body bgcolor="white"><center>'
 header+='<form><b> \n'
 header+='&nbsp &nbsp <input type="button" value="Close" onClick="self.close();"><br> \n'
 header+='</b></form> \n'
 header+='</center><hr noshade><br><b><font size=+1><pre> \n'
 header+=entry
 header+='</font></b></pre></body></html>'

// send display to popup window

 popup(header,'700','750','trace_form_submission',1)
  
 return true

}

///////////////////////////////////////////////////////////////////////////////
// submit TRACE form elements

function submitEntry(bypass) {


 var adder='self.opener.addEntry()'
 if (defined(bypass)) {
  adder='self.opener.addEntry(1)'
 }
  
 var entry=getEntry()
 var current=getText('saved_entries')
 var contents='<html>'
 contents+='<body bgcolor="white"><center>'
 contents+='<form><b> \n'
 contents+='<input type="button" value="Accept" onClick="if ('+adder+') {self.opener.document.forms[0].submit()}; self.close();"> \n'
 contents+='&nbsp &nbsp<input type="button" value="Cancel" onClick="self.close(); return false;"> \n'
 contents+='&nbsp <input type="button" value="Print" onClick="self.print();"> \n'
 contents+='<p><h2>Following entry will be submitted:</h2> \n'
 contents+='<br></b></form> \n'
 contents+='</center><hr noshade><br><b><font size=+1><pre> \n'
 contents+=current+' \n '+entry
 contents+='</font></b></pre></body></html>'

 popup(contents,'700','750','trace_form_submission',1)
  
 return false

}
// -->
