/* =========================================================================

InDesign ExtendScript

NAME: CalendarWizardCS2
VERSION: 1.0

AUTHOR: Филянин Сергей
DATE  : 30.08.06

DESCRIPTION: 
Скрипт для автоматической генерации календарных сеток.
Дальнейщую доводку можно осуществлять с помощью изменения стилей
и скрипта calendar_change_params.

E-MAIL: dtp@mail.ru

============================================================================ */
with (app) {
// Подключаем holydays_ru.ini	
	var myIniFile = new File (activeScript.path + "/holydays_ru.ini");
	if (!myIniFile.exists) {
		alert ("Cant open holydays_ini file!");
		exit();
	} else {
		eval ("//@include \'holydays_ru.ini\';");
	}
// Подключаем params_ru.ini
	var myIniFile = new File (activeScript.path + "/params_ru.ini");
	if (!myIniFile.exists) {
		alert ("Cant open params_ini file!");
		exit();
	} else {
		eval ("//@include \'params_ru.ini\';");
	}
// Список вариантов написания дней недели
	var DayOfWeekShow=new Array(dialog_NotPlace);
	for (var i=0; i<DaysOfWeek.length; i++)
	{
		var text_tmp="";
		for (var j=0; j<3; j++)
		{
			text_tmp+=DaysOfWeek[i][j];
			if (j<2)
			{
				text_tmp+=", ";
			}
		}
		text_tmp+="…";

		DayOfWeekShow.push(text_tmp);
		DayOfWeekShow.push(text_tmp.toLowerCase());
		DayOfWeekShow.push(text_tmp.toUpperCase());
	}
// Список вариантов написания месяцев
	var MonthNamesShow= new Array(dialog_NotPlace);
	for (var i=0; i<MonthNames.length; i++)
	{
		var text_tmp="";
		for (var j=0; j<3; j++)
		{
			text_tmp+=MonthNames[i][j];
			if (j<2)
			{
				text_tmp+=", ";
			}
		}
		text_tmp+="…";
		MonthNamesShow.push(text_tmp);
		MonthNamesShow.push(text_tmp.toLowerCase());
		MonthNamesShow.push(text_tmp.toUpperCase());
	}
// Список вариантов расположения календарной сетки
	var MonthPalacement=new Array("12х1", "6x2", "4x3", "3x4", "2x6", "1x12");
	var MonthPalacementSelect=0;

// Диалог параметров создания календаря
	var myDlgBegin = dialogs.add({name: "CalendarWizardCS2"});
	var current_date = new Date();

// Создаём диалоговое окно	
with (myDlgBegin.dialogColumns.add().dialogRows.add())
{
	with (borderPanels.add().dialogColumns.add())
	{
		//Создаем панель параметров страницы
		with (dialogRows.add())
		{
			dialogRows.add().staticTexts.add({staticLabel:dialog_PageParams});
				with (dialogRows.add())
				{
					with (dialogColumns.add())
					{
						var myLabel01 = staticTexts.add({staticLabel:dialog_PageWidth});
						var myLabel02 = staticTexts.add({staticLabel:dialog_PageHeights});
						var myLabel03 = staticTexts.add({staticLabel:dialog_PageTopMargin});
						var myLabel04 = staticTexts.add({staticLabel:dialog_PageBottomMargin});
						var myLabel05 = staticTexts.add({staticLabel:dialog_PageLeftMargin});
						var myLabel06 = staticTexts.add({staticLabel:dialog_PageRightMargin});
					}
					with (dialogColumns.add())
					{
						var myDocWidth = realEditboxes.add({editValue:100});
						var myDocHeight = realEditboxes.add({editValue:70});
						var myDocMarginUp = realEditboxes.add({editValue:5});
						var myDocMarginDown = realEditboxes.add({editValue:5});
						var myDocMarginLeft = realEditboxes.add({editValue:5});
						var myDocMarginRight = realEditboxes.add({editValue:5});
					}
				}
		}
		//Создаем панель типа календаря
		with (dialogRows.add())
		{
			dialogRows.add().staticTexts.add({staticLabel:dialog_CalendarType});
				with (dialogRows.add())
				{
					with (dialogColumns.add())
					{
						with (radiobuttonGroups.add())
						{
							var myKvartalCalendar=radiobuttonControls.add({checkedState: true, staticLabel:dialog_CalendarType1Month})
							var myKarmanCalendar=radiobuttonControls.add({checkedState: false, staticLabel:dialog_CalendarTypeAllMonth})
						}
					}
				}
		}
		//Создаем панель расположения месяцев
		with (dialogRows.add())
		{
			dialogRows.add().staticTexts.add({staticLabel:dialog_MonthPlacement});
				with (dialogRows.add())
				{
					with (dialogColumns.add())
					{
						var myDropMonthPalacement = dropdowns.add({stringList: MonthPalacement, selectedIndex: 2, minWidth: 200});
					}
				}
		}
	}
	with (borderPanels.add().dialogColumns.add())
	{
		//Создаем панель периода действия календаря
		with (dialogRows.add())
		{
			dialogRows.add().staticTexts.add({staticLabel:dialog_Period});
				with (dialogRows.add())
				{
					with (dialogColumns.add())
					{
						var myLabe09 = staticTexts.add({staticLabel:dialog_YearBegin});
						var myLabe10 = staticTexts.add({staticLabel:dialog_MonthBegin});
						var myLabel1 = staticTexts.add({staticLabel:dialog_MonthEnd});
					}
					with (dialogColumns.add())
					{
						var myTextYear = realEditboxes.add({editValue:current_date.getFullYear()});
						var myDropMonth1 = dropdowns.add({stringList: MonthNames[0], selectedIndex: 0, minWidth: 200});
						var myDropMonth2 = dropdowns.add({stringList: MonthNames[0], selectedIndex: 11, minWidth: 200});
					}
				}
		}
		//Создаем панель названия месяцев
		with (dialogRows.add())
		{
			dialogRows.add().staticTexts.add({staticLabel:dialog_MonthNames});
				with (dialogRows.add())
				{
					with (dialogColumns.add())
					{
						var myDropMonthNames = dropdowns.add({stringList: MonthNamesShow, selectedIndex: 0, minWidth: 200});
					}
				}
		}
		//Создаем панель ориентации календаря горизонтальный/вертикальный
		with (dialogRows.add())
		{
			dialogRows.add().staticTexts.add({staticLabel:dialog_WeekPlacement});
				with (dialogRows.add())
				{
					with (dialogColumns.add())
					{
						var myDropWeek = dropdowns.add({stringList: WeekPositions, selectedIndex: 0, minWidth: 200});
					}
				}
		}
		//Создаем панель названия дней недели
		with (dialogRows.add())
		{
			dialogRows.add().staticTexts.add({staticLabel:dialog_WeekNames});
				with (dialogRows.add())
				{
					with (dialogColumns.add())
					{
						var myDropWeekDays = dropdowns.add({stringList: DayOfWeekShow, selectedIndex: 0, minWidth: 200});
					}
				}
		}
	}
};
// конец описания диалога
	resultDialog = myDlgBegin.show();
	if (resultDialog)
	{
		// получение параметров календаря из диалога
		var myYear=myTextYear.editValue;
		var beginMonth=myDropMonth1.selectedIndex;
		var endMonth=myDropMonth2.selectedIndex;
		if (myKarmanCalendar.checkedState) {beginMonth=0; endMonth=11};
		var myDay=1;
		var myDayOfWeek=0;
		var weekDays=myDropWeekDays.selectedIndex;
		var monthNames=myDropMonthNames.selectedIndex;
		MonthPalacementSelect=myDropMonthPalacement.selectedIndex;
		
		if (endMonth<beginMonth)
		{
			alert ("Ошибка: неправильно выбран интервал месяцев");
		}
		else
		{
			var myTextFrame=new Array();
			var myTable=new Array();
			var myPages=new Array();

			// создание документа
			var myDoc=documents.add();
			with (myDoc.documentPreferences)
			{
				pageHeight=myDocHeight.editValue+"mm";
				pageWidth=myDocWidth.editValue+"mm";
				facingPages=false;
			}
			with (myDoc.masterSpreads.firstItem().pages.firstItem().marginPreferences)
			{
				top=myDocMarginUp.editValue+"mm";
				bottom=myDocMarginDown.editValue+"mm";
				left=myDocMarginLeft.editValue+"mm";
				right=myDocMarginRight.editValue+"mm";
			}

			// создание тилей оформления календаря
			MakeStyles();
		
			// заполнение сетки месяцев
			var dayInMonth=CompleteDayInMonth();
			
			// в зависимости от расположения дней недели создаём календарь
			if (myDropWeek.selectedIndex==0)
			{
				horizontalMonth(beginMonth, endMonth, weekDays, monthNames);
			}
			else
			{
				verticalMonth(beginMonth, endMonth, weekDays, monthNames);
			}	
		}

		
	}
}

