var __checker = new FormChecker($('itinerary'));
var __rule = __checker.addRule();
__rule.addCheck('pickupTime', '[0-9]{2}\.[0-9]{2}');
__rule.errorMessage = 'Selecteer het tijdstip van aankomst bij Service Parking<br><hr><b>Let op!</b> Aankomst na 0:00 uur is de volgende dag!<br><em>Dinsdagnacht na 0:30 uur aankomen in Leimuiden is dus woensdagmorgen.</em> ';
__rule = __checker.addRule();
__rule.addCheck('returnTime', '[0-9]{2}\.[0-9]{2}');
__rule.errorMessage = 'Selecteer het tijdstip van aankomst op Schiphol (zie vliegticket)<br><hr><b>Let op!</b> Aankomst na 0:00 uur is de volgende dag!<br><em>Dinsdagnacht na 0:30 uur aankomen op Schiphol is dus woensdagmorgen.</em>';

YAHOO.namespace('parking.calendar');

var date = new Date();
date.setTime(date.getTime() + 24 * 60 * 60 * 1000);
var startdate = sprintf('%d/%d/%0.4d', date.getMonth() + 1, date.getDate(), date.getFullYear());

function showStartDatePopup(clicked) {                                            
	var div = document.getElementById('Calendar');
	div.style.top = '50px';
	params = Array();
	params['pagedate'] = document.getElementById('pickupMonthYear').value;
	
	var date = new Date();
	params['mindate'] = sprintf('%d/%d/%0.4d', date.getMonth() + 1, date.getDate(), date.getFullYear());
	
	date = new Date();
	date.setFullYear(date.getFullYear() + 1);
	params['maxdate'] = sprintf('%d/%d/%0.4d', date.getMonth() + 1, date.getDate(), date.getFullYear());

	YAHOO.parking.calendar.cal1 = new YAHOO.widget.Calendar('cal1','Calendar', params);
	YAHOO.parking.calendar.cal1.render();

	var dateSelected = function (type, args, obj) {
			var parts = ('' + args[0]).split(',');
			startdate = parts[1] + '/' + parts[2] + '/' + parts[0];
			startmonth = parts[1] + '/' + parts[0];
			if (parts[2].length == 1) {
				parts[2] = '0' + parts[2];
			}
			if (parts[1].length == 1) {
				parts[1] = '0' + parts[1];
			}
			document.getElementById('pickupDay').value = parts[2];
			document.getElementById('pickupMonthYear').value = parts[1] + '/' + parts[0];
			document.getElementById('Calendar').style.visibility = 'hidden';
			pickupDateChanged(null);
		}
	
	YAHOO.parking.calendar.cal1.selectEvent.subscribe(dateSelected, YAHOO.parking.calendar.cal1, true);
	div.style.display='block';
	div.style.visibility = 'visible';
	handleAsPopup(div, clicked);
}

function showStopDatePopup() {
	var div = document.getElementById('Calendar');
	div.style.top = '107px';                                                                
	params = Array();                                            
	params['pagedate'] = document.getElementById('returnMonthYear').value;
	params['mindate'] = startdate;
	
	date = new Date();
	date.setFullYear(date.getFullYear() + 1);
	params['maxdate'] = sprintf('%d/%d/%0.4d', date.getMonth() + 1, date.getDate(), date.getFullYear());
	
	YAHOO.parking.calendar.cal1 = new YAHOO.widget.Calendar('cal1','Calendar', params);
	YAHOO.parking.calendar.cal1.render();
	var dateSelected = function (type, args, obj) {
		var parts = ('' + args[0]).split(',');
		if (parts[2].length == 1) {
			parts[2] = '0' + parts[2];
		}   
		if (parts[1].length == 1) {
			parts[1] = '0' + parts[1];
		}
		document.getElementById('returnDay').value = parts[2];
		document.getElementById('returnMonthYear').value = parts[1] + '/' + parts[0];
		document.getElementById('Calendar').style.visibility = 'hidden';
}

YAHOO.parking.calendar.cal1.selectEvent.subscribe(dateSelected, YAHOO.parking.calendar.cal1, true);
	div.style.display='block';
	div.style.visibility = 'visible';
	handleAsPopup(div, true);
}   

function pickupDateChanged(sender) {
	var day = document.getElementById('pickupDay').value;
	var monthYear = document.getElementById('pickupMonthYear').value;
	var time = document.getElementById('pickupTime').value;
	if (time == '-') time = '00.00';
	var pickupdate = day + '/' + monthYear + ' ' + time.replace(':', '');
	
	var day = document.getElementById('returnDay').value;
	var monthYear = document.getElementById('returnMonthYear').value;
	var time = document.getElementById('returnTime').value;
	if (time == '-') time = '00.00';
	var returndate = day + '/' + monthYear + ' ' + time.replace(':', '');
	
	var start = dateStrToTime(pickupdate);
	var stop = dateStrToTime(returndate);
	
	var dtStart = new Date();
	dtStart.setTime(start);
	startdate = (dtStart.getMonth() + 1) + '/' + dtStart.getDate() + '/' + dtStart.getFullYear();
	
	if (stop - start < 86400000) {
		if ((sender != null) && (sender.id == 'returnDay')) {
			var my = $('returnMonthYear').value;
			var monthyear = my.split('/');
			
			monthyear[0]++;
			if (monthyear[0] == 12) {
				monthyear[0] = 0;
				monthyear[1]++;
			}
			my = sprintf('%02d/%02d', monthyear[0], monthyear[1]);
			$('returnMonthYear').value = my;
		} else {
			stop = start + (7 * 24 * 60 * 60 * 1000);
			var stopdate = new Date();
			stopdate.setTime(stop);
			var day = stopdate.getDate() + '';
			if (day.length == 1) {
				day = '0' + day;
			}
			document.getElementById('returnDay').value = day;
			var month = (stopdate.getMonth() + 1) + '';
			if (month.length == 1) {
				month = '0' + month;
			}
			var year = (stopdate.getFullYear()) + '';
			
			if (year.length == 1) {
				year = '0' + year;
			}

			document.getElementById('returnMonthYear').value = month + '/' + year;
			document.getElementById('returnTime').value = document.getElementById('pickupTime').value;
		}
	}
}


function dateStrToTime(dateStr) {
	parts = dateStr.split(' ');
	sDate = parts[0];
	sTime = parts[1];
	dateparts = sDate.split('/');
	day = dateparts[0];
	month = dateparts[1];
	year = dateparts[2];
	timeparts = sTime.split('.');
	hour = timeparts[0];
	minute = timeparts[1];
	monthnames = new Array();
	monthnames['01'] = 'January';
	monthnames['02'] = 'February';
	monthnames['03'] = 'March';
	monthnames['04'] = 'April';
	monthnames['05'] = 'May';
	monthnames['06'] = 'June';
	monthnames['07'] = 'July';
	monthnames['08'] = 'August';
	monthnames['09'] = 'September';
	monthnames['10'] = 'October';
	monthnames['11'] = 'November';
	monthnames['12'] = 'December';
	return Date.parse(monthnames[month] + ', ' + day + ' ' + year + ' ' + hour + ':' + minute + ':00');
}

