// Поддержка календаря

// создадим объект, содержащий в себе функционал календаря

// конструктор
function KanobuCalendar(main_box_id) {
	this.main_box_id = main_box_id;
	this.main_box = null;
}

// возвращаем объект главного контейнера
KanobuCalendar.prototype.get_main_box = function () {
	if (!this.main_box) {
		this.main_box = $('#'+this.main_box_id).get(0);
	}
	return this.main_box;
};

// возвращаем jQuery-селектор главного контейнера
KanobuCalendar.prototype.get_jmain_box = function () {
	return $(this.get_main_box());
};

// функция прокрутки страницы до календаря
KanobuCalendar.prototype.scroll_to_calendar = function () {
	var new_height = this.get_jmain_box().offset().top - 20 + 'px';
	$('html,body').animate({scrollTop: new_height}, 0);
};

// функция обновления месяца календаря
KanobuCalendar.prototype.change_month = function (url) {
	var calendar_obj = this, extra = {};
	// если юзером выбрана какая-то дата (щелчком по дню, то данные о ней посылаются вместе с запросом
	if (this.selected_date) {
		extra = {
			'year': this.selected_date.getFullYear(),
			'month': this.selected_date.getMonth(),
			'day': this.selected_date.getDate()
		};
	}
	// обязательный атрибут JSON-ответа: main_box_html - HTML-код для главного контейнера календаря
	$.getJSON(url, extra, function(data) {
		calendar_obj.get_jmain_box().html(data.main_box_html);

		if (calendar_obj.change_month_callback) {
			calendar_obj.change_month_callback(data);
		}
	});
}

// если надо выполнить дополнительные действия при изменении месяца календаря, присваиваем этому атрибуту функцию, принимающую результат JSON-запроса.
KanobuCalendar.prototype.change_month_callback = function (data) {};

// функция, вызываемая при щелчке по дню. Аргумент - объект с атрибутами
KanobuCalendar.prototype.day_click = function (params) {};

// календарь событий
var EventCalendar = new KanobuCalendar('Calendar');

EventCalendar.change_month_callback = function (data) {
	if (data.day_has_events) {
		$('#right_events_box').load(data.event_list_url);
	}
	this.scroll_to_calendar();
	// агли фикс фор агли ИЕ
	$('#right_events_box').html($('#right_events_box').html());
};

EventCalendar.day_click = function (params) {
	this.selected_date = new Date(parseInt(params.year, 10), parseInt(params.month, 10), parseInt(params.day, 10));
	$('#right_events_box').load(
		params.url,
		// еще один агли фикс фор ИЕ
		function () {
			$('.box.service.poll,.box.service.profile').each(function() {$(this).html($(this).html());});
		}
	);
	this.scroll_to_calendar();
};

// календарь сообщений
var MessageCalendar = new KanobuCalendar('message_calendar');

MessageCalendar.day_click = function (params) {
	window.location = params.url;
};










/*
// асинхронное обновление календаря
function change_month(entry_type, entry_id, y, m, mode, calendar_mode, tab_name, stype) {
	if (typeof mode == 'undefined' ) {
		mode = 'show';
	}
	if (typeof calendar_mode == 'undefined' ) {
		calendar_mode = 'month';
	}


	var calendar_id = 'Calendar';
	if (entry_type == 'entity') {
		var url = '/calendar/entities/' + entry_id + '/calendar/update_month/'
			+ new Array(y, m).join('/')
			+ '?mode=' + mode
			+ '&calendar_mode=' + calendar_mode;
	} else if (entry_type == 'user') {
		var url = '/calendar/accounts/' + entry_id + '/calendar/update_month/'
			+ new Array(y, m).join('/')
			+ '?mode=' + mode
			+ '&calendar_mode=' + calendar_mode;

	} else if (entry_type == 'messages') {
		tab_name = tab_name || 'messages';
		stype = stype || 'in';
		calendar_id = 'message_calendar';
		var url = '/accounts/profile/messages/' + tab_name + '/' + stype + '/update_month/'
			+ new Array(y, m).join('/') + '/';
	} else {
		var url = '/calendar/entities/all/calendar/update_month/'
			+ new Array(y, m).join('/')
			+ '?mode=' + mode
			+ '&calendar_mode=' + calendar_mode;
	}
	$('#' + calendar_id).load(url);
}



// Асинхронное обновление списка с событиями на заданный день.
function update_events_list(mode, y, m, d) {
	var url = '/calendar/update_events_list/' + mode + '/' + new Array(y, m, d).join('/') + '/';
	$('#right_events_box').load(url);
	EventCalendar.scroll_to_calendar();
}
*/


/*function load_top_to_events_list() {
	var url = '/calendar/load_top_to_events_list/';
	$('#right_events_box').load(url);
	EventCalendar.scroll_to_calendar();
}*/

/*
function load_top_to_events_list() {
	var url = '/calendar/load_top_to_events_list/';
	EventCalendar.day_click({'url': url});
}
*/
