var http = getHTTPObject();
var http2 = "";
var lc_http = "";

function getHTTPObject()
{
 var xmlhttp;
 /*@cc_on
 @if (@_jscript_version >= 5)
  try {
   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     } catch (E) {
       xmlhttp = false;
      }
    }
 @else
 xmlhttp = false;
 @end @*/
 if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
  try {
   xmlhttp = new XMLHttpRequest();
  } catch (e) {
    xmlhttp = false;
    }
 }
return xmlhttp;
} //end getHTTPObject

/*used to determine if user presses return key.
 *if so call calculate button on option they are using.
 * from http://www.java-scripts.net/javascripts/Secret-Alert-Popup.phtml
  */
var nav=navigator.appName;
var ns=(nav.indexOf("Netscape")!=-1);

//determine action if user hits return/enter key
if(ns) {
 if(document.layers) {
  document.captureEvents(Event.KEYPRESS);
  document.onkeypress = getkey;
 }
}
else {
 document.onkeypress = getkey;
}

function getkey(keyStroke) {
 var eventChooser = (ns)?keyStroke.which: event.keyCode;
 if(eventChooser == '13') {
  query_data();
 }
}

function get_data() {
 var table_name = document.getElementById("use_table").value;
 var params = "num=1&table_name=" + table_name; 
 var pos = table_name.indexOf("cross_section");
 if(pos > -1) {
  params+= "&plot_type=cross_section"; 
 }
 else {
  params+= "&plot_type=stats";
 }
 http = getHTTPObject();
 http.open("POST","../getListOfGases.php",true);
 http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 http.setRequestHeader("Content-length", params.length);
 http.setRequestHeader("Connection", "close");
 http.onreadystatechange = handle_data_output;
 http.send(params);
} //end get_data function

