var currentDeliveryDate = new Date();

function buildCal(showDate, deliveryDate)
{
	currentDeliveryDate = deliveryDate;
	
	deliverExtention = 4;
	if (deliveryDate.getDay() != 1)
		deliverExtention += 2;
	
	var endDeliveryDate = new Date(deliveryDate.getFullYear(), deliveryDate.getMonth(), deliveryDate.getDate() + deliverExtention);

	var month=["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"];
	var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
	dim[1]=(((showDate.getFullYear()%100!=0)&&(showDate.getFullYear()%4==0))||(showDate.getFullYear()%400==0))?29:28;

	var firstDate		= new Date(showDate.getFullYear(), showDate.getMonth(), 1);
	var today			= new Date();

	if(firstDate.getDay()==0)
		var monthStartsOn = 7;
	else
		var monthStartsOn = firstDate.getDay();

	var previousMonth = showDate.getMonth()-1;
	var previousYear  = showDate.getFullYear();
	if(previousMonth == 0)
	{
		previousMonth=12;
		previousYear--;
	}

	var nextMonth	= showDate.getMonth()+1;
	var nextYear	= showDate.getFullYear();
	if(nextMonth == 13)
	{
		nextMonth = 1;
		nextYear++;
	}
	var t='<div>';
		t+='<table class="main" cols="7" cellpadding="0" border="0" cellspacing="0">';
		t+='<tr>';
			t+='<td colspan="1" align="center" class="previous_inactive" onclick="updateCalendar('+previousMonth+','+previousYear+', currentDeliveryDate);" onmouseover="this.className=\'previous_active\';" onmouseout="this.className=\'previous_inactive\';"></td>';
			t+='<td colspan="5" align="center" class="month">'+month[showDate.getMonth()]+' '+showDate.getFullYear()+'</td>';
			t+='<td colspan="1" align="center" class="next_inactive"  onclick="updateCalendar('+nextMonth+','+nextYear+', currentDeliveryDate);" onmouseover="this.className=\'next_active\';" onmouseout="this.className=\'next_inactive\';"></td>';
		t+='</tr>';
		t+='<tr>';
		for(s=0;s<7;s++)
			t+='<td class="daysofweek">'+"MADIWODOVRZAZO".substr(s*2,2)+'</td>';
		t+='</tr>';
		t+='<tr>';

	for(i=1;i<=42;i++)		//all days of a month. worst case scenario: month starts on Sunday, there will be a minimum of 6 weeks span.
	{
		//calculated the day of the week the month starts on. IE: month starts on Sunday, 7th day of the week ==> everything gets shifted 7 positions.
		var dateToShowID = ((i-monthStartsOn>=0)&&(i-monthStartsOn<dim[showDate.getMonth()]))? i-monthStartsOn+1 : '';
		var dateToShowText = ((i-monthStartsOn>=0)&&(i-monthStartsOn<dim[showDate.getMonth()]))? i-monthStartsOn+1 : '&nbsp;';

		var dateToShow = new Date(showDate.getFullYear(), showDate.getMonth(), i-monthStartsOn+1);
		var YMD = dateToShow.getFullYear() + '-' + (dateToShow.getMonth() > 8 ? (dateToShow.getMonth() + 1) : '0' + (dateToShow.getMonth() + 1))  + '-' + (dateToShow.getDate() > 9 ? dateToShow.getDate() : '0' + dateToShow.getDate()); 
		if(dateToShowText < 10)										//all dates<10 must have a leading 0.
			dateToShowText = '0'+dateToShowText;
		
		var myClass 		  = "unselectable";
		var myJavaScriptStyle = "";

		// Possible delivery dates

		if(YMD in dates && dateToShowText != "&nbsp;")
		{		
			myClass = "hasitems";
			dateToShowText = "<a href='"+currentURL+"date="+dateToShow.getFullYear()+"-"+(dateToShow.getMonth()+1)+"-"+dateToShow.getDate()+"'>" + dateToShowText + "</a>";
			myJavaScriptStyle = '';// 'onclick="selectDate('+dateToShow.getDate()+','+dateToShow.getMonth()+','+dateToShow.getFullYear()+');"';
		}
		
		if (!(dateToShow<deliveryDate) && !(dateToShow>deliveryDate))
			myClass += " today";
		
		

		// Weekends

		if (dateToShow.getDay() == 6 || dateToShow.getDay() == 0)
		{
			myClass += " weekend";
			myJavaScriptStyle = "";
		}
		
			
		t+='<td class="'+myClass+'" '+myJavaScriptStyle+' id="'+dateToShowID+'">'+dateToShowText+'</td>';

		if(i%7==0 && i<36)
		{
			t+='</tr>';
			if(i-monthStartsOn<dim[showDate.getMonth()])				//if the month spans on less than 6 weeks, make a break for it.
				t+='<tr>';
			else
				break;
		}
	}
		t+='</tr>';
		t+='</table>';
	t+='</div>';
	return t;
}

function selectDate(day, month, year)
{
	console.log(day, month, year);
}

function updateCalendar(showMonth, showYear, delivery)
{
	document.getElementById('calendar').innerHTML = buildCal(new Date(showYear, showMonth, 1), delivery);
}