﻿/*
При создании задать необходимые переменные
после чего вызвать метод show

Ссылки строятся от переменно url в формате
y8888-m11
месяц в ссылке идет числом 1..12
год полный (4 числа)
*/

oCalendar = {
	minDate: new Date(2000, 0, 1),	//минимальная дата младше которой месяца не активны
	maxDate: new Date(2020, 11, 1),	//максимальная дата старше которой месяца неактивны
	
	//Исходная дата которуб покажет календарь
	//Месяц - 0..11
	//Год - четыре цифры
	curMonth: (new Date()).getMonth(),	
	curYear: (new Date()).getFullYear(),
	
	url: "",	//url от которого будут строится ссылки вида /url/y2008-m3/
	
	
	Year : null,	//внутренняя переменная для хранения выбранного года
/*	onClickDate: null,
	clickDate: function(month) {
		var checkDate = new Date(this.Year, month, 1);
		this.onClickDate(checkDate);
	},	*/
	Months: new Array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'),
	
	//Вызывается по нажатию на стрелку влево (уменьшение года на один)
	minusYear: function () {
		this.Year--;
		this.refreshYear();
	},

	//Вызывается по нажатию на стрелку вправо (увелечение года на один)
	plusYear: function () {
		this.Year++;
		this.refreshYear();
	},
	
	//Перерисовка года
	refreshYear: function(){
		var newYear = '<tr><td colspan="3" align="center">';
		if (this.Year - 1 >= this.minDate.getFullYear()){
			newYear += '<div class="button" style="float:left" onClick = "oCalendar.minusYear();">&larr;</div>';
		}
		if (this.Year + 1 <= this.maxDate.getFullYear()){
			newYear += '<div class="button" style="float:right" onClick = "oCalendar.plusYear();">&rarr;</div>';
		}
		newYear += '<div class="tHeadYear">'
		if(this.Year == this.curYear){
			newYear += '<a href="' + this.url + 'y' + this.Year + '/" class="curDate">'
		} else {
			newYear += '<a href="' + this.url + 'y' + this.Year + '/">'
		}
		newYear += this.Year;
		newYear += '</a></div>';
		newYear += '</td></tr>';
		$('#calendarYear').html(newYear);
		this.refreshMonths();
	},
	
	//Перерисовка месяцев
	refreshMonths: function(){
		var newMonths = "";
		var i=0;
		var j=0;
		for (i=0; i<4; i++){
			newMonths += "<tr>";
			for (j=0; j<3; j++){
				var checkDate = new Date(this.Year, i*3 + j, 1);
				var classMonth = "";
				if(this.Year == this.curYear && i*3 + j == this.curMonth ){
					classMonth = "curDate"
				}
				if (checkDate < this.minDate || checkDate > this.maxDate){
					newMonths = newMonths + '<td><div class = "emptyMonth"><span class="' + classMonth + '">' + this.Months[i*3 + j] + '</span></div></td>';
				} else {
					newMonths = newMonths + '<td><div class = "activeMonth" ><a href="' + this.url + 'y' + this.Year + '-m';
//					if(i*3 + j + 1 < 10)
//						newMonths += "0";
					newMonths = newMonths + (i*3 + j + 1) + '/" class="' + classMonth + '">' + this.Months[i*3 + j] + '</a></div></td>';
//					newMonths = newMonths + '<td><div class = "activeMonth" onClick="return oCalendar.clickDate(\'' + checkDate.getMonth() + '\')" >' + this.Months[i*3 + j] + '</div></td>';
				}
			}
			newMonths += "</tr>";
		}
		$('#calendarMonths').html(newMonths);
	},
	
	//Вывод календаря
	show: function() {
		if(this.Year == null){
			this.Year = this.curYear;
		}
		if (this.Year < this.minDate.getFullYear() || this.Year > this.maxDate.getFullYear()){
			this.Year = this.maxDate.getFullYear();
		}


		document.write('<table class="calendar">');
		document.write('<thead id = "calendarYear">');
		document.write('</thead>');
		this.refreshYear();

		document.write('<tbody id = "calendarMonths">');
		document.write('</tbody>');
		this.refreshMonths();
		document.write('</table>');
	},
	setup: function(curYear, curMonth, url, strDateMin, strDateMax) {
		this.curYear = curYear;
		this.curMonth = curMonth;
		this.url = url;
		this.minDate = strDateMin;
		this.maxDate = strDateMax;

		this.show();	
	}
}

