﻿var calendar = {
	ajax: null,
	title: '',
	idEntity: null,
	month: undefined,
	year: undefined,
	createEvent: null,
	monthNames: new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"),
	dayNames: new Array("Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sabado"),
	mountCalendar: function () {
		if (this.month == undefined) this.month = new Date().getMonth() + 1;
		if (this.year == undefined) {
			this.year = new Date().getYear();
			if (this.year < 1000) this.year += 1900;
		}

		var prevMonth = this.month - 1;
		var prevYear = this.year;
		if (prevMonth == 0) {
			prevYear -= 1;
			prevMonth = 12;
		}
		$('#prevMonth').attr('onclick', 'javascript:event.preventDefault(); calendar.month = ' + prevMonth + ';calendar.year = ' + prevYear + ';calendar.mountCalendar();');

		var nextMonth = this.month + 1;
		var nextYear = this.year;
		if (nextMonth == 13) {
			nextYear += 1;
			nextMonth = 1;
		}
		$('#nextMonth').attr('onclick', 'javascript:event.preventDefault(); calendar.month = ' + nextMonth + ';calendar.year = ' + nextYear + ';calendar.mountCalendar();');

		$('#monthName').text(this.monthNames[this.month - 1].toUpperCase() + "/" + this.year.toString());

		var currentDate = new Date();

		var first = new Date();
		first.setFullYear(this.year, this.month - 1, 1);

		var last = new Date();
		last.setFullYear(this.year, this.month, 0);

		var daysInMonth = last.getDate();

		var days = '<tr><td class="semana"><span><b>d</b></span></td><td class="semana"><span><b>s</b></span></td><td class="semana"><span><b>t</b></span></td><td class="semana"><span><b>q</b></span></td><td class="semana"><span><b>q</b></span></td><td class="semana"><span><b>s</b></span></td><td class="semana"><span><b>s</b></span></td></tr><tr>';
		var weekCount = 0;
		var daysCount = 0;
		for (var i = 0; i < first.getDay(); i++) {
			days += '<td></td>';
			daysCount++;
		}
		for (var i = 1; i <= daysInMonth; i++) {
			if (daysCount == 7) {
				days += '</tr><tr>';
				daysCount = 0;
				weekCount++;
			}
			var d = i.toString();
			if (d.length == 1) d = '0' + d;

			var dia = '';
			var currentMonth = currentDate.getMonth() + 1;
			if (currentMonth == this.month && currentDate.getDate() == i) {
				dia = ' "dia"';
			}
			days += '<td><a id="day' + i.toString() + '" href="javascript:;" class=' + dia + '>' + d + '</a></td>';
			daysCount++;
		}
		for (var i = last.getDay(); i < 7; i++) {
			days += '<td></td>';
			daysCount++;
		}
		days += '</tr>';
		$('#calendar').html(days);

		if ($("#itemsCalendario"))
			$("#itemsCalendario").html('');

		calendar.fetchItems();
	},
	fetchItems: function () {
		if (calendar.ajax != null) calendar.ajax.abort();
		var jsonText = JSON.stringify({ month: this.month, year: this.year, idEntity: this.idEntity });
		calendar.ajax = $.ajax({
			type: "POST",
			url: appPath + "services/wsEvent.asmx/LoadEvents",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			data: jsonText,
			beforeSend: function () {
				$('#calendar').append('<tr id="loading"><td colspan="7">Carregando ' + calendar.title + '...</td></tr>');
			},
			success: function (data, textStatus, jqXHR) {
				var obj = eval('(' + data.d + ')');
				for (var i in obj) {
					var dt = new Date(parseInt(obj[i].Date.replace(/\//g, '').replace('Date(', '').replace(')', '')));

					tipo = 'distancia';
					if (obj[i].Type == 1) {
						tipo = 'presencial';
					}

					diaClass = $('#day' + dt.getDate()).attr("class");

					if (diaClass.indexOf("distancia") == -1 && diaClass.indexOf("presencial") == -1)
						$('#day' + dt.getDate()).addClass('diaCalendario ' + tipo);
					else {
						if (tipo == "presencial") {
							$('#day' + dt.getDate()).addClass('diaCalendario ' + tipo);
							$('#day' + dt.getDate()).removeClass('distancia');
						}
					}

					$('#day' + dt.getDate()).attr('style', 'margin-top:0px;');

					var lastTitle = $('#day' + dt.getDate()).attr('title');
					if (lastTitle == undefined) lastTitle = tipo; // obj[i].Name;
					if (lastTitle != '') {
						lastTitle += '\n';
					}
					lastTitle = tipo;
					var h = dt.getHours().toString();
					if (h.length == 1) h = '0' + h;
					var m = dt.getMinutes().toString();
					if (m.length == 1) m = '0' + m;

					lastTitle += ' - ' + h + ':' + m + ' ' + obj[i].Name;
					$('#day' + dt.getDate()).attr('title', lastTitle)

					calendar.createEvent(obj[i]);
				}
			},
			error: function (jqXHR, textStatus, errorThrown) {
				//if (textStatus == 'error') if (textStatus == 'error' && jqXHR.readyState == 4) alert('Erro:\n' + jqXHR.responseText);
			},
			complete: function () {
				$('#loading').remove();
				calendar.ajax = null;
			}
		});
	},
	getMonthName: function (month) {
		var name = this.monthNames[month].toUpperCase();
		return name.substr(0, 3);
	},
	getDayName: function (day) {
		var name = this.dayNames[day].toUpperCase();
		return name.substr(0, 3);
	}
}
