// JavaScript Document2.2


function toggle(div) {
  if (document.getElementById) {
    this.obj = document.getElementById(div);
    this.style = this.obj.style;
  } else if (document.all) {
    this.obj = document.all[div];
    this.style = this.obj.style;
  } else if (document.layers) {
    this.obj = document.layers[div];
    this.style = this.obj;
  } else {
    return false
      }

  if (this.style.display=="block") this.style.display="none";
  else this.style.display="block";
}

function showMetric() {
  turnOff('imperial');
  turnOn('metric');
}

function showImperial() {
  turnOff('metric');
  turnOn('imperial');
}

function reset_energy() {
  turnOff('result');
  return true;
}

function getRadioValue(ref) {
  var found_it;
  for (var i=0; i<ref.length; i++)  { 
    if (ref[i].checked)  {
      found_it = ref[i].value
        }
  }
  return found_it;
}

function calculate_enery() {

  // Get reference to the form
  var ref = document.energy;

  // Check for values
  var message = "";
  if (!isInteger(ref.age)) {
    message += "> Please enter a number for your age.\n";
  }
  if (!isInteger(ref.weight)) {
    message += "> Please enter a value for your weight in pounds.\n";
  }
  if (!isInteger(ref.height_feet)) {
    message += "> Please enter a value for your height in feet.\n";
  }
  if (!isInteger(ref.height_inches)) {
    message += "> Please enter a number for your height in inches. If this is zero inches please enter '0'\n";
  }
  if (message) {
    alert("Please check the following and try again:\n\n"+message);
    return false;
  }
  var age = parseInt(ref.age.value);
  var gender = getRadioValue(ref.gender);
  var weight = parseInt(ref.weight.value/2.22);
  var height = (parseInt(ref.height_feet.value*12)+parseInt(ref.height_inches.value))*0.0254;
  var pa = getRadioValue(ref.pa);
  
  turnOn('result');
  writeDiv(cal_energy(age, gender, weight, height, pa), 'resultvalue');
  return true;
}




function calculate(format) {

  // Get reference to the form
  var ref = document.forms["bmi"];

  if (format == "metric") {

    // Check for values
    var message = "";
    if (!isInteger(ref.weight_k)) {
      message += "> Please enter your weight in Kilograms.\n";
    }
    if (!isInteger(ref.height_c)) {
      message += "> Please enter your height in Centimeters.\n";
    }
    if (message) {
      alert("Please check the following and try again:\n\n"+message);
      return false;
    }
    ref.metricresult.value = cal_bmi(ref.weight_k.value, ref.height_c.value, format);
    ref.metricresult.focus();

  } else {

    // Check for values
    var message = "";
    if (!isInteger(ref.weight_s)) {
      message += "> Please enter your weight in Stones.\n";
    }
    if (!isInteger(ref.weight_p)) {
      message += "> Please enter your weight in Pounds.\n";
    }
    if (!isInteger(ref.height_f)) {
      message += "> Please enter your height in Feet.\n";
    }
    if (!isInteger(ref.height_i)) {
      message += "> Please enter your height in Inches.\n";
    }
    if (message) {
      alert("Please check the following and try again:\n\n"+message);
      return false;
    }

    height_t = parseInt((ref.height_f.value)*12)+parseInt(ref.height_i.value);
    weight_t = parseInt((ref.weight_s.value)*14)+parseInt(ref.weight_p.value);
    ref.imperialresult.value = cal_bmi(weight_t, height_t, format);
    ref.imperialresult.focus();
  }
}

function cal_bmi(weight, height, format) {

  if (format == "metric") {
    m = height/100;
    h2 = m * m;
    s_bmi = weight/h2;
  } else {
    h2 = height * height;
    s_bmi = weight/h2 * 703
      }

  f_bmi = Math.floor(s_bmi);
  diff  = s_bmi - f_bmi;
  diff = diff * 10;
  diff = Math.round(diff);

  if (diff == 10) {
    f_bmi += 1;
    diff = 0;
  }
  s_bmi = f_bmi + "." + diff;
  return s_bmi;
}

function isDigit(c) {
  return ((c >= "0") && (c <= "9"));
}

function empty(v) {
  return (v=="" || v==null || !defined(v));
}

function defined(v) {
  var undefined;
  return (v!=undefined);
}

var defaultEmptyOK = false;
function isInteger(reference) {
  var s = reference.value;
  var i;

  if (empty(s))
    if (isInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isInteger.arguments[1] == true);

  for (i = 0; i < s.length; i++) {
    // Check that current character is number.
    var c = s.charAt(i);

    if (!isDigit(c)){
      return false;
    }
  }
  return true;
}

function turnOff(DivID) {
  if (document.getElementById) { //gecko(NN6) & IE 5+
    document.getElementById(DivID).style.visibility = "hidden";
    document.getElementById(DivID).style.display = "none";
  } else if (document.all) { // IE 4+
    document.all[DivID].style.visibility = "hidden";
    document.all[DivID].style.display = "none";
  } else if (document.layers) { // NS4+
    document.layers[DivID].visibility = "hide";
    document.layers[DivID].display = "none";
  } else {
    // nothing
  }
}