function handle_data_output() {
 if(http.readyState == 4) {
  var xmlDocument = http.responseXML;
  var counter = 0;
  var range_opt_span = document.getElementById("range_opt_span");
  var thresh_div = document.getElementById("db_threshold_div");
  var stats_div = document.getElementById("db_stats_div");
  var output = "";
  var mol_str = "";
  var molecules = xmlDocument.getElementsByTagName("molecules").item(0);
  var numMol = molecules.childNodes.length;
  var plot_type = xmlDocument.getElementsByTagName("plot_type").item(0).firstChild.data;
  var opt_str = "";
  if(plot_type == "cross_section") {
   thresh_div.className = "cell_hide";
  opt_str+="<table style=\"width:275px;\" class='ll2'><tr><th colspan='2'>\n";
  opt_str+="<div class='hdr'>Options</div></th></tr>\n";
  opt_str+="<tr><td>&nbsp;&nbsp;Data File Format</td><td>\n";
  opt_str+="<SELECT name='db_df_type' id='db_df_type' style=\"width:85;\"><OPTION value=\"hitran\">HITRAN</OPTION><OPTION value=\"csv\">CSV</OPTION><OPTION value=\"tsv\">TSV</OPTION></SELECT></td>";
  opt_str+="</tr></table></td></tr></table>\n";
   if(parseInt(numMol) > 0) {
    mol_str+="<SELECT id='db_gaslist' name='db_gaslist' STYLE='width:155px' onChange='updateSpectrum();'>\n";
    var this_mol = ""; 
    var this_mol_id = "";
    for(var j=0; j < numMol; j++) {
     this_mol = molecules.getElementsByTagName("molecule").item(j).getAttribute("formula");
     this_mol_id = molecules.getElementsByTagName("molecule").item(j).getAttribute("id");
     mol_str+= "<OPTION value=" + this_mol_id + ">" + this_mol + "</OPTION>\n";
    }
    mol_str+= "</SELECT>\n";
   }
   output = "<table align='center' class='ll2' style=\"width:275px;\">\n";
   output+="<tr><th align='center' colspan='2'><div class='hdr' align='center'>\n";
   output+="Species</div></th></tr><tr align='center' ><td class='ll2' style=\"padding:5px;\">Gas</td><td class='ll2'>\n";
   output+= mol_str + "</tr><tr align='center' ><td class='ll2'>Spectrum</td><td class='ll2'><SELECT STYLE='width:155px' id='db_isotopelist' name='db_isotopelist'>\n";
   var spectrum = xmlDocument.getElementsByTagName("spectrum").item(0);
   var this_spec = "";
   var this_spec_id = "";
   for(var sp=0 ; sp < spectrum.childNodes.length; sp++) {
    this_spec = spectrum.getElementsByTagName("spec").item(sp).firstChild.data;
    this_spec_id = spectrum.getElementsByTagName("spec").item(sp).getAttribute("id");
    output+="<OPTION value='" +  this_spec_id + "'>" + this_spec + "</OPTION>\n";
   }
   output+="</SELECT></td></tr></table>";
  }
  else {
   opt_str = "<table border='0' style=\"width:625px;\"><TR valign='top' align='center'><TD>";
   opt_str+="<table class='ll2' style=\"width:305px;\"><th colspan='2'><div class='hdr'>Spectral Range</div></th>";
   opt_str+="<tr valign='top'><td>&nbsp;&nbsp;Units:</td>";
   opt_str+="<td><select name='db_units' id='db_units' onChange='change_units();' style=\"width:125;\"><OPTION value='wavenumber'>Wavenumber</OPTION>";
   opt_str+="<OPTION value='microns'>Microns</OPTION></SELECT></td></tr>";
   opt_str+="<tr valign='top'><td><div id='min_wave'>&nbsp;&nbsp;Lower&nbsp;Limit&nbsp;&nbsp;</div></td>";
   opt_str+="<td><input type='text' name='min_freq' id='min_freq' value='2000' size='10'><span id='db_ll_div'>&nbsp;cm<sup>-1&nbsp;</sup></div></td></tr>";
   opt_str+="<tr><td><div id='max_wave'>&nbsp;&nbsp;Upper&nbsp;Limit&nbsp;&nbsp;</div></td>";
   opt_str+="<td><input type='text' name='max_freq' id='max_freq' value='2100' size='10'><span id='db_ul_div'>&nbsp;cm<sup>-1&nbsp;</sup></div></td></tr>";
   opt_str+="<tr><td colspan='2' align='center'><font size='-1'><span id='db_range_limits'>(0-60,000 cm<sup>-1</sup>)</span><br>Intervals with many lines may take<br>several minutes.</font></td></tr></table></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>";
   opt_str+="<table style=\"width:275px;\" class='ll2'><tr><th colspan='2'>";
   opt_str+="<div class='hdr'>Options</div></th></tr><tr><td>&nbsp;&nbsp;Display&nbsp;Summary&nbsp;Table</td><td>";
   opt_str+="<select id='ed_summary' name='ed_summary' style=\"width:85px;\"><OPTION value='no'>No</OPTION><OPTION value='yes'>Yes</OPTION></SELECT>";
   opt_str+="</td></tr><tr><td colspan='2'><BR></td></tr></tr><td>&nbsp;&nbsp;Data File Format</td><td>";
   opt_str+="<SELECT name='db_df_type' id='db_df_type' style=\"width:85;\"><OPTION value=\"hitran\">HITRAN</OPTION><OPTION value=\"csv\">CSV</OPTION></SELECT></td>";
   opt_str+="</tr></table></td></tr></table>";
   opt_str+="<br><br></td></tr></table>";
   thresh_div.className='cell_show';
   output = "<table style=\"width:735px;\"><tr><td><table align=\"center\"><tr><th><div class='hdr'>Species</div></th></tr><tr><td>\n";
   output+= "<table class='molecule' style=\"width:705px;\" align='center'><tr>\n";
   if(parseInt(numMol) > 0) {
    var this_mol = ""; 
    var this_mol_id = "";
    var mol_and_id = "";
    for(var j=0; j < numMol; j++) {
     this_mol = molecules.getElementsByTagName("molecule").item(j).getAttribute("formula");
     this_mol_id = molecules.getElementsByTagName("molecule").item(j).getAttribute("id");
     mol_and_id = this_mol + "_" + this_mol_id;
     if(j == 0) {
      output+= "<td><input type='checkbox' id='molecules' name='molecules' value='" + mol_and_id + "' checked><a class='mol_over' onmouseover=\"className='mol_out'\" onmouseout=\"className='mol_over'\" onClick='change_clicked(\"" + j + "\")'>" + this_mol + "</a></input></td>\n"; 
     }
     else {
      output+= "<td><input type='checkbox' id='molecules' name='molecules' value='" + mol_and_id + "')'><a class='mol_over' onmouseover=\"className='mol_out'\" onmouseout=\"className='mol_over'\" onClick='change_clicked(\"" + j + "\")'>" + this_mol + "</a></input></td>\n"; 
     }
     counter = counter + 1;
     if(counter == 6) {
      output+= "</tr><tr>";
      counter = 0;
     }
    }
    var cspan = 6; 
    if(numMol < 6) {
     cspan = numMol;
    }
    output+="<tr align='center'><td colspan=" + cspan + "><br><input type='button' onClick='change_clicked(\"all\");' value='All' >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
    output+="<input type='button' onClick='change_clicked(\"clear\");' value='Clear'>&nbsp;<br><br></td>\n";
    output+="</tr></table>\n";
  }
  }//end else (plot_type != cross_section)
  stats_div.innerHTML = output;
  range_opt_span.innerHTML = opt_str;
 } //end readystate = 4
} //end handle_data_output function


