function isFebruary (iMonth)
{
	return (iMonth == 1);
}

function isLeapYear (iYear)
{
var intg = Math.floor(iYear / 4);
	return ((intg * 4) == iYear);
}

function compareDates (dt1,dt2)
{
var ret = dt2.getFullYear() - dt1.getFullYear();
	if (ret == 0) ret = dt2.getMonth() - dt1.getMonth();
	if (ret == 0) ret = dt2.getDate() - dt1.getDate();
	return ret;
}

function countDays (dt)
{
var iYear = dt.getFullYear();
var iWholeYears = iYear - 1;
var iLeapYears = Math.floor(iWholeYears / 4);
var iPlainYears = iWholeYears - iLeapYears;
var ret = iLeapYears * 366 + iPlainYears * 365;

var iMonth = dt.getMonth();
var iWholeMonths = iMonth - 1;
	for (i = 0; i <= iWholeMonths; i++)
	{
	var iDays = g_aDays[i];
		if (isFebruary(i) && isLeapYear(iYear)) iDays++;
		ret += iDays;
	}
	
	return (ret + dt.getDate());
}

function dayDiff (dt1,dt2)
{
	return countDays(dt2) - countDays(dt1);
}

function yearDiff (dt1,dt2)
{
	return (dt2.getFullYear() - dt1.getFullYear());
}

function dateToStr (dt)
{
	return (dt.getDate() + '/' + (dt.getMonth() + 1) + '/' + dt.getFullYear());
}

function textToDate (id)
{
var a = document.getElementById(id).value.split('/');
	if (a.length != 3) return null;
	
var iDay = parseInt(a[0]);
	if (isNaN(iDay)) return null;
	if (iDay < 1) return null;
	
var iMonth = parseInt(a[1]);
	if (isNaN(iMonth)) return null;
	if ((iMonth < 1) || (iMonth > 12)) return null;
	
var iYear = parseInt(a[2]);
	if (isNaN(iYear)) return null;
	if (iYear < 1) return null;
	
	iMonth--;
var iHiDay = g_aDays[iMonth];
	if (isFebruary(iMonth) && isLeapYear(iYear)) iHiDay++;
	if (iDay > iHiDay) return null;
	
	try
	{
		return new Date(iYear,iMonth,iDay);
	}
	catch (e)
	{
		return null;
	}
}

function setTextDate (id,y,m,d)
{
var txt = document.getElementById(id);
	if (!good(txt)) return false;
	txt.value = d + '/' + (m + 1) + '/' + y;
	return true;
}

function setTextDate2 (id,dt)
{
	setTextDate(id,dt.getFullYear(),dt.getMonth(),dt.getDate());
}

