function formcalendarHighlightDay(day, suffix)
{
var i;
var i2;
var tday;
var widget;
	if(day<10)
	{
	day='0'+day;
	}
eval('widget=document.getElementById("calendar_d' + day + suffix + '");');
		for(i=1; i<32; i++)
		{
		i2=i;
			if(i<10)
			{
			i2='0'+i;
			}
		eval('tday=document.getElementById("calendar_d' + i2 + suffix + '");');
			if(tday)
			{
			tday.className="calendar_normalday";
			}
		}
	widget.className="calendar_selectedday";
}


function formcalendarMouseOverDay(widget)
{
if(widget.className=="calendar_normalday") widget.className="calendar_mouseoverday";
}


function formcalendarMouseOutDay(widget)
{
if(widget.className=="calendar_mouseoverday") widget.className="calendar_normalday";
}


function formcalendarSetDay(day, month, year, daywidget, monthwidget, yearwidget, calendardiv, suffix)
{
formcalendarHighlightDay(day, suffix);
document.getElementById(daywidget).value=day;
document.getElementById(monthwidget).selectedIndex=month-1;
document.getElementById(yearwidget).value=year;
formcalendarHide(calendardiv);
controllerSetFocus(daywidget);
}


function formcalendarCreateCalendar(daywidget, monthwidget, yearwidget, calendardiv, suffix)
{
var i;
var j;
var str;
var day;
var month;
var year;

var arrLastDay=new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

day=document.getElementById(daywidget).value;
month=document.getElementById(monthwidget).value;
year=document.getElementById(yearwidget).value;

		if(!controllerCheckDate(day, (month-1), year))
		{
		day=1;
		document.getElementById(daywidget).value=day;
		}

if(!(year%4)) arrLastDay[2]=29;

var lastDay=arrLastDay[month];

str='<input type="button" class="calendar_previousmonth" id="calendar_previousmonth' + suffix + '" value="<<"';
str+=' onclick="formcalendarPreviousMonth(\'' + daywidget + '\', \'' + monthwidget + '\', \'' + yearwidget + '\', \'' + calendardiv + '\', \'' + suffix + '\')"';
str+='/>';

str+='<div class="calendar_caption">' + formcalendar_months[month] + ', ' + year + '</div>';

str+='<input type="button" class="calendar_nextmonth" id="calendar_nextmonth' + suffix + '" value=">>"';
str+=' onclick="formcalendarNextMonth(\'' + daywidget + '\', \'' + monthwidget + '\', \'' + yearwidget + '\', \'' + calendardiv + '\', \'' + suffix + '\')"';
str+='/>';

str+='<table class="calendar_table" cellspacing="0" cellpadding="0">';
str+='<tr>';
	for(i=1; i<7; i++)
	{
	str+='<td class="';
		switch(i)
		{
		case 6:
		str+='calendar_headersaturday';
		break;
		default:
		str+='calendar_header';
		}
	str+='">';
	str+=formcalendar_weekdays[i];
	str+='</td>';
	}

	str+='<td class="';
	str+='calendar_headersunday';
	str+='">';
	str+=formcalendar_weekdays[0];
	str+='</td>';
str+='</tr>';

	for(var iDay=1; iDay<=lastDay; iDay++)
	{
	// month should be in range 0..11
	var myDate=new Date(year, (month-1), iDay);
	var dayOfWeek=myDate.getDay();
	if(!dayOfWeek) dayOfWeek=7;
		if(iDay==1 || dayOfWeek==1)
		{
		str+='<tr>';
		}

			if(iDay==1)
			{
				for(i=1; i<dayOfWeek; i++)
				{
				str+='<td class="calendar_normaldayblank">';
				str+='&nbsp;';
				str+='</td>';
				}
			}

		str+='<td class="calendar_normalday"';
		str+=' id="calendar_d';
			if(iDay<10)
			{
			str+='0';
			}
		str+=iDay;
		str+=suffix; // needed because there can be several calendars on the page
		str+='"';

		str+=' onclick="formcalendarSetDay(' + iDay + ', ' + month + ', ' + year + ', \''
		+daywidget + '\', \'' + monthwidget + '\', \'' + yearwidget + '\', \''
		+ calendardiv + '\', \'' + suffix + '\')"';

		str+=' onmouseover="formcalendarMouseOverDay(this)"';

		str+=' onmouseout="formcalendarMouseOutDay(this)"';

		str+='>';
		str+=iDay;
		str+='</td>';
			if(iDay==lastDay)
			{
				for(i=dayOfWeek; i<7; i++)
				{
				str+='<td class="calendar_normaldayblank">';
				str+='&nbsp;';
				str+='</td>';
				}
			}
		if(dayOfWeek==7)
		{
		str+='</tr>';
		}
	}
str+='</table>';
return str;
}


function formcalendarCalendar(daywidget, monthwidget, yearwidget, calendardiv, suffix)
{
this.calendardiv=calendardiv;
this.formcalendarHide=formcalendarHide;
document.getElementById(calendardiv).innerHTML=formcalendarCreateCalendar(daywidget, monthwidget, yearwidget, calendardiv, suffix);
var day=document.getElementById(daywidget).value;
formcalendarHighlightDay(day, suffix);
setTimeout("formcalendarShow('"+calendardiv+"')", 1);
}


function formcalendarShow(calendardiv)
{
	if(isMSIE)
	{
	controllerShowHideSelects('hidden');
	}
document.getElementById(calendardiv).style.visibility="visible";
}


function formcalendarHide(calendardiv)
{
document.getElementById(calendardiv).style.visibility="hidden";
	if(isMSIE)
	{
	controllerShowHideSelects('visible');
	}
}


function formcalendarPreviousMonth(daywidget, monthwidget, yearwidget, calendardiv, suffix)
{
day=document.getElementById(daywidget).value;
month=document.getElementById(monthwidget).value;
year=document.getElementById(yearwidget).value;
	month--;
	if(month<1)
	{
	month=12;
	year--;
	}
		if(!controllerCheckDate(day, (month-1), year))
		{
		day=1;
		}
document.getElementById(daywidget).value=day;
document.getElementById(monthwidget).value=month;
document.getElementById(yearwidget).value=year;
document.getElementById(calendardiv).innerHTML=formcalendarCreateCalendar(daywidget, monthwidget, yearwidget, calendardiv, suffix);
formcalendarHighlightDay(day, suffix);
}


function formcalendarNextMonth(daywidget, monthwidget, yearwidget, calendardiv, suffix)
{
day=document.getElementById(daywidget).value;
month=document.getElementById(monthwidget).value;
year=document.getElementById(yearwidget).value;
	month++;
	if(month>12)
	{
	month=1;
	year++;
	}
		if(!controllerCheckDate(day, (month-1), year))
		{
		day=1;
		}
document.getElementById(daywidget).value=day;
document.getElementById(monthwidget).value=month;
document.getElementById(yearwidget).value=year;
document.getElementById(calendardiv).innerHTML=formcalendarCreateCalendar(daywidget, monthwidget, yearwidget, calendardiv, suffix);
formcalendarHighlightDay(day, suffix);
}