// months as they appear in the calendar's title
var MONTHS = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"];
// week day titles as they appear on the calendar
var WEEKDAYS = ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"];
// day week starts from (normally 0-Вс or 1-Пн)
var WEEKSTART = 1;
// calendar path
var CALPATH = 'analytics/calendar/';

var url = new RegExp('datetime=(\\-?\\d+)');
var current = (url.exec(String(window.location)) ? new Date(new Number(RegExp.$1)) : new Date());
var loc = String(window.location).replace(/\?.*/, '');

// get same date in the previous month
var prev_month = new Date(current);
prev_month.setMonth(prev_month.getMonth() - 1);
if (prev_month.getDate() != current.getDate()) prev_month.setDate(0);

// get same date in the next month
var next_month = new Date(current);
next_month.setMonth(next_month.getMonth() + 1);
if (next_month.getDate() != current.getDate()) next_month.setDate(0);

// get first day to display in the grid for current month
var firstday = new Date(current);
firstday.setDate(1);
firstday.setDate(1 - (7 + firstday.getDay() - WEEKSTART) % 7);

// print calendar header
document.write(
	'<div id="cal">'+
		'<table style="width: 100%;">'+
		'<tr><td colspan="7">'+
			'<table id="cal-header" style="width: 100%;">'+
			'<tr>'+
				'<th><a href="'+loc+'?datetime='+prev_month.valueOf()+'"><img src="inc/img/prev.gif" border="0" alt="предыдущий месяц" /></a></th>'+
				'<th style="width: 100%;"><b>'+MONTHS[current.getMonth()]+' '+current.getFullYear()+ '</b></th>'+
				'<th><a href="'+loc+'?datetime='+next_month.valueOf()+'"><img src="inc/img/next.gif" border="0" alt="следующий месяц" /></a></th>'+
			'</tr>'+
			'</table>'+
		'</td></tr>'+
		'<tr>'
);
// print weekdays titles
for (var n = 0; n < 7; n++) document.write('<th>'+WEEKDAYS[(WEEKSTART + n) % 7]+'</th>');
document.write('</tr>');

// print calendar table
var current_day = new Date(firstday);
while (current_day.getMonth() == current.getMonth() || current_day.getMonth() == firstday.getMonth()) {
	document.write('<tr>');
	for (var n = 0; n < 7; n++) {
		y = current_day.getFullYear();
		m = current_day.getMonth() + 1;
		m = (m < 10) ? '0' + m : m;
		d = current_day.getDate();
		d = (d < 10) ? '0' + d : d;
		
		if (current_day.getDate() == current.getDate() && current_day.getMonth() == current.getMonth())
			// current date
			style = 'current-date';
		else if (current_day.getDay() == 0 || current_day.getDay() == 6)
			// weekend days
			style = 'weekend-day';
		else
			// print working days of current month
			style = 'working-day';
		
		if (style == 'current-date')
			// current date
			style = 'current-date';
		else if (current_day.getMonth() == this.current.getMonth())
			// print days of current month
			style += ' current-month';
		else
			// print days of other months
			style += ' other-months';
		
		document.write('<td><a href="'+CALPATH+y+m+d+'.html?datetime='+current_day.valueOf()+'" class="'+style+'">'+current_day.getDate()+'</a></td>');
		current_day.setDate(current_day.getDate()+1);
	}
	document.write('</tr>');
}

// print calendar footer
document.write(
    '<tr><th colspan="7">показатели рынка форекс</th></tr>'+
		'</table>'+
	'</div>'
);