var today = new Date();
var currDate = new Date();
var monthNames = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
var weekdayInits = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
var Id = "";

function setDate(dateSet, monthSet, yearSet) {
  currDate = new Date(yearSet, monthSet, dateSet);
  document.forms["properties"].elements["date_" + Id].value = currDate.getDate();
  document.forms["properties"].elements["month_" + Id].value = currDate.getMonth();
  document.forms["properties"].elements["year_" + Id].value = currDate.getYear();
}

function InitCalendar(leerId, plus) {
  Id = plus;
  currDate.setDate(document.forms["properties"].elements["date_" + plus].value);
  currDate.setMonth(document.forms["properties"].elements["month_" + plus].value);
  currDate.setYear(document.forms["properties"].elements["year_" + plus].value);
  today.setDate(document.forms["properties"].elements["date_cur_" + plus].value);
  today.setMonth(document.forms["properties"].elements["month_cur_" + plus].value);
  today.setYear(document.forms["properties"].elements["year_cur_" + plus].value);

  drawCalendar(leerId);
}

function drawCalendar(leerId, showYear, showMonth) {
var month = new Date(today);

// insetting the button
if (showMonth != null) month.setMonth(showMonth, 1);
else month.setMonth(currDate.getMonth());
if (showYear != null) month.setYear(showYear);
else month.setYear(currDate.getFullYear());
month.setDate(1);
var thisMonth = month.getMonth();
var nextMonth = (thisMonth == 11)? 0 : thisMonth + 1;
var prevMonth = (thisMonth == 0)? 11 : thisMonth - 1;
var thisYear = month.getFullYear();
var nextYear = (thisMonth == 11)? thisYear + 1 : thisYear;
var prevYear = (thisMonth == 0)? thisYear - 1 : thisYear;
var isThisMonth = (month.getFullYear() == currDate.getFullYear() && month.getMonth() == currDate.getMonth())? true : false;
// table starts
var calendarHTML = '<table cellpadding="0" cellspacing="0" style="border: solid 1px #87CBFC" width="130"><tr><td><table cellpadding="1" cellspacing="0" border="0" width="100%"><tr bgcolor="#E6F6FF">';
// link back
calendarHTML += '<td style="padding-bottom: 2px; "><a href="" onClick="drawCalendar(\'' + leerId + '\', ' + prevYear + ', ' + prevMonth +'); return false;"><img src="./images/arr-prev.gif" width="13" height="17" border="0" /><\/a>';

calendarHTML += '<\/td>';
// month, year row
calendarHTML += '<td align="center" style="padding-bottom: 2px; font-size:9pt" nowrap="nowrap">' + monthNames[month.getMonth()] + ', ' + month.getFullYear() + '<\/td>';
// link fwd
calendarHTML += '<td align="right" style="padding-bottom: 2px;"><a href="" onClick="drawCalendar(\'' +
leerId + '\',' + nextYear + ', ' +
nextMonth + '); return false;"><img src="./images/arr-next.gif" width="13" height="17" border="0" /><\/a><\/td><\/tr>' +
'<tr><td colspan="3" align="center" style="padding: 0 10px; border-top: 1px solid #87CBFC;">';
// starting the calendar table...
calendarHTML += '<table cellpadding="2" cellspacing="2" border="0"><tr align="right">'
// appending day initials
for (var i = 0; i < weekdayInits.length; i++) calendarHTML += '<td style="padding-bottom:0px;color:#4B505C; font-size:7pt">' + weekdayInits[i] + '<\/td>'
calendarHTML += '</tr><tr><td colspan="7" bgcolor="#87CBFC" style="padding:0px"><img src="./images/p.gif" width="1" height="1"></td></tr>';
calendarHTML += '<tr align="right">'
// getting the first day of the month
var daysToStart = (month.getDay() == 0)? 7 : month.getDay();
// drawing empty cells
for (var i = 0; i < daysToStart - 1; i++) calendarHTML += '<td><img src="./images/p.gif" width="1" height="1"><\/td>';
// drawing the calendar itself
for (var i = 1; i < 33; i++) {
month.setDate(i);
if (month.getMonth() == thisMonth) {
  if (isThisMonth && currDate.getDate() == i) calendarHTML += '<td style="color: #ffffff;" bgcolor="#Ee0000" align="center" style="font-size:90%;">' + i + '<\/td>';
  else calendarHTML += '<td align="center" style="font-size:90%;"><a href="" onClick="setDate(' + i + ', ' + thisMonth + ', ' + thisYear + '); drawCalendar(\'' + leerId + '\',' + showYear + ',' + showMonth + '); return false;">' + i + '<\/a><\/td>';
} else break;
if (month.getDay() == 0) calendarHTML += '<\/tr><tr align="right">';
}
// drawing empty cells if any
if (month.getDay() != 1) {
var finalDay = (month.getDay() == 0)? 7 : month.getDay();
var daysToEnd = 8 - finalDay;
for (var i = 0; i < daysToEnd; i++) calendarHTML += '<td><img src="./images/p.gif" width="1" height="1"><\/td>';
}
// tables ends
calendarHTML += '<\/tr><\/table><\/td><\/tr><\/table><\/td><\/tr><\/table>';

var leerElem = document.getElementById(leerId);
leerElem.innerHTML = calendarHTML;
}