var calendar = {
	startAt: 1,
	monthName: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
	dayName: ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],

	padZero: function(num) {
		return num < 10 ? '0' + num : num;
	},
	changeMonth: function(q) {
		var i = q == 'up' ? 1 : -1;
		this.monthSelected += i;
		if(this.monthSelected > 11 || this.monthSelected < 0) {
			this.monthSelected = i == '-1' ? 11 : 0;
			this.yearSelected += i;
		}
		this.constructCalendar();
	},
	constructCalendar: function() {
		var startDate = new Date(this.yearSelected, this.monthSelected, 1);
		var endDate = new Date(new Date(this.yearSelected, this.monthSelected+1, 1) - 24*60*60*1000);
		var numDaysInMonth = endDate.getDate();

		var dayPointer = startDate.getDay() - this.startAt;

		if(dayPointer < 0) dayPointer = 6;

		var content = '<table class="header-style"><tr>';

		for(var i=0; i<7; i++) {
			content += '<td class="week-day">' + this.dayName[i] + '<\/td>';
		}
		content +='<\/tr><\/table><table class="body-style"><tr>';

		for(var i=1; i<=dayPointer; i++) {
			content += "<td class='empty-day'>&nbsp;<\/td>";
		}

		for(var datePointer=1; datePointer<=numDaysInMonth; datePointer++) {
			dayPointer++;
			var sStyle="normal-day-style";

			if(datePointer==this.dateNow && this.monthSelected==this.monthNow && this.yearSelected==this.yearNow) sStyle = "current-day-style";
			if(datePointer==this.odateSelected && this.monthSelected==this.omonthSelected && this.yearSelected==this.oyearSelected) sStyle += " selected-day-style";

			content += '<td class="' + sStyle + '"><a title="Посмотреть новости на это число" href="/' + this.article + '/' + this.padZero(datePointer) + '.' + this.padZero(this.monthSelected + 1) + '.' + ('' + this.yearSelected).substr(this.article == 'news' ? 2 : 0) + '">' + datePointer + '<\/a>';
			if ((dayPointer+this.startAt) % 7 == this.startAt) content += "<\/tr><tr>";
		}
	
		while((dayPointer+this.startAt) % 7 != this.startAt) {
			dayPointer++;
			content += "<td class='empty-day'>&nbsp;<\/td>";
		}

		document.getElementById("content").innerHTML = content;
		document.getElementById("spanMonth").innerHTML = this.monthName[this.monthSelected];
		document.getElementById("spanYear").innerHTML = this.yearSelected;

		var table = this.obj.getElementsByTagName('table');
		for(var i=0; i < table.length; i++) {
			table[i].setAttribute('cellSpacing', 1);
		}
		this.obj.style.visibility = "visible";
	},
	dateSelectorInit: function() {
		this.obj.style.visibility = "hidden";
		this.today = new Date();
		this.dateNow = this.today.getDate();
		this.monthNow = this.today.getMonth();
		this.yearNow = this.today.getFullYear();
		this.dateSelected = this.dateNow;
		this.monthSelected = this.monthNow;
		this.yearSelected = this.yearNow;
		this.article = window.location.toString().search('online') != -1 ? 'online' : 'news';

		var parseURL = window.location.toString().split('/');
		parseURL = parseURL[parseURL.length-1].split('.');
		if(parseURL != '') {
			this.odateSelected = parseURL[0] < 10 ? parseURL[0].substr(1) : parseURL[0];
			this.omonthSelected = (parseURL[1] < 10 ? parseURL[1].substr(1) : parseURL[1]) - 1;
			this.oyearSelected = (this.article == 'news' ? '20' : '') + parseURL[2];
		}

		document.getElementById("caption").innerHTML =
				'<table class="title-control-style">\n' +
				'<tr>\n' +
				'\t<td id="spanLeft"><span><img src="/arrow-black-left.gif"><\/span><\/td>\n' +
				'\t<td><span id="spanMonth"><\/span>&nbsp;<span id="spanYear"><\/span><\/td>\n' +
				'\t<td id="spanRight"><span><img src="/arrow-black-right.gif"><\/span><\/td>\n' +
				'<\/tr>\n' +
				'<\/table>\n';
		document.getElementById('spanLeft').onclick = function() { calendar.changeMonth('down'); }
		document.getElementById('spanRight').onclick = function() { calendar.changeMonth('up'); }

		this.constructCalendar();
	},
	init: function() {
		this.obj = document.getElementById('calendar');
		if(this.obj) this.dateSelectorInit();
		else setTimeout( function() { calendar.init() }, 0);
	}
}
calendar.init();
