var dayName = new Array("nedjelja", "ponedjeljak", "utorak", "srijeda", "četvrtak", "petak", "subota");
var monName = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var mjesec = new Array("siječanj", "veljača", "ožujak", "travanj", "svibanj", "lipanj", "srpanj", "kolovoz", "rujan", "listopad", "studeni", "prosinac"); 
var maxDays = new Array(12);
	maxDays[0] = 31;
	maxDays[1] = 28;
	maxDays[2] = 31;
	maxDays[3] = 30;
	maxDays[4] = 31;
	maxDays[5] = 30;
	maxDays[6] = 31;
	maxDays[7] = 31;
	maxDays[8] = 30;
	maxDays[9] = 31;
	maxDays[10] = 30;
	maxDays[11] = 31;
function whatDay(form,isEdd) {
	var month = form.month.selectedIndex;
	var date = form.date.selectedIndex + 1;
	var year = form.year.selectedIndex;
	var today = new Date();
	thisYear = today.getYear();
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}
	if (year == 0) {
		year = thisYear - 1;
	} else {
		if ((isEdd == 2) && (year == 2)) {
			year = thisYear + 1
		} else {
			year = thisYear;
		}
	}
	if (isEdd == 1) {
		year = year + 1
	}
	var whatDate = new Date(monName[month] + " " + date + ", " +
		year + " 12:00:00");
	form.day.selectedIndex = whatDate.getDay();
	if (isEdd == 2) {
		return true
	} else {
		document.tjedni_t.trajanje_t.value = 0
	}
	document.Termin_p.koncep.value = ""
	document.Termin_p.prvo_t.value = ""
	document.Termin_p.drugo_t.value = ""
	document.Termin_p.kucanje.value = "" 
	document.tjedni_t.tjedni_u.value = ""
	document.tjedni_t.duljina.value = ""
	return true
}
function termin_p(form) {
	var LMPmonth = form.month.selectedIndex;
	var LMPdate = form.date.selectedIndex + 1;
	var LMPyear = form.year.selectedIndex;
	if (LMPyear == -1) {
		alert("Molim, izaberite godinu.");
		form.year.focus();
		return false;
	}
	document.tjedni_t.trajanje_t.value = 1;
	var today = new Date();
	thisYear = today.getYear();
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}
	if (LMPyear == 0) {
		LMPyear = thisYear - 1;	// prošla
	} else {
		LMPyear = thisYear;	// ova
	}
	if (!checkDate(LMPmonth,LMPdate,LMPyear)) {
		alert(mjesec[LMPmonth] + " ima " + maxDays[LMPmonth] + 
			" dana.");
		form.date.focus();
		return false;
	}
		var lmp = new Date(monName[LMPmonth] + " " + LMPdate + ", " +
		LMPyear + " 12:00:00");
	form.day.selectedIndex = lmp.getDay();
	form.theDate.value = lmp.getTime();
	var koncep = 14;
	var prvo_t = 84;
	var drugo_t = 189;
	var kucanje = 36;
	var edd = 280;
	form.koncep.value = display(lmp.getTime(),koncep,0,0);
	form.prvo_t.value = display(lmp.getTime(),prvo_t,0,0);
	form.drugo_t.value = display(lmp.getTime(),drugo_t,0,0);
	form.kucanje.value = display(lmp.getTime(),kucanje,0,0);
	display(lmp.getTime(),edd,1,0);
	return true;
}
function display(whatDate,numDays,isEdd,isLMP) {
	var today = new Date();
	var lmp = new Date(whatDate);
	var futureDate = lmp.getTime() + (numDays * 24*60*60*1000);
	var future = new Date();
	future.setTime(futureDate);
	future.setHours(12);
	var futureDay = dayName[future.getDay()];
	var futureMonth = mjesec[future.getMonth()];
	var futureYear = future.getYear();
	if (isEdd == 1) {
		var yearChoice = 0;
	if ((lmp.getYear() == today.getYear()) && (today.getYear() != futureYear)) {
		yearChoice = 1;
	}
	if (futureYear < today.getYear()) {
		yearChoice = -1;
	}	
	document.zadnja_m.day.selectedIndex = future.getDay();
	document.zadnja_m.month.selectedIndex = future.getMonth();
	document.zadnja_m.date.selectedIndex = future.getDate() - 1;
	document.zadnja_m.year.selectedIndex = yearChoice;
	document.zadnja_m.theDate.value = future.getTime();
	}
	if (isLMP == 1) {
		var yearChoice = 1;
	if ((lmp.getYear() == today.getYear()) && (today.getYear() != futureYear)) {
		yearChoice = 0;
	}
	if (today.getYear() < futureYear) {
		yearChoice = -1;
	}
	document.Termin_p.day.selectedIndex = future.getDay();
	document.Termin_p.month.selectedIndex = future.getMonth();
	document.Termin_p.date.selectedIndex = future.getDate() - 1;
	document.Termin_p.year.selectedIndex = yearChoice;
	document.Termin_p.theDate.value = future.getTime();
	}
	if ((isEdd == 1) || (isLMP == 1)) {
		document.tjedni_t.month.selectedIndex = today.getMonth();
		document.tjedni_t.date.selectedIndex = today.getDate()-1;
		document.tjedni_t.year.selectedIndex = 1;
		document.tjedni_t.day.selectedIndex = today.getDay();
		document.tjedni_t.tjedni_u.value = "";
		document.tjedni_t.duljina.value = "";
		today.setHours(13);
		var todaydate = today.getTime();
		var lmpdate = document.Termin_p.theDate.value;
		var edd = document.zadnja_m.theDate.value;
		edd = Number(edd) + 4 *7*24*60*60*1000;
		if ((todaydate > lmpdate) && 
			(todaydate < edd)) {
		document.tjedni_t.tjedni_u.value = calcEGA(lmpdate,todaydate);
		document.tjedni_t.duljina.value = duljina(lmpdate,todaydate);
		}			
		return true
	}		
	if (futureYear < 300) {
		futureYear = futureYear + 1900
	}
	var futureDisplay = futureDay + ", " + future.getDate() + "." + futureMonth + " " + futureYear;
	return futureDisplay;
}
function checkDate(month,day,year) {
	maxDays[1] = 28;
	if ((month == 1) && ((year % 4) == 0)) {
		if (((year % 100) == 0) && ((year % 400) != 0)) {
			maxDays[1] = 28;
		} else {
			maxDays[1] = 29;
		}
	}
	if (day > maxDays[month]) {
		return false;
	}
	return true;
}
function datum_tjedni(form) {
	if (document.tjedni_t.trajanje_t.value == 0) {
		alert("Izračunajte ili odredite najprije termin porođaja.");
		return false
	}
	var desiredMonth = form.month.selectedIndex;
	var desiredDate = form.date.selectedIndex + 1;
	var desiredYear = form.year.selectedIndex;
	var today = new Date();
	thisYear = today.getYear();
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}
	desiredYear = thisYear + desiredYear - 1;
	if (!checkDate(desiredMonth,desiredDate,desiredYear)) {
		alert(mjesec[desiredMonth] + " ima " + 
			maxDays[desiredMonth] + " dana.");
		form.date.focus();
		return false;
	}
	var des = new Date(monName[desiredMonth] + " " + desiredDate +
		", " + desiredYear + " 14:00:00");
	form.day.selectedIndex = des.getDay();
	var lmpDate = document.Termin_p.theDate.value;
	var eddDate = document.zadnja_m.theDate.value;
	eddDate = Number(eddDate) + 4 *7*24*60*60*1000;
	var desDate = des.getTime();
	if ((desDate < lmpDate) || (desDate > eddDate)) {
		alert("Izaberite datum između zadnje menstruacije i porođaja!");
		return false;
	}
	form.tjedni_u.value = calcEGA(lmpDate,desDate);
	form.duljina.value = duljina(lmpDate,desDate);
	return true
}
function calcEGA(lmpDate,desDate) {
	var daysEGA = (desDate - lmpDate) / (1000*60*60*24);
	var EGA = Math.floor(daysEGA / 7);
	var EGAfrac = Math.round(daysEGA % 7);
	if (EGAfrac == 7) {
		EGAfrac = 0;
		EGA = EGA + 1;
	}
	if (EGAfrac == 0) {
		return EGA
	}
	EGA = EGA + " " + EGAfrac + "/7";
	return EGA
}
function duljina(lmpDate,desDate) {
	var daysEGA = (desDate - lmpDate) / (1000*60*60*24);
	var duljina = Math.round((((14.9*(daysEGA/7))-64))/10);
	if (duljina <= 2) {	//  korekcija za početak
		duljina = " < 1 ";
	}else{
	if (duljina <= 3) {
		 duljina = " 2 "
	}}
	return duljina		
}
function tjedni_datum(form) {
	if (document.tjedni_t.trajanje_t.value == 0) {
		alert("Izračunajte najprije datum zadnje menstruacije ili očekivani termin porođaja.");
		return false
	}
	var add = form.tjedni_u.value;
	if (add.indexOf("/") != -1) {
		add = evalFrac(add);
		if (add == false) {
			return false
		}
	}
       if ((add == "") || (isNaN(add)) || (add < 0) || (add > 44)) { // 50
                alert("Molim unesite prihvatljiv broj tjedana.");
                form.tjedni_u.value = "";
                form.tjedni_u.focus();
                form.duljina.value = "";  //*
                form.duljina.focus();  //*
                return false
        }
	var lmpDate = Number(document.Termin_p.theDate.value);
	var egaMsec = lmpDate + (add * 7*24*60*60*1000);
	var today = new Date();
	var todayYr = today.getYear();
	var ega = new Date();
	ega.setTime(egaMsec);
	var egaYr = ega.getYear();
	if (egaYr < 300) {egaYr = egaYr + 1900}
	if (todayYr < 300) {todayYr = todayYr + 1900}
	var egaYear = (egaYr - todayYr) + 1;
	form.day.selectedIndex = ega.getDay();
	form.month.selectedIndex = ega.getMonth();
	form.date.selectedIndex = ega.getDate() - 1;
	form.year.selectedIndex = egaYear;
	duljina = Math.round((((14.9*(add))-64))/10); //*
	if (duljina <= 2) {
		duljina = " < 1 ";

	}else{
	if (duljina <= 3) {
		 duljina = " 2 "
	}}
        form.duljina.value = duljina
	return true
}
function evalFrac(frac) {
	var slash = frac.indexOf("/");
	if (frac.charAt(slash + 1) != 7) {
		alert("Tjedni su izraženi razlomkom u sedminama.");
		document.tjedni_t.tjedni_u.focus();
		return false;
	}
	if ((Number(frac.charAt(slash-1)) > 6) || 
	   //isNaN(chaz) || frac.chuckhu(swish)
	   (isNaN(frac.charAt(slash-1)))) {
		alert("Unesite prihvatljiv broj u sedminama.");
		document.tjedni_t.tjedni_u.focus();
		return false;
	}
	if ((frac.charAt(slash-2) != " ") && (frac.indexOf("/") != 1))
		{alert("Unesite prihvatljiv broj u sedminama.");
		document.tjedni_t.tjedni_u.focus();
		return false;
	}
	var top = Number(frac.charAt(slash-1));
	var fraction = top / 7;
	if (frac.indexOf("/") == 1) {
		if (fraction == 0) {
			fraction = 0.001
		}
		return fraction
	}
	var fullNum = frac.substring(0,frac.indexOf(" "));
	if (isNaN(fullNum)) {
		alert("Molim unesite prihvatljiv broj tjedana.");
		document.tjedni_t.tjedni_u.focus();
		return false
	}
	frac = Number(fullNum) + fraction;
		if (frac == 0) {frac = 0.001}
	return frac;
}	
function datum_zm(form) {
	var eddMonth = form.month.selectedIndex;
	var eddDate = form.date.selectedIndex + 1;
	var eddYear = form.year.selectedIndex;
	if (eddYear == -1) {
		alert("Molim odaberite godinu.");
		form.year.focus();
		return false;
	}
	document.tjedni_t.trajanje_t.value = 1;
	var today = new Date();
	thisYear = today.getYear();
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}
	if (eddYear == 0) {
		eddYear = thisYear;	// Ova
	} else {
		eddYear = thisYear + 1;	// Naredna
	}
	if (!checkDate(eddMonth,eddDate,eddYear)) {
		alert(mjesec[eddMonth] + " ima " + maxDays[eddMonth] + 
			" dana.");
		form.date.focus();
		return false;
	}
	var edd = new Date(monName[eddMonth] + " " + eddDate + ", " +
		eddYear + " 12:00:00");
	form.day.selectedIndex = edd.getDay();
	form.theDate.value = edd.getTime();
	var lmp = -280;	
	var koncep = -266;
	var prvo_t = -196;
	var drugo_t = -91;
	var kucanje = -244;
	display(edd.getTime(),lmp,0,1);
	document.Termin_p.koncep.value=display(edd.getTime(),koncep,0,0);
	document.Termin_p.prvo_t.value = display(edd.getTime(),prvo_t,0,0);
	document.Termin_p.drugo_t.value = display(edd.getTime(),drugo_t,0,0);
	document.Termin_p.kucanje.value = display(edd.getTime(),kucanje,0,0);
	return true;
}
function resetForm() {
	document.Termin_p.reset();
	document.zadnja_m.reset();
	document.tjedni_t.reset();
	return true
}
function dateSelect(Month,dd,Year,isEdd) {
var today = new Date();
document.writeln("<select name=\"day\" " + "class=\"porod\" " +
	"onChange=\"whatDay(this.form," + isEdd + ")\">");
for (var i=0; i < 7; i++) {
	if (i == today.getDay()) {
		document.writeln("<option selected>" +
		dayName[i]);
	} else {
		document.writeln("<option>" + 
		dayName[i]);
	}
}
document.writeln("</select>,");
document.writeln("<select name=\"date\" " + "class=\"porod\" " +
	"onChange=\"whatDay(this.form," + isEdd + ")\">");
for (var d = 1; d < 32; d++) {
	if (d == dd) {
		document.writeln("<option selected>" + dd);
	} else {
		document.writeln("<option>" + d);
	}
}

document.writeln("</select>. ");
document.writeln("<select name=\"month\" " +"class=\"porod\" " +
	"onChange=\"whatDay(this.form," + isEdd + ")\">");
for (var i=0; i < 12; i++) {
	if (i == Month) {
		document.writeln("<option selected>" +
		mjesec[i]);
	} else {
		document.writeln("<option>" + 
		mjesec[i]);
	}
}
document.writeln("</select>");
document.writeln("<select name=\"year\" " + "class=\"porod\" " +
	"onChange=\"whatDay(this.form," + isEdd + ")\">");
if (Year < 300) {
	Year = Year + 1900
	}
var checkYr = today.getYear();
if (checkYr < 300) {
	checkYr = checkYr + 1900
	}
var Year1 = Year - 1;
if (isEdd == 2) {Year = Year + 1} 
for (var yrCount = Year1; yrCount < (Year + 1); yrCount++) {
	if (yrCount == checkYr) {
		document.writeln("<option selected>" + yrCount)
	} else {
		document.writeln("<option>" + yrCount)
	}
}
document.writeln("</select>");
return true;
}