function MakeStyles()
{
// создание новых красок
	// обычные дни недели
	var daysColor = myDoc.colors.add();
	daysColor.colorValue=[0,0,0,100];
	daysColor.name="days";
	// субботы
	var saturdaysColor=myDoc.colors.add();
	saturdaysColor.colorValue=[0,50,50,0];
	saturdaysColor.name="saturdays";
	// воскресенья
	var sundaysColor=myDoc.colors.add();
	sundaysColor.colorValue=[0,100,100,0];
	sundaysColor.name="sundays";
	// праздники
	var holydaysColor=myDoc.colors.add();
	holydaysColor.colorValue=[0,100,100,0];
	holydaysColor.name="holydays";
	// названия месяцев
	var monthsColor=myDoc.colors.add();
	monthsColor.colorValue=[100,100,0,0];
	monthsColor.name="months";
	
// задание параметров стилей
	// обычные дни недели	
	var myParagraphStyleDays=myDoc.paragraphStyles.add();
	myParagraphStyleDays.name="days";
	myParagraphStyleDays.justification=Justification.rightAlign;
	myParagraphStyleDays.pointSize=6;
	myParagraphStyleDays.position=Position.normal;
	myParagraphStyleDays.fillColor=daysColor;
	// субботы
	var myParagraphStyleSaturdays=myDoc.paragraphStyles.add();
	myParagraphStyleSaturdays.name="saturdays";
	myParagraphStyleSaturdays.basedOn=myParagraphStyleDays;
	myParagraphStyleSaturdays.fillColor=saturdaysColor;
	// воскресенья	
	var myParagraphStyleSundays=myDoc.paragraphStyles.add();
	myParagraphStyleSundays.name="sundays";
	myParagraphStyleSundays.basedOn=myParagraphStyleDays;
	myParagraphStyleSundays.fillColor=sundaysColor;
	// праздники
	var myParagraphStyleHolydays=myDoc.paragraphStyles.add();
	myParagraphStyleHolydays.name="holydays";
	myParagraphStyleHolydays.basedOn=myParagraphStyleDays;
	myParagraphStyleHolydays.fillColor=holydaysColor;
	// названия месяцев
	var myParagraphStyleMonths=myDoc.paragraphStyles.add();
	myParagraphStyleMonths.name="months";
	myParagraphStyleMonths.basedOn=myParagraphStyleDays;
	myParagraphStyleMonths.justification=Justification.centerAlign;
	myParagraphStyleMonths.fillColor=monthsColor;	
	myParagraphStyleMonths.pointSize=6;
	// названия дней недели
	var myParagraphStyleWeekDays=myDoc.paragraphStyles.add();
	myParagraphStyleWeekDays.name="weekdays";
	myParagraphStyleWeekDays.basedOn=myParagraphStyleDays;
	myParagraphStyleWeekDays.pointSize=4;
	// названия дней недели - субботы
	var myParagraphStyleWeekSaturdays=myDoc.paragraphStyles.add();
	myParagraphStyleWeekSaturdays.name="weeksaturdays";
	myParagraphStyleWeekSaturdays.basedOn=myParagraphStyleWeekDays;
	myParagraphStyleWeekSaturdays.pointSize=4;
	myParagraphStyleWeekSaturdays.fillColor=saturdaysColor;
	// названия дней недели - воскресенья
	var myParagraphStyleWeekSundays=myDoc.paragraphStyles.add();
	myParagraphStyleWeekSundays.name="weeksundays";
	myParagraphStyleWeekSundays.basedOn=myParagraphStyleWeekDays;
	myParagraphStyleWeekSundays.pointSize=4;
	myParagraphStyleWeekSundays.fillColor=sundaysColor;
}

