var weekTitles = new Array('Пн','Вт','Ср','Чт','Пт','Сб','Вс');
var months = new Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
function showAllWeekTitles()
{
	var answer = "  <tr>\n";
	for(var i=0; i<weekTitles.length; i++)
		answer += "    <th class=\"calendar\">" + weekTitles[i] + "</th>\n";
	answer += "  </tr>\n";
	return answer;
}

function calendarShow(d, m, y)
{
	var todaydate = new Date();
	if (!d || !m || !y)
	{
		d = todaydate.getDate();
		m = todaydate.getMonth()+1;
		y = todaydate.getYear();
		sD = d;
		sM = m;
		sY = y;
	}
	var sdate = new Date(m+'/1/'+y);
	var mdate = new Date(m+'/'+d+'/'+y);
	var days = dayOnMonth(m, y);
	var iday = 0, day, answer='';
	answer+='<table border=0 class="calendar">'
	answer+='	<tr class="calendar">'
	answer+='		<th class="calendar" colspan="7">'
	answer+='			<table width="100%" border=0 cellpadding=0 cellspacing=0 height="100%">'
	answer+='				<tr class="calendar">'
	answer+='					<td align="left"><b>Календарь</b></td>'
	answer+='					<td align="right"><table onClick="calendarShow('+sD+','+sM+','+sY+')" class="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr class="calendar"><td>'+sD+'.'+sM+'.'+sY+'</td></tr></table></td>'
	answer+='				</tr>'
	answer+='			</table>'
	answer+='		</th>'
	answer+='	</tr>'
	answer+='	<tr class="calendar">'
	answer+='		<th colspan="7">'
	answer+='			<table border=0 cellpadding=0 cellspacing=0 width="100%" height="100%">'
	answer+='				<tr class="calendar">'
	answer+='					<td width="25%"><table onClick="calendarMove(\'-\',\'y\','+d+','+m+','+y+')" class="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr class="calendar"><td><<</td></tr></table></td>'
	answer+='					<td width="25%"><table onClick="calendarMove(\'-\',\'m\','+d+','+m+','+y+')" class="calendar_button_0_2" onMouseOver="this.className=\'calendar_button_1_2\'" onMouseOut="this.className=\'calendar_button_0_2\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr class="calendar"><td><</td></tr></table></td>'
	answer+='					<td width="25%"><table onClick="calendarMove(\'+\',\'m\','+d+','+m+','+y+')" class="calendar_button_0_2" onMouseOver="this.className=\'calendar_button_1_2\'" onMouseOut="this.className=\'calendar_button_0_2\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr class="calendar"><td>></td></tr></table></td>'
	answer+='					<td width="25%"><table onClick="calendarMove(\'+\',\'y\','+d+','+m+','+y+')" class="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr class="calendar"><td>>></td></tr></table></td>'
	answer+='				</tr>'
	answer+='			</table>'
	answer+='		</th>'
	answer+='	</tr>'
	answer+='	<tr class="calendar">'
	answer+='		<th class="calendar" colspan="7">'
	answer+='			<table border=0 cellpadding=0 cellspacing=0 width="100%" height="100%">'
	answer+='				<tr class="calendar">'
	answer+='					<td>'+months[m-1]+' '+y+'</td>'
	answer+='				</tr>'
	answer+='			</table>'
	answer+='		</th>'
	answer+='	</tr>'
	answer+= showAllWeekTitles();
	answer+='	<tr>'
	for(day=1; day<sdate.getDay(); day++)
	{
		iday++;
		answer += "    <td></td>";
	}
	for(day=1; day<=days; day++)
	{
		iday++;
		if(todaydate.getMonth()+1 == m && todaydate.getDate() == day && todaydate.getFullYear() == y)
			answer += "    <td onClick=\"window.returnValue='"+day+"/"+m+"/"+y+"'\" class=\"calendar_today\"><table onMouseOver=\"this.className='calendar_active'\" onMouseOut=\"this.className=''\" border=0 cellpadding=0 cellspacing=0 width=\"100%\" height=\"100%\"><tr CLASS=\"calendar\"><td>"+day+"</td></tr></table></td>";
		else
			answer += "    <td onClick=\"window.returnValue='"+day+"/"+m+"/"+y+"'\" class=\"calendar\"><table onMouseOver=\"this.className='calendar_active'\" onMouseOut=\"this.className=''\" border=0 cellpadding=0 cellspacing=0 width=\"100%\" height=\"100%\"><tr CLASS=\"calendar\"><td>"+day+"</td></tr></table></td>";
		if(iday==7)
		{
			answer += "</tr><tr>";
			iday = 0;
		}
	}
	answer+="  </tr>";
	answer+='</table>';
	document.all.calendar.innerHTML=answer;
}

// Функция, для определения количества дней в месяце
function dayOnMonth(m, y)
{
	var answer;
	// Если не "Февраль"
	if (m!=2)
	{
		var date1 = new Date(m+'/31/'+y)
		var mm = m<12 ? m+1 : 1;
		var yy = m<12 ? y : y+1;
		var date2 = new Date(mm+'/1/'+yy)
		answer = date1.getDay()==date2.getDay() ? '30' : '31';
	}
	else
	{
		var date1 = new Date(m+'/29/'+y)
		var mm = m<12 ? m+1 : 1;
		var yy = m<12 ? y : y+1;
		var date2 = new Date(mm+'/1/'+yy)
		answer = date1.getDay()==date2.getDay() ? '28' : '29';
	}
	return answer;
}

function calendarMove(to, index, d, m, y){
	switch(to){
		case('-'):
			switch(index){
				case('m'):
					if(m>1){
						m--;
					}else{
						m=1;
						y--;
					}
					break
				case('d'):
					var mm= m>1 ? --m : 1;
					var yy= m>1 ? y : --y;
					var days = dayonmonth(mm, yy);
					if(d>1){
						d--;
					}else{
						d = days;
						m = mm;
						y = yy;
					}
					break
				case('y'):
					y--;
					break;
			}
			break;
		case('+'):
			switch(index){
				case('m'):
					if(m<12){
						m++;
					}else{
						m=1;
						y++;
					}
					break;
				case('d'):
					var mm = m<12 ? ++m : 1;
					var yy= m<12 ? y : ++y;
					var days = dayonmonth(m, y);
					if(d<days){
						d++;
					}else{
						d = 1;
						m = mm;
						y = yy;
					}
					break;
				case('y'):
					y++;
					break;
				}
			break;
	}
	calendarShow(d, m, y);
}