	
//function Calendar(){	
/*********************************************************/
/* форматируем значение даты к формату вида дд-мм-гггг */
function FormatDate(value) {
	var CurrDate = new Date();
	var Months   = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var S = value;
	while(S.match(/[^\d\/]+/))
		S = S.replace(/[^\d\/]+/,"/");
	var D = new Array();
	D = S.split('/');
	var Day, Mon, Year;
	Mon = D[0];
	if(D[1]) Day = D[1];
	if(D[2]) Year = D[2];

	if(!Year || Year>2100) Year = CurrDate.getFullYear();
	if(Year<70) Year = Year*1+2000;
	else if(Year<100) Year = Year*1+1900;
	if(Year%4==0) Months[1]++;

	if(!Mon || Mon>12) Mon = CurrDate.getMonth()+1;

	if(!Day) Day = 1;
	else if(Day>Months[Mon-1]) Day = Months[Mon-1];

	if(Mon<10) S = '0'; else S = '';
	S = S+Mon*1+'/';
	if(Day<10) S = S+'0';
	S = S+Day*1+'/'+Year;

        
//      if(Day<10) S = '0'; else S = '';
//	S = S+Day*1+'/';
//	if(Mon<10) S = S+'0';
//	S = S+Mon*1+'/'+Year;

	return S;
}

/*********************************************************/
/* форматируем значение контрола */
function NormDate(item) {
	if(!item.value) return;
	item.value = FormatDate(item.value);
}

/*********************************************************/
/* получить контрол по его ID */
function GetById(FieldId) {
  return document.getElementById(FieldId);
}

/*********************************************************/
/* получить TextBox, в который будет записываться дата */
function GetTextBox(FieldId) {
  return GetById(FieldId);
}

/*********************************************************/
/* получить таблицу с календарем, в который будет записываться дата */
function GetCalendar(FieldId) {
  return GetById('calendar_'+FieldId);
}

/*********************************************************/
/* получить ячейку таблицы с календарем, в который будет записываться дата */
function GetCalendarTD(FieldId) {
  return GetById('calendar_TD_'+FieldId);
}


/*********************************************************/
/* запись текстового значения даты в поле и скрытие календаря */
function SetDateValue(FieldId, DateValue) {
  GetTextBox(FieldId).value = FormatDate(DateValue);
	var calendar = GetCalendar(FieldId);
	var calendarTD = GetCalendarTD(FieldId);
	calendarTD.innerHTML = '';
	calendar.style.visibility = 'hidden';
}

/*********************************************************/
/* отрисовка таблицы или ее спрятывание */
/* если календарь закрыт - рисуем обязательно 
/* если он видим и заданы значения месяца и года - это 
/* отрисовка после перещелкивания на другой месяц */
function SetCalendar(Field, Month, Year) {
	var StartYear = 1970;
	var EndYear   = 2100;
	var StartWeek = 3; // индекс дня начала недели для 1 января 1970 года
	//var DaysOfWeek   = new Array('ПН','ВТ','СР','ЧТ','ПТ','СБ','ВС');
	var DaysOfWeek   = new Array('Mon','Tue','Wed','Thu','Fri','Sat','Sun');
	var DaysOfMonth  = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	//var MonthsOfYear = new Array('янв','фев','мар','апр','май','июн','июл','авг','сен','окт','ноя','дек');
	var MonthsOfYear = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

	var item = GetTextBox(Field);
	var calendar = GetCalendar(Field);
	var calendarTD = GetCalendarTD(Field);

  // если заданы значения месяца и года ИЛИ календарь закрыт - рисуем календарь
	if(Month && Year || calendar.style.visibility=='hidden') {
	
	  // в M и Y заносим значение индекса месяца и года или из Month, Year или из TextBox
		if(!Month || !Year) {
			var A = new Array();
			var S = FormatDate(item.value);
			A = S.split('/');
			var M = A[0]-1;
			var Y = A[2]*1;
		} else {
			var M = Month-1;
			var Y = Year;
		}

    // вычисляем начало недели для 1 января нужного нам года
		var SW = StartWeek;
		for(var i=Y-1; i>=StartYear; i--)
			if(i%4) SW+= 365; else SW+= 366;
			
    // вычисляем начало недели для 1 числа нужного нам месяца нужного нам года
		for(var i=M-1; i>=0; i--)
			if(i==1 && Y%4==0) SW+= DaysOfMonth[i]+1; else SW+= DaysOfMonth[i];
			
		SW %= 7;
		
		// вычисляем количество дней в нужном нам месяце
		var DM = DaysOfMonth[M]; 
		if(M==1 && Y%4==0) DM++;
		
		// вычисляем количество недель в нужном нам месяце
		var W = Math.floor((SW+DM)/7);
		if((SW+DM)%7) W++;
		//alert("SW="+SW+", DM="+DM+", W="+W);
		
		/****************************/
		/* рисуем заголовок таблицы */
		/****************************/
		S = '<table width=100% cellpadding=0 cellspacing=0 style="margin: 0;">\n';
		S+= '<tr>';
		
		// рисуем ссылку для переключения месяца назад, если это не первый месяц 1970 года
		if(Y>StartYear || M>0)
			S+= '<td class="border0" nowrap colspan='+(W+1)+' align="center"><br><table width=100% cellpadding=0 cellspacing=0 class="border0">\n<tr>\n<td class="border0" onclick="SetCalendar(\''+Field+'\','+(M>0?M+','+Y:'12,'+(Y-1))+');">&lt;&lt;</td>';
		else
			S+= '<td class="border0" nowrap colspan='+(W+1)+' align="center"><br><table width=100% cellpadding=0 cellspacing=0>\n<tr>\n<td class="border0">&nbsp;</td>';
		
		//рисуем текущий месяц и год
		S+= '<td class="border0" align="center">';
		S+= MonthsOfYear[M]+' '+Y;
		
		// рисуем ссылку для переключения месяца вперед, если это не последний месяц 2100 года
		if(Y<EndYear || M<11)
			S+= '<td class="border0" align="right" onclick="SetCalendar(\''+Field+'\','+(M<11?(M+2)+','+Y:'01,'+(Y+1))+');">&gt;&gt;&nbsp;</td></tr></table><br>';
		else
			S+= '<td class="border0">&nbsp;</td></tr></table><br>';
			
		S+= '</tr>\n';

		/****************************/
		/* рисуем календарь месяца  */
		/****************************/
		for(var i=1; i<=7; i++) {
		  // начинаем строку. Если это выходные - красным цветом
			S+= '<tr>';
			// рисуем день недели
			S+= '<td class="den_2'+(i>5?'_red':'')+'">'+DaysOfWeek[i-1]+'</td>';
			// рисуем строку с днями в этот день недели
			for(var j=1; j<=W; j++) {
				S+= '';
				var D = (j-1)*7+i-SW;
				if(D<=0 || D>DM) {
					S+= '<td>&nbsp;</td';
				} else {
					S+= '<td class="den'+(i>5?'_red':'')+'" onclick="SetDateValue(\''+Field+'\',\''+(M+1)+'/'+D+'/'+Y+'\');">';
					S+= D;
				}
				S+= '</td>';
			}
			S+= '</tr>\n';
		}

		S+= '</table>';
		calendarTD.innerHTML = S;
		calendar.style.visibility ='visible';
	} else {
	  // календарь уже открыт, прячем его
		calendarTD.innerHTML = '';
		calendar.style.visibility ='hidden';
	}
}
//}

//var Calendar = new Calendar();
