//following variables are used to control the progress bar/div
var blocksize=(250-2)/100;
var loaded=0;
//creates an HTTP request
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;
}

//this function changes the units displayed beside the lower & upper limit bandpass based upon what unit the user chooses.
function unit_chg() {
 var span_txt = "";
 var which_unit = document.getElementById("calc_units").value;
 var ll = document.getElementById("lower_bandpass");
 var ul = document.getElementById("upper_bandpass");
 var iw = document.getElementById("instr_width");
 var ll_val = ll.value;
 var ul_val = ul.value;
 var iw_val = iw.value;
 if(which_unit == "microns") {
   //span_txt = "<a onClick='popUp(event,\"micron\")' class='info_divs'>&#181;m*</a>";
   span_txt = "&#181;m";
   var m1 = 10000/ul_val;
   var m2 =10000/ll_val;
   ll.value = m1;
   ul.value = m2;
   var temp1 = (parseFloat(m1) + parseFloat(m2))/2;
   var temp2 = (Math.pow(temp1,2)*iw_val)/10000;
   iw.value = parseFloat(temp2);
 }
  else {
   span_txt = "<a onClick='popUp(event,\"wavenumber\")' class='info_divs'><font color='blue'>cm<sup><font size='-2'>-1</font></sup>*</font></a>";
   var w1 = 10000/ul_val;
   var w2 =10000/ll_val;   
   ll.value = w1;
   ul.value = w2
   var temp1 = (parseFloat(ul_val) + parseFloat(ll_val))/2;
   var temp2 = (10000/Math.pow(parseFloat(temp1),2))*parseFloat(iw_val);
   iw.value = parseFloat(temp2);
  }
 document.getElementById("calc_ll_unit").innerHTML = span_txt;
 document.getElementById("calc_ul_unit").innerHTML = span_txt; 
 document.getElementById("calc_iw_units").innerHTML = span_txt;
}


//this function takes a select menu as an arguement and emptys it
function nullOptions(aMenu) {
 var menu_length = aMenu.length;
 for (var i = menu_length; 0 <= i; i--) {
   aMenu.options[i] = null;
 }
} //end nullOptions function

/*this function changes the input values based on which source is selected
 *if radiance is selected users can select a source, source is disabled if transmission is selected. */
function source_change() {
var sc = document.getElementById("source_select").value;
 var sc_div = document.getElementById("source_div");
 if(sc == "user_blackbody") {
  sc_div.className="cell_show";
 }
 else if(sc == "default_blackbody") {
  sc_div.className="cell_hide";
 }
 else {
  sc_div.className="cell_hide";
 }
} //end source_change
//this function unchecks the log scale box under 'plot options' if the user selects a transmittance plot.
function check_tran_rad() {
 var log_lin_box = document.getElementById("log_lin_box"); 
 log_lin_box.checked = false;
}

//this function checks to make sure the radiance button is checked before allowing a user to do a log scale plot
function check_log_rad() {
 var tran_or_rad = "";
 for(var a=0; a < 3; a++) {
  if(document.show_info_form.compute[a].checked) {
   tran_or_rad = document.show_info_form.compute[a].value;
  }
 } 
  if(tran_or_rad == "transmission") {
   document.getElementById("login_err_div").innerHTML = "";
   document.getElementById("error_div").innerHTML = "<center><font color='red'>This feature is only allowed on Absorption or Radiance Plots.</center></font>";
   document.getElementById("log_lin_box").checked = false;
  }
}

function clear_plot_area() {
 var plot_div = document.getElementById("display_graph");
 plot_div.innerHTML = "";
}

//this function is used to update the isotope list when a new gas is selected in the gas menu.
function updateIsotope(list_num) {
 var gas_list_number = "gaslist_" + list_num;
 var gasValue = document.getElementById(gas_list_number).value;
 var gas_db = document.getElementById("calc_gas_db").value;
 if(gasValue == "None") {
  var iso_menu = document.getElementById("isotope" + list_num);
  nullOptions(iso_menu);
  with (iso_menu){
   options[0]=null;
   options[0]= new Option("None", "None");
  }
 }
 else {
 var url_params = "db_tbl=" + gas_db + "&num="+list_num+"&param="+escape(gasValue);
 get_iso_http = getHTTPObject();
 get_iso_http.open("POST", "../getIsotope.php", true);
 get_iso_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 get_iso_http.setRequestHeader("Content-length", url_params.length);
 get_iso_http.setRequestHeader("Connection", "close");
 get_iso_http.onreadystatechange = handleIsoResponse;
 get_iso_http.send(url_params);
 }//end else
}