//this function will either put a check next to all buttons or clear checks from users display.
function change_clicked(click_action) {
 var boxes_checked = document.forms['hitran_form'].elements['molecules'];
 var boxes_length = boxes_checked.length;
 if(click_action == "clear") {
  for(var c=0; c < boxes_length; c++) {
   boxes_checked[c].checked = false;
  }
 } //end if
 else if(click_action == "all") {
  var boxes_length2 = boxes_length;
  for(var a=0; a < boxes_length2; a++) { 
   boxes_checked[a].checked = true;
  }
 } //end else if
 else {
  if(document.getElementById("use_table").value != "hitemp_supplemental") {
   if(boxes_checked[click_action].checked == true) {
    boxes_checked[click_action].checked = false;
   }
   else {
    boxes_checked[click_action].checked = true;
   }
  }
}
} //end function change_clicked

function query_data()
{
 var table_name = document.getElementById("use_table").value;
 var out = "<db_info><type>data</type><db_table>" + table_name + "</db_table>";
 var validation = "true";
 if(table_name.indexOf("cross_section") > -1) {
  var db_format = document.getElementById("db_df_type").value;
  var cross_sec_gas = document.getElementById("db_gaslist").value;
  var cross_sec_spec = document.getElementById("db_isotopelist").value;
  out+="<db_format>" + db_format + "</db_format><cross_gas>" + cross_sec_gas + "</cross_gas>";
  out+= "<cross_spec>" + cross_sec_spec + "</cross_spec>";
 }
 else {
  var boxes_checked = document.forms['hitran_form'].elements['molecules'];
  var boxes_length = 0;
  var counter1 = 0;
  var all_cked = "false";
  var one_gas = false;
  boxes_length = boxes_checked.length;
  var db_units = document.getElementById("db_units").value;
  if(isNaN(parseInt(boxes_length))) {
   counter1 = 1;
   one_gas = true;
   all_cked = "true";
  }
  else if(boxes_length>0) {
   for(var cv=0; cv < boxes_length; cv++) {
    if((boxes_checked[cv].checked) == true)  {
      counter1 = parseInt(counter1) + 1;
    }
   } //end for loop
  if(counter1 == boxes_length) {
   all_cked = "true";
  } 
  } //end if boxes_length > 0
  else {
    counter1 = 0;
  }
  //make sure at least one check box is pressed.
  if(counter1 <1) {
   window.alert("At least one checkbox must be checked.");
  }
  else {
   var min_freq = document.getElementById("min_freq").value;
   var max_freq = document.getElementById("max_freq").value;
   var intensity =document.getElementById("db_threshold").value;
   var min_valid = "true";
   var max_valid = "true";
   var inten_valid = "true";
   var min_less_max = "true";
   var error_string = "<center><u><strong>ERRORS</strong</u><BR>";
   // if microns--convert to wavenumbers.
   if(db_units == "microns") {
    if((parseFloat(min_freq) < 0) || (isNaN(parseFloat(min_freq))))   {
     error_string+= "Lower Limit must be greater than 0 &nbsp;&#181;m&nbsp;<br>";
     validation = "false";
    }
    if((parseFloat(max_freq) < 0) || (isNaN(parseFloat(max_freq))))   {
     error_string+= "Upper Limit must be greater than 0 &nbsp;&#181;m&nbsp;<br>";
     validation = "false";
    }
    if(parseFloat(min_freq) == 0)  {
     min_freq = 0.16;
    }
    if(parseFloat(max_freq) == 0)   {
     max_freq = 0.16;
    }
   } //end if units - microns
   else   {
     if((parseFloat(min_freq) < 0) || (isNaN(parseFloat(min_freq))) || (parseFloat(min_freq) > 60000))  {
     error_string+= "Lower Limit must be between 0 and 60000 cm<sup>-1</sup><br>";
     validation = "false";
    }
    if((parseFloat(max_freq) < 0) || (isNaN(parseFloat(max_freq))) || (parseFloat(max_freq) > 60000))  {
     error_string+= "Upper Limit must be between 0 and 60000 cm<sup>-1</sup><br>";
     validation = "false";
    }
   }//end else (units != microns )
   if((parseFloat(max_freq) < parseFloat(min_freq)) || (parseFloat(max_freq) == parseFloat(min_freq)))  {
    error_string+= "Lower Limit must be less than the Upper Limit.<br>";
    validation = "false";
   }
   if(isNaN(parseFloat(intensity))) {
    intensity = 0;
   }
   if(parseFloat(intensity) < 0)  {
    validation = "false";
    inten_valid = "false";
    error_string+= "Threshold must be greater than 0.<BR>";
   }
   else   {
    inten_valid = "true";
   }
    out+="<num_mols_selected>" + counter1 + "</num_mols_selected><units>" + db_units + "</units>";
    var df_format = document.getElementById("db_df_type").value;
    var summ_tbl = document.getElementById("ed_summary").value;
    out+= "<db_format>"+df_format+"</db_format><summ_tbl>"+summ_tbl+"</summ_tbl><all_cked>"+all_cked+"</all_cked>";
    var mol_and_id = "";
    var mol_id_array = "";
    var mol_name = "";
    var mol_id = "";
    if(one_gas == true) {
     mol_and_id = boxes_checked.value;
     mol_id_array = mol_and_id.split("_");
     mol_name = mol_id_array[0];
     mol_id = mol_id_array[1];
     mol_id = parseInt(mol_id);
     out+="<gas name='" + mol_name + "'>" +  mol_id + "</gas>";
    }
    else {
     for(var lcv=0; lcv < boxes_length; lcv++)    {
      if((boxes_checked[lcv].checked) == true)  {
       mol_and_id = boxes_checked[lcv].value;
       mol_id_array = mol_and_id.split("_");
       mol_name = mol_id_array[0];
       mol_id = mol_id_array[1];
       mol_id = parseInt(mol_id);
       out+="<gas name='" + mol_name + "'>" +  mol_id + "</gas>";
     } //end if
    } //end for
   } //end else.
   out+="<LL>" + min_freq + "</LL><UL>" + max_freq + "</UL><intensity>" + intensity +"</intensity>"; 
  } //end else
 } //end else pox !< -1
 if(validation == "false")  {
   error_string = error_string + "</center>";
   var output_div = document.getElementById("output_div");
   output_div.innerHTML = "<font color='red'>" + error_string +"</font><br><br><br>";
 } //end validation = false
 else  {  
  var remote_addr = document.getElementById("calc_remote_addr").value;
  var remote_host = document.getElementById("calc_remote_host").value;
  var user_agent = document.getElementById("calc_user_agent").value;
   out+= "<r_addr>"+remote_addr+"</r_addr><r_host>"+remote_host+"</r_host><user_agent>"+user_agent + "</user_agent>"; 
   var div1 = document.getElementById("progress_div");
   var div_string = "<center><img src='../images/loading.gif'><br><font color='#004D8F' size='+1'><b>Extracting</b></font></center>";
   document.body.style.cursor = 'wait';
   document.getElementById("db_ext_submit").disabled = true;
   div1.innerHTML = "";
   div1.innerHTML = div_string;
   out = "db_xml=" + out + "</db_info>";
   document.getElementById("output_div").innerHTML = "";
   http2 = getHTTPObject();
   http2.open("POST","get_stats.php",true);
   http2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   http2.setRequestHeader("Content-length", out.length);
   http2.setRequestHeader("Connection", "close");
   http2.onreadystatechange = show_database_results; 
   http2.send(out);   
  } 
} //end function query data

