<!-- Begin
function  calculateBMI() {
  var weight = eval(document.form.weight.value)
  var height = eval(document.form.height.value)
  var height2 = height / 100
  var BMI = weight  / (height2 * height2)
  document.form.BodyMassIndex.value=custRound(BMI,1);
}
function custRound(x,places) {
  return (Math.round(x*Math.pow(10,places)))/Math.pow(10,places)
}
// End -->

var day,month,year;
function isValidDate(dateStr) {
var datePat = /^(\d{4})(-)(\d{2})(-)(\d{2})$/; // requires 4 digit year

var matchArray = dateStr.match(datePat); // is the format ok?
if (matchArray == null) {
alert("Datum i fel fomat.")
return false;
}
month = matchArray[3]; // parse date into variables
day = matchArray[5];
year = matchArray[1];
if (month < 1 || month > 12) { 
alert("Månad måste vara 1 - 12.");
return false;
}
if (day < 1 || day > 31) {
alert("Dag måste vara 1 - 31.");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Månaden "+month+" har inte 31 dagar!")
return false;
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("Februari " + year + " har inte " + day + " dagar!");
return false;
}
}
return true;
}

function dispDate(dateObj) {
month = dateObj.getMonth()+1;
month = (month < 10) ? "0" + month : month;

day = dateObj.getDate();
day = (day < 10) ? "0" + day : day;

year = dateObj.getYear();
if (year < 2000) year += 1900;

return (year + "-" + month + "-" + day);
}

function pregnancyCalc(pregform) {
menstrual = new Date();
ovulation = new Date();
duedate = new Date();
today = new Date();
cycle = 0, luteal = 0;

if (isValidDate(pregform.menstrual.value)) { 
menstrualinput = new Date(year,month-1,day);
menstrual.setTime(menstrualinput.getTime())
}
else return false;

cycle = (pregform.cycle.value == "" ? 28 : pregform.cycle.value); 

if (pregform.cycle.value != "" && (pregform.cycle.value < 22 || pregform.cycle.value > 45)) {
alert("Din cykel är antingen för kort eller för lång för att \n"
+ "beräkningen ska bli tillförlitlig! Vi försöker ändå \n"
+ "att göra en beräkning med de data du matat in. ");
}

luteal = (pregform.luteal.value == "" ? 14 : pregform.luteal.value);

if (pregform.luteal.value != "" && (pregform.luteal.value < 9 || pregform.luteal.value > 16)) {
alert("Din lutealfas är antingen för kort eller för lång för att \n"
+ "beräkningen ska bli tillförlitlig! Vi försöker ändå \n"
+ "att göra en beräkning med de data du matat in. ");
}


ovulation.setTime(menstrual.getTime() + (cycle*86400000) - (luteal*86400000));
pregform.conception.value = dispDate(ovulation);


duedate.setTime(ovulation.getTime() + 266*86400000);
pregform.duedate.value = dispDate(duedate);


var fetalage = 14 + 266 - ((duedate - today) / 86400000);
weeks = parseInt(fetalage / 7); 
days = Math.floor(fetalage % 7); 


fetalage = weeks + "" + (weeks > 1 ? " veckor" : "") + " + " + days + " dag(ar)";
pregform.fetalage.value = fetalage;

pregnancyweek = weeks + 1;
pregform.pregnancyweek.value = pregnancyweek;

return false;
}