//this function handles the response xml and updates the isotope list of the selected gas.
function handleIsoResponse() {
if (get_iso_http.readyState == 4)  {
  var xmlDocument = get_iso_http.responseXML;
  var total_num = xmlDocument.getElementsByTagName('total_num').item(0).firstChild.data;
  var which_list = xmlDocument.getElementsByTagName('l_n').item(0).firstChild.data;
  var new_isotopes_array = new Array(total_num);
  var iso_tag = xmlDocument.getElementsByTagName("iso");
  var iso_num = "";
  var iso_formula = "";
  var iso_out = "";
  for(var q=0; q < iso_tag.length; q++) {
   iso_num = iso_tag.item(q).childNodes[0].firstChild.data;
   iso_formula = iso_tag.item(q).childNodes[1].firstChild.data;
   iso_out = iso_num + "    " + iso_formula;
   new_isotopes_array[q+1] = iso_out;  
  }
  var update_list = "isotope" + which_list;
  isWorking = false;
  var list_menu =document.getElementById(update_list);
  update_isotopes_list(list_menu, total_num ,new_isotopes_array);
 } //end if readystate = 4 
} //end handleHttpResponse function

/*takes a menu, number of isotopes and the array containing the new isotopes and populates the isotope menu
 * with the new isotope information. */
function update_isotopes_list(my_menu,total_num,new_isotopes_array) {
 nullOptions(my_menu);
 with (my_menu){
 options[0]=null;
 options[0]= new Option("All", "0");
 options[0].selected = true;
 for (var z = 1; z <=total_num; z++) {
 var iso = new_isotopes_array[z];
   options[z] = new Option(iso,iso);
  }
 } //end with
} //end update_isotopes_list function


function get_saved_calculations() {
 var user_name = document.getElementById("user_name").value;
 var user_id = document.getElementById("user_id").value;
 var wl = window.location.href.toString();
 var saved_params = "";
 if(wl.indexOf('spectralcalc.php') != -1) {
  saved_params = "tool=calc";
 }
 else if(wl.indexOf('paths.php') != -1) {
  saved_params = "tool=paths";
 }
 saved_params+= "&user_name=" + user_name + "&user_id=" + user_id + "&action=summary";
 saved_http = getHTTPObject();
 saved_http.open("POST", "../saved_calcs.php", true);
 saved_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 saved_http.setRequestHeader("Content-length", saved_params.length);
 saved_http.setRequestHeader("Connection", "close");
 saved_http.onreadystatechange = saved_calc_result;
 saved_http.send(saved_params);
} //end get_saved_calculations

function saved_calc_result () {
 if(saved_http.readyState == 4) {
  var calcs = "";
  var prof_xml = saved_http.responseXML;
  var num_prof = prof_xml.getElementsByTagName('num_prof').item(0).firstChild.data;
  document.getElementById("saved_calc_div").innerHTML = saved_http.responseText;
  if(num_prof == "0") {
   calcs = "You do not have any saved settings.<br><br><br><br>";
 }
 else {
  var paid = "";
  var prof = "";
  var pname = "";
  var pdate = "";
  var punits = "";
  var plmt = "";
  var pngas = "";
  var pgl = ""; 
  var prof_tag = prof_xml.getElementsByTagName('profiles').item(0);
  var numProf = prof_tag.childNodes.length; 
  calcs = "<table align='center' style=\"width:730px;\"><tr><th></th><th></th>\n";
  calcs+= "<th>Name</th><th>Date</th><th>Bandpass</th><th>Gas List</th></tr>\n";
  for(var x=0; x<numProf; x++) {
   paid = prof_tag.getElementsByTagName("prof").item(x).getAttribute("aid");
   pname = prof_tag.getElementsByTagName("prof").item(x).getAttribute("pname"); 
   pdate = prof_tag.getElementsByTagName("prof").item(x).getAttribute("pdate"); 
   punits = prof_tag.getElementsByTagName("prof").item(x).getAttribute("units"); 
   plmt = prof_tag.getElementsByTagName("prof").item(x).getAttribute("lmt");
   pngas = prof_tag.getElementsByTagName("prof").item(x).getAttribute("ng");
   pgl = prof_tag.getElementsByTagName("prof").item(x).getAttribute("gas");
   if(punits == "microns") {
    plmt = plmt + " &#181;m";
   }
   else {
    plmt = plmt + " cm<sup>-1</sup>";
   }
   calcs+= "<tr align='center'><td style=\"width:15px;\" ><span id='prof_load_" + x +"'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td>";
   calcs+= "<td><input type='radio' value='" + paid + "' name='prof_rad' id='prof_rad" + x + "'";
   if(x == 0) {
    calcs+= " checked";
   }
   calcs+= "></td>\n";
   calcs+= "<td align='left'><a class='setting_out' onmouseover=\"className='setting_over'\" onmouseout=\"className='setting_out'\" onClick='check_saved_setting(\"" + x +"\");'>" + pname + "</a></td><td>" + pdate + "</td>\n";
   calcs+= "<td >" + plmt + "</td><td style=\"width:175px;\">" + pgl + "</td></tr>";
  } //end for loop
  calcs+= "\n<tr><td colspan='6' align='center'><br><input type='image' onClick='load_prof(\"" + numProf + "\"); return false;' src='../images/load.png'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
  calcs+= "\n<input type='image' onClick='del_prof(\"" + numProf + "\"); return false;' src='../images/delete.png'></td></tr>";
  calcs+= "</table><br><br>\n";
  
 }
   document.getElementById("saved_calc_div").innerHTML = calcs;
 } //end readystate =4
} //end saved_calc_result
//this function gets the number of the radio button that is checked under "My Settings"
//and sends a http request to delete that profile.
function del_prof(num_prof) {
 var p2 = "";
 var delConf = false;
 for(var i=0; i < num_prof; i++) {
  p2 = document.getElementById("prof_rad" + i);
  if(p2.checked == true)  { 
   delConf = window.confirm('Are you sure you want to delete this setting?');
   if(delConf == true)  {
    var wl = window.location.href.toString();
    var del_params = "";
    if(wl.indexOf('spectralcalc.php') != -1) {
     del_params = "tool=calc";
    }
    else if(wl.indexOf('paths.php') != -1) {
     del_params = "tool=paths";
    }
    del_params+= "&audId=" + p2.value + "&action=delete";
    saved_http3 = getHTTPObject();
    saved_http3.open("POST", "../saved_calcs.php", true); 
    saved_http3.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    saved_http3.setRequestHeader("Content-length", del_params.length);
    saved_http3.setRequestHeader("Connection", "close");
    saved_http3.onreadystatechange = del_prof_result;
    saved_http3.send(del_params);
   } //end if delConf = true
  }//end if p2.checked is true
 }  //end for loop
} //end function del_prof

