var todaysDate = new Date();
var durationValues = ['WE' , 'MW' , 'WK'];

var currentMonthInt = parseInt(todaysDate.getMonth()) + 1;
var currentDayInt = todaysDate.getDate();
var currentYear = todaysDate.getFullYear();

var nextYearArrow = 'url(/Storage/WebRes/img/calendarYearNext.gif)';
var lastYearArrow = 'url(/Storage/WebRes/img/calendarYearBack.gif)';


function createMonthTable() {
	var monthTable = document.createElement('TABLE');
	monthTable.className = 'month';
	//monthTable.border = "2";
	var monthHead = document.createElement('THEAD');
	var monthRow = document.createElement('TR');
	var dayList = [calendar.DAYS.MONDAY,calendar.DAYS.TUESDAY,calendar.DAYS.WEDNESDAY,calendar.DAYS.THURSDAY,calendar.DAYS.FRIDAY,calendar.DAYS.SATURDAY,calendar.DAYS.SUNDAY];
  //dayList = ['A','B','C','D','E','F','G'];
	for (var i=0; i<dayList.length; i++){
		var dayText = document.createTextNode(dayList[i]);
		var dayCell = document.createElement('TH');
		dayCell.appendChild(dayText);
		monthRow.appendChild(dayCell);
	}
	monthHead.appendChild(monthRow);
	var monthFoot = document.createElement('TFOOT');
	var footRow = document.createElement('TR');
	var footCell = document.createElement('TD');
	footCell.colSpan = 7;
	footCell.className = 'legend';
	var legendHeader = document.createElement('H4')
	legendHeader.appendChild(document.createTextNode(calendar.ARRIVAL_DATE));
	footCell.appendChild(legendHeader);
	footRow.appendChild(footCell);
	monthFoot.appendChild(footRow);
	monthTable.appendChild(monthHead);
	monthTable.appendChild(monthFoot);
	return monthTable;
}

function createCalendar(){
	var tableElement = createMonthTable();
	var tbody = createMonthTableContent(currentYear,currentMonthInt,getDuration());
	tableElement.appendChild(tbody);
	var calendarNode = document.getElementById('currentMonthList');
	calendarNode.appendChild(tableElement);
	document.getElementById('currentMonthList').style.display = 'block';
}

function createMonthTableContent(selectedYear,selectedMonth,selectedDuration) {
	
	var monthRowset = document.createElement('TBODY');
	
	//  1. create empty until the dayofweek is monday
	var d = new Date();
	d.setFullYear(selectedYear,selectedMonth-1,1);
	var dayOfWeek=d.getDay(); // 0 = sunday., 1==monday etc.
	var daysBackToMonday = dayOfWeek-1;
	daysBackToMonday = daysBackToMonday==-1?6:daysBackToMonday;
	d.setDate(d.getDate() - daysBackToMonday);

	var weekRow = document.createElement('TR');
	for (var i =0;i<daysBackToMonday;i++) {
		var dayCell = document.createElement('TD');
		dayCell.className = 'pastDate notThisMonth';
		var dateText = document.createTextNode(""+d.getDate());
		dayCell.appendChild(dateText);
		weekRow.appendChild(dayCell);
		d.setDate(d.getDate() +1);
	}

	// 2.  now we are on first day of month.
	var thisMonth = d.getMonth();
	while(d.getMonth() == thisMonth) {
		var dayCell = document.createElement('TD');
		var dateText = document.createTextNode(""+d.getDate());
		// selectable date
		if (isArrivalDate(d , selectedDuration)){
			dayCell.className = 'arrivalDate';
			var arrivalDateLink = document.createElement('a');
			arrivalDateLink.appendChild(dateText);
			var hrefUri = 'javascript:selectDate(' +d.getDate()+ ')'; 
			arrivalDateLink.href = hrefUri;
			dayCell.appendChild(arrivalDateLink);		
		} else { // not seleactable
		  dayCell.appendChild(dateText);		
		}
		
		weekRow.appendChild(dayCell);

		// if we appended a sunday , start a new weekRow.
		if (d.getDay()==0) {
			monthRowset.appendChild(weekRow);
			weekRow=document.createElement('TR');
		}
		d.setDate(d.getDate() +1);
	}
	
	// 3. we are out of the month now fill in notThisMonth days until we arrive at monday
	while(d.getDay()!=1)  {
		var dayCell = document.createElement('TD');
		var dateText = document.createTextNode(""+d.getDate());
		dayCell.appendChild(dateText);
		weekRow.appendChild(dayCell);
		dayCell.className = 'notThisMonth';
		d.setDate(d.getDate() +1);
	}
	
	// 4. TODO als weekRow leeg blijkt te zijn hoeft appendChild niet,maar erg lijkt het niet te zijn.
	monthRowset.appendChild(weekRow);
	return monthRowset;
}

function isArrivalDate(someDate, duration) {

	var yearInt = someDate.getFullYear();
	var monthInt = someDate.getMonth() + 1;
	var dayInt = someDate.getDate();
	if (arrivals != undefined) {
		if (arrivals[yearInt] != null && arrivals[yearInt].length>0) {
			if (arrivals[yearInt][monthInt] != null && arrivals[yearInt][monthInt].length>0) {
			for (var i=0; i<arrivals[yearInt][monthInt].length; i++){
				if(arrivals[yearInt][monthInt][i][0] == dayInt && duration == arrivals[yearInt][monthInt][i][1]){
					return true;
				}
			}		
			}
		}
	}
	return false;
}	
