// JavaScript Document
Now = new Date();
NowDay = Now.getDate();
NowMonth = Now.getMonth();
NowYear = Now.getYear();
if (NowYear < 2000) NowYear += 1900; 


function DaysInMonth(WhichMonth, WhichYear)
{
  var DaysInMonth = 31;
  if (WhichMonth == "Апреля" || WhichMonth == "Июня" || WhichMonth == "Сентября" || WhichMonth == "Ноября") DaysInMonth = 30;
  if (WhichMonth == "Февраля" && (WhichYear/4) != Math.floor(WhichYear/4))	DaysInMonth = 28;
  if (WhichMonth == "Февраля" && (WhichYear/4) == Math.floor(WhichYear/4))	DaysInMonth = 29;
  return DaysInMonth;
}


function ChangeOptionDays(Which)
{
  DaysObject = eval("document.form1." + Which + "Day");
  MonthObject = eval("document.form1." + Which + "Month");
  YearObject = eval("document.form1." + Which + "Year");

  Month = MonthObject[MonthObject.selectedIndex].text;
  Year = YearObject[YearObject.selectedIndex].text;

  DaysForThisSelection = DaysInMonth(Month, Year);
  CurrentDaysInSelection = DaysObject.length;
  if (CurrentDaysInSelection > DaysForThisSelection)
  {
    for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
    {
      DaysObject.options[DaysObject.options.length - 1] = null
    }
  }
  if (DaysForThisSelection > CurrentDaysInSelection)
  {
    for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
    {
      NewOption = new Option(DaysObject.options.length + 1);
      DaysObject.add(NewOption);
    }
  }
    if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}


function SetToToday(Which)
{
  DaysObject = eval("document.form1." + Which + "Day");
  MonthObject = eval("document.form1." + Which + "Month");
  YearObject = eval("document.form1." + Which + "Year");

  YearObject[0].selected = true;
  MonthObject[NowMonth].selected = true;

  ChangeOptionDays(Which);

  DaysObject[NowDay-1].selected = true;
}


function WriteYearOptions(YearsAhead)
{
  line = "";
  for (i=0; i<YearsAhead; i++)
  {
    line += "<OPTION VALUE='";
    line += NowYear - i;
	line += "'>";
    line += NowYear - i;
  }
  return line;
}

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 (day+ "." +month + "." + year);
}

function pregnancyCalc(pregform) {
menstrual = new Date();
ovulation = new Date();
duedate = new Date();
today = new Date();
cycle = 0, luteal = 0;

var str="";
for (var i=0; i<pregform.FirstSelectMonth.length; i++)
{
if (pregform.FirstSelectMonth.options[i].selected==true) 
 if (i<9) str=str+ "0" +String(i+1)+ "/"; else  str=str+String(i+1)+ "/";
}
for (var i=0; i<pregform.FirstSelectDay.length; i++)
{
if (pregform.FirstSelectDay.options[i].selected==true) 
 if (i<9) str=str+ "0" +String(i+1)+ "/"; else  str=str+String(i+1)+ "/";
}

for (var i=0; i<pregform.FirstSelectYear.length; i++)
{
if (pregform.FirstSelectYear.options[i].selected==true) str=str+String(NowYear-i);
}

menstrualinput = new Date(str);
menstrual.setTime(menstrualinput.getTime());

cycle = (pregform.cycle.value == "" ? 28 : pregform.cycle.value);
if (pregform.cycle.value != "" && (pregform.cycle.value < 22 || pregform.cycle.value > 45)) {
alert("Ваш цикл либо слишком длинен либо короток \n"
+ "для необходимой точности подсчета!  Однако, мы попытаемся\n"
+ "рассчитать даты с теми данными, которые Вы ввели. ");
}

luteal = (pregform.luteal.value == "" ? 14 : pregform.luteal.value);
if (pregform.luteal.value != "" && (pregform.luteal.value < 9 || pregform.luteal.value > 16)) {
alert("Ваша лютеиновая фаза либо слишком коротка, либо слишком длиннаr \n"
+ "для необходимой точности подсчета!  Однако, мы попытаемся\n"
+ "рассчитать даты с теми данными, которые Вы ввели. ");
}

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 + ", дней - " + days + ".";
pregform.fetalage.value = fetalage;
return false;
}