function show_database_results() {
 if(http2.readyState == 4) {
 document.body.style.cursor = 'default';
 document.getElementById("db_ext_submit").disabled = false;
 var div1= document.getElementById("progress_div");
 div1.innerHTML = "";
 var xmlDocument = http2.responseXML;
 var plot_type = xmlDocument.getElementsByTagName("type").item(0).firstChild.data;
 var summ_tbl = "no";
 var output_file = xmlDocument.getElementsByTagName("fn").item(0).firstChild.data;
 if(plot_type != "cross_section") {
  var summ_tbl = xmlDocument.getElementsByTagName("summ_tbl").item(0).firstChild.data;
  var num_mols = xmlDocument.getElementsByTagName("num_of_mols").item(0).firstChild.data
 } //end plot_type != cross_section
 var rnum = xmlDocument.getElementsByTagName("rnum").item(0).firstChild.data
 var remind = xmlDocument.getElementsByTagName("remind").item(0).firstChild.data
 var output_string = "";
 if(rnum >= 50) {
  document.getElementById("db_ext_submit").disabled = true;
  if(plot_type != "cross_section") {
   popUp2("daily_max", "db_brwDT");
  }
  else {
   popUp2("daily_max", "db_brwDTxs");
  }
 }  //end if rnum >=50 
 else 
 {
  output_string+= "<a href='plots/" + output_file + "' target='_blank'>View Lines</a><br>To save file right click on the link and choose \"Save As\"";
  if(summ_tbl == "yes") {
  var num_lines = xmlDocument.getElementsByTagName("num_of_lines").item(0).firstChild.data;
  if(num_lines > 0) {
   output_string+= "<br><br><table border='1' style='border-color:#cccccc; border-collapse:collapse; padding:2px;'><tr>";
   output_string+= "<th style='padding-left:5px; padding-right:5px; padding-top:3px; padding-bottom:3px;'>Molecule</th>";
   output_string+= "<th style='padding-left:5px; padding-right:5px;'>Isotopologue</th>";
   output_string+= "<th style='padding-left:5px; padding-right:5px;'>Lines</th>";
   output_string+= "<th style='padding-left:5px; padding-right:5px;'>Min. Intensity</th>";
   output_string+= "<th style='padding-left:5px; padding-right:5px;'>Max Intensity</th>";
   output_string+= "<th style='padding-left:5px; padding-right:5px;'>Avg. Intensity</th></tr>";
   var mol_val = "";
   var id_val = "";
   var molecule_and_id = "";
   var total_counter = "";
   var iso_val = "";
   var iso_formula = "";
   var iso_num = "";
   var iso_max_intensity = "";
   var iso_min_inten = "";
   var iso_count = "";
   var iso_avg = "";
   var iso_avg2 = "";
   var iso_output_string = "";
   var total_max_inten = "";
   var total_avg_inten = "";
   var total_min_inten = "";
   var total_avg_inten2 = "";
   for(var x=0; x < num_mols; x++)  {
    mol_val = xmlDocument.getElementsByTagName("molecule_name" + x).item(0).firstChild.data;
    id_val = xmlDocument.getElementsByTagName("molecule_id" + x).item(0).firstChild.data;
    molecule_and_id = id_val + "&nbsp;&nbsp;&nbsp;&nbsp;" + mol_val;
    total_counter = xmlDocument.getElementsByTagName("molecule" + x + "_total_lines").item(0).firstChild.data;
    if(total_counter > 0)   {
     iso_val = xmlDocument.getElementsByTagName("num_isos_molecule" + x).item(0).firstChild.data;
     for(var i=0; i < iso_val; i++)  {
      iso_formula = xmlDocument.getElementsByTagName("iso" + i + "_formula_molecule" + x).item(0).firstChild.data;
      iso_num = xmlDocument.getElementsByTagName("iso" + i + "_number" + x).item(0).firstChild.data;
      iso_max_intensity = xmlDocument.getElementsByTagName("iso" + i + "_inten_molecule" + x).item(0).firstChild.data;
      iso_min_inten = xmlDocument.getElementsByTagName("iso" +  i + "_min_inten" + x).item(0).firstChild.data;
      iso_count = xmlDocument.getElementsByTagName("iso" + i + "_count_molecule" + x).item(0).firstChild.data;
      iso_avg = xmlDocument.getElementsByTagName("iso" + i + "_avg_molecule" + x).item(0).firstChild.data;
      iso_avg2 = parseFloat(iso_avg).toPrecision(4);
      iso_output_string = iso_num + "&nbsp;&nbsp;&nbsp;&nbsp;" + iso_formula;
      output_string+= "<TR><td>" + molecule_and_id + "&nbsp;&nbsp;</td><td>&nbsp;" + iso_output_string + "&nbsp;&nbsp;</td>";
      output_string+= "<td style='padding-left:5px;'>" + iso_count + "&nbsp;&nbsp;</td><td style='padding-left:5px;'>" + iso_min_inten + "</td>";
      output_string+= "<td style='padding-left:5px;'>" + iso_max_intensity + "</td>";
      output_string+= "<td style='padding-left:5px;'>" + iso_avg2 + "</td></tr>";
     } //end 'i' for loop
     var total_max_inten = xmlDocument.getElementsByTagName("molecule" + x + "_total_max_inten").item(0).firstChild.data;
     var total_avg_inten = xmlDocument.getElementsByTagName("molecule" + x + "_total_avg_inten").item(0).firstChild.data;
     var total_min_inten = xmlDocument.getElementsByTagName("molecule" + x + "_total_min_inten").item(0).firstChild.data;
     var total_avg_inten2 = parseFloat(total_avg_inten).toPrecision(4);
     output_string+= "<tr><td style='padding-left:5px;'><strong>" + molecule_and_id + "</strong></td>\n";
     output_string+= "<td style='padding-left:5px;'><strong>&nbsp;ALL</strong></td>\n"; 
     output_string+= "<td style='padding-left:5px;'><strong>" + total_counter + "</strong></td>\n";
     output_string+= "<td style='padding-left:5px;'><strong>" + total_min_inten + "</strong></td>\n";
     output_string+= "<td style='padding-left:5px;'><strong>"  + total_max_inten + "</strong></td>\n";
     output_string+= "<td style='padding-left:5px;'><strong>" + total_avg_inten2 + "</strong></td></tr>\n";
    } //end if that checks to make sure the molecule has at least 1 lines as a result.
    else
    {
     output_string+= "<TR><td style='padding-left:5px;'><strong>" + molecule_and_id + "</strong>&nbsp;&nbsp;</td>";
     output_string+= "<td style='padding-left:5px;'><strong>&nbsp;ALL&nbsp;&nbsp;</strong></td>";
     output_string+= "<td style='padding-left:5px;'><strong>0&nbsp;&nbsp;</strong></td>";
     output_string+= "<td style='padding-left:5px;'><strong>0&nbsp;&nbsp;</strong></td>";
     output_string+= "<td style='padding-left:5px;'><strong>0&nbsp;&nbsp;</strong></td>";
     output_string+= "<td style='padding-left:5px;'><strong>0&nbsp;&nbsp;</strong></td></tr>";
    } //end else
   }//end 'x' for loop
   var total_band_avg = xmlDocument.getElementsByTagName("total_band_avg").item(0).firstChild.data;
   var total_max_intensity = xmlDocument.getElementsByTagName("total_max_intensity").item(0).firstChild.data;
   var total_min_intensity = xmlDocument.getElementsByTagName("total_min_intensity").item(0).firstChild.data;
   total_band_avg = parseFloat(total_band_avg).toPrecision(4);
   total_max_intensity = parseFloat(total_max_intensity).toPrecision(4);
   output_string+= "<tr><TD style='padding-left:5px;'><strong>TOTAL:</strong></TD>";
   output_string+= "<td style='padding-left:5px;'><strong>&nbsp;ALL</strong></td>";
   output_string+= "<td style='padding-left:5px;'><strong>" + num_lines + "</strong></td>";
   output_string+= "<td style='padding-left:5px;'><strong>" + total_min_intensity + "</strong></td>";
   output_string+= "<td style='padding-left:5px;'><strong>" + total_max_intensity  + "</strong></td>";
   output_string+= "<td style='padding-left:5px;'><strong>" + total_band_avg + "</strong></td></tr>";
   output_string+= "</table><br>";
  } //end number of lines != 0.
  else
  {
   output_string+= "<font color='ff0000'><strong>No Lines were found. <br>Please choose";
   output_string+=" different molecules or adjust the wavenumbers and/or intensity.</strong></font><br><br>";
  }
 } //end summ_tbl == "yes"
  if(remind == "yes") {
  if(plot_type != "cross_section") {
   popUp2("daily_max", "db_brwDT");
  }
  else {
   popUp2("daily_max", "db_brwDTxs");
  }
   document.getElementById("db_ext_submit").disabled = true;
  } //end remind = yes 
} //end else.
  var output_div = document.getElementById("output_div");
  output_div.innerHTML = "";
  output_div.innerHTML = output_string;
} //end readyState = 4
}//end show_database_results function

