BookTripPage.travellers = {
	bindCalendersToDatePickers: function () {
		var adultsNumber = parseInt($('adults-number').innerHTML);
		var childrenNumber = parseInt($('children-number').innerHTML);
		var today = Date.parseDate($('date-now').innerHTML, '%Y-%m-%d %H:%i:%s')
		
		for (var i = 0; i < adultsNumber + childrenNumber; i++) {
			var dateFromPicker = $('travellers-birthdate-' + i);
			Calendar.setup({
				inputField : 'travellers-birthdate-' + i,
				ifFormat : "%Y-%m-%d",
				button: 'travellers-birthdate-' + i,
				disableFunc: function (date) {
					return today.getTime() <= date.getTime();
				},
				position: [
					Calendar.getAbsolutePos(dateFromPicker).x,
					Calendar.getAbsolutePos(dateFromPicker).y + dateFromPicker.offsetHeight
				]
			});
		}
	},
	
	changeBirthdate: function(componentsId) {
		var dayComponent = $('travellers-birthdate-day-' + componentsId);
		var monthComponent = $('travellers-birthdate-month-' + componentsId);
		var yearComponent = $('travellers-birthdate-year-' + componentsId);
		if (monthComponent.value.length > 0 && yearComponent.value.length > 0) {
			var daysMonth = daysInMonth(parseInt(monthComponent.value) - 1, yearComponent.value);
			var dayComponentOldValue = dayComponent.value
			
			dayComponent.options.length = 1;
			for (var i = daysMonth; i > 0 ; i--) {
				dayComponent.options[daysMonth - i + 1] = new Option(i, i);
			}
			
			dayComponent.value = dayComponentOldValue;
		}
	},
	
	validateStep: function (form) {
		$('warning-message').hide();
		
		var adultsNumber = parseInt($('adults-number').innerHTML);
		var childrenNumber = parseInt($('children-number').innerHTML);
		
		var adultBoxEmptyFieldMessage = $('adult-box-empty-field-message').innerHTML
		var childBoxEmptyFieldMessage = $('child-box-empty-field-message').innerHTML
		
		var formFieldNames = [
			'travellers-first-name',
			'travellers-last-name',
			'travellers-birthdate',
			'travellers-passport-number',
			'travellers-insurance-yes'
		];
		
		var valid
		for (var i = 0; i < adultsNumber + childrenNumber; i++) {
			for (var j = 0; j < formFieldNames.length; j++) {
				valid = true;
				switch (formFieldNames[j]) {
					case 'travellers-insurance-yes':
						if (!$('travellers-insurance-yes-' + i).checked && !$('travellers-insurance-no-' + i).checked) {
							valid = false;
						}
						break;
						
					case 'travellers-birthdate':
						if ($('travellers-birthdate-day-' + i).value.length === 0
						    || $('travellers-birthdate-month-' + i).value.length === 0
						    || $('travellers-birthdate-year-' + i).value.length === 0) {
							valid = false;
						}
						
						break;
						
					default:
						if (!$(formFieldNames[j] + '-' + i).present()) {
							valid = false;
						}
						break;
				}
				
				if (!valid) {
					if (i < adultsNumber) {
						$('warning-message').innerHTML = adultBoxEmptyFieldMessage + ' ' + (i + 1) + '.'
					} else {
						$('warning-message').innerHTML = childBoxEmptyFieldMessage + ' ' + (i + 1 - adultsNumber) + '.'
					}
					
					$('warning-message').show();
					return;
				}
			}
		}
		
		form.submit();
	}
}