function turnOn(DivID) {
  if (document.getElementById) { //gecko(NN6) & IE 5+
    document.getElementById(DivID).style.visibility = "visible";
    document.getElementById(DivID).style.display = "block";
  } else if (document.all) { // IE 4+
    document.all[DivID].style.visibility = "visible";
    document.all[DivID].style.display = "block";
  } else if (document.layers) { // NS4+
    document.layers[DivID].visibility = "show";
    document.layers[DivID].display = "block";
  } else {
    // nothing
  }
}

if (document.getElementById)
{
  DOMtype = "std";
}
else if (document.all)
{
  DOMtype = "ie4";
}
else if (document.layers)
{
  DOMtype = "ns4";
}


// **************************************************************************
// grab object by ID on page
function grabobj(objname) // v1.0
{

  var ret = null;
  switch (DOMtype)
  {
  case "std":
  {
    ret = document.getElementById(objname);
  }
  break;

  case "ie4":
  {
    ret = document.all[objname];
  }
  break;
  case "ns4":
  {
    ret = document.layers[objname];
  }
  break;
  }
  return ret;
}

function isNumeric(sText)
{
  var ValidChars = "0123456789.";
  var IsNumber=true;
  var Char;
  for (i = 0; i < sText.length && IsNumber == true; i++) 
  { 
    Char = sText.charAt(i); 
    if (ValidChars.indexOf(Char) == -1) 
    {
      IsNumber = false;
    }
  }
  return IsNumber;
}
function roundNumber(num, dec) {
  var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
  return result;
}

function calcWHR ()
{
  var errors="";

  if (!grabobj("waist").value) errors+="Please enter your waist measurement in inches\n";
  if (!grabobj("hip").value) errors+="Please enter your hip measurement in inches\n";
  if (!isNumeric(grabobj("waist").value)) errors+="Waist measurement in inches should be a valid number\n";
  if (!isNumeric(grabobj("hip").value)) errors+="Hip measurement in inches should be a valid number\n";

  if (errors)
  {
    alert(errors);
  } else {
    grabobj("whr_result").innerHTML="<strong>"+roundNumber(grabobj("waist").value/grabobj("hip").value,2)+"</strong>";
  }
}


function calcBMRMet ()
{
  var errors="";
  var mbrres= 0;

  if (!grabobj("bmrweight_k").value) errors+="Please enter your weight in Kilograms.\n";
  if (!isNumeric(grabobj("bmrweight_k").value)) errors+="Please enter your weight in Kilograms.\n";

  if (errors)
  {
    alert(errors);
  } else {
    // male
    if(grabobj("bmrgender_k").value==1){
      if(grabobj("bmrage_k").value==1){
        bmrres = (15.3*grabobj("bmrweight_k").value+679);
      }
      if(grabobj("bmrage_k").value ==2){
        bmrres = (11.6*grabobj("bmrweight_k").value+879);  
      }
      if(grabobj("bmrage_k").value ==3){
        bmrres = (13.5*grabobj("bmrweight_k").value+487); 
      }
    }
    // female
    if(grabobj("bmrgender_k").value ==2){
      if(grabobj("bmrage_k").value == 1){
        bmrres = (15.3*grabobj("bmrweight_k").value+496);
      }
      if(grabobj("bmrage_k").value ==2){
        bmrres = (11.6*grabobj("bmrweight_k").value+829);   
      }
      if(grabobj("bmrage_k").value ==3){
       bmrres = (13.5*grabobj("bmrweight_k").value+596);  
      }
    }
     grabobj("bmr_result_k").innerHTML= roundNumber(bmrres,2);
 
  }
}



function calcBMRImp ()
{
  var errors="";
  var mbrres= 0;

  if (!grabobj("bmrweight_l").value) errors+="Please enter your weight in Lbs.\n";
  if (!isNumeric(grabobj("bmrweight_l").value)) errors+="Please enter your weight in Lbs.\n";

  if (errors)
  {
    alert(errors);
  } else {
    // male
    if(grabobj("bmrgender_l").value==1){
      if(grabobj("bmrage_l").value==1){
        wlres = grabobj("bmrweight_l").value/2.2;
        bmrres = (15.3*wlres+679);
      }
      if(grabobj("bmrage_l").value ==2){
        wlres = grabobj("bmrweight_l").value/2.2;
        bmrres = (11.6*wlres+879);  
      }
      if(grabobj("bmrage_l").value ==3){
        bmrres = (13.5*wlres+487); 
      }
    }
    // female
    if(grabobj("bmrgender_l").value ==2){
      if(grabobj("bmrage_l").value == 1){
        wlres = grabobj("bmrweight_l").value/2.2;
        bmrres = (15.3*wlres+496);
      }
      if(grabobj("bmrage_l").value ==2){
        wlres = grabobj("bmrweight_l").value/2.2;
        bmrres = (11.6*wlres+829);   
      }
      if(grabobj("bmrage_l").value ==3){
        wlres = grabobj("bmrweight_l").value/2.2;
       bmrres = (13.5*wlres+596);  
      }
    }
     grabobj("bmr_result_l").innerHTML= roundNumber(bmrres,2);
 
  }
}