function change_units()
{
 var span_txt = "";
 var calc_unit = document.getElementById("db_units").value;
 var db_range_limits = document.getElementById("db_range_limits");
 if(calc_unit == "microns")
 {
  span_txt = "&nbsp;&#181;m&nbsp;&nbsp;&nbsp;";
  db_range_limits.innerHTML = "( > 0.16&nbsp;&#181;m&nbsp;)";
 }
 else
 {
  span_txt = "&nbsp;cm<sup>-1</sup>&nbsp;";
  db_range_limits.innerHTML = "(0-60,000 cm<sup>-1</sup>)";
 }
 document.getElementById("db_ll_div").innerHTML = span_txt;
 document.getElementById("db_ul_div").innerHTML = span_txt; 
 document.getElementById("min_freq").value = "";
 document.getElementById("max_freq").value = ""; 
}

function close_popup() {
 document.getElementById("db_ext_submit").disabled = false;
 popUp2("remind", "db_brw");
} //end close popup

function close_popup_go_home() {
  popUp2("daily_max", "db_brw");
  window.location = "../info/about.php";
} //end close popup go home


//this function will get the last calculation done during this session and load it on the page.
function load_last_calc() {
 var remote_addr = document.getElementById("calc_remote_addr").value; 
 var out = "tool=dbd&r_addr=" + remote_addr;
 lc_http = getHTTPObject();
 lc_http.open("POST", "../last_calc.php", true);
 lc_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 lc_http.setRequestHeader("Content-length", out.length);
 lc_http.setRequestHeader("Connection", "close");
 lc_http.onreadystatechange = load_calc;
 lc_http.send(out);
}


