﻿var calendar = null;
var monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var calendar_dateStart;
var calendar_dateEnd;

function createCalendar() {
	var today = new Date();
	today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	calendar_dateStart = today;
	calendar_dateEnd = today;
	
	var tab = document.getElementById("selectTabContent");
	var table = document.createElement("table");
	table.className = "calendar";
	calendar = document.createElement("tbody");
	table.appendChild(calendar);
	tab.appendChild(table);

	printCalendar(today.getFullYear(), today.getMonth());
}

function printCalendar(year, month) {
	clear(calendar);

	var firstDate = new Date(year, month, 1);
	firstDate.setDate(firstDate.getDate() - ((firstDate.getDay() + 6) % 7));
	var lastDate = new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate() + 41);
	
	var prevMonth = new Date(year, month - 1, 1);
	var nextMonth = new Date(year, month + 1, 1);
	
	var row;
	var cell;
	var link;
	
	// Header
	row = document.createElement("tr");
	cell = document.createElement("td");
	cell.className = "calendar_prevNext";
	link = document.createElement("a");
	link.setAttribute("href", "javascript:printCalendar(" + prevMonth.getFullYear() + "," + prevMonth.getMonth() + ")");
	link.appendChild(document.createTextNode("<"));
	cell.appendChild(link);
	row.appendChild(cell);
	
	cell = document.createElement("th");
	cell.setAttribute("colSpan", "6");
	link = document.createElement("a");
	link.setAttribute("href", "javascript:selectDates(" + year + "," + month + ",1," + year + "," + (month + 1) + ",0)");
	link.appendChild(document.createTextNode(monthNames[month] + " " + year));
	cell.appendChild(link);
	row.appendChild(cell);
	
	cell = document.createElement("td");
	cell.className = "calendar_prevNext";
	link = document.createElement("a");
	link.setAttribute("href", "javascript:printCalendar(" + nextMonth.getFullYear() + "," + nextMonth.getMonth() + ")");
	link.appendChild(document.createTextNode(">"));
	cell.appendChild(link);
	row.appendChild(cell);
	
	calendar.appendChild(row);
	
	// Calendar body
	var currentDate = firstDate;
	
	while (currentDate <= lastDate) {
		if (currentDate.getDay() == 1) {
			row = document.createElement("tr");
			cell = document.createElement("td");
			cell.className = "calendar_weeknum";
			link = document.createElement("a");
			link.setAttribute("href", "javascript:selectDates(" + currentDate.getFullYear() + "," + currentDate.getMonth() + "," + currentDate.getDate() + "," +
				currentDate.getFullYear() + "," + currentDate.getMonth() + "," + (currentDate.getDate() + 6) + ")");
			link.appendChild(document.createTextNode(weeknum(currentDate)));
			cell.appendChild(link);
			row.appendChild(cell);
		}
		cell = document.createElement("td");
		link = document.createElement("a");
		link.setAttribute("href", "javascript:selectDates(" + currentDate.getFullYear() + "," + currentDate.getMonth() + "," + currentDate.getDate() + "," +
			currentDate.getFullYear() + "," + currentDate.getMonth() + "," + currentDate.getDate() + ")");
		link.appendChild(document.createTextNode(currentDate.getDate()));
		cell.appendChild(link);
		row.appendChild(cell);
		if (currentDate.getDay() == 0) {
			cell.className = "calendar_sunday";
		}
		if (currentDate.getMonth() != month) {
			cell.className = "calendar_otherMonth";
		}
		if (currentDate.getTime() >= calendar_dateStart.getTime() &&
			currentDate.getTime() <= calendar_dateEnd.getTime()) {
			cell.className = "calendar_selected";
		}
		if (currentDate.getDay() == 0) {
			calendar.appendChild(row);
		}
		currentDate.setDate(currentDate.getDate() + 1);
	}
}

function selectDates(year1, month1, day1, year2, month2, day2)
{
	calendar_dateStart = new Date(year1, month1, day1);
	calendar_dateEnd = new Date(year2, month2, day2);
	printCalendar(calendar_dateStart.getFullYear(), calendar_dateStart.getMonth());
	loadData(calendar_dateStart, calendar_dateEnd);
}

function weeknum(date) {
	var thursday = new Date(date.getFullYear(), date.getMonth(), date.getDate());
	thursday.setDate(thursday.getDate() + 3 - ((thursday.getDay() + 6) % 7));

	var firstThursday = new Date(thursday.getFullYear(), 0, 4);
	firstThursday.setDate(firstThursday.getDate() + 3 - ((firstThursday.getDay() + 6) % 7));
	return Math.floor(1.5 + (thursday.getTime() - firstThursday.getTime()) / 86400000 / 7);
}



function dateToString(date) {
	if (date.getFullYear() == 1901 && date.getMonth() == 0 && date.getDate() == 1) {
		return "0001-01-01";
	}
	
	var str = '';
	str += date.getFullYear() + "-";
	if (date.getMonth() < 9) {
		str += '0' + (date.getMonth() + 1) + "-";
	}
	else {
		str += (date.getMonth() + 1) + "-";
	}
	if (date.getDate() < 10) {
		str += '0' + date.getDate();
	}
	else {
		str += date.getDate();
	}
	return str;
}