// заполнение массивов месяцев
function CompleteDayInMonth()
{
	var dayInMonth=new Array(12);
	for (month=0; month<12; month++)
	{
		dayInMonth[month]=new Array();
		var myDate=new Date(myYear, month, 1);
		var j=0;
		while (myDate.getMonth()==month) 
		{
			dayInMonth[month][j]=new Array(7);
			for (i=1; i<=7; i++)
			{
				myDayOfWeek=myDate.getDay();
				if (myDayOfWeek==0) myDayOfWeek=7;
				if (myDate.getMonth()==month)
				{
					if (myDayOfWeek==i)
					{
						dayInMonth[month][j][i-1]=myDate.getDate();
						myDate.setDate(myDate.getDate()+1);
					}
					else
					{
						dayInMonth[month][j][i-1]=" ";	
					}
				}
				else
				{
					dayInMonth[month][j][i-1]=" ";	
				}
			}
			j++;
		}
	}
	return dayInMonth;
}

// создание горизонтальной календарной сетки
function horizontalMonth(m_begin, m_end, w_days, month_name)
{
	for (month=m_begin; month<=m_end; month++)	// для каждого месяца:
	{
		if (myKvartalCalendar.checkedState)
		// если создаётся квартальный календарь то добавляется страница для каждого месяца
		// и на каждой странице создаётся текстовый блок в размер страницы
		{
			if (month==m_begin)
			{	
				myPages[month-m_begin]=myDoc.pages[0];
			}
			else 
			{	
				myPages[month-m_begin]=myDoc.pages.add();
			}
			myTextFrame[month]=myPages[month-m_begin].textFrames.add();
			myTextFrame[month].geometricBounds=[myDocMarginUp.editValue, myDocMarginLeft.editValue, myDocHeight.editValue-myDocMarginDown.editValue, myDocWidth.editValue-myDocMarginRight.editValue];
		}
		else
		// если создаётся карманный календарь то просто создаются текстовые блоки на одной странице
		{
			myTextFrame[month]=myDoc.textFrames.add();
			myTextFrame[month].geometricBounds=getMonthGeometric(month);
		}
		myTextFrame[month].label="month";
		
		// создание таблицы месяца
		myTable[month]=myTextFrame[month].tables.add();
		// заголовок таблицы
		var tmp_table_header=0;
		if (month_name) {tmp_table_header++}; //строка с названием месяца
		if (w_days) {tmp_table_header++};     //строка с днями недели
		
		myTable[month].headerRowCount=tmp_table_header;   // шапка таблицы
		myTable[month].columnCount=7;  			          // количество колонок
		myTable[month].width=myTextFrame[month].geometricBounds[3]-myTextFrame[month].geometricBounds[1]-1; // ширина таблицы
		myTable[month].bodyRowCount=dayInMonth[month].length;   // тело таблицы
		
		// установка начальных параметров обводок таблицы
		for (var i=0; i<myTable[month].cells.length; i++)
		{
			myTable[month].cells[i].bottomEdgeStrokeWeight=0+"pt";						//толщина обводки снизу
			myTable[month].cells[i].topEdgeStrokeWeight=0+"pt";							//толщина обводки сверху
			myTable[month].cells[i].leftEdgeStrokeWeight=0+"pt";						//толщина обводки слева
			myTable[month].cells[i].rightEdgeStrokeWeight=0+"pt";						//толщина обводки справа
			myTable[month].cells[i].height=((myTextFrame[month].geometricBounds[2]-myTextFrame[month].geometricBounds[0])/(tmp_table_header+6)-.2);
			myTable[month].cells[i].topInset=0.1+"pt";									//Отступ сверху
			myTable[month].cells[i].bottomInset=0.1+"pt";								//Отступ снизу
			myTable[month].cells[i].leftInset=0.1+"pt";									//Отступ слева
			myTable[month].cells[i].rightInset=0.1+"pt";								//Отступ справа

		}
		
		var tmp_current_row=0;
		var tmp_current_col=0;
		// добавление названий месяцев
		if (month_name)
		{
			myTable[month].rows[tmp_current_row].cells[0].contents=addMonthName(month_name, month);
			myTable[month].rows[tmp_current_row].cells[0].paragraphs[0].appliedParagraphStyle="months";
			myTable[month].rows[tmp_current_row].cells[0].merge(myTable[month].rows[tmp_current_row]);
			tmp_current_row++;
		}
		// добавление дней недели
		if (w_days)
		{
				for (i=0; i<7; i++)
				{
					myTable[month].rows[tmp_current_row].cells[i].contents=addNameOfWeekDay(w_days, i);
					myTable[month].rows[tmp_current_row].cells[i].paragraphs[0].appliedParagraphStyle="weekdays";
					if (i==5) myTable[month].rows[tmp_current_row].cells[i].paragraphs[0].appliedParagraphStyle="weeksaturdays";
					if (i==6) myTable[month].rows[tmp_current_row].cells[i].paragraphs[0].appliedParagraphStyle="weeksundays";
				}
				tmp_current_row++;
		}
		// заполнение дней месяца
		for (var j=0; j<dayInMonth[month].length; j++)
		{
			for (i=0; i<7; i++)
			{
				myTable[month].rows[tmp_current_row].cells[i].contents=dayInMonth[month][j][i].toString();
				myTable[month].rows[tmp_current_row].cells[i].paragraphs[0].appliedParagraphStyle="days";
				if (i==5) myTable[month].rows[tmp_current_row].cells[i].paragraphs[0].appliedParagraphStyle="saturdays";
				if (i==6) myTable[month].rows[tmp_current_row].cells[i].paragraphs[0].appliedParagraphStyle="sundays";
				for (p=0; p<prazdnik[month].length; p++)
				{
					if (dayInMonth[month][j][i]==prazdnik[month][p])
					{
						myTable[month].rows[tmp_current_row].cells[i].paragraphs[0].appliedParagraphStyle="holydays";
					}
				}
			}
			tmp_current_row++;
		}
	}
}