function load_calc() {
 if(lc_http.readyState == 4) {
  var xmlDocument = lc_http.responseXML;
  var ext = xmlDocument.getElementsByTagName('calc').item(0).firstChild.data;
  if(ext != "None") {
   var db_table = xmlDocument.getElementsByTagName("db_table").item(0).firstChild.data;
   var pos = db_table.indexOf("cross_section");
   if(pos > -1) {
    get_data();
   }
   else {
   var ll = xmlDocument.getElementsByTagName("LL").item(0).firstChild.data;
   document.getElementById("min_freq").value = ll;
   var ul = xmlDocument.getElementsByTagName("UL").item(0).firstChild.data;
   document.getElementById("max_freq").value = ul;

   var db_list = document.getElementById("use_table");
   for(var d=0; d < db_list.length; d++) {
    if(db_list[d].value == db_table) {
     db_list.selectedIndex = d;
     break
    }
   } 
   var gas_array = new Array();
   var gas_tag = xmlDocument.getElementsByTagName("gas");
   for(var gt=0; gt < gas_tag.length; gt++) {
    gas_array[gt] = gas_tag.item(gt).firstChild.data;
   }
   var mol_tag = xmlDocument.getElementsByTagName('molecule');
   var mol_id = "";
   var mol_form = "";
   var mol_Iarray = new Array();
   var mol_Farray = new Array();
   for(var w=0; w < mol_tag.length; w++) {
    mol_id = mol_tag.item(w).getAttribute("id");
    mol_Iarray[w] = mol_id;
    mol_form = mol_tag.item(w).getAttribute("formula"); 
    mol_Farray[w] = mol_form;
   }
   var output = "<table style=\"width:705px;\"><tr><td><table class=\"ll2\" align=\"center\"><tr><th><div class='hdr'>Species</div></th></tr><tr><td>\n";
   output+= "<table class='molecule' style=\"width:705px;\" align='center'><tr>\n";
   var mol_and_id = "";
   var indOf = "-1";
   var counter = 0;
   for(var j=0; j < mol_tag.length; j++) {
    indOf = "-1";
    mol_and_id = mol_Farray[j] + "_" + mol_Iarray[j];
    for(var idx=0; idx<gas_array.length; idx++){
    if(mol_Iarray[j]==gas_array[idx]){
      indOf = idx;
      break;
     } //end if loop
    } //end for loop
    output+= "<td><input type='checkbox' id='molecules' name='molecules' value='" + mol_and_id + "' ";
    if(indOf != "-1") {
     output+= "checked ";
    }
    output+= " ><a class='mol_over' onmouseover=\"className='mol_out'\" onmouseout=\"className='mol_over'\" onClick='change_clicked(\"" + j + "\")'>" + mol_Farray[j] + "</a></input></td>\n"; 
    counter = counter + 1;
    if(counter == 8) {
     output+= "</tr><tr>";
     counter = 0;
    }
   } //end for loop
    var cspan = 8; 
    if(mol_tag.length < 8) {
     cspan = mol_tag.length;
    }
    output+="<tr align='center'><td colspan=" + cspan + "><br><input type='button' onClick='change_clicked(\"all\");' value='All' >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
    output+="<input type='button' onClick='change_clicked(\"clear\");' value='Clear'>&nbsp<br><br></td>\n";
    output+="</tr></table>\n";
   document.getElementById("db_stats_div").innerHTML = output;
   var units = xmlDocument.getElementsByTagName("units").item(0).firstChild.data; 
   if(units == "wavenumber") { 
    document.getElementById("db_units").selectedIndex = 0;
   }
   else {
    document.getElementById("db_units").selectedIndex = 1;
   }
   var db_format = xmlDocument.getElementsByTagName("db_format").item(0).firstChild.data; 
   if(db_format == "csv") { 
    document.getElementById("db_df_type").selectedIndex = 1;
   }
   else {
    document.getElementById("db_df_type").selectedIndex = 0;
   }
   var summTbl = xmlDocument.getElementsByTagName("summ_tbl").item(0).firstChild.data; 
   if(summTbl == "no") { 
    document.getElementById("ed_summary").selectedIndex = 0;
   }
   else {
    document.getElementById("ed_summary").selectedIndex = 1;
   }
   var dbInt = xmlDocument.getElementsByTagName("intensity").item(0).firstChild.data; 
   document.getElementById("db_threshold").value = dbInt;
   } //end else (pos !> -1)
  } //end if ext != None
  else {
   get_data();
 }
 }  //end lc_http.readyState = 4
} //end function load_calc

