var formError = {
	set: function(form, message) {
		var error_box = document.createElement('div');
		var after_form = form.nextSibling;
		error_box.className = 'error-line';
		error_box.innerHTML = message;
		if (after_form == null) {
			form.parentNode.appendChild(error_box);
		} else {
			form.parentNode.insertBefore(error_box, after_form);
		}
	},
	remove: function(form) {
		var error_box = form.nextSibling;
		if (error_box == null || !(/\s*error-line\s*/.test(error_box.className))) {
			return;
		}
		error_box.parentNode.removeChild(error_box);
	}
}

/**
 * форма "купить билет"
 */
function submitBuyTicket(form) {

	var messages = {
		city_from_empty: {
			ru: 'Не указан город вылета (Откуда)',
			en: 'Please select the city of departure (From)'
		},
		city_to_empty: {
			ru: 'Не указан город прибытия (Куда)',
			en: 'Please select the city of arrival (To)'
		},
		cities_are_similar: {
			ru: 'Город вылета совпадает с городом прибытия',
			en: 'The city of departure and the city of arrival cannot be the same'
		},
		passengers_empty: {
			ru: 'Не указано количество пассажиров',
			en: 'Please enter the number of passengers'
		},
		passengers_limit_exceed: {
			ru: 'Общее количество пассажиров не должно превышать 9 человек',
			en: 'The total number of passengers cannot exceed 9 persons'
		}
	};

	var city_from	= document.getElementById('city_from');
	var city_to		= document.getElementById('city_to');
	var pass_t1	= document.getElementById('pass_t1');
	var pass_t2	= document.getElementById('pass_t2');
	var pass_t3	= document.getElementById('pass_t3');

	var locale = cm.getLocale();

	formError.remove(form);

	if (city_from.value == 0) {
		formError.set(form, messages['city_from_empty'][locale]);
		return false;
	}

	if (city_to.value == 0) {
		formError.set(form, messages['city_to_empty'][locale]);
		return false;
	}

	if (city_from.value == city_to.value) {
		formError.set(form, messages['cities_are_similar'][locale]);
		return false;
	}

	if (city_from.value == city_to.value) {
		formError.set(form, messages['cities_are_similar'][locale]);
		return false;
	}

	if (pass_t1.value.length == 0 || !(/^\d+$/.test(pass_t1.value)) || pass_t1.value <= 0) {
		formError.set(form, messages['passengers_empty'][locale]);
		return false;
	}

	var totalPassengers = 	(/^\d+$/.test(pass_t1.value) ? parseInt(pass_t1.value) : 0) +
							(/^\d+$/.test(pass_t2.value) ? parseInt(pass_t2.value) : 0) +
							(/^\d+$/.test(pass_t3.value) ? parseInt(pass_t3.value) : 0);

	if (totalPassengers > 9) {
		formError.set(form, messages['passengers_limit_exceed'][locale]);
		return false;
	}
	
	var dateFlight = calendarManager.getController('date_flight').dateObject;
	document.getElementById('buyFormDayFrom').value = dateFlight.strftime('%d');
	document.getElementById('buyFormMonthFrom').value = dateFlight.strftime('%m-%Y');

	var dateReturn = calendarManager.getController('date_return').dateObject;
	document.getElementById('buyFormDayTo').value = dateReturn.strftime('%d');
	document.getElementById('buyFormMonthTo').value = dateReturn.strftime('%m-%Y');

	form.submit();

	return true;
}

/**
 * форма "расписание рейсов"
 */
function submitScheduleTable(form) {
	form.submit();
}

/**
 * форма "справка о рейсе"
 */
function submitFlightInfo(form) {

	var messages = {
		city_empty: {
			ru: 'Введите название города',
			en: 'Please indicate the city'
		},
		flight_number_empty: {
			ru: 'Введите номер рейса',
			en: 'Please enter the flight number'
		}
	};
	
	var city_input = document.getElementById('city_input');
	var flight_number_input = document.getElementById('flight_num');
	var locale = cm.getLocale();

	formError.remove(form);

	if (document.getElementById('city') && document.getElementById('city').checked && !city_input.value) {
		formError.set(form, messages['city_empty'][locale]);
		return false;
	}

	if (document.getElementById('flight') && document.getElementById('flight').checked && !flight_number_input.value) {
		formError.set(form, messages['flight_number_empty'][locale]);
		return false;
	}

	form.utc_date.value = calendarManager.getController('date')
								.dateObject.strftime('%d.%m.%Y', true);

	form.submit();

	return true;
}

/**
 * управление списками аэропортов в форме "купить билет"
 */
function setDestinationAirports(dselect, value) {

	if (value == '0') return;
	dselect = document.getElementById(dselect);
	var airports = formCities.routes[value];
	var country, optgroup, option;

	var fristOption;
	while (dselect.lastChild) {
		fristOption = dselect.removeChild(dselect.lastChild);
	}
	dselect.appendChild(fristOption);

	for(var i = 0, l = airports.length; i < l; i++) {
		if (!optgroup || formCities.dict[airports[i]].c != country) {
			country = formCities.dict[airports[i]].c;
			optgroup = document.createElement('optgroup');
			optgroup.label = country;
			dselect.appendChild(optgroup);
		}
		option = document.createElement('option');
		option.value = airports[i];
		option.innerHTML = formCities.dict[airports[i]].a;
		optgroup.appendChild(option);
	}

}

if (document.getElementById('city_from')) {
	setDestinationAirports('city_to', document.getElementById('city_from').value);
}