// создание вертикальной календарной сетки
function verticalMonth(m_begin, m_end, w_days, month_name)
{
	for (month=m_begin; month<=m_end; month++)	// для каждого месяца:
	{
		if (myKvartalCalendar.checkedState)
		// если создаётся квартальный календарь то добавляется страница для каждого месяца
		// и на каждой странице создаётся текстовый блок в размер страницы
		{
			if (month==m_begin)
			{	
				myPages[month-m_begin]=myDoc.pages[0];
			}
			else 
			{	
				myPages[month-m_begin]=myDoc.pages.add();
			}
			myTextFrame[month]=myPages[month-m_begin].textFrames.add();
			myTextFrame[month].geometricBounds=[myDocMarginUp.editValue, myDocMarginLeft.editValue, myDocHeight.editValue-myDocMarginDown.editValue, myDocWidth.editValue-myDocMarginRight.editValue];
		}
		else
		// если создаётся карманный календарь то просто создаются текстовые блоки на одной странице
		{
			myTextFrame[month]=myDoc.textFrames.add();
			myTextFrame[month].geometricBounds=getMonthGeometric(month);
		}
		myTextFrame[month].label="month";
		
		// создание таблицы месяца
		myTable[month]=myTextFrame[month].tables.add();
		// заголовок таблицы
		var tmp_table_header=0;
		if (month_name) {tmp_table_header++}; //строка с названием месяца
		
		var tmp_table_weekdays=0;
		if (w_days)
		 	{tmp_table_weekdays++};     //столбец с днями недели
		
		myTable[month].headerRowCount=tmp_table_header;   // шапка таблицы
		myTable[month].columnCount=dayInMonth[month].length+tmp_table_weekdays;  			          // количество колонок
		myTable[month].width=myTextFrame[month].geometricBounds[3]-myTextFrame[month].geometricBounds[1]-1; // ширина таблицы
		myTable[month].bodyRowCount=7;   // тело таблицы
		
		// установка начальных параметров обводок таблицы
		for (var i=0; i<myTable[month].cells.length; i++)
		{
			myTable[month].cells[i].bottomEdgeStrokeWeight=0+"pt";						//толщина обводки снизу
			myTable[month].cells[i].topEdgeStrokeWeight=0+"pt";							//толщина обводки сверху
			myTable[month].cells[i].leftEdgeStrokeWeight=0+"pt";						//толщина обводки слева
			myTable[month].cells[i].rightEdgeStrokeWeight=0+"pt";						//толщина обводки справа
			myTable[month].cells[i].height=((myTextFrame[month].geometricBounds[2]-myTextFrame[month].geometricBounds[0])/(tmp_table_header+6)-.5);
			myTable[month].cells[i].topInset=0.1+"pt";									//Отступ сверху
			myTable[month].cells[i].bottomInset=0.1+"pt";								//Отступ снизу
			myTable[month].cells[i].leftInset=0.1+"pt";									//Отступ слева
			myTable[month].cells[i].rightInset=0.1+"pt";								//Отступ справа

		}
		
		var tmp_current_row=0;
		// добавление названий месяцев
		if (month_name)
		{
			myTable[month].rows[tmp_current_row].cells[0].contents=addMonthName(month_name, month);
			myTable[month].rows[tmp_current_row].cells[0].paragraphs[0].appliedParagraphStyle="months";
			myTable[month].rows[tmp_current_row].cells[0].merge(myTable[month].rows[tmp_current_row]);
			tmp_current_row++;
		}
		// заполнение дней месяца
		for (i=0; i<7; i++)
		{
			var tmp_current_col=0;
				if (w_days)		// добавление дней недели
				{
					myTable[month].rows[tmp_current_row+i].cells[0].contents=addNameOfWeekDay(w_days, i);
					myTable[month].rows[tmp_current_row+i].cells[0].paragraphs[0].appliedParagraphStyle="weekdays";
					if (i==5) myTable[month].rows[tmp_current_row+i].cells[0].paragraphs[0].appliedParagraphStyle="weeksaturdays";
					if (i==6) myTable[month].rows[tmp_current_row+i].cells[0].paragraphs[0].appliedParagraphStyle="weeksundays";
					tmp_current_col=1;
				}
			for (j=0; j<dayInMonth[month].length; j++)
			{
				with (myTable[month].rows[tmp_current_row+i].cells[tmp_current_col+j])
				{
					contents=dayInMonth[month][j][i].toString();
					paragraphs[0].appliedParagraphStyle="days";
					if (i==5) paragraphs[0].appliedParagraphStyle="saturdays";
					if (i==6) paragraphs[0].appliedParagraphStyle="sundays";
					for (p=0; p<prazdnik[month].length; p++)
					{
							if (dayInMonth[month][j][i]==prazdnik[month][p])
							{
								paragraphs[0].appliedParagraphStyle="holydays";
							}
					}

				}
			}
		}
	}
}