//this function is used to update the spectrum number menu 
function updateSpectrum() {
 var spec_list_number = "db_gaslist";
 var spec_Value="";
 spec_Value = document.getElementById(spec_list_number).value;
 var url = "getSpectrum.php";
 var us_param = "param="+escape(spec_Value);
 http3 = getHTTPObject();
 http3.open("POST", url, true);
 http3.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 http3.setRequestHeader("Content-length", us_param.length);
 http3.setRequestHeader("Connection", "close");
 http3.onreadystatechange = handle_spectrum_update;
 http3.send(us_param);
} //end updateSpectrum function

function handle_spectrum_update() {
 if(http3.readyState == 4)  {
  var xmlDocument = http3.responseXML;
  var total_num = xmlDocument.getElementsByTagName('total_num').item(0).firstChild.data;
  var new_spectrum_array = new Array(total_num);
  var new_spectrum_ids = new Array(total_num);
  var spectrum = xmlDocument.getElementsByTagName("spectrum").item(0);
  var this_spec = "";
  var this_spec_id = "";
  for(var sp=0 ; sp < spectrum.childNodes.length; sp++) {
   this_spec = spectrum.getElementsByTagName("spec").item(sp).firstChild.data;
   this_spec_id = spectrum.getElementsByTagName("spec").item(sp).getAttribute("id");
   new_spectrum_array[sp] = this_spec;
   new_spectrum_ids[sp] = this_spec_id;
  }
  var update_list = "db_isotopelist";
  var list_menu =document.getElementById(update_list);
  update_spectrum_list(list_menu, total_num ,new_spectrum_array, new_spectrum_ids);
 } //end ready state = 4
} //end handle_spectrum_update function

function update_spectrum_list(my_menu,total_num,new_spectrum_array, new_spectrum_ids) {
 nullOptions(my_menu);
 var spec_info = "";
 var spec_id = "";
 with (my_menu){
 for (var z = 0; z <total_num; z++) {
 spec_info = new_spectrum_array[z];
 spec_id = new_spectrum_ids[z];
   options[z] = new Option(spec_info,spec_id);
  }
 } //end with
} //end update_isotopes_list function

function nullOptions(aMenu) {
 var menu_length = aMenu.length;
 for (var i = menu_length; 0 <= i; i--)
 {
   aMenu.options[i] = null;
 }
} //end nullOptions function
