var todaydate=new Date();
var curmonth=todaydate.getMonth()+1; //get current month (1-12)
var curyear=todaydate.getFullYear(); //get current year

var aMinutes=new Array('00','15','30','45');
var aHours=new Array('18','19','20');
var aLunchHours=new Array('12','13');
var aAantal=new Array('1','2','3','4','5','6','7','8');
var aDagen=new Array('Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag');
	
var sD = todaydate.getDay();
var sM = todaydate.getMonth()+1;
var sY = todaydate.getFullYear();

var aTime=new Array();
var aDinnerTime=new Array();	

function initCal() {
	var x=0;
	
	aLunchHours.each(function (Hour) {
		aMinutes.each(function (Minute)	{
			aTime[x++] = Hour + ':' + Minute;
		});
	});
	aTime[x++]='14:00';
	aTime[x++]='-----';

	var y=0;
	aTime[x++] = '17:30';
	aTime[x++] = '17:45';
	aDinnerTime[y++] = '17:30';
	aDinnerTime[y++] = '17:45';

	aHours.each(function(Hour) {
		aMinutes.each(function(Minute) {
			aTime[x++] = Hour + ':' + Minute;
			aDinnerTime[y++] = Hour + ':' + Minute;
		});
	});
	aTime[x]='21:00';
	aDinnerTime[y]='21:00';
	updatecalendar(curmonth,curyear);
	writeOptions('dtTime', aTime);
	writeOptions('res_aant',aAantal);
}

function checkFields()	{
	var retVal = true;
	$('btn_send').disable();

	var pars = $('main').serialize();
	pageTracker._trackPageview("/reservering"); 
	$("main").getInputs('text').each( function (txtEl) {
		if ($F(txtEl) == '') {
//			if (txtEl.name=='date')  {
//				$('err_calendarspace').setStyle('color:red;visibility:visible;').setFocus();
//			} else {
//				$($(txtEl.id).adjacent('span.error')).setStyle('color:red;visibility:visible;');
//				$(txtEl.id).setFocus();
//			}
			retVal = false;
		}
	});
	

	if(retVal==true) {
		new Ajax.Updater('form_response', './reserveren.phtml', {
				method: 'get',
				parameters: pars  + '&ajax=true',
				onComplete: function (transport) {$('form_response').setStyle('border:#cc3366 solid 1px;');}
				});
	} else	{
		alert("U heeft één of meerdere velden niet ingevuld.\nVoor een correcte aanmelding is het verplicht alle velden in te vullen.");
		$('btn_send').enable();
	}

	return false;
}

function updatecalendar(m,y){
	var calendarstr=buildCal(m,y,"cal_main", "cal_month", "cal_daysofweek", "cal_days", "cal_weekend", 1, sD, sM, sY);
	$('calendarspace').update(calendarstr);
}

function selectDate(y,m,d)	{
	sD = d;	sM = m+1; sY = y;
	dSel = new Date(y, m, d);
	iDay = dSel.getDay();
	updatecalendar(m + 1,y);
	$("res_date").value=d + '-' + (m+1) + '-' + y;
	$("res_day").value=aDagen[iDay];
	if (iDay < 6 && dSel.toString() != (new Date(2010,0,5).toString()))	writeOptions("dtTime", aTime);
	else writeOptions("dtTime", aDinnerTime);
}

function nextMonth (m, y) {
	if (m==12) {
		m=0; y++;
	}
	updatecalendar(m + 1, y);
}

function previousMonth(m, y) {
	if (m==1)
	{
		m=13;	y--;
	}
	updatecalendar(m - 1, y);
}

function writeOptions(objId, arr)	{
	$(objId).innerHTML='';

	arr.each(function (val) {
		var opt = new Element('option',{'value': val}).update(' ' + val + ' ');
		$(objId).insert(opt, {position:'bottom'});
	});
}

function isHoliday(_date) {
	var Hbegin = new Date(2010,7,27);
	var Heind = new Date(2010,8,2);
	var retVal=(_date>=Hbegin&&_date<=Heind)?true:false
	return retVal;
}

function isExtraOpening(_date) {
	var dExtra = new Date(2010,4,4);
	var retVal=(_date>=dExtra&&_date<=dExtra)?true:false
	return retVal;
}

function buildCal(m, y, cM, cH, cDW, cD, cW, brdr, sD, sM, sY){
	var mn=['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];
	var daystoskip=2;
	var todaydate=new Date()
	var minDate=new Date(todaydate.getYear(), todaydate.getMonth(), todaydate.getDate() + daystoskip);

	var checkSelectedDate=(sM==m&&sY==y) ? sD : 0;
	sD=(checkSelectedDate>0&&minDate.getDay()>sD)?minDate.getDay:sD;


	var oD = new Date(y, m-1, 1);

	dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;

	while (new Date(y, m-1, dim[m-1])<minDate)
	{
		if (m==12) {m=1;y++;} else {m++;}
		oD = new Date(y, m-1, 1);
		if (y!=oD.getYear()) dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;	
	}
	oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st

//oD.od=oD.od-1<1?7:oD.od-1; //PS move the sunday to the end

	var t='<span class="'+cM+'"><table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="0"><tr align="center">';
	t+=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)?'<td class="'+cH+'">&nbsp;</td>':'<td class="'+cH+'"><span style="cursor:hand;" onclick="previousMonth('+m.toString()+','+y.toString()+');"><b>&lt</b></span></td>';
	t+='<td colspan="5" class="'+cH+'">'+mn[m-1]+' - '+y+'</td>';
	t+='<td align="right" class="'+cH+'"><span style="cursor:hand;" onclick="nextMonth('+m.toString()+','+y.toString()+');"><b>&gt</b></span></td></tr><tr align="center">';
	for(s=0;s<7;s++)
		t+='<td class="'+cDW+'">'+"ZoMaDiWoDoVrZa".substr(s*2,2)+'</td>';
	t+='</tr><tr>';
	for(i=1;i<=42;i++){
		var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
		x=(isNaN(x)	|| new Date(y, m-1, x)<minDate || ((i+6)%7==0 || (i+5)%7==0) || isHoliday(new Date(y, m, x))) && !(isExtraOpening(new Date(y, m, x))) ? '<span class="past">'+x+'</span>' : (x==checkSelectedDate ? '<span class="selectable" id="selected">'+x+'</span>'	:	'<span class="selectable" onclick="selectDate('+oD.getFullYear()+','+oD.getMonth()+','+x+');">'+x+'</span>');
		t+=((i)%7==0||(i+6)%7==0)?'<td class="'+cW+'">'+x+'</td>':'<td class="'+cD+'">'+x+'</td>';
		if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
	}
	return t+='</tr></table></span>';
}