// вычисляются размеры текстовых блоков для размещения на одной странице
function getMonthGeometric(m_num)
{
	var docWidth=myDocWidth.editValue;
	var docHeight=myDocHeight.editValue;
	var leftMargin=myDocMarginLeft.editValue;
	var rightMargin=myDocMarginRight.editValue;
	var bottomMargin=myDocMarginDown.editValue;
	var topMargin=myDocMarginUp.editValue;

	switch (MonthPalacementSelect) 
	{
		case 0:
			var countMonthWidth=12;
			var countMonthHeight=1;
			break;
		case 1:
			var countMonthWidth=6;
			var countMonthHeight=2;
			break;
		case 2:
			var countMonthWidth=4;
			var countMonthHeight=3;
			break;
		case 3:
			var countMonthWidth=3;
			var countMonthHeight=4;
			break;
		case 4:
			var countMonthWidth=2;
			var countMonthHeight=6;
			break;
		case 5:
			var countMonthWidth=1;
			var countMonthHeight=12;
			break;
	}

	var monthWidth=(docWidth-leftMargin-rightMargin)/countMonthWidth;
	var monthHeight=(docHeight-topMargin-bottomMargin)/countMonthHeight;
	var x1=leftMargin+monthWidth*(m_num-Math.floor(m_num/countMonthWidth)*countMonthWidth);
	var y1=topMargin+monthHeight*Math.floor(m_num/countMonthWidth);
	var myGeometricBounds=new Array(y1, x1, y1+monthHeight, x1+monthWidth);
	return myGeometricBounds;
}

// добавление названий месяцев
function addMonthName(month_name_type, n_month)
{
	var nameofmonth=null;
	if (month_name_type)
	{
		switch (month_name_type-Math.floor(month_name_type/3)*3) 
		{
			case 1:
				nameofmonth=MonthNames[Math.floor(month_name_type/3)][n_month];
				break;
			case 2:
				nameofmonth=MonthNames[Math.floor(month_name_type/3)][n_month].toLowerCase();
				break;
			case 0:
				nameofmonth=MonthNames[Math.floor(month_name_type/3)-1][n_month].toUpperCase();
				break;
		}
	}
	return nameofmonth;
}

// добавление названий дней недели
function addNameOfWeekDay(w_days_type, n_day)
{
	var nameofday=null;
	if (w_days_type)
	{
		switch (w_days_type-Math.floor(w_days_type/3)*3) 
		{
			case 1:
				nameofday=DaysOfWeek[Math.floor(w_days_type/3)][n_day];
				break;
			case 2:
				nameofday=DaysOfWeek[Math.floor(w_days_type/3)][n_day];
				break;
			case 0:
				nameofday=DaysOfWeek[Math.floor(w_days_type/3)-1][n_day];
				break;
		}
	}
	return nameofday;
}