function del_prof_result() {
 if(saved_http3.readyState == 4) {
  var prof_xml = saved_http3.responseXML;
  var prof_res  = prof_xml.getElementsByTagName("del_res").item(0).firstChild.data;
  if(prof_res == "1") {
   show_tab(4);
  } 
  else {
   window.alert("An error occurred while trying to delete the settings, please try again.");
  }
 } //end readyState =4 
} //end function del_prof_result


function save_profile(action,aud_id) {
 var user_status = get_user_status();
 var user_name = get_user_name();
 var user_id = get_user_id();
 if(action == "save") {
  var pout = "";
  var pif = "prof_info_" + aud_id;
  if(user_status == "on") {
    pout = "<br>Setup Name: <input type='text' name='prof_name_" + aud_id + "' id='prof_name_" + aud_id + "' maxlength='32'>&nbsp;&nbsp;<input type='image' onClick=\"save_profile('name', '" + aud_id + "'); return false;\" src='../images/save.png'><br>";
   document.getElementById(pif).innerHTML = "";
   document.getElementById(pif).innerHTML = pout;
   document.getElementById("prof_name_" + aud_id).focus();
  }
  else {
 document.getElementById("ps_ascii_div" + aud_id).innerHTML = "<font color='red'>Saved settings are only available to active subscribers. Please login above, or <a href='../info/plans.php' target='_blank'>Subscribe</a><br>";
   document.getElementById(pif).innerHTML = "";
   document.getElementById(pif).innerHTML = "";
  }
 }
 else {
 var pstr = "prof_name_" + aud_id;
 var prof_name = document.getElementById(pstr).value;
 var re = /\$|@|#|~|`|\%|\*|\^|\&|\?|\'|\"|\<|\>|\?|\||\\|\$/g;
 prof_name = prof_name.replace(re, "");
 prof_name = trim(prof_name);
// console.log(prof_name.length + "NM:" + prof_name + "done");
 if(prof_name.length > 0) {
 var wl = window.location.href.toString();
 var saved_params = "";
 if(wl.indexOf('spectralcalc.php') != -1) {
  saved_params = "tool=calc";
 }
 else if(wl.indexOf('paths.php') != -1) {
  saved_params = "tool=paths";
 }
 saved_params+= "&user_name=" + user_name + "&user_id=" + user_id + "&audit_id=" + aud_id + "&prof_name=" + prof_name;
 sp_http = getHTTPObject();
 sp_http.open("POST", "../save_profile.php", true);
 sp_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 sp_http.setRequestHeader("Content-length", saved_params.length);
 sp_http.setRequestHeader("Connection", "close");
 sp_http.onreadystatechange = save_prof2;
 sp_http.send(saved_params);
 }
 else {
  window.alert("Setup name can not be blank or contain invalid characters.");
 }
 } //end else
} //end save_profile

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function save_prof2() {
 if(sp_http.readyState == 4) {
  var sp_info = sp_http.responseText.split(':');
  var aud_id = sp_info[0];
  var aud_res = sp_info[1];
  var pnme = sp_info[2];
  if(aud_res == "1") {
   var pif = "prof_info_" + aud_id;
   document.getElementById(pif).innerHTML = "<br>" + pnme + " saved to 'My Settings'<br>";
  }
  else {
  document.getElementById(pif).innerHTML = "An error has occurred, please try to save your setting again.";
  }
 } 
} //end function save_prof2

function check_saved_setting(box_num) {
 document.getElementById("prof_rad" + box_num).checked = true;
}
