var currentDeliveryDate = new Date();

var curMonth, curYear, previousMonth,previousYear,nextMonth,nextYear,delivery,month;

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

	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();

	previousMonth = showDate.getMonth()-1;
	previousYear  = showDate.getFullYear();

	if(previousMonth < 1)
	{
		previousMonth= 12 + previousMonth;
		previousYear--;
	}

	
	
	nextMonth	= showDate.getMonth()+1;
	nextYear	= showDate.getFullYear();
	
	if(nextMonth > 12)
	{
		nextMonth = nextMonth % 12;
		nextYear++;
	}
	var t='<div class="caldiv" id="cal_'+calendarID+'">';
		t+='<table class="main" cols="7" cellpadding="0" border="0" cellspacing="4">';
		t+='<tr>';
//			t+='<td colspan="1" align="center" class="previous_inactive" onclick="updateCalendar('+showDate.getMonth()+', '+showDate.getFullYear()+', '+previousMonth+','+previousYear+', currentDeliveryDate);" onmouseover="this.className=\'previous_active\';" onmouseout="this.className=\'previous_inactive\';"></td>';
			t+='<td colspan="7" align="center" class="month">'+month[showDate.getMonth()]+' '+showDate.getFullYear()+'</td>';
//			t+='<td colspan="1" align="center" class="next_inactive"  onclick="updateCalendar('+showDate.getMonth()+', '+showDate.getFullYear()+','+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 nextCalendar()
{
	updateCalendar(curMonth, curYear, nextMonth, nextYear, delivery);
}

function prevCalendar()
{
	var rightMonth = curMonth-2;
	var rightYear = curYear;
	
	if(rightMonth < 0){
		rightMonth = 12 + rightMonth;		
		rightYear--;
	}
	
	updateCalendar(rightMonth, rightYear, previousMonth, previousYear, delivery)
}

function updateCalendar(curMonth, curYear, showMonth, showYear, delivery)
{
	document.getElementById('cal_1').parentNode.innerHTML = buildCal(new Date(curYear, curMonth, 1), delivery,1);
	document.getElementById('cal_2').parentNode.innerHTML = buildCal(new Date(showYear, showMonth, 2), delivery,2);
}

function getBackButtonText()
{
	return "Naar " + month[previousMonth-1] + " " + previousYear;
}

function getNextButtonText()
{
	var nextMonth2 = nextMonth + 1;
	var nextYear2 = nextYear;
	if(nextMonth2 == 13)
	{
		nextMonth2=1;
		nextYear2++;
	}
	
	return "Naar " + month[nextMonth2-1] + " " + nextYear2;
}
