function calculateBMI() {
   var weight = document.getElementById("weight").value;
   var height = document.getElementById("height").value;

   //var bmi = Math.round(weight * 703 / (Math.pow(height, 2)) * 10) / 10;
   var bmi = getBMI(weight, height);
   //var bmiTxt = document.getElementById("bmi");
   var bmiTxt = document.bmiForm.elements['bmi'];
   if(weight > 0 && height > 0) {
      bmiTxt.value = bmi;
   }
   else {
      bmiTxt.value = "";
      bmi = -1;
   }

   var table = document.getElementById('bmiTable');
   var tr = table.getElementsByTagName('tr');

   clearTableAttributes(tr);
   
   if(bmi > 30) {
      tr[4].style.backgroundColor = "#FF8C00";
      tr[4].style.fontWeight = 'bold';
   }
   else if (bmi > 25.0) {
      tr[3].style.backgroundColor = "#FF8C00";
      tr[3].style.fontWeight = 'bold';
   }
   else if (bmi > 18.5) {
      tr[2].style.backgroundColor = "#FF8C00";
      tr[2].style.fontWeight = 'bold';
   }
   else if (bmi > 0) {
      tr[1].style.backgroundColor = "#FF8C00";
      tr[1].style.fontWeight = 'bold';
   }
}

function getBMI(weight, height) {
   return Math.round(weight * 703 / (Math.pow(height, 2)) * 10) / 10;
}

function clearTableAttributes(tableRows) {
   for(var i = 1; i < tableRows.length; i++) {
      tableRows[i].style.backgroundColor = "#fff";
      tableRows[i].style.fontWeight = "500";
   }
}

function calculateBMR() {
   var weight = document.getElementById("weight").value;
   var height = document.getElementById("height").value;
   var age = document.getElementById('age').value;
   var sex = document.getElementsByName('mf');
   var bmr;
   
   for(var i = 0; i < sex.length; i++) {

      if(sex[i].checked) {
         if(sex[i].value == "man") {
            bmr = Math.round((66 + (6.23 * weight) + (12.7 * height) - (6.8 * age)) * 10) / 10;
         } else {
            bmr = Math.round((665 + (4.35 * weight) + (4.7 * height) - (4.7 * age)) * 10) / 10;
         }
      }
   }

   //var bmrTxt = document.getElementById("bmr");
   var bmrTxt = document.bmrForm.elements['bmr'];
   bmrTxt.value = bmr;
   
   //now update the caloric intake fields
   document.getElementById('cised').value = Math.round(bmr * 1.2);
   document.getElementById('cilight').value = Math.round(bmr * 1.375);
   document.getElementById('cimod').value = Math.round(bmr * 1.55);
   document.getElementById('civa').value = Math.round(bmr * 1.725);
   document.getElementById('ciea').value = Math.round(bmr * 1.9);
}

function calculateIBWRange() {
   var weight = document.getElementById("weight").value;
   var height = document.getElementById("height").value;

   var ibwTextField = document.ibwForm.elements['ibw'];

   var bmi = getBMI(weight, height);
   var heightMeters = height * 0.0254; //converts height from inches to meters
   var ibwLow = Math.round( (19 * (heightMeters*heightMeters)) * 2.2046 * 1.02 );
   var ibwHigh = Math.round( (25 * (heightMeters*heightMeters)) * 2.2046 * 1.02);

   ibwTextField.value = ibwLow + " - " + ibwHigh;

}

function showUpdateFields(userID, weight, date, e) {
   var updateDiv = document.getElementById('weUpdateDiv');
   document.getElementById('weDateUpdate').value = date;
   document.getElementById('weWeightUpdate').value = weight;
   document.getElementById('weODate').value = date;
   updateDiv.style.top = e.clientY - 20;
   updateDiv.style.display = 'block';
}

function closeUpdateDiv() {
   var updateDiv = document.getElementById('weUpdateDiv');
   updateDiv.style.display = 'none';
}

function closeMUpdateDiv() {
   var updateDiv = document.getElementById('meUpdateDiv');
   updateDiv.style.display = 'none';
}

function showMUpdateFields(userID, arms, chest, waist, hips, date, e) {
   var updateDiv = document.getElementById('meUpdateDiv');
   document.getElementById('meDateUpdate').value = date;
   document.getElementById('meArmsUpdate').value = arms;
   document.getElementById('meChestUpdate').value = chest;
   document.getElementById('meWaistUpdate').value = waist;
   document.getElementById('meHipsUpdate').value = hips;
   document.getElementById('meODate').value = date;
   updateDiv.style.top = e.clientY - 20;
   updateDiv.style.left = e.clientX - 220;
   updateDiv.style.display = 'block';
}

function displayJournalInput(flag) {
   if(flag) {
      document.getElementById('journalInputArea').style.display = 'block';
      document.getElementById('journalsPage').style.backgroundColor = '#AAA';
   } else {
      document.getElementById('journalInputArea').style.display = 'none';
      document.getElementsByName('title').item(0).value = "";
      document.getElementsByName('description').item(0).innerHTML = "";
      document.getElementsByName('jdate').item(0).value = "";
      document.getElementsByName('journalSubmit').item(0).value = "Save";
      document.getElementById('journalsPage').style.backgroundColor = '#fff';
   }
}

function getXmlHttpRequestObject() {
   if (window.XMLHttpRequest) {
      // code for IE7+, Firefox, Chrome, Opera, Safari
      return new XMLHttpRequest();
   } else if(window.ActiveXObject) {
      // code for IE6, IE5
      return new ActiveXObject("Microsoft.XMLHTTP");
   } else {
      alert("Your browser does not support XMLHTTP!");
      return false;
   }
}

var searchReq = getXmlHttpRequestObject();
function updateJournalEntry(userID, date) {
   document.getElementsByName('journalSubmit').item(0).value = "Update";
   getJournalEntry(userID, date);
   displayJournalInput(1);
   document.getElementsByName('jdate').item(0).value = "";
}

function getJournalEntry(userID, date) {

   if (searchReq.readyState == 4 || searchReq.readyState == 0) {
      searchReq.open("GET", 'journalrequest.php?q=getjournal&uid=' + userID + '&date='+ escape(date), true);
      searchReq.onreadystatechange = handleJournalRequest;
      searchReq.send(null);
   }

}

function handleJournalRequest() {

   if(searchReq.readyState == 4) {

      var title = document.getElementsByName('title').item(0);
      var description = document.getElementsByName('description').item(0);
      var date = document.getElementsByName('jdate').item(0);
      var str = searchReq.responseText;

      if(str.length > 0) {
         var parts = str.split("-|-");

         title.value = parts[0];
         description.innerHTML = parts[1];
         date.value = parts[2];
      }

   }

}

function checkSignupInputFields() {
   var status = true;
   var elem = document.getElementsByTagName("input");

   for(var i = 0; i < elem.length; i++) {
      if(elem[i].value.toString().length == 0) {
         status = false;
      }
   }
   if(!status) {
      alert("All fields are required.");
   }
   return status;
}