var MonthName = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];

function GetValue(id)
{
	var Result;
	var obj = document.getElementById(id);
	

	if (obj != null)
		switch(obj.type)
		{
			case 'text':
			case 'hidden':
				Result = obj.value;
				break;

			case 'radio':
			case 'checkbox':
				Result = obj.checked;
				break;

			case 'select-one':
				Result = obj.options[obj.selectedIndex].value;
				break;
		}

	return Result;	

}

function SetValue(id, value)
{

	var obj = document.getElementById(id);

	if (obj != null)
	{
		switch(obj.type)
		{
			case 'text':
			case 'hidden':
				obj.value = value;
				break;

			case 'radio':
			case 'checkbox':
				obj.checked = value;
				break;

			case 'select-one':
				obj.selectedIndex = value;
				break;
		}
	}

}

function Date2Str(date)
{
	return (date.getDate() < 10 ? '0' : '') + date.getDate() + '.' +
		(date.getMonth() < 9 ? '0' : '') + (date.getMonth()+1) + '.' +
		date.getFullYear();
}

function Str2Date(str)
{
	var DateParts = str.split('.');
	return (DateParts.length == 3 ? new Date(DateParts[2], DateParts[1] - 1, DateParts[0]) : null);

}

function ShowError(id, ErrorText, ErrorStatus)
{
	var obj = document.getElementById(id);
	obj.innerHTML = ErrorStatus ? '<img src="images/validatorerror.gif" title="' + ErrorText + '">' : '';
	return ErrorStatus;
}

function InitCityList(id, dictionary, value)
{

	var obj = document.getElementById(id);

	if (obj)
	{
		obj.options.length = 0;
		obj.options[0] = new Option('', '');
		for(key in dictionary)
		{
			obj.options[obj.options.length] = new Option(dictionary[key][0], key);
 			obj.options[obj.options.length - 1].selected = (key == value);
		}
	}

}

function Init()
{
	InitCityList('Departure', CityCodes, 'MOW');
	InitCityList('Arrival', CityCodes, '');

	var date = new Date();

	date.setDate(date.getDate() + 2);
	SetValue('DepartureDate', Date2Str(date));

	date.setDate(date.getDate() + 7);
	SetValue('ArrivalDate', Date2Str(date));

	Calendar.setup({ inputField: "DepartureDate", ifFormat: "%d.%m.%Y", button: "DepartureDateButton", singleClick: true });
	Calendar.setup({ inputField: "ArrivalDate", ifFormat: "%d.%m.%Y", button: "ArrivalDateButton", singleClick: true });

	ValidateForm();
}

function ValidateForm()
{
	var Error = false;

	var Departure = GetValue('Departure');
	Error = ShowError('DepartureValidator', 'Не указан город отправления', Departure.length == 0) || Error;

	var Arrival = GetValue('Arrival');
	Error = ShowError('ArrivalValidator', 'Не указан город назначения', Arrival.length == 0) || Error;

	var DepartureDate = GetValue('DepartureDate');
	Error = ShowError('DepartureDateValidator', 'Не указана дата вылета', Str2Date(DepartureDate) == null) || Error;

	var ArrivalDate = GetValue('ArrivalDate');
	Error = ShowError('ArrivalDateValidator', 'Не указана дата обратного вылета', Str2Date(ArrivalDate) == null) || Error;

	var AdultQuantity = parseInt(GetValue('adult')) || 0;
	var ChildQuantity = parseInt(GetValue('child')) || 0;
	var BabyQuantity = parseInt(GetValue('baby')) || 0;

	Error = ShowError('PlaceValidator', 'Общее число пассажиров с местами включая взрослых и детей не должно превышать пяти', AdultQuantity + ChildQuantity > 5) || Error;
	Error = ShowError('NoPlaceValidator', 'Количество младенцев на руках (без места) не может превышать числа пассажиров с местами', BabyQuantity > AdultQuantity + ChildQuantity) || Error;

	var NotStay = GetValue('NotStay');
	SetValue('NotStayHidden', NotStay != null && NotStay)

	var ReturnedTicket = GetValue('ReturnedTicket');
	SetValue('ReturnedTicketHidden', ReturnedTicket != null && ReturnedTicket)

	var FlightType = GetValue('FlightType');
	var tdArrivalDate = document.getElementById('tdArrivalDate');
	tdArrivalDate.style.display = (FlightType == 'ONE.WAY' ? 'none' : '');

	var SubmitButton = document.getElementById('SubmitButton');
	SubmitButton.disabled = Error;

	return (!Error